diff --git a/config.py b/config.py index 232a98fc..2b0e27fe 100644 --- a/config.py +++ b/config.py @@ -40,7 +40,6 @@ class UserSettings(BaseSettings): HOST: str = Field(default="localhost", validation_alias="USER_HOST") PORT: int = Field(default=3200, validation_alias="USER_PORT") JWT_SECRET_KEY: str = Field(default=..., validation_alias="JWT_SECRET_KEY") - SESSION_SECRET_KEY: str = Field(default=..., validation_alias="SESSION_SECRET_KEY") GOOGLE_CLIENT_ID: str = Field(default="", validation_alias="GOOGLE_CLIENT.ID") GOOGLE_CLIENT_SECRET: str = Field(default="", validation_alias="GOOGLE_CLIENT.SECRET") GOOGLE_REDIRECT_URI: str = Field(default="", validation_alias="GOOGLE_REDIRECT.URI") diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index eb9f6ae9..2d2d65d6 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -575,14 +575,14 @@ "573": "Community 573", "574": "Community 574", "575": "Community 575", - "576": "Community 576", "577": "Community 577", - "578": "Community 578", - "579": "Community 579", "580": "Community 580", "581": "Community 581", "582": "Community 582", "583": "Community 583", "584": "Community 584", - "585": "Community 585" + "587": "Community 587", + "590": "Community 590", + "595": "Community 595", + "596": "Community 596" } diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 26642c98..4c481c3a 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,16 +1,16 @@ -# Graph Report - server (2026-09-15) +# Graph Report - server (2026-09-29) ## Corpus Check -- 123 files · ~73,844 words +- 127 files · ~77,655 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 6079 nodes · 8195 edges · 586 communities (345 shown, 241 thin omitted) -- Extraction: 84% EXTRACTED · 16% INFERRED · 0% AMBIGUOUS · INFERRED: 1273 edges (avg confidence: 0.69) +- 6269 nodes · 8527 edges · 586 communities (355 shown, 231 thin omitted) +- Extraction: 84% EXTRACTED · 16% INFERRED · 0% AMBIGUOUS · INFERRED: 1328 edges (avg confidence: 0.69) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `1e23e042` +- Built from commit: `09a23108` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). @@ -576,26 +576,26 @@ - [[_COMMUNITY_Community 573|Community 573]] - [[_COMMUNITY_Community 574|Community 574]] - [[_COMMUNITY_Community 575|Community 575]] -- [[_COMMUNITY_Community 576|Community 576]] - [[_COMMUNITY_Community 577|Community 577]] -- [[_COMMUNITY_Community 578|Community 578]] -- [[_COMMUNITY_Community 579|Community 579]] - [[_COMMUNITY_Community 580|Community 580]] - [[_COMMUNITY_Community 581|Community 581]] - [[_COMMUNITY_Community 582|Community 582]] - [[_COMMUNITY_Community 583|Community 583]] - [[_COMMUNITY_Community 584|Community 584]] -- [[_COMMUNITY_Community 585|Community 585]] +- [[_COMMUNITY_Community 587|Community 587]] +- [[_COMMUNITY_Community 590|Community 590]] +- [[_COMMUNITY_Community 595|Community 595]] +- [[_COMMUNITY_Community 596|Community 596]] ## God Nodes (most connected - your core abstractions) 1. `vocab` - 456 edges 2. `StocksCacheManager` - 80 edges 3. `HarnessState` - 68 edges 4. `UserManager` - 56 edges -5. `Permission` - 51 edges +5. `Permission` - 54 edges 6. `StocksQueryManager` - 50 edges 7. `Pytest Testing` - 50 edges -8. `Roles` - 46 edges +8. `Roles` - 49 edges 9. `cn()` - 43 edges 10. `Prometheus` - 41 edges @@ -606,10 +606,10 @@ 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 -- `createKey()` --calls--> `test_create_key_new_user()` [INFERRED] - main/app/stocks_api/key.py → tests/test_stocks_api_coverage.py -- `createKey()` --calls--> `test_create_key_exception_rollback()` [INFERRED] - main/app/stocks_api/key.py → tests/test_stocks_api_coverage.py +- `DiscordHandler` --uses--> `TestSetupLogging` [INFERRED] + main/utils/logging_config.py → tests/test_logging_config_coverage.py +- `HarnessState` --uses--> `TestGetState` [INFERRED] + main/app/prometheus/state.py → tests/test_state_tools.py ## Hyperedges (group relationships) - **Authentication Module** — AuthenticationManager, SessionManager, auth_util, auth_constants, getGoogleSSO [INFERRED] @@ -619,7 +619,7 @@ - **Configuration & Database Infrastructure** — config_Config, config_engine, config_stocksEngine [INFERRED] - **User Authentication & Authorization** — user_service, authentication, user_roles, permission_system [INFERRED] -## Communities (586 total, 241 thin omitted) +## Communities (586 total, 231 thin omitted) ### Community 0 - "Stocks API Endpoints" Cohesion: 0.0 @@ -634,8 +634,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.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) +Cohesion: 0.11 +Nodes (12): _make_stocks_df(), Return a small DataFrame with the columns the query module expects., Return a small DataFrame with the columns the query module expects., 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. (+4 more) ### Community 4 - "Data Models & Types" Cohesion: 0.11 @@ -655,43 +655,43 @@ 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 (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 Nodes (17): code:python (def filterCotationColumn(series: pd.Series, startDate, endDa), code:bash (git add -A), code:bash (git add main/app/stocks_api/query.py), code:python (def buildCotationDateIndex(df: pd.DataFrame, col: str = "COT), code:python (def filterCotationColumn(series: pd.Series, startDate, endDa), code:bash (git add main/app/stocks_api/cache.py main/app/stocks_api/que), code:python (PARQUET_PATH = Path(__file__).parent / "stocks_cache.parquet), code:bash (git add main/app/stocks_api/cache.py) (+9 more) ### Community 10 - "Prometheus Memory" -Cohesion: 0.08 -Nodes (27): Tests for queryCotations and /stocks/cotations., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, Tests for queryCotations and /stocks/cotations., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list., dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list. (+19 more) +Cohesion: 0.05 +Nodes (35): Tests for queryCotations and /stocks/cotations., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, Tests for queryCotations and /stocks/cotations., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 4 rows for 2 tickers -> 2 results, one per ticker, both with latest TIME., 2 tickers x 2 rows. Rows 0,2 are 2024-01-15; rows 1,3 are 2024-06-15. M, dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list., dates="2016-12-02" should keep only the 02-12-2016 entry in each JSON list. (+27 more) ### Community 11 - "Auth Utilities & SSO" Cohesion: 0.05 Nodes (42): Code Review Report — Final, H1. Session Cookies Over HTTP, H2. Service → Controller Layer Violations, H3. Bare `except:` Blocks in Scraper, H4. Full DataFrame Copy Per Request, H5. Missing Database Indexes, H6. Scraper N+1 HTTP Pattern, H7. Raw `SessionLocal()` Bypassing DI (+34 more) ### Community 12 - "Frontend App Shell" -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) +Cohesion: 0.06 +Nodes (18): 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. (+10 more) ### Community 13 - "Prometheus Tools" -Cohesion: 0.26 -Nodes (8): Empty matrix → empty array., Single row matches cosine_similarity., Multiple rows ranked correctly., Zero query → all zeros., TestBatchCosineSimilarity, batch_cosine_similarity(), batchCosineSimilarity(), Vectorized cosine similarity: one query against N embeddings. +Cohesion: 0.13 +Nodes (21): benchOnce(), main(), fullTextSearch(), minMax(), scoreCandidates(), scoreRecency(), scoreRow(), search() (+13 more) ### Community 14 - "User Roles & Permissions" Cohesion: 0.05 -Nodes (36): _make_stocksapi_client(), Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental. (+28 more) +Nodes (35): _make_stocksapi_client(), Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 35: GET /stocks/historical., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental., Covers line 47: GET /stocks/fundamental. (+27 more) ### Community 15 - "Community 15" 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.06 -Nodes (31): _make_prometheus_client(), Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 111-112: sessionId is None, new session created., Covers lines 111-112: sessionId is None, new session created., Covers lines 109-136: POST /prometheus/chat/stream (SSE)., Covers lines 118-119: sessionId is None, new session created., Covers lines 114-115, 117-120, 122: existing session with verified ownership. (+23 more) +Cohesion: 0.07 +Nodes (24): Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 114-115, 117-120, 122, 125: POST /prometheus/chat., Covers lines 111-112: sessionId is None, new session created., Covers lines 111-112: sessionId is None, new session created., Covers lines 109-136: POST /prometheus/chat/stream (SSE)., Covers lines 118-119: sessionId is None, new session created., Covers lines 114-115, 117-120, 122: existing session with verified ownership., Covers lines 114-115, 117-120, 122: existing session with verified ownership. (+16 more) ### Community 17 - "Community 17" -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) +Cohesion: 0.11 +Nodes (17): Multiple search terms with tickerIndex., Multiple search terms with tickerIndex., Multiple search terms with tickerIndex., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., Search with no index match falls back to string startswith., Multiple search terms with tickerIndex., Multiple search terms with tickerIndex. (+9 more) ### Community 18 - "Community 18" Cohesion: 0.07 @@ -710,8 +710,8 @@ Cohesion: 0.12 Nodes (4): B3Scraper, getCurrentSelic(), getInitialData(), calculateInvestingScore() ### Community 22 - "Community 22" -Cohesion: 0.14 -Nodes (7): filterCotationColumn(), Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., TestQueryLiveCotation +Cohesion: 0.1 +Nodes (13): filterCotationColumn(), Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., Tests for queryLiveCotation and /stocks/cotations/live., GET /cotations without search returns 422., GET /cotations without search returns 422. (+5 more) ### Community 23 - "Community 23" Cohesion: 0.07 @@ -726,20 +726,20 @@ Cohesion: 0.06 Nodes (13): Tests for input validation via HTTP endpoints. Validation is now inline via Bod, PUT /prometheus/sessions/{sessionId} — validates title via Body(...), POST /prometheus/chat/stream — validates query via Body(...), POST /auth/register — validates username, email, password via Body(...), Test that endpoints reject requests with missing required fields., POST /auth/login — validates username, password via Body(...), POST /prometheus/sessions — validates title via Body(...), TestChatValidation (+5 more) ### Community 26 - "Community 26" -Cohesion: 0.11 -Nodes (20): createKey(), _hash_key(), hashKey(), Return SHA-256 hex digest of the given key., Test that concurrent requests are properly serialized at DB level. Th, Test edge case: request exactly at quota limit., Test edge case: request exactly at quota limit., Test that invalid API key returns zero rows affected. (+12 more) +Cohesion: 0.08 +Nodes (27): _hash_key(), hashKey(), Return SHA-256 hex digest of the given key., dbSession(), Tests for atomic API key quota enforcement (race condition fix). Verifies tha, Test that concurrent requests are properly serialized at DB level. Th, Test edge case: request exactly at quota limit., Test edge case: request exactly at quota limit. (+19 more) ### Community 27 - "Community 27" Cohesion: 0.15 Nodes (15): getUserMemories(), getRelevanceScore(), _FakeMemory, A memory with no lastAccessedAt should use baseScore as-is., Scores are deterministic — no cron mutation needed., Same memory at different points in time yields different scores., A memory accessed 10x (baseScore 1.0) should still outrank a memory acce, A rarely-used old memory should lose to a popular fresh one. (+7 more) ### Community 28 - "Community 28" -Cohesion: 0.07 -Nodes (26): Pass field name WITHOUT year (how categorizeColumns returns them)., Pass field name WITHOUT year (how categorizeColumns returns them)., No historical data columns -> inner 400 caught by outer except -> 500., Pass field name WITHOUT year (how categorizeColumns returns them)., Pass field name WITHOUT year (how categorizeColumns returns them)., No historical data columns -> inner 400 caught by outer except -> 500., If an unexpected exception occurs in queryHistorical., No historical data columns -> inner 400 caught by outer except -> 500. (+18 more) +Cohesion: 0.05 +Nodes (42): Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Pass field name WITHOUT year (how categorizeColumns returns them)., Pass field name WITHOUT year (how categorizeColumns returns them)., No historical data columns -> inner 400 caught by outer except -> 500., Pass field name WITHOUT year (how categorizeColumns returns them). (+34 more) ### Community 29 - "Community 29" -Cohesion: 0.09 -Nodes (15): PrometheusGenerator, _make_generator(), Tests to increase coverage for: - main/app/prometheus/generation.py - main/a, test_execute_workflow_basic_no_history(), test_execute_workflow_global_request_api_error(), test_execute_workflow_global_request_status_not_200(), test_execute_workflow_global_request_with_api_key(), test_execute_workflow_session_db_exception() (+7 more) +Cohesion: 0.08 +Nodes (17): PrometheusGenerator, Thread-safe proxy that delegates to per-thread sessions., SessionProxy, _make_generator(), Tests to increase coverage for: - main/app/prometheus/generation.py - main/a, test_execute_workflow_basic_no_history(), test_execute_workflow_global_request_api_error(), test_execute_workflow_global_request_status_not_200() (+9 more) ### Community 30 - "Community 30" Cohesion: 0.07 @@ -755,7 +755,7 @@ Nodes (12): ToolContext — bundles all dependencies for tool execution. Replac ### Community 33 - "Community 33" Cohesion: 0.12 -Nodes (14): BaseHTTPMiddleware, BaseModel, Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter (+6 more) +Nodes (13): BaseHTTPMiddleware, Tests for standardized error responses (errors.py)., SampleBody, TestErrorResponseModel, TestGenericExceptionHandler, TestHTTPExceptionHandler, TestRequestContextFilter, TestSuccessPassthrough (+5 more) ### Community 34 - "Community 34" Cohesion: 0.11 @@ -778,8 +778,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.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) +Cohesion: 0.05 +Nodes (40): 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. (+32 more) ### Community 40 - "Community 40" Cohesion: 0.12 @@ -794,20 +794,20 @@ 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.18 -Nodes (4): hashPassword(), verifyPassword(), TestAuthUtil, TestAuthUtilEdgeCases +Cohesion: 0.11 +Nodes (10): Authentication System, createUserAccount(), createAccessToken(), hashPassword(), verifyPassword(), Google OAuth, JWT Authentication, TestAuthUtil (+2 more) ### Community 44 - "Community 44" Cohesion: 0.14 Nodes (3): UserSession, TestSessionExpiration, TestUserSessionModel ### Community 45 - "Community 45" -Cohesion: 0.09 -Nodes (5): Tests for main/utils/roles.py — covers requirePermission and edge cases., TestCheckAccess, TestPermissionAll, TestRequirePermission, TestRolesHierarchy +Cohesion: 0.06 +Nodes (27): BaseModel, IntFlag, OrunmilaChatManager, MemoryCandidate, OrunmilaMemory, MemoryCandidate, Config, Covers line 28: GET /auth/health. (+19 more) ### Community 46 - "Community 46" -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) +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) ### Community 47 - "Community 47" Cohesion: 0.1 @@ -818,8 +818,8 @@ 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.07 -Nodes (30): 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., dispatchToolCall must route memory tool names to executeMemoryTool. (+22 more) +Cohesion: 0.09 +Nodes (24): dispatchToolCall(), TDD tests: verify memory tools are wired into the Prometheus agent. RED: Thes, 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., test_memory_tool_skipped_without_user() (+16 more) ### Community 50 - "Community 50" Cohesion: 0.07 @@ -835,7 +835,7 @@ Nodes (7): Cover all methods in chat.py (lines 11-120)., Cover all methods in ch ### Community 53 - "Community 53" Cohesion: 0.11 -Nodes (30): applyUpdate(), archiveDead(), clearAll(), clearAllAsync(), count_memories(), countMemories(), countTokensCached(), decayScores() (+22 more) +Nodes (29): applyUpdate(), archiveDead(), clearAll(), clearAllAsync(), count_memories(), countMemories(), decayScores(), deleteMemory() (+21 more) ### Community 54 - "Community 54" Cohesion: 0.2 @@ -854,8 +854,8 @@ Cohesion: 0.09 Nodes (15): Performance benchmark tests for stocks API, Performance benchmark tests for stocks API, Ticker index lookup should be O(1) - very fast, Ticker index lookup should be O(1) - very fast, Prefix scan should be much slower than index lookup, Prefix scan should be much slower than index lookup, Index lookup should be significantly faster than scan, Index lookup should be significantly faster than scan (+7 more) ### Community 58 - "Community 58" -Cohesion: 0.17 -Nodes (15): getGoogleSSO(), createAccessToken(), googleCallback(), googleLogin(), isSecureScheme(), issueSessionCookie(), login(), logout() (+7 more) +Cohesion: 0.15 +Nodes (16): getGoogleSSO(), googleCallback(), googleLogin(), isSecureScheme(), issueSessionCookie(), login(), logout(), register() (+8 more) ### Community 59 - "Community 59" Cohesion: 0.17 @@ -865,13 +865,17 @@ Nodes (20): Tests for main/utils/connectivity.py — covers all branches., test_ Cohesion: 0.09 Nodes (7): Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., Cover all methods in session.py (lines 14-154)., TestSessionManager +### Community 61 - "Community 61" +Cohesion: 0.13 +Nodes (4): PrometheusSession, User, TestPrometheusSessionModel, TestUserModel + ### Community 62 - "Community 62" 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.26 -Nodes (3): Shared query pipeline for historical and fundamental endpoints., sanitizeNanValues(), ResponseCache +Cohesion: 0.28 +Nodes (4): Shared query pipeline for historical and fundamental endpoints., Fetch live prices for B3 tickers via yfinance. B3 tickers must match, sanitizeNanValues(), StocksQueryManager ### Community 64 - "Community 64" Cohesion: 0.06 @@ -886,12 +890,12 @@ Cohesion: 0.1 Nodes (19): 1. Explore Agent — Prometheus Architecture, 2. MySQL Vector Storage (Researcher), 3. Memory Patterns (Researcher), A. Vector Embedding Integration, B. Pandas-First Vector Cache, C. Search Upgrade, code:python (class MemoryCache:), code:python (def searchMemories(cls, db, userId, query, embedding=None, l) (+11 more) ### Community 67 - "Community 67" -Cohesion: 0.15 -Nodes (11): _count_memories(), _create_memory(), _get_memory(), Keys with Jaccard > 0.8 should merge., Keys with Jaccard > 0.8 should merge., Keys with low similarity should not merge., Keys with low similarity should not merge., Keys with low similarity should not merge. (+3 more) +Cohesion: 0.08 +Nodes (11): Verify memory endpoints exist and are wired correctly., GET /prometheus/memories exists., POST /memories rejects missing key., POST /memories rejects missing value., POST /prometheus/memories exists., DELETE /prometheus/memories/{id} exists., GET /memories requires authentication., GET /memories requires USE_PROMETHEUS (basic USER role denied). (+3 more) ### Community 68 - "Community 68" -Cohesion: 0.13 -Nodes (18): SessionManager, PrometheusChatManager, Cover getGoogleSSO (lines 6-14)., Cover getGoogleSSO (lines 6-14)., Cover __init__ and updateDates., Cover __init__ and updateDates (lines 22-37)., Cover streamMessage in agent.py., Cover sendMessage and streamMessage in agent.py. (+10 more) +Cohesion: 0.11 +Nodes (20): authenticateUser(), AuthenticationManager, SessionManager, PrometheusChatManager, Cover getGoogleSSO (lines 6-14)., Cover getGoogleSSO (lines 6-14)., Cover __init__ and updateDates., Cover __init__ and updateDates (lines 22-37). (+12 more) ### Community 69 - "Community 69" Cohesion: 0.22 @@ -906,12 +910,12 @@ 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.14 +Cohesion: 0.15 Nodes (12): initialize(), P5: register memory maintenance on the shared scheduler. Kept in this ser, registerMemoryMaintenanceJob(), initialize(), P5: register the session-cleanup job on the shared scheduler. Kept in thi, registerSessionCleanupJobs(), UserService, getSharedScheduler() (+4 more) ### Community 73 - "Community 73" -Cohesion: 0.16 -Nodes (7): _parse_date(), parseDate(), parseDateEnd(), parseDateRange(), parseDateStart(), TestParseDateRange, TestParseDateRange +Cohesion: 0.19 +Nodes (3): parseDateRange(), TestParseDateRange, TestParseDateRange ### Community 74 - "Community 74" Cohesion: 0.11 @@ -939,7 +943,7 @@ Nodes (44): cn(), AlertDialogAction(), AlertDialogCancel(), AlertDialogContent() ### Community 80 - "Community 80" Cohesion: 0.1 -Nodes (20): buildSummary(), charCount(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers() (+12 more) +Nodes (22): buildSummary(), charCount(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers() (+14 more) ### Community 81 - "Community 81" Cohesion: 0.17 @@ -947,23 +951,23 @@ Nodes (12): getLiveCotation(), Get real-time price quotation for a single Brazil ### Community 82 - "Community 82" Cohesion: 0.16 -Nodes (14): arrowTypeFor(), buildCotationDateIndex(), buildFeatherCache(), buildTickerIndex(), optimizeDtypes(), P1: establish the sorted-cache invariant once at load/refresh. Sorts by (, P1: first-occurrence index over a sortCacheFrame-sorted frame. The cache, Get cached stocks data with optional column filtering. (+6 more) +Nodes (13): arrowTypeFor(), buildCotationDateIndex(), buildFeatherCache(), buildTickerIndex(), optimizeDtypes(), P1: establish the sorted-cache invariant once at load/refresh. Sorts by (, P1: first-occurrence index over a sortCacheFrame-sorted frame. The cache, Get cached stocks data with optional column filtering. (+5 more) ### Community 83 - "Community 83" Cohesion: 0.1 Nodes (21): B3 Market Scraper, Brazilian Stocks Market Scraper, code:env (SCRAPER_ENABLED=FALSE # default False), code:json ({), Configuration Parameters, Constraint Engine ($\Lambda$), Engines, Fundamental Engine ($\Phi$) (+13 more) ### Community 84 - "Community 84" -Cohesion: 0.1 -Nodes (18): chat(), chat_stream(), create_memory(), createMemory(), createSession(), downloadWorkspaceFile(), _forward(), getHistory() (+10 more) +Cohesion: 0.14 +Nodes (12): chat(), chat_stream(), createSession(), downloadWorkspaceFile(), _forward(), getHistory(), Verify the user owns the session, raise 403 otherwise., Verify the user owns the session, raise 403 otherwise. (+4 more) ### Community 85 - "Community 85" Cohesion: 0.21 Nodes (16): AddDividendDialog(), fmtBRL(), AddLotDialog(), HoldingSearchBox(), matchHoldings(), assertDividendTotal(), assertNotFuture(), assertTicker() (+8 more) ### Community 86 - "Community 86" -Cohesion: 0.08 -Nodes (11): Verify memory endpoints exist and are wired correctly., GET /prometheus/memories exists., POST /memories rejects missing key., POST /memories rejects missing value., POST /prometheus/memories exists., DELETE /prometheus/memories/{id} exists., GET /memories requires authentication., GET /memories requires USE_PROMETHEUS (basic USER role denied). (+3 more) +Cohesion: 0.12 +Nodes (10): Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Tests covering query.py lines 50-67., Tests covering query.py lines 50-67., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Regression: is_string_dtype fails when column has strings + None (pandas 2.x)., Tests covering query.py lines 50-67., Tests covering query.py lines 50-67. (+2 more) ### Community 87 - "Community 87" Cohesion: 0.1 @@ -990,8 +994,8 @@ Cohesion: 0.09 Nodes (21): aliases, components, hooks, lib, ui, utils, iconLibrary, menuAccent (+13 more) ### Community 93 - "Community 93" -Cohesion: 0.11 -Nodes (11): Pytest Testing, 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. (+3 more) +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.12 @@ -1014,28 +1018,32 @@ Cohesion: 0.28 Nodes (6): extractTokenPayload(), Tests for extractTokenPayload — the standalone token extraction dependency., Create a mock Starlette Request with given headers., Authorization: Bearer (empty) — no token after Bearer., Authorization: Basic xxx — not Bearer, so no token found., TestExtractTokenPayload ### Community 99 - "Community 99" -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.06 +Nodes (29): _make_prometheus_client(), Return (client, app) with prometheus router and mocked deps., Covers lines 33-36: GET /prometheus/sessions., Covers lines 33-36: GET /prometheus/sessions., Covers lines 33-36: GET /prometheus/sessions., Covers line 52: POST /prometheus/sessions., Covers line 52: POST /prometheus/sessions., Covers line 52: POST /prometheus/sessions. (+21 more) ### Community 100 - "Community 100" -Cohesion: 0.16 -Nodes (6): _assert_gemini_safe(), 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(), test_tool_has_gemini_safe_signature(), TestStateToolFunctions +Cohesion: 0.07 +Nodes (13): _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() (+5 more) ### Community 101 - "Community 101" -Cohesion: 0.15 -Nodes (6): Fetch live prices for B3 tickers via yfinance. B3 tickers must match, StocksQueryManager, 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., Regression: queryFundamental must not mutate the shared cache TIME column. +Cohesion: 0.17 +Nodes (7): Different query parameters should not share cache, Cache should expire after TTL, Tests for query result caching, CacheManager should track cached queries, Query cache should have configurable TTL, getCachedStocks should support column filtering, TestQueryCaching ### Community 102 - "Community 102" Cohesion: 0.12 -Nodes (10): BaseSettings, BaseMansaSettings, DiscordSettings, MysqlSettings, PrometheusSettings, ScraperSettings, StocksApiSettings, UserSettings (+2 more) +Nodes (11): BaseSettings, BaseMansaSettings, DiscordSettings, MysqlSettings, OrunmilaSettings, PrometheusSettings, ScraperSettings, StocksApiSettings (+3 more) ### Community 103 - "Community 103" Cohesion: 0.13 Nodes (14): 10. Performance, 11. Testing, 12. Risks, 13. Out of Scope (YAGNI), 14. Open Questions, 1. Executive Summary, 2. Context & Motivation, 5. Architecture Decision (+6 more) ### Community 104 - "Community 104" -Cohesion: 0.07 -Nodes (26): Covers lines 114-115: session ownership check fails., Covers lines 114-115: session ownership check fails., Covers lines 114-115: session ownership check fails., Covers lines 120-121: session ownership check fails., Covers lines 114-115: session ownership check fails., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126-136: DELETE /user/sessions/{sessionId}., Covers lines 126, 131, 135-136. (+18 more) +Cohesion: 0.06 +Nodes (34): Covers lines 83-84: session not found., 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. (+26 more) + +### Community 105 - "Community 105" +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 106 - "Community 106" Cohesion: 0.22 @@ -1062,16 +1070,16 @@ Cohesion: 0.14 Nodes (13): code:python (import pytest), code:python (import logging), code:bash (git add main/app/prometheus/state.py tests/test_harness_stat), File Map, Global Constraints, Phase 1: HarnessState (In-Memory Agent Scratchpad), Prometheus Harness — Master Implementation Plan (v2: CubeSandbox + On-Demand), Relationship to Existing Systems (+5 more) ### Community 112 - "Community 112" -Cohesion: 0.06 -Nodes (23): _make_stocks_df(), Return a small DataFrame with the columns the query module expects., Return a small DataFrame with the columns the query module expects., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132., Tests covering query.py lines 77-132. (+15 more) +Cohesion: 0.11 +Nodes (16): Calling with all None returns 400., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Tests covering query.py lines 142-202., Calling with all None returns 400. (+8 more) ### Community 113 - "Community 113" Cohesion: 0.15 Nodes (7): write_file returns False when host write fails (e.g. invalid path chars)., read_file reads from host filesystem., write_file writes to host filesystem., list_files lists host filesystem entries., list_files returns empty for missing directory., read_file raises FileNotFoundError for missing file., TestSandboxManager ### Community 114 - "Community 114" -Cohesion: 0.29 -Nodes (6): Covers line 67: HTTPException raised by verifyAccessToken is re-raised., 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: HTTPException raised by verifyAccessToken is re-raised., Covers line 67: HTTPException raised by verifyAccessToken is re-raised. +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.17 @@ -1094,16 +1102,16 @@ Cohesion: 0.07 Nodes (26): code:python ("""Tests for SandboxManager file mutation helpers (delete_fi), code:python (from main.app.prometheus.sandbox import SandboxManager, host), code:python (@router.post("/workspace/upload")), code:bash (git add main/controller/prometheus_controller.py tests/test_), code:python (from unittest.mock import patch, MagicMock), code:python (from main.app.prometheus.sandbox import SandboxManager, host), code:python (async def serve_file(path: str, **_) -> dict:), code:python ("serve_file": serve_file,) (+18 more) ### Community 120 - "Community 120" -Cohesion: 0.14 -Nodes (23): _make_auth_client(), Tests to cover uncovered lines across controllers, UserManager, and auth util., Return (client, app) with auth + user routers and mocked getSession., test_callback_existing_user(), test_callback_generic_exception(), test_callback_new_user(), test_callback_no_user_info(), test_callback_with_state_redirect() (+15 more) +Cohesion: 0.09 +Nodes (35): _make_auth_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., 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 107, 109-130, 133: logout token extraction and revocation. (+27 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.14 -Nodes (11): test_setup_discord_handler_disabled(), test_setup_discord_handler_enabled(), TestSetupLogging, 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 (+3 more) +Cohesion: 0.15 +Nodes (10): test_setup_discord_handler_disabled(), test_setup_discord_handler_enabled(), 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, DiscordHandler (+2 more) ### Community 123 - "Community 123" Cohesion: 0.17 @@ -1113,13 +1121,9 @@ Nodes (12): Appendix A: Codebase Findings, code:block6 (D:\Repositories\server\) Cohesion: 0.07 Nodes (27): code:python (# tests/test_stocks_payload_cache.py), code:python (pc = self.cacheManager.tickerPayloads), code:python (# tests/test_stocks_sync_handlers.py), code:bash (git add main/controller/stocksapi_controller.py main/app/sto), code:python (def test_payload_cache_cotation_index():), code:python (self._cotations: dict[str, bytes] = {}), code:python (cotationCols = ["TICKER", "NOME", "TIME", "COTACAO 10Y PADRA), code:python (self._cotations = cot) (+19 more) -### Community 125 - "Community 125" -Cohesion: 0.13 -Nodes (3): PrometheusSession, createSession(), TestPrometheusSessionModel - ### Community 126 - "Community 126" -Cohesion: 0.2 -Nodes (14): benchOnce(), main(), _fulltext_search(), fullTextSearch(), minMax(), scoreCandidates(), scoreRecency(), scoreRow() (+6 more) +Cohesion: 0.18 +Nodes (11): 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. (+3 more) ### Community 127 - "Community 127" Cohesion: 0.2 @@ -1134,8 +1138,8 @@ 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.07 -Nodes (20): Tests for connection pool configuration, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Query manager should have deserialize method, Integration tests for all query optimizations, All optimizations should be implemented, Query filter should use ticker index, Tests for optimized search filtering (+12 more) +Cohesion: 0.24 +Nodes (8): create_memory(), createMemory(), _downloadModel(), embed(), getEmbeddingModel(), executeMemoryTool(), initialize(), OrunmilaService ### Community 131 - "Community 131" Cohesion: 0.11 @@ -1157,13 +1161,9 @@ Nodes (11): code:yaml (volumes:), code:bash (git add config.py docker-compose.ym Cohesion: 0.11 Nodes (4): cache(), Tests for ResultCache., TestColumnValidator, TestResultCache -### Community 136 - "Community 136" -Cohesion: 0.13 -Nodes (13): Covers lines 83-84: session not found., Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}., Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}., Covers lines 77, 86: session found with history., Covers lines 77, 86: session found with history., Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}., Covers lines 77, 86: session found with history., Covers lines 77, 83-84, 86: GET /prometheus/history/{sessionId}. (+5 more) - ### Community 137 - "Community 137" -Cohesion: 0.14 -Nodes (9): Verify that getSession() returns per-thread Session instances., Calling getSession() twice in the same thread returns the same object., Two threads must NOT share a Session object., With 20 concurrent threads, every thread must get its own Session., The returned object must be a real requests.Session., TestGetSession, get_session(), Return a requests.Session for the current thread. Sessions are created la (+1 more) +Cohesion: 0.17 +Nodes (21): countMemories(), deleteMemory(), extract(), findSimilarKey(), fullTextSearch(), getClient(), getMatrix(), getMemoryLimit() (+13 more) ### Community 138 - "Community 138" Cohesion: 0.18 @@ -1174,8 +1174,8 @@ Cohesion: 0.24 Nodes (6): Dataset, produce_data(), Train script for a single file Need to set the TPU address first: export XRT_TP, A class that handles the reddit data files, A class that handles one dataset, RedditDataset ### Community 140 - "Community 140" -Cohesion: 0.11 -Nodes (28): Base, PrometheusMemory, PrometheusMemory, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService, TestDifferentKeysNoMerge (+20 more) +Cohesion: 0.04 +Nodes (51): Base, OrunmilaMemory, PrometheusMemory, PrometheusMemory, MemoryManager, PrometheusMemory, All memory operations. Stateless class methods., PrometheusService (+43 more) ### Community 141 - "Community 141" Cohesion: 0.24 @@ -1206,7 +1206,7 @@ Cohesion: 0.23 Nodes (3): categorizeColumns(), TestCategorizeColumns, TestCategorizeColumns ### Community 149 - "Community 149" -Cohesion: 0.19 +Cohesion: 0.18 Nodes (5): createSession(), getSessionById(), parseDeviceFields(), revokeSession(), validateSession() ### Community 151 - "Community 151" @@ -1253,6 +1253,10 @@ Nodes (17): §2 Service/Business Separation — MVC 4/10 (Historical layering sc Cohesion: 0.11 Nodes (18): Category 2: Async/Sync Inconsistencies (MEDIUM), Category 4: Caching & Memory (MEDIUM), Category 6: Configuration & Environment (LOW), Category 7: Code Quality (LOW), Executive Summary, Full Code Review Report, Issue 2.1 — All route handlers are synchronous, Issue 2.2 — ServiceManager runs uvicorn in daemon threads (+10 more) +### Community 162 - "Community 162" +Cohesion: 0.15 +Nodes (18): executeStateTool(), get_state(), Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, Retrieve values from the harness state. Use this to recall intermediate results,, test_dispatch_get_state(), test_dispatch_set_state() (+10 more) + ### Community 163 - "Community 163" 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 @@ -1278,8 +1282,8 @@ Cohesion: 0.4 Nodes (4): compilerOptions, baseUrl, paths, @/* ### Community 169 - "Community 169" -Cohesion: 0.18 -Nodes (11): 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 (+3 more) +Cohesion: 0.11 +Nodes (14): 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 (+6 more) ### Community 170 - "Community 170" Cohesion: 0.25 @@ -1326,8 +1330,8 @@ Cohesion: 0.25 Nodes (7): code:block1 (main/), Execution Handoff, Executive Summary: What Mem0 Does That We Don't, File Structure, Mem0 vs Prometheus Memory System — Comparison & Upgrade Plan, Self-Review Checklist, What We Already Do Well (Don't Replace) ### Community 183 - "Community 183" -Cohesion: 0.17 -Nodes (7): Different query parameters should not share cache, Cache should expire after TTL, Tests for query result caching, CacheManager should track cached queries, Query cache should have configurable TTL, getCachedStocks should support column filtering, TestQueryCaching +Cohesion: 0.07 +Nodes (20): Tests for connection pool configuration, Stocks engine should have optimized pool settings, Tests for lazy JSON deserialization, Query manager should have deserialize method, Integration tests for all query optimizations, All optimizations should be implemented, Query filter should use ticker index, Tests for optimized search filtering (+12 more) ### Community 184 - "Community 184" Cohesion: 0.11 @@ -1342,8 +1346,8 @@ Cohesion: 0.29 Nodes (6): DEVELOPER:, PREMIUM:, Prometheus, STOCKS_API, USER:, User structure defined by string roles: ### Community 188 - "Community 188" -Cohesion: 0.38 -Nodes (9): 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_submit_called_on_error(), test_with_exception_info() (+1 more) +Cohesion: 0.33 +Nodes (10): 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_submit_called_on_error(), test_with_exception_info() (+2 more) ### Community 189 - "Community 189" Cohesion: 0.36 @@ -1366,8 +1370,8 @@ Cohesion: 0.33 Nodes (6): normalizer, clean_text, handle_chinese_chars, lowercase, strip_accents, type ### Community 194 - "Community 194" -Cohesion: 0.29 -Nodes (5): buildClient(), connect(), ensureFastmcp(), MCPClientPool, _parseServers() +Cohesion: 0.38 +Nodes (9): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), toColumnar() (+1 more) ### Community 195 - "Community 195" Cohesion: 0.33 @@ -1378,8 +1382,8 @@ Cohesion: 0.33 Nodes (5): cls_token, mask_token, pad_token, sep_token, unk_token ### Community 197 - "Community 197" -Cohesion: 0.1 -Nodes (15): generateKey(), getHistorical(), JSONBytesResponse, 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, Sends pre-serialized JSON bytes without re-encoding (cache-friendly)., Get year-based historical financial data for Brazilian B3 stocks. Returns (+7 more) +Cohesion: 0.18 +Nodes (11): 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 (+3 more) ### Community 198 - "Community 198" Cohesion: 0.33 @@ -1422,8 +1426,8 @@ 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.18 -Nodes (11): 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. (+3 more) +Cohesion: 0.2 +Nodes (10): 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 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 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. (+2 more) ### Community 209 - "Community 209" Cohesion: 0.33 @@ -1446,8 +1450,8 @@ Cohesion: 0.17 Nodes (11): code:python (def test_search_defersEmbeddingBlob(db):), code:python (from contextlib import contextmanager), code:python (from sqlalchemy.orm import defer), code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear), code:python (def test_search_fusesFulltextOverVectorOnly(db):), code:python (def minMax(values: list[float]) -> list[float]:), code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear), Global Constraints (+3 more) ### Community 215 - "Community 215" -Cohesion: 0.2 -Nodes (14): Store a value in state. Marks state as changed for context injection., compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest() (+6 more) +Cohesion: 0.12 +Nodes (12): Store a value in state. Marks state as changed for context injection., ResponseCache, autoAbbreviate(), dedupAbbrev(), detectNestedFields(), generateAbbreviations(), _parse_date(), parseDate() (+4 more) ### Community 216 - "Community 216" Cohesion: 0.29 @@ -1518,8 +1522,8 @@ Cohesion: 0.4 Nodes (5): 8. Build Sequence (4 phases, each independently shippable), Phase 0 — Sandbox foundation (1-2 days, no user-facing change), Phase 1 — MCP exposure of STOCKS_API (1 day), Phase 2 — Refactor PROMETHEUS to agentic (3-5 days, the big one), Phase 3 — Hardening (1-2 days, can ship incrementally) ### Community 234 - "Community 234" -Cohesion: 0.29 -Nodes (6): GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422. +Cohesion: 0.27 +Nodes (16): OrunmilaSandbox, create(), delete_file(), destroy(), execute(), getClient(), getOrCreate(), hostPath() (+8 more) ### Community 236 - "Community 236" Cohesion: 0.5 @@ -1566,8 +1570,8 @@ Cohesion: 0.5 Nodes (4): Category 5: Error Handling Gaps (MEDIUM), Issue 5.1 — Generic exception handler swallows traceback in production, Issue 5.2 — DiscordHandler sends only message, not traceback, Issue 5.3 — `_build_error_response` ignores `status_code` parameter ### Community 251 - "Community 251" -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() +Cohesion: 0.12 +Nodes (7): Pytest Testing, 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() ### Community 252 - "Community 252" Cohesion: 0.5 @@ -1586,8 +1590,8 @@ 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.21 +Nodes (6): buildSystemPrompt(), getClient(), Orunmila, persistEvent(), OrunmilaCompactor, newTokenCache() ### Community 258 - "Community 258" Cohesion: 0.67 @@ -1610,8 +1614,8 @@ Cohesion: 0.22 Nodes (8): 1. Prime owns the goal, lanes own the work, 2. Dispatch: `delegate()`, one per lane, one turn, 3. Delegate toolsets vary — verify each lane, 4. Trust nothing — verify everything, 5. Windows PowerShell survival, 6. Finish per lane, not per swarm, 7. Standing bans (this repo), SWARMS.md — subagent swarm playbook (OpenCode / Hermes) ### Community 474 - "Community 474" -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 +Cohesion: 0.26 +Nodes (13): buildSummary(), countTokens(), dedup(), extractDecisions(), extractMetrics(), extractSnapshots(), extractTickers(), extractToolCalls() (+5 more) ### Community 476 - "Community 476" Cohesion: 0.22 @@ -1637,6 +1641,10 @@ Nodes (4): code:python (def test_extract_temporal_info():), code:python (# main/ Cohesion: 0.5 Nodes (4): code:python (def test_session_scoped_memory(db_session, sample_user):), code:python (# Add to main/models/memory.py), code:bash (git add main/models/memory.py main/app/prometheus/memory.py ), Task 8: Session Scoping +### Community 482 - "Community 482" +Cohesion: 0.11 +Nodes (4): FastAPI, Tests for inline pagination params (used in user + prometheus controllers)., TestPaginationParams, PaginationParams + ### Community 483 - "Community 483" Cohesion: 0.5 Nodes (4): code:python (def test_consolidation_preserves_decisions():), code:python (# Add to main/app/prometheus/summarizer.py), code:bash (git add main/app/prometheus/summarizer.py tests/test_consoli), Task 9: Memory Consolidation @@ -1654,52 +1662,48 @@ Cohesion: 0.23 Nodes (6): CHART_COLORS, PortfolioBarsCard(), PortfolioPieCard(), tooltipStyle, groupHistoryByMonth(), monthKey() ### Community 487 - "Community 487" -Cohesion: 0.16 +Cohesion: 0.15 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,, Execute Python code in an isolated sandbox. Use for quantitative analysis, (+6 more) -### Community 488 - "Community 488" -Cohesion: 0.32 -Nodes (4): memoryMaintenance(), _create(), After 10 cycles, preference (0.99^10) > context (0.90^10)., TestTypeAwareDecay - ### 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 490 - "Community 490" Cohesion: 0.22 -Nodes (8): API Endpoints, code:env (PROMETHEUS_ENABLED=TRUE), code:bash (python run.py), code:mermaid (graph TD), License, Orunmila, Usage, Workflow +Nodes (8): API Endpoints, code:env (ORUNMILA_ENABLED=TRUE), code:bash (python run.py), code:mermaid (graph TD), License, Orunmila, Usage, Workflow ### Community 491 - "Community 491" -Cohesion: 0.25 -Nodes (4): Authentication System, Google OAuth, JWT Authentication, TestSessionExpiryConfig +Cohesion: 0.43 +Nodes (4): _extractCredential(), _introspectUrl(), introspectUser(), _serviceToken() ### Community 492 - "Community 492" Cohesion: 0.33 Nodes (5): Baseline (lane 4), Export recipe, Move triggers (any one fires the migration), Options, Vector Scale-Up Runbook ### Community 493 - "Community 493" -Cohesion: 0.07 -Nodes (28): 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, Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval. (+20 more) +Cohesion: 0.2 +Nodes (9): 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, Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., Covers lines 34, 36-38, 40-44, 46, 48-49, 51, 58-59, 61, 63-67: UserManager.getC, Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval. (+1 more) ### Community 495 - "Community 495" -Cohesion: 0.29 -Nodes (7): check_cache(), Read a file from the sandbox filesystem. Args: path: Absolute pa, List files in the workspace directory. Args: path: Directory pat, Upload a file to the sandbox filesystem. Use this to push data files (CSV,, Check if a computed result exists in the cache. Use before executing expens, read_sandbox_file(), upload_to_sandbox() +Cohesion: 0.14 +Nodes (13): dispatchToolCall(), execute_code(), list_files(), 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, List files in the workspace directory. Args: path: Directory pat, 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 (+5 more) ### Community 497 - "Community 497" -Cohesion: 0.2 -Nodes (9): 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., 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., Two dates in the range, both valid. (+1 more) +Cohesion: 0.23 +Nodes (6): chat_stream(), downloadWorkspaceFile(), getHistory(), resumeChatStream(), updateSessionTitle(), verifySessionOwnsership() ### Community 498 - "Community 498" -Cohesion: 0.05 -Nodes (53): AuthenticationManager, IntFlag, MemoryCandidate, 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. (+45 more) +Cohesion: 0.07 +Nodes (24): 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 13: UserManager.__init__., Covers line 13: UserManager.__init__., Covers line 13: UserManager.__init__. (+16 more) ### Community 499 - "Community 499" Cohesion: 0.2 Nodes (9): code:python (import numpy as np), code:python (def normalizeRows(matrix: np.ndarray) -> np.ndarray:), code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm), code:python ("""One-shot: renormalize stored embeddings to unit norm. Usa), code:bash (git add scripts/backfill_normalize_embeddings.py), Global Constraints, Lane 1: Normalized Embeddings + Dot-Product Search Implementation Plan, Task 1: Normalize on encode + row-normalize helper (+1 more) ### Community 500 - "Community 500" -Cohesion: 0.22 -Nodes (4): authenticateUser(), createUserAccount(), FastAPI, PaginationParams +Cohesion: 0.13 +Nodes (21): generateKey(), createKey(), createStoredApiKey(), hashApiKey(), initVerifyClient(), isValidStoredKey(), _serviceToken(), verifyAPIKey() (+13 more) ### Community 501 - "Community 501" Cohesion: 0.22 @@ -1733,41 +1737,41 @@ Nodes (5): Disputed (already litigated — needs your ruling to proceed), Held o Cohesion: 0.6 Nodes (3): bench(), main(), stats() +### Community 512 - "Community 512" +Cohesion: 0.47 +Nodes (3): TestCleanup, cleanup(), Close the main thread's session at interpreter shutdown. + ### Community 517 - "Community 517" Cohesion: 0.2 Nodes (16): baseFrame(), deserializeJsonColumns(), envelope(), fetchLivePayload(), filterBySearchTerms(), _filterCotationByDate(), filterCotationData(), finalize() (+8 more) ### Community 518 - "Community 518" -Cohesion: 0.06 -Nodes (26): 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., Decay happens first, then archive check with new scores. (+18 more) +Cohesion: 0.1 +Nodes (15): create_memories(), Decay happens first, then archive check with new scores., Decay happens first, then archive check with new scores., Score that decays to >= threshold stays alive. 0.11 * 0.95 = 0.1045 >= 0.1., Score that decays to >= threshold stays alive. 0.12 * 0.90 = 0.108 >= 0.1., 89 days with low score → not archived (need > 90)., 89 days with low score → not archived (need > 90)., Helper to create memories with controlled baseScore, lastAccessedAt, accessCount (+7 more) ### Community 519 - "Community 519" Cohesion: 0.57 Nodes (6): addRole(), addRoleToUser(), getCurrentUser(), getRolesList(), hasRole(), toDict() ### Community 520 - "Community 520" -Cohesion: 0.15 -Nodes (10): replaceNan handles direct float NaN values (line 34)., pd.NA is not a string, so lambda returns it unchanged., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged. (+2 more) +Cohesion: 0.16 +Nodes (9): pd.NA is not a string, so lambda returns it unchanged., All four SPECIAL_COLS should parse correctly when mixed with None., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., pd.NA is not a string, so lambda returns it unchanged., All four SPECIAL_COLS should parse correctly when mixed with None., All four SPECIAL_COLS should parse correctly when mixed with None. (+1 more) ### Community 521 - "Community 521" -Cohesion: 0.22 -Nodes (8): Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false., Hit the actual /stocks/cotations HTTP endpoint with adjusted=false. - -### Community 522 - "Community 522" -Cohesion: 0.22 -Nodes (7): Integration tests for all query optimizations, Integration tests for all query optimizations, All optimizations should be implemented, All optimizations should be implemented, Query filter should use ticker index, Query filter should use ticker index, TestQueryOptimization +Cohesion: 0.33 +Nodes (3): buildClient(), connect(), MCPClientPool ### Community 523 - "Community 523" -Cohesion: 0.11 -Nodes (21): 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, 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 (+13 more) +Cohesion: 0.25 +Nodes (8): check_cache(), Read a file from the sandbox filesystem. Args: path: Absolute pa, List files in the workspace directory. Args: path: Directory pat, 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, Check if a computed result exists in the cache. Use before executing expens, read_sandbox_file(), upload_to_sandbox() ### Community 524 - "Community 524" -Cohesion: 0.12 -Nodes (16): Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., Covers line 16: empty password raises ValueError., Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers line 16: empty password raises ValueError., Covers lines 48-49: jwt.ExpiredSignatureError., Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 45-51: verifyAccessToken with expired and invalid tokens. (+8 more) +Cohesion: 0.11 +Nodes (19): introspectToken(), verifyAccessToken(), introspect(), Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 48-49: jwt.ExpiredSignatureError., Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 45-51: verifyAccessToken with expired and invalid tokens., Covers lines 48-49: jwt.ExpiredSignatureError. (+11 more) ### Community 525 - "Community 525" Cohesion: 0.25 -Nodes (8): 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 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 a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the sandbox filesystem. Args: path: Absolute pa, Read a file from the workspace. Args: path: Path to the file (e., read_file() +Nodes (9): list_files(), List files in the workspace directory. Args: path: Directory pat, List files in the workspace directory. Args: path: Directory pat, 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, List files in the workspace directory. Args: path: Directory pat, List files in the workspace directory. Args: path: Directory pat, List files in the workspace directory. Args: path: Directory pat (+1 more) ### Community 526 - "Community 526" Cohesion: 0.33 @@ -1777,6 +1781,10 @@ Nodes (7): buildKey(), clearAll(), getMatrix(), invalidateUser(), runAwait(), ma Cohesion: 0.29 Nodes (6): Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404., Covers lines 19-20: user not found raises 404. +### Community 529 - "Community 529" +Cohesion: 0.22 +Nodes (9): 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, 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, Write a file to the workspace. Use this to save data files (CSV, JSON, scri, Get a download link for a workspace file to share with the user. Use this (+1 more) + ### Community 530 - "Community 530" Cohesion: 0.39 Nodes (8): _build_error_response(), buildErrorResponse(), generic_exception_handler(), genericExceptionHandler(), http_exception_handler(), httpExceptionHandler(), validation_exception_handler(), validationExceptionHandler() @@ -1794,21 +1802,17 @@ Cohesion: 0.5 Nodes (4): LATER (P2 — when touching these files), NOW (P0 — fix before next release), Priority Matrix, SOON (P1 — fix within 2 weeks) ### Community 535 - "Community 535" -Cohesion: 0.14 -Nodes (11): Integration tests for the verifyAPIKey function., Test successful API key verification., Integration tests for the verifyAPIKey function., Test API key verification when quota is exceeded., Test API key verification with invalid key., Test API key verification with missing key., Test API key verification with invalid key., Test that API key system can be disabled. (+3 more) +Cohesion: 0.22 +Nodes (6): Store a memory about the user's preferences, analysis results, or feedback., save_memory(), batchCosineSimilarity(), contentHash(), embed(), normalizeRows() ### Community 536 - "Community 536" Cohesion: 0.19 -Nodes (9): Config, AuthenticationService, initialize(), initialize(), MCPDetectMiddleware, StocksAPIService, getApp(), runAll() (+1 more) +Nodes (8): AuthenticationService, initialize(), initialize(), MCPDetectMiddleware, StocksAPIService, getApp(), runAll(), ServiceManager ### Community 538 - "Community 538" Cohesion: 0.4 Nodes (5): Category 8: Testing Gaps (MEDIUM), Issue 8.1 — No integration tests for full request lifecycle, Issue 8.2 — No tests for scraper, stocks query, or cache, Issue 8.3 — No tests for Google OAuth callback, Issue 8.4 — No tests for session cleanup -### Community 539 - "Community 539" -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 540 - "Community 540" Cohesion: 0.29 Nodes (6): code:python (import argparse), code:bash (git add bench/bench_memory_vector.py), Global Constraints, Lane 4: Before/After Bench Implementation Plan, Task 1: Bench script with synthetic scale sweep, Task 2: Record baseline and post-lane numbers @@ -1825,17 +1829,13 @@ Nodes (3): at, label, rows Cohesion: 0.2 Nodes (9): Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132)., Invalid date format raises exception (line 132). (+1 more) -### Community 544 - "Community 544" -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 545 - "Community 545" Cohesion: 0.29 Nodes (7): code:python (def test_split_cliff_no_fake_loss_on_adjusted_series(monkeyp), code:python (def test_snapshot_includes_received_and_cash_gain(dbSession,), code:python (def test_history_merges_dividend_receipts(dbSession, sampleU), code:python (def test_ex_div_methodology_decides_received_stacking(dbSess), code:python (def ex_div_smoothing_verdict(padrao_before: float, padrao_af), code:bash (git add main/app/wallet/manager.py main/controller/wallet_co), Task 12: Split-cliff regression test + snapshot/history dividend extension + final gate ### Community 546 - "Community 546" Cohesion: 0.29 -Nodes (6): dbSession(), Tests for atomic API key quota enforcement (race condition fix). Verifies tha, Sample API key data for tests., Create an in-memory SQLite database for testing., Sample API key data for tests., sampleKeyData() +Nodes (6): Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers lines 48-49: user not in DB., Covers line 16: empty password raises ValueError. ### Community 547 - "Community 547" Cohesion: 0.33 @@ -1890,20 +1890,24 @@ Cohesion: 0.5 Nodes (4): code:python (import pytest), code:python (import logging), code:bash (git add main/app/wallet/prices.py tests/test_wallet_prices.p), Task 6: Price client — one batched STOCKS_API fetch per snapshot ### Community 560 - "Community 560" -Cohesion: 0.09 -Nodes (20): Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 17, 22-27: user found, role not present, role added. (+12 more) +Cohesion: 0.29 +Nodes (6): Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 65-67: unexpected exception., Covers lines 48-49: jwt.ExpiredSignatureError. -### Community 562 - "Community 562" -Cohesion: 0.22 -Nodes (8): Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range., Historical query with a year range. +### Community 561 - "Community 561" +Cohesion: 0.29 +Nodes (6): Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation., Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation. -### Community 563 - "Community 563" +### Community 562 - "Community 562" Cohesion: 0.4 Nodes (5): initialize(), P5: register the scraper cron jobs on the shared scheduler. Kept in this, registerScraperJobs(), runScraper(), ScraperService +### Community 563 - "Community 563" +Cohesion: 0.33 +Nodes (6): Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 13, 17, 19-20, 22-27: UserManager.addRoleToUser., Covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval., TestAddRoleToUser + ### Community 564 - "Community 564" -Cohesion: 0.47 -Nodes (3): TestCleanup, cleanup(), Close the main thread's session at interpreter shutdown. +Cohesion: 0.33 +Nodes (5): Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added., Covers lines 17, 22-27: user found, role not present, role added. ### Community 565 - "Community 565" Cohesion: 0.33 @@ -1915,51 +1919,87 @@ Nodes (5): Non-JSON-dict/list string is left as-is., Non-JSON-dict/list string i ### Community 567 - "Community 567" Cohesion: 0.14 -Nodes (18): 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() (+10 more) +Nodes (11): Integration tests for the verifyAPIKey function., Test successful API key verification., Integration tests for the verifyAPIKey function., Test API key verification when quota is exceeded., Test API key verification with invalid key., Test API key verification with missing key., Test API key verification with invalid key., Test that API key system can be disabled. (+3 more) ### Community 568 - "Community 568" -Cohesion: 0.29 -Nodes (6): GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422., GET /cotations without search returns 422. +Cohesion: 0.33 +Nodes (5): 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 42-44: session validation fails. ### Community 569 - "Community 569" -Cohesion: 0.5 -Nodes (4): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), Task 2: Alembic migration for wallet tables +Cohesion: 0.33 +Nodes (5): Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails., Covers lines 42-44: session validation fails. ### Community 570 - "Community 570" +Cohesion: 0.18 +Nodes (8): memoryMaintenance(), 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., _create(), After 10 cycles, preference (0.99^10) > context (0.90^10)., TestTypeAwareDecay + +### Community 571 - "Community 571" Cohesion: 0.4 -Nodes (4): COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament, COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament, COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament, COTACAO 10Y PADRAO and COTACAO 10Y AJUSTADA belong to /cotations, not /fundament +Nodes (5): 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, TestVerifyAPIKey -### Community 573 - "Community 573" -Cohesion: 0.67 -Nodes (3): checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., TestCheckServiceConnection +### Community 572 - "Community 572" +Cohesion: 0.5 +Nodes (4): code:python ("""add wallet_holdings and wallet_lots tables), code:python (import main.models.wallet), code:bash (git add migrations/versions/wallet_tables_20260904_add_walle), Task 2: Alembic migration for wallet tables ### Community 574 - "Community 574" -Cohesion: 0.67 -Nodes (3): checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., TestCheckMySqlConnection +Cohesion: 0.33 +Nodes (10): compactCotations(), compactRow(), compactValue(), compressResponse(), fixHeaders(), getAbbr(), getNest(), rebuildAbbrevs() (+2 more) + +### Community 575 - "Community 575" +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 577 - "Community 577" Cohesion: 0.33 -Nodes (5): 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., TestGeminiCompatibility +Nodes (5): replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34)., replaceNan handles direct float NaN values (line 34). + +### Community 580 - "Community 580" +Cohesion: 0.14 +Nodes (9): Verify that getSession() returns per-thread Session instances., Calling getSession() twice in the same thread returns the same object., Two threads must NOT share a Session object., With 20 concurrent threads, every thread must get its own Session., The returned object must be a real requests.Session., TestGetSession, get_session(), Return a requests.Session for the current thread. Sessions are created la (+1 more) + +### Community 582 - "Community 582" +Cohesion: 0.22 +Nodes (8): 1. Feature inventory + nav structure, 2. User lifecycle end-to-end, 3. Wallet API reference, 4. Data model inference (from payloads, no DB access), 5. Product logic, 5b. Gaps / unverified (do not treat as fact), 6. Concrete Mansa proposal (build first → later; minimal sketches), Investidor10 Wallet — Empirical Research for Mansa + +### Community 583 - "Community 583" +Cohesion: 0.22 +Nodes (8): 1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield), 1.2 Non-functional, 1. Requirements, 2. Domain model, 3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` → `main/service/wallet_service.py::` → `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout), 4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase), 5. Risks / assumptions (honest flags carried over — do not treat as fact), Mansa Wallet — Spec-Driven Implementation Spec + +### Community 587 - "Community 587" +Cohesion: 0.29 +Nodes (6): GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422., GET /stocks/realtime-cotation without search returns 422. + +### Community 590 - "Community 590" +Cohesion: 0.22 +Nodes (7): Integration tests for all query optimizations, Integration tests for all query optimizations, All optimizations should be implemented, All optimizations should be implemented, Query filter should use ticker index, Query filter should use ticker index, TestQueryOptimization + +### Community 595 - "Community 595" +Cohesion: 0.67 +Nodes (3): checkServiceConnection — success, not found, errors., checkServiceConnection — success, not found, errors., TestCheckServiceConnection + +### Community 596 - "Community 596" +Cohesion: 0.67 +Nodes (3): checkMySqlConnection — success, errors, engine=None paths., checkMySqlConnection — success, errors, engine=None paths., TestCheckMySqlConnection ## Knowledge Gaps -- **3054 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3049 more) +- **3075 isolated node(s):** `$schema`, `style`, `rsc`, `tsx`, `config` (+3070 more) These have ≤1 connection - possible missing edges or undocumented components. -- **241 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **231 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 93` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 131`, `Community 518`, `Community 135`, `Device Detection`, `Community 130`, `Community 138`, `Community 140`, `Community 527`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 546`, `Community 40`, `Community 44`, `Community 45`, `Community 172`, `Community 49`, `Community 51`, `Community 567`, `Community 184`, `Community 186`, `Community 59`, `Community 188`, `Community 86`, `Community 475`, `Community 120`, `Community 477`, `Community 100`, `Community 102`, `Community 488`, `Community 491`, `Community 500`, `Community 502`, `Community 504`, `Community 251`, `Community 125`?** - _High betweenness centrality (0.081) - this node is a cross-community bridge._ -- **Why does `FastAPI` connect `Community 500` to `Community 129`, `Community 517`, `Community 519`, `Community 530`, `Community 18`, `Community 147`, `Community 536`, `Community 26`, `Community 541`, `Community 544`, `Community 33`, `Community 546`, `Community 34`, `Community 40`, `Community 45`, `Community 567`, `Community 58`, `Community 197`, `Community 71`, `Community 73`, `Community 84`, `Community 475`, `Community 120`, `Community 477`, `Community 498`, `Community 501`, `Community 504`?** - _High betweenness centrality (0.051) - this node is a cross-community bridge._ -- **Why does `UserManager` connect `Community 498` to `Prometheus Agent`, `Community 519`, `Community 136`, `Prometheus Memory`, `Community 524`, `Community 141`, `User Roles & Permissions`, `Community 16`, `Community 22`, `Community 37`, `Community 47`, `Community 560`, `Community 178`, `Community 565`, `Community 567`, `Community 58`, `Community 61`, `Community 68`, `Community 86`, `Community 221`, `Community 99`, `Community 231`, `Community 104`, `Community 107`, `Community 493`, `Community 112`, `Community 125`?** - _High betweenness centrality (0.033) - this node is a cross-community bridge._ +- **Why does `Pytest Testing` connect `Community 251` to `Authentication Core`, `Frontend Components`, `Community 129`, `Data Models & Types`, `Community 131`, `Community 518`, `Community 135`, `Community 138`, `Community 140`, `Community 527`, `Community 18`, `Community 147`, `Community 24`, `Community 25`, `Community 26`, `Community 27`, `Community 29`, `Community 32`, `Community 33`, `Community 162`, `Community 40`, `Community 43`, `Community 44`, `Community 45`, `Community 172`, `Community 49`, `Community 51`, `Community 183`, `Community 184`, `Community 186`, `Community 59`, `Community 188`, `Community 61`, `Community 570`, `Community 67`, `Community 475`, `Community 93`, `Community 477`, `Community 482`, `Community 100`, `Community 500`, `Community 502`, `Community 120`?** + _High betweenness centrality (0.079) - this node is a cross-community bridge._ +- **Why does `FastAPI` connect `Community 482` to `Community 129`, `Community 517`, `Community 519`, `Community 530`, `Community 18`, `Community 147`, `Community 536`, `Community 26`, `Community 541`, `Community 33`, `Community 34`, `Community 40`, `Community 169`, `Community 43`, `Community 45`, `Community 58`, `Community 68`, `Community 71`, `Community 84`, `Community 215`, `Community 475`, `Community 477`, `Community 491`, `Community 497`, `Community 500`, `Community 501`, `Community 120`?** + _High betweenness centrality (0.044) - this node is a cross-community bridge._ +- **Why does `UserManager` connect `Community 498` to `Prometheus Agent`, `Community 519`, `Prometheus Memory`, `Community 524`, `Community 141`, `User Roles & Permissions`, `Community 16`, `Community 22`, `Community 28`, `Community 37`, `Community 45`, `Community 47`, `Community 178`, `Community 563`, `Community 565`, `Community 58`, `Community 571`, `Community 61`, `Community 67`, `Community 68`, `Community 86`, `Community 221`, `Community 99`, `Community 231`, `Community 104`, `Community 107`, `Community 493`, `Community 112`, `Community 114`, `Community 120`?** + _High betweenness centrality (0.042) - 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?** _`HarnessState` has 52 INFERRED edges - model-reasoned connections that need verification._ - **Are the 54 inferred relationships involving `UserManager` (e.g. with `AuthenticationManager` and `User`) actually correct?** _`UserManager` has 54 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 49 inferred relationships involving `Permission` (e.g. with `MemoryCandidate` and `PrometheusMemory`) actually correct?** - _`Permission` has 49 INFERRED edges - model-reasoned connections that need verification._ \ No newline at end of file +- **Are the 52 inferred relationships involving `Permission` (e.g. with `MemoryCandidate` and `OrunmilaMemory`) actually correct?** + _`Permission` has 52 INFERRED edges - model-reasoned connections that need verification._ \ No newline at end of file diff --git a/graphify-out/graph.json b/graphify-out/graph.json index 54a2146b..3d3333dc 100644 --- a/graphify-out/graph.json +++ b/graphify-out/graph.json @@ -205,13 +205,13 @@ "norm_label": "stocksapisettings" }, { - "label": "PrometheusSettings", + "label": "OrunmilaSettings", "file_type": "code", "source_file": "config.py", "source_location": "L59", - "id": "server_config_prometheussettings", + "id": "server_config_orunmilasettings", "community": 102, - "norm_label": "prometheussettings" + "norm_label": "orunmilasettings" }, { "label": "ScraperSettings", @@ -237,7 +237,7 @@ "source_file": "config.py", "source_location": "L91", "id": "server_config_config", - "community": 536, + "community": 45, "norm_label": "config" }, { @@ -2190,7 +2190,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L1", "id": "main_app_authentication_authentication_py", - "community": 500, + "community": 68, "norm_label": "authentication.py" }, { @@ -2199,7 +2199,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L14", "id": "authentication_authentication_authenticationmanager", - "community": 498, + "community": 68, "norm_label": "authenticationmanager" }, { @@ -2208,7 +2208,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L16", "id": "authentication_authentication_createuseraccount", - "community": 500, + "community": 43, "norm_label": "createuseraccount()" }, { @@ -2217,7 +2217,7 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L51", "id": "authentication_authentication_authenticategoogleuser", - "community": 500, + "community": 68, "norm_label": "authenticategoogleuser()" }, { @@ -2226,9 +2226,18 @@ "source_file": "main/app/authentication/authentication.py", "source_location": "L65", "id": "authentication_authentication_authenticateuser", - "community": 500, + "community": 68, "norm_label": "authenticateuser()" }, + { + "label": "resolveUniqueUsername()", + "file_type": "code", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L79", + "id": "authentication_authentication_resolveuniqueusername", + "community": 68, + "norm_label": "resolveuniqueusername()" + }, { "label": "constants.py", "file_type": "code", @@ -2238,6 +2247,24 @@ "community": 269, "norm_label": "constants.py" }, + { + "label": "introspect.py", + "file_type": "code", + "source_file": "main/app/authentication/introspect.py", + "source_location": "L1", + "id": "main_app_authentication_introspect_py", + "community": 482, + "norm_label": "introspect.py" + }, + { + "label": "introspectToken()", + "file_type": "code", + "source_file": "main/app/authentication/introspect.py", + "source_location": "L16", + "id": "authentication_introspect_introspecttoken", + "community": 524, + "norm_label": "introspecttoken()" + }, { "label": "session.py", "file_type": "code", @@ -2314,16 +2341,25 @@ "label": "revokeAllSessions()", "file_type": "code", "source_file": "main/app/authentication/session.py", - "source_location": "L104", + "source_location": "L109", "id": "authentication_session_revokeallsessions", "community": 149, "norm_label": "revokeallsessions()" }, + { + "label": "revokeAllExcept()", + "file_type": "code", + "source_file": "main/app/authentication/session.py", + "source_location": "L122", + "id": "authentication_session_revokeallexcept", + "community": 149, + "norm_label": "revokeallexcept()" + }, { "label": "updateLastActive()", "file_type": "code", "source_file": "main/app/authentication/session.py", - "source_location": "L117", + "source_location": "L132", "id": "authentication_session_updatelastactive", "community": 149, "norm_label": "updatelastactive()" @@ -2332,7 +2368,7 @@ "label": "validateSession()", "file_type": "code", "source_file": "main/app/authentication/session.py", - "source_location": "L127", + "source_location": "L142", "id": "authentication_session_validatesession", "community": 149, "norm_label": "validatesession()" @@ -2361,7 +2397,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L1", "id": "main_app_authentication_util_py", - "community": 544, + "community": 43, "norm_label": "util.py" }, { @@ -2388,7 +2424,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L31", "id": "authentication_util_createaccesstoken", - "community": 58, + "community": 43, "norm_label": "createaccesstoken()" }, { @@ -2397,7 +2433,7 @@ "source_file": "main/app/authentication/util.py", "source_location": "L44", "id": "authentication_util_verifyaccesstoken", - "community": 544, + "community": 524, "norm_label": "verifyaccesstoken()" }, { @@ -2412,496 +2448,496 @@ { "label": "agent.py", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L1", - "id": "main_app_prometheus_agent_py", - "community": 116, + "id": "main_app_orunmila_agent_py", + "community": 256, "norm_label": "agent.py" }, { "label": "safeFilter()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L25", - "id": "prometheus_agent_safefilter", - "community": 116, + "id": "orunmila_agent_safefilter", + "community": 256, "norm_label": "safefilter()" }, { "label": "persistEvent()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L31", - "id": "prometheus_agent_persistevent", - "community": 116, + "id": "orunmila_agent_persistevent", + "community": 256, "norm_label": "persistevent()" }, { "label": "getClient()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L45", - "id": "prometheus_agent_getclient", - "community": 116, + "id": "orunmila_agent_getclient", + "community": 256, "norm_label": "getclient()" }, { - "label": "Prometheus", + "label": "Orunmila", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L208", - "id": "prometheus_agent_prometheus", - "community": 116, - "norm_label": "prometheus" + "id": "orunmila_agent_orunmila", + "community": 256, + "norm_label": "orunmila" }, { "label": ".__init__()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L209", - "id": "prometheus_agent_prometheus_init", - "community": 116, + "id": "orunmila_agent_orunmila_init", + "community": 256, "norm_label": ".__init__()" }, { "label": "buildSystemPrompt()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L213", - "id": "prometheus_agent_buildsystemprompt", - "community": 116, + "id": "orunmila_agent_buildsystemprompt", + "community": 256, "norm_label": "buildsystemprompt()" }, { "label": ".makeChat()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L242", - "id": "prometheus_agent_prometheus_makechat", - "community": 116, + "id": "orunmila_agent_orunmila_makechat", + "community": 256, "norm_label": ".makechat()" }, { "label": ".streamMessage()", "file_type": "code", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L253", - "id": "prometheus_agent_prometheus_streammessage", - "community": 116, + "id": "orunmila_agent_orunmila_streammessage", + "community": 256, "norm_label": ".streammessage()" }, { "label": "chat.py", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L1", - "id": "main_app_prometheus_chat_py", - "community": 125, + "id": "main_app_orunmila_chat_py", + "community": 136, "norm_label": "chat.py" }, { - "label": "PrometheusChatManager", + "label": "OrunmilaChatManager", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L13", - "id": "prometheus_chat_prometheuschatmanager", - "community": 68, - "norm_label": "prometheuschatmanager" + "id": "orunmila_chat_orunmilachatmanager", + "community": 45, + "norm_label": "orunmilachatmanager" }, { "label": "getUserSessions()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L15", - "id": "prometheus_chat_getusersessions", - "community": 125, + "id": "orunmila_chat_getusersessions", + "community": 136, "norm_label": "getusersessions()" }, { "label": "createSession()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L33", - "id": "prometheus_chat_createsession", - "community": 125, + "id": "orunmila_chat_createsession", + "community": 136, "norm_label": "createsession()" }, { "label": "updateSessionTitle()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L41", - "id": "prometheus_chat_updatesessiontitle", - "community": 125, + "id": "orunmila_chat_updatesessiontitle", + "community": 136, "norm_label": "updatesessiontitle()" }, { "label": "appendHistory()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L52", - "id": "prometheus_chat_appendhistory", - "community": 125, + "id": "orunmila_chat_appendhistory", + "community": 136, "norm_label": "appendhistory()" }, { "label": "getHistory()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L71", - "id": "prometheus_chat_gethistory", - "community": 125, + "id": "orunmila_chat_gethistory", + "community": 136, "norm_label": "gethistory()" }, { "label": "deleteSession()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L92", - "id": "prometheus_chat_deletesession", - "community": 125, + "id": "orunmila_chat_deletesession", + "community": 136, "norm_label": "deletesession()" }, { "label": "verifySessionOwnership()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", + "source_file": "main/app/orunmila/chat.py", "source_location": "L106", - "id": "prometheus_chat_verifysessionownership", - "community": 125, + "id": "orunmila_chat_verifysessionownership", + "community": 136, "norm_label": "verifysessionownership()" }, { "label": "compact.py", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L1", - "id": "main_app_prometheus_compact_py", - "community": 80, + "id": "main_app_orunmila_compact_py", + "community": 474, "norm_label": "compact.py" }, { "label": "getTokenizer()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L35", - "id": "prometheus_compact_gettokenizer", - "community": 80, + "id": "orunmila_compact_gettokenizer", + "community": 474, "norm_label": "gettokenizer()" }, { "label": "countTokens()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L47", - "id": "prometheus_compact_counttokens", - "community": 80, + "id": "orunmila_compact_counttokens", + "community": 474, "norm_label": "counttokens()" }, { "label": "getStocksFieldsUrl()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L64", - "id": "prometheus_compact_getstocksfieldsurl", - "community": 80, + "id": "orunmila_compact_getstocksfieldsurl", + "community": 474, "norm_label": "getstocksfieldsurl()" }, { "label": "isTransientFieldsError()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L68", - "id": "prometheus_compact_istransientfieldserror", - "community": 80, + "id": "orunmila_compact_istransientfieldserror", + "community": 474, "norm_label": "istransientfieldserror()" }, { "label": "fetchFieldsPayload()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L83", - "id": "prometheus_compact_fetchfieldspayload", - "community": 80, + "id": "orunmila_compact_fetchfieldspayload", + "community": 474, "norm_label": "fetchfieldspayload()" }, { "label": "loadFieldData()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L89", - "id": "prometheus_compact_loadfielddata", - "community": 80, + "id": "orunmila_compact_loadfielddata", + "community": 474, "norm_label": "loadfielddata()" }, { "label": "getMetricRegex()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L105", - "id": "prometheus_compact_getmetricregex", - "community": 80, + "id": "orunmila_compact_getmetricregex", + "community": 474, "norm_label": "getmetricregex()" }, { "label": "dedup()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L119", - "id": "prometheus_compact_dedup", - "community": 80, + "id": "orunmila_compact_dedup", + "community": 474, "norm_label": "dedup()" }, { "label": "extractTickers()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L123", - "id": "prometheus_compact_extracttickers", - "community": 80, + "id": "orunmila_compact_extracttickers", + "community": 474, "norm_label": "extracttickers()" }, { "label": "extractMetrics()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L127", - "id": "prometheus_compact_extractmetrics", - "community": 80, + "id": "orunmila_compact_extractmetrics", + "community": 474, "norm_label": "extractmetrics()" }, { "label": "extractDecisions()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L131", - "id": "prometheus_compact_extractdecisions", - "community": 80, + "id": "orunmila_compact_extractdecisions", + "community": 474, "norm_label": "extractdecisions()" }, { "label": "extractSnapshots()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L145", - "id": "prometheus_compact_extractsnapshots", - "community": 80, + "id": "orunmila_compact_extractsnapshots", + "community": 474, "norm_label": "extractsnapshots()" }, { "label": "extractToolCalls()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L158", - "id": "prometheus_compact_extracttoolcalls", - "community": 80, + "id": "orunmila_compact_extracttoolcalls", + "community": 474, "norm_label": "extracttoolcalls()" }, { "label": "buildSummary()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L174", - "id": "prometheus_compact_buildsummary", - "community": 80, + "id": "orunmila_compact_buildsummary", + "community": 474, "norm_label": "buildsummary()" }, { - "label": "PrometheusCompactor", + "label": "OrunmilaCompactor", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L195", - "id": "prometheus_compact_prometheuscompactor", - "community": 80, - "norm_label": "prometheuscompactor" + "id": "orunmila_compact_orunmilacompactor", + "community": 256, + "norm_label": "orunmilacompactor" }, { "label": ".shouldCompact()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L196", - "id": "prometheus_compact_prometheuscompactor_shouldcompact", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_shouldcompact", + "community": 256, "norm_label": ".shouldcompact()" }, { "label": ".getCompactableChunk()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L213", - "id": "prometheus_compact_prometheuscompactor_getcompactablechunk", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_getcompactablechunk", + "community": 256, "norm_label": ".getcompactablechunk()" }, { "label": ".extractEpisode()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L222", - "id": "prometheus_compact_prometheuscompactor_extractepisode", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_extractepisode", + "community": 474, "norm_label": ".extractepisode()" }, { "label": ".consolidate()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L244", - "id": "prometheus_compact_prometheuscompactor_consolidate", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_consolidate", + "community": 256, "norm_label": ".consolidate()" }, { "label": ".compact()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L271", - "id": "prometheus_compact_prometheuscompactor_compact", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_compact", + "community": 256, "norm_label": ".compact()" }, { "label": ".getEpisodes()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", + "source_file": "main/app/orunmila/compact.py", "source_location": "L310", - "id": "prometheus_compact_prometheuscompactor_getepisodes", - "community": 80, + "id": "orunmila_compact_orunmilacompactor_getepisodes", + "community": 256, "norm_label": ".getepisodes()" }, { "label": "mcp.py", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L1", - "id": "main_app_prometheus_mcp_py", - "community": 194, + "id": "main_app_orunmila_mcp_py", + "community": 521, "norm_label": "mcp.py" }, { "label": "buildClient()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L21", - "id": "prometheus_mcp_buildclient", - "community": 194, + "id": "orunmila_mcp_buildclient", + "community": 521, "norm_label": "buildclient()" }, { "label": "connect()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L29", - "id": "prometheus_mcp_connect", - "community": 194, + "id": "orunmila_mcp_connect", + "community": 521, "norm_label": "connect()" }, { "label": "MCPClientPool", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L36", - "id": "prometheus_mcp_mcpclientpool", - "community": 194, + "id": "orunmila_mcp_mcpclientpool", + "community": 521, "norm_label": "mcpclientpool" }, { "label": ".__init__()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L37", - "id": "prometheus_mcp_mcpclientpool_init", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_init", + "community": 521, "norm_label": ".__init__()" }, { "label": ".initialize()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L42", - "id": "prometheus_mcp_mcpclientpool_initialize", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_initialize", + "community": 521, "norm_label": ".initialize()" }, { "label": ".getClients()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L56", - "id": "prometheus_mcp_mcpclientpool_getclients", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_getclients", + "community": 521, "norm_label": ".getclients()" }, { "label": ".healthCheck()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L63", - "id": "prometheus_mcp_mcpclientpool_healthcheck", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_healthcheck", + "community": 521, "norm_label": ".healthcheck()" }, { "label": ".reconnect()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L75", - "id": "prometheus_mcp_mcpclientpool_reconnect", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_reconnect", + "community": 521, "norm_label": ".reconnect()" }, { "label": ".close()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", + "source_file": "main/app/orunmila/mcp.py", "source_location": "L90", - "id": "prometheus_mcp_mcpclientpool_close", - "community": 194, + "id": "orunmila_mcp_mcpclientpool_close", + "community": 521, "norm_label": ".close()" }, { "label": "memory.py", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L1", - "id": "main_app_prometheus_memory_py", - "community": 53, + "id": "main_app_orunmila_memory_py", + "community": 137, "norm_label": "memory.py" }, { "label": "getMatrix()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L35", - "id": "prometheus_memory_getmatrix", - "community": 53, + "id": "orunmila_memory_getmatrix", + "community": 137, "norm_label": "getmatrix()" }, { "label": "invalidateUser()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L53", - "id": "prometheus_memory_invalidateuser", - "community": 53, + "id": "orunmila_memory_invalidateuser", + "community": 137, "norm_label": "invalidateuser()" }, { "label": "clearAll()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L57", - "id": "prometheus_memory_clearall", - "community": 53, + "id": "orunmila_memory_clearall", + "community": 137, "norm_label": "clearall()" }, { "label": "MemoryCandidate", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L64", - "id": "prometheus_memory_memorycandidate", - "community": 498, + "id": "orunmila_memory_memorycandidate", + "community": 45, "norm_label": "memorycandidate" }, { @@ -2910,673 +2946,673 @@ "source_file": "", "source_location": "", "id": "basemodel", - "community": 33, + "community": 45, "norm_label": "basemodel" }, { "label": "newTokenCache()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L90", - "id": "prometheus_memory_newtokencache", - "community": 116, + "id": "orunmila_memory_newtokencache", + "community": 256, "norm_label": "newtokencache()" }, { "label": "getClient()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L97", - "id": "prometheus_memory_getclient", - "community": 53, + "id": "orunmila_memory_getclient", + "community": 137, "norm_label": "getclient()" }, { "label": "minMax()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L104", - "id": "prometheus_memory_minmax", - "community": 126, + "id": "orunmila_memory_minmax", + "community": 137, "norm_label": "minmax()" }, { "label": "normalizeKey()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L113", - "id": "prometheus_memory_normalizekey", - "community": 53, + "id": "orunmila_memory_normalizekey", + "community": 137, "norm_label": "normalizekey()" }, { "label": "findSimilarKey()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L120", - "id": "prometheus_memory_findsimilarkey", - "community": 53, + "id": "orunmila_memory_findsimilarkey", + "community": 137, "norm_label": "findsimilarkey()" }, { "label": "scoreRow()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L140", - "id": "prometheus_memory_scorerow", - "community": 126, + "id": "orunmila_memory_scorerow", + "community": 137, "norm_label": "scorerow()" }, { "label": "scoreRecency()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L152", - "id": "prometheus_memory_scorerecency", - "community": 126, + "id": "orunmila_memory_scorerecency", + "community": 137, "norm_label": "scorerecency()" }, { "label": "scoreCandidates()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L162", - "id": "prometheus_memory_scorecandidates", - "community": 126, + "id": "orunmila_memory_scorecandidates", + "community": 137, "norm_label": "scorecandidates()" }, { "label": "sumTokens()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L179", - "id": "prometheus_memory_sumtokens", - "community": 53, + "id": "orunmila_memory_sumtokens", + "community": 137, "norm_label": "sumtokens()" }, { - "label": "PrometheusMemory", + "label": "OrunmilaMemory", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L194", - "id": "prometheus_memory_prometheusmemory", - "community": 140, - "norm_label": "prometheusmemory" + "id": "orunmila_memory_orunmilamemory", + "community": 45, + "norm_label": "orunmilamemory" }, { "label": "getMemoryLimit()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L196", - "id": "prometheus_memory_getmemorylimit", - "community": 53, + "id": "orunmila_memory_getmemorylimit", + "community": 137, "norm_label": "getmemorylimit()" }, { "label": "countMemories()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L202", - "id": "prometheus_memory_countmemories", - "community": 53, + "id": "orunmila_memory_countmemories", + "community": 137, "norm_label": "countmemories()" }, { "label": "touch()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L211", - "id": "prometheus_memory_touch", - "community": 53, + "id": "orunmila_memory_touch", + "community": 137, "norm_label": "touch()" }, { "label": "upsertMemory()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L222", - "id": "prometheus_memory_upsertmemory", - "community": 53, + "id": "orunmila_memory_upsertmemory", + "community": 137, "norm_label": "upsertmemory()" }, { "label": "search()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L286", - "id": "prometheus_memory_search", - "community": 126, + "id": "orunmila_memory_search", + "community": 137, "norm_label": "search()" }, { "label": "fullTextSearch()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L349", - "id": "prometheus_memory_fulltextsearch", - "community": 126, + "id": "orunmila_memory_fulltextsearch", + "community": 137, "norm_label": "fulltextsearch()" }, { "label": "getUserMemories()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L407", - "id": "prometheus_memory_getusermemories", - "community": 27, + "id": "orunmila_memory_getusermemories", + "community": 137, "norm_label": "getusermemories()" }, { "label": "deleteMemory()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L432", - "id": "prometheus_memory_deletememory", - "community": 53, + "id": "orunmila_memory_deletememory", + "community": 137, "norm_label": "deletememory()" }, { "label": "extract()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L450", - "id": "prometheus_memory_extract", - "community": 53, + "id": "orunmila_memory_extract", + "community": 137, "norm_label": "extract()" }, { "label": "sandbox.py", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L1", - "id": "main_app_prometheus_sandbox_py", - "community": 69, + "id": "main_app_orunmila_sandbox_py", + "community": 234, "norm_label": "sandbox.py" }, { "label": "lockFor()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L18", - "id": "prometheus_sandbox_lockfor", - "community": 69, + "id": "orunmila_sandbox_lockfor", + "community": 234, "norm_label": "lockfor()" }, { "label": "getClient()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L24", - "id": "prometheus_sandbox_getclient", - "community": 69, + "id": "orunmila_sandbox_getclient", + "community": 234, "norm_label": "getclient()" }, { "label": "hostPath()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L32", - "id": "prometheus_sandbox_hostpath", - "community": 69, + "id": "orunmila_sandbox_hostpath", + "community": 234, "norm_label": "hostpath()" }, { "label": "sandboxPath()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L46", - "id": "prometheus_sandbox_sandboxpath", - "community": 69, + "id": "orunmila_sandbox_sandboxpath", + "community": 234, "norm_label": "sandboxpath()" }, { "label": "SandboxManager", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L51", - "id": "prometheus_sandbox_sandboxmanager", - "community": 2, + "id": "orunmila_sandbox_sandboxmanager", + "community": 234, "norm_label": "sandboxmanager" }, { "label": "create()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L53", - "id": "prometheus_sandbox_create", - "community": 69, + "id": "orunmila_sandbox_create", + "community": 234, "norm_label": "create()" }, { "label": "destroy()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L69", - "id": "prometheus_sandbox_destroy", - "community": 69, + "id": "orunmila_sandbox_destroy", + "community": 234, "norm_label": "destroy()" }, { "label": "getOrCreate()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L81", - "id": "prometheus_sandbox_getorcreate", - "community": 69, + "id": "orunmila_sandbox_getorcreate", + "community": 234, "norm_label": "getorcreate()" }, { "label": "execute()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L128", - "id": "prometheus_sandbox_execute", - "community": 69, + "id": "orunmila_sandbox_execute", + "community": 234, "norm_label": "execute()" }, { "label": "read_file()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L164", - "id": "prometheus_sandbox_read_file", - "community": 69, + "id": "orunmila_sandbox_read_file", + "community": 234, "norm_label": "read_file()" }, { "label": "write_file()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L171", - "id": "prometheus_sandbox_write_file", - "community": 69, + "id": "orunmila_sandbox_write_file", + "community": 234, "norm_label": "write_file()" }, { "label": "list_files()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L185", - "id": "prometheus_sandbox_list_files", - "community": 69, + "id": "orunmila_sandbox_list_files", + "community": 234, "norm_label": "list_files()" }, { "label": "delete_file()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L193", - "id": "prometheus_sandbox_delete_file", - "community": 69, + "id": "orunmila_sandbox_delete_file", + "community": 234, "norm_label": "delete_file()" }, { "label": "syncToSandbox()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L210", - "id": "prometheus_sandbox_synctosandbox", - "community": 69, + "id": "orunmila_sandbox_synctosandbox", + "community": 234, "norm_label": "synctosandbox()" }, { "label": "syncFromSandbox()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", + "source_file": "main/app/orunmila/sandbox.py", "source_location": "L229", - "id": "prometheus_sandbox_syncfromsandbox", - "community": 69, + "id": "orunmila_sandbox_syncfromsandbox", + "community": 234, "norm_label": "syncfromsandbox()" }, { "label": "stream_bus.py", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L1", - "id": "main_app_prometheus_stream_bus_py", - "community": 210, + "id": "main_app_orunmila_stream_bus_py", + "community": 488, "norm_label": "stream_bus.py" }, { "label": "StreamChannel", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L14", - "id": "prometheus_stream_bus_streamchannel", - "community": 210, + "id": "orunmila_stream_bus_streamchannel", + "community": 488, "norm_label": "streamchannel" }, { "label": ".__init__()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L15", - "id": "prometheus_stream_bus_streamchannel_init", - "community": 210, + "id": "orunmila_stream_bus_streamchannel_init", + "community": 488, "norm_label": ".__init__()" }, { "label": ".publish()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L21", - "id": "prometheus_stream_bus_streamchannel_publish", - "community": 210, + "id": "orunmila_stream_bus_streamchannel_publish", + "community": 488, "norm_label": ".publish()" }, { "label": "StreamBus", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L32", - "id": "prometheus_stream_bus_streambus", - "community": 210, + "id": "orunmila_stream_bus_streambus", + "community": 488, "norm_label": "streambus" }, { "label": ".__init__()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L33", - "id": "prometheus_stream_bus_streambus_init", - "community": 210, + "id": "orunmila_stream_bus_streambus_init", + "community": 488, "norm_label": ".__init__()" }, { "label": ".getOrCreate()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L36", - "id": "prometheus_stream_bus_streambus_getorcreate", - "community": 210, + "id": "orunmila_stream_bus_streambus_getorcreate", + "community": 488, "norm_label": ".getorcreate()" }, { "label": ".publish()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L43", - "id": "prometheus_stream_bus_streambus_publish", - "community": 210, + "id": "orunmila_stream_bus_streambus_publish", + "community": 488, "norm_label": ".publish()" }, { "label": ".subscribe()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L46", - "id": "prometheus_stream_bus_streambus_subscribe", - "community": 210, + "id": "orunmila_stream_bus_streambus_subscribe", + "community": 488, "norm_label": ".subscribe()" }, { "label": ".unsubscribe()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L59", - "id": "prometheus_stream_bus_streambus_unsubscribe", - "community": 210, + "id": "orunmila_stream_bus_streambus_unsubscribe", + "community": 488, "norm_label": ".unsubscribe()" }, { "label": ".startRun()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L64", - "id": "prometheus_stream_bus_streambus_startrun", - "community": 210, + "id": "orunmila_stream_bus_streambus_startrun", + "community": 488, "norm_label": ".startrun()" }, { "label": ".eventGenerator()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L86", - "id": "prometheus_stream_bus_streambus_eventgenerator", - "community": 210, + "id": "orunmila_stream_bus_streambus_eventgenerator", + "community": 488, "norm_label": ".eventgenerator()" }, { "label": ".streamResponse()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L109", - "id": "prometheus_stream_bus_streambus_streamresponse", - "community": 210, + "id": "orunmila_stream_bus_streambus_streamresponse", + "community": 488, "norm_label": ".streamresponse()" }, { "label": ".forward()", "file_type": "code", - "source_file": "main/app/prometheus/stream_bus.py", + "source_file": "main/app/orunmila/stream_bus.py", "source_location": "L112", - "id": "prometheus_stream_bus_streambus_forward", - "community": 210, + "id": "orunmila_stream_bus_streambus_forward", + "community": 488, "norm_label": ".forward()" }, { "label": "tools.py", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L1", - "id": "main_app_prometheus_tools_py", + "id": "main_app_orunmila_tools_py", "community": 495, "norm_label": "tools.py" }, { "label": "search_memory()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L20", - "id": "prometheus_tools_search_memory", - "community": 152, + "id": "orunmila_tools_search_memory", + "community": 495, "norm_label": "search_memory()" }, { "label": "save_memory()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L51", - "id": "prometheus_tools_save_memory", - "community": 208, + "id": "orunmila_tools_save_memory", + "community": 535, "norm_label": "save_memory()" }, { "label": "execute_code()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L93", - "id": "prometheus_tools_execute_code", - "community": 487, + "id": "orunmila_tools_execute_code", + "community": 495, "norm_label": "execute_code()" }, { "label": "read_file()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L114", - "id": "prometheus_tools_read_file", - "community": 525, + "id": "orunmila_tools_read_file", + "community": 495, "norm_label": "read_file()" }, { "label": "write_file()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L128", - "id": "prometheus_tools_write_file", - "community": 523, + "id": "orunmila_tools_write_file", + "community": 495, "norm_label": "write_file()" }, { "label": "list_files()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L144", - "id": "prometheus_tools_list_files", - "community": 523, + "id": "orunmila_tools_list_files", + "community": 495, "norm_label": "list_files()" }, { "label": "serve_file()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L157", - "id": "prometheus_tools_serve_file", - "community": 523, + "id": "orunmila_tools_serve_file", + "community": 495, "norm_label": "serve_file()" }, { "label": "dispatchToolCall()", "file_type": "code", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L190", - "id": "prometheus_tools_dispatchtoolcall", - "community": 49, + "id": "orunmila_tools_dispatchtoolcall", + "community": 495, "norm_label": "dispatchtoolcall()" }, { "label": "Search user's saved memories, preferences, and past analysis context. Use", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L21", - "id": "prometheus_tools_rationale_21", - "community": 152, + "id": "orunmila_tools_rationale_21", + "community": 495, "norm_label": "search user's saved memories, preferences, and past analysis context. use" }, { "label": "Store a memory about the user's preferences, analysis results, or feedback.", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L52", - "id": "prometheus_tools_rationale_52", - "community": 208, + "id": "orunmila_tools_rationale_52", + "community": 535, "norm_label": "store a memory about the user's preferences, analysis results, or feedback." }, { "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L94", - "id": "prometheus_tools_rationale_94", - "community": 487, + "id": "orunmila_tools_rationale_94", + "community": 495, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis," }, { "label": "Read a file from the workspace. Args: path: Path to the file (e.", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L115", - "id": "prometheus_tools_rationale_115", - "community": 525, + "id": "orunmila_tools_rationale_115", + "community": 495, "norm_label": "read a file from the workspace. args: path: path to the file (e." }, { "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L129", - "id": "prometheus_tools_rationale_129", - "community": 523, + "id": "orunmila_tools_rationale_129", + "community": 495, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri" }, { "label": "List files in the workspace directory. Args: path: Directory pat", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L145", - "id": "prometheus_tools_rationale_145", - "community": 523, + "id": "orunmila_tools_rationale_145", + "community": 495, "norm_label": "list files in the workspace directory. args: path: directory pat" }, { "label": "Get a download link for a workspace file to share with the user. Use this", "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "source_file": "main/app/orunmila/tools.py", "source_location": "L158", - "id": "prometheus_tools_rationale_158", - "community": 523, + "id": "orunmila_tools_rationale_158", + "community": 495, "norm_label": "get a download link for a workspace file to share with the user. use this" }, { "label": "vector.py", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L1", - "id": "main_app_prometheus_vector_py", - "community": 126, + "id": "main_app_orunmila_vector_py", + "community": 535, "norm_label": "vector.py" }, { "label": "normalizeRows()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L10", - "id": "prometheus_vector_normalizerows", - "community": 126, + "id": "orunmila_vector_normalizerows", + "community": 535, "norm_label": "normalizerows()" }, { "label": "embed()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L15", - "id": "prometheus_vector_embed", - "community": 126, + "id": "orunmila_vector_embed", + "community": 535, "norm_label": "embed()" }, { "label": "decodeEmbeddings()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L19", - "id": "prometheus_vector_decodeembeddings", - "community": 126, + "id": "orunmila_vector_decodeembeddings", + "community": 535, "norm_label": "decodeembeddings()" }, { "label": "batchCosineSimilarity()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L41", - "id": "prometheus_vector_batchcosinesimilarity", - "community": 126, + "id": "orunmila_vector_batchcosinesimilarity", + "community": 535, "norm_label": "batchcosinesimilarity()" }, { "label": "contentHash()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L51", - "id": "prometheus_vector_contenthash", - "community": 53, + "id": "orunmila_vector_contenthash", + "community": 535, "norm_label": "contenthash()" }, { "label": "toVectorString()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L55", - "id": "prometheus_vector_tovectorstring", - "community": 126, + "id": "orunmila_vector_tovectorstring", + "community": 535, "norm_label": "tovectorstring()" }, { "label": "fromVectorString()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L59", - "id": "prometheus_vector_fromvectorstring", - "community": 126, + "id": "orunmila_vector_fromvectorstring", + "community": 535, "norm_label": "fromvectorstring()" }, { "label": "getRelevanceScore()", "file_type": "code", - "source_file": "main/app/prometheus/vector.py", + "source_file": "main/app/orunmila/vector.py", "source_location": "L71", - "id": "prometheus_vector_getrelevancescore", - "community": 27, + "id": "orunmila_vector_getrelevancescore", + "community": 137, "norm_label": "getrelevancescore()" }, { @@ -3646,7 +3682,7 @@ "label": "historicalDividendYields()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L166", + "source_location": "L168", "id": "scraper_b3_scraper_historicaldividendyields", "community": 21, "norm_label": "historicaldividendyields()" @@ -3655,7 +3691,7 @@ "label": "historicalRevenue()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L194", + "source_location": "L196", "id": "scraper_b3_scraper_historicalrevenue", "community": 21, "norm_label": "historicalrevenue()" @@ -3664,7 +3700,7 @@ "label": "historicalCotationProfits()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L215", + "source_location": "L217", "id": "scraper_b3_scraper_historicalcotationprofits", "community": 21, "norm_label": "historicalcotationprofits()" @@ -3673,7 +3709,7 @@ "label": ".historicalCotationProfits_Oceans14()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L228", + "source_location": "L230", "id": "scraper_b3_scraper_b3scraper_historicalcotationprofits_oceans14", "community": 21, "norm_label": ".historicalcotationprofits_oceans14()" @@ -3682,7 +3718,7 @@ "label": "historicalCotations()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L241", + "source_location": "L243", "id": "scraper_b3_scraper_historicalcotations", "community": 21, "norm_label": "historicalcotations()" @@ -3691,7 +3727,7 @@ "label": "tagAlong()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L258", + "source_location": "L260", "id": "scraper_b3_scraper_tagalong", "community": 21, "norm_label": "tagalong()" @@ -3700,7 +3736,7 @@ "label": "stockNews()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L283", + "source_location": "L285", "id": "scraper_b3_scraper_stocknews", "community": 21, "norm_label": "stocknews()" @@ -3709,7 +3745,7 @@ "label": ".fundamentalIndicators()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L296", + "source_location": "L298", "id": "scraper_b3_scraper_b3scraper_fundamentalindicators", "community": 21, "norm_label": ".fundamentalindicators()" @@ -3718,7 +3754,7 @@ "label": ".processTicker()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L419", + "source_location": "L421", "id": "scraper_b3_scraper_b3scraper_processticker", "community": 21, "norm_label": ".processticker()" @@ -3727,7 +3763,7 @@ "label": ".scrapeStocks()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L450", + "source_location": "L452", "id": "scraper_b3_scraper_b3scraper_scrapestocks", "community": 21, "norm_label": ".scrapestocks()" @@ -3736,7 +3772,7 @@ "label": ".reorderColumns()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L497", + "source_location": "L499", "id": "scraper_b3_scraper_b3scraper_reordercolumns", "community": 21, "norm_label": ".reordercolumns()" @@ -3745,7 +3781,7 @@ "label": ".serializeComplexTypes()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L506", + "source_location": "L508", "id": "scraper_b3_scraper_b3scraper_serializecomplextypes", "community": 21, "norm_label": ".serializecomplextypes()" @@ -3754,7 +3790,7 @@ "label": ".exportJson()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L525", + "source_location": "L527", "id": "scraper_b3_scraper_b3scraper_exportjson", "community": 21, "norm_label": ".exportjson()" @@ -3763,7 +3799,7 @@ "label": ".exportMysql()", "file_type": "code", "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L533", + "source_location": "L535", "id": "scraper_b3_scraper_b3scraper_exportmysql", "community": 21, "norm_label": ".exportmysql()" @@ -3882,7 +3918,7 @@ "source_file": "main/app/stocks_api/cache.py", "source_location": "L217", "id": "stocks_api_cache_stockscachemanager_cachescheduler", - "community": 72, + "community": 82, "norm_label": ".cachescheduler()" }, { @@ -3909,7 +3945,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L1", "id": "main_app_stocks_api_compress_py", - "community": 215, + "community": 194, "norm_label": "compress.py" }, { @@ -3918,7 +3954,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L23", "id": "stocks_api_compress_getabbr", - "community": 215, + "community": 194, "norm_label": "getabbr()" }, { @@ -3927,7 +3963,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L31", "id": "stocks_api_compress_getnest", - "community": 215, + "community": 194, "norm_label": "getnest()" }, { @@ -3945,7 +3981,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L46", "id": "stocks_api_compress_compactvalue", - "community": 215, + "community": 194, "norm_label": "compactvalue()" }, { @@ -3954,7 +3990,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L67", "id": "stocks_api_compress_compactrow", - "community": 215, + "community": 194, "norm_label": "compactrow()" }, { @@ -3963,7 +3999,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L95", "id": "stocks_api_compress_compactcotations", - "community": 215, + "community": 194, "norm_label": "compactcotations()" }, { @@ -3972,7 +4008,7 @@ "source_file": "main/app/stocks_api/compress.py", "source_location": "L130", "id": "stocks_api_compress_compressresponse", - "community": 215, + "community": 194, "norm_label": "compressresponse()" }, { @@ -3981,16 +4017,43 @@ "source_file": "main/app/stocks_api/key.py", "source_location": "L1", "id": "main_app_stocks_api_key_py", - "community": 26, + "community": 500, "norm_label": "key.py" }, + { + "label": "hashApiKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L25", + "id": "stocks_api_key_hashapikey", + "community": 500, + "norm_label": "hashapikey()" + }, + { + "label": "createStoredApiKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L29", + "id": "stocks_api_key_createstoredapikey", + "community": 500, + "norm_label": "createstoredapikey()" + }, + { + "label": "isValidStoredKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L35", + "id": "stocks_api_key_isvalidstoredkey", + "community": 500, + "norm_label": "isvalidstoredkey()" + }, { "label": "verifyAPIKey()", "file_type": "code", "source_file": "main/app/stocks_api/key.py", - "source_location": "L17", + "source_location": "L48", "id": "stocks_api_key_verifyapikey", - "community": 567, + "community": 500, "norm_label": "verifyapikey()" }, { @@ -4152,7 +4215,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L1", "id": "main_app_stocks_api_util_py", - "community": 73, + "community": 215, "norm_label": "util.py" }, { @@ -4197,7 +4260,7 @@ "source_file": "main/app/stocks_api/util.py", "source_location": "L73", "id": "stocks_api_util_parsedate", - "community": 73, + "community": 215, "norm_label": "parsedate()" }, { @@ -4267,7 +4330,7 @@ "label": "isSecureScheme()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L28", + "source_location": "L35", "id": "controller_authentication_controller_issecurescheme", "community": 58, "norm_label": "issecurescheme()" @@ -4276,7 +4339,7 @@ "label": "resolveCookieDomain()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L40", + "source_location": "L39", "id": "controller_authentication_controller_resolvecookiedomain", "community": 58, "norm_label": "resolvecookiedomain()" @@ -4285,7 +4348,7 @@ "label": "issueSessionCookie()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L45", + "source_location": "L44", "id": "controller_authentication_controller_issuesessioncookie", "community": 58, "norm_label": "issuesessioncookie()" @@ -4294,7 +4357,7 @@ "label": "health()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L66", + "source_location": "L65", "id": "controller_authentication_controller_health", "community": 58, "norm_label": "health()" @@ -4303,7 +4366,7 @@ "label": "register()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L72", + "source_location": "L71", "id": "controller_authentication_controller_register", "community": 58, "norm_label": "register()" @@ -4312,7 +4375,7 @@ "label": "login()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L102", + "source_location": "L103", "id": "controller_authentication_controller_login", "community": 58, "norm_label": "login()" @@ -4321,16 +4384,25 @@ "label": "logout()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L119", + "source_location": "L121", "id": "controller_authentication_controller_logout", "community": 58, "norm_label": "logout()" }, + { + "label": "introspect()", + "file_type": "code", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L157", + "id": "controller_authentication_controller_introspect", + "community": 524, + "norm_label": "introspect()" + }, { "label": "googleLogin()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L155", + "source_location": "L182", "id": "controller_authentication_controller_googlelogin", "community": 58, "norm_label": "googlelogin()" @@ -4339,117 +4411,117 @@ "label": "googleCallback()", "file_type": "code", "source_file": "main/controller/authentication_controller.py", - "source_location": "L173", + "source_location": "L198", "id": "controller_authentication_controller_googlecallback", "community": 58, "norm_label": "googlecallback()" }, { - "label": "prometheus_controller.py", + "label": "orunmila_controller.py", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L1", - "id": "main_controller_prometheus_controller_py", - "community": 84, - "norm_label": "prometheus_controller.py" + "id": "main_controller_orunmila_controller_py", + "community": 497, + "norm_label": "orunmila_controller.py" }, { "label": "verifySessionOwnsership()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L26", - "id": "controller_prometheus_controller_verifysessionownsership", - "community": 84, + "id": "controller_orunmila_controller_verifysessionownsership", + "community": 497, "norm_label": "verifysessionownsership()" }, { "label": "health()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L32", - "id": "controller_prometheus_controller_health", - "community": 84, + "id": "controller_orunmila_controller_health", + "community": 497, "norm_label": "health()" }, { "label": "getSessions()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L37", - "id": "controller_prometheus_controller_getsessions", - "community": 84, + "id": "controller_orunmila_controller_getsessions", + "community": 497, "norm_label": "getsessions()" }, { "label": "updateSessionTitle()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L56", - "id": "controller_prometheus_controller_updatesessiontitle", - "community": 84, + "id": "controller_orunmila_controller_updatesessiontitle", + "community": 497, "norm_label": "updatesessiontitle()" }, { "label": "getHistory()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L71", - "id": "controller_prometheus_controller_gethistory", - "community": 84, + "id": "controller_orunmila_controller_gethistory", + "community": 497, "norm_label": "gethistory()" }, { "label": "deleteSession()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L90", - "id": "controller_prometheus_controller_deletesession", - "community": 84, + "id": "controller_orunmila_controller_deletesession", + "community": 497, "norm_label": "deletesession()" }, { "label": "chat_stream()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L103", - "id": "controller_prometheus_controller_chat_stream", - "community": 84, + "id": "controller_orunmila_controller_chat_stream", + "community": 497, "norm_label": "chat_stream()" }, { "label": "resumeChatStream()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L154", - "id": "controller_prometheus_controller_resumechatstream", - "community": 84, + "id": "controller_orunmila_controller_resumechatstream", + "community": 497, "norm_label": "resumechatstream()" }, { "label": "deleteWorkspaceFile()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L166", - "id": "controller_prometheus_controller_deleteworkspacefile", - "community": 84, + "id": "controller_orunmila_controller_deleteworkspacefile", + "community": 497, "norm_label": "deleteworkspacefile()" }, { "label": "downloadWorkspaceFile()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L179", - "id": "controller_prometheus_controller_downloadworkspacefile", - "community": 84, + "id": "controller_orunmila_controller_downloadworkspacefile", + "community": 497, "norm_label": "downloadworkspacefile()" }, { "label": "listWorkspaceFiles()", "file_type": "code", - "source_file": "main/controller/prometheus_controller.py", + "source_file": "main/controller/orunmila_controller.py", "source_location": "L195", - "id": "controller_prometheus_controller_listworkspacefiles", - "community": 84, + "id": "controller_orunmila_controller_listworkspacefiles", + "community": 497, "norm_label": "listworkspacefiles()" }, { @@ -4458,7 +4530,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L1", "id": "main_controller_stocksapi_controller_py", - "community": 197, + "community": 169, "norm_label": "stocksapi_controller.py" }, { @@ -4467,7 +4539,7 @@ "source_file": "main/controller/stocksapi_controller.py", "source_location": "L23", "id": "controller_stocksapi_controller_health", - "community": 197, + "community": 169, "norm_label": "health()" }, { @@ -4660,13 +4732,13 @@ "norm_label": "memory.py" }, { - "label": "PrometheusMemory", + "label": "OrunmilaMemory", "file_type": "code", "source_file": "main/models/memory.py", "source_location": "L8", - "id": "models_memory_prometheusmemory", + "id": "models_memory_orunmilamemory", "community": 140, - "norm_label": "prometheusmemory" + "norm_label": "orunmilamemory" }, { "label": "Base", @@ -4678,22 +4750,22 @@ "norm_label": "base" }, { - "label": "prometheus.py", + "label": "orunmila.py", "file_type": "code", - "source_file": "main/models/prometheus.py", + "source_file": "main/models/orunmila.py", "source_location": "L1", - "id": "main_models_prometheus_py", - "community": 125, - "norm_label": "prometheus.py" + "id": "main_models_orunmila_py", + "community": 136, + "norm_label": "orunmila.py" }, { - "label": "PrometheusSession", + "label": "OrunmilaSession", "file_type": "code", - "source_file": "main/models/prometheus.py", + "source_file": "main/models/orunmila.py", "source_location": "L7", - "id": "models_prometheus_prometheussession", - "community": 125, - "norm_label": "prometheussession" + "id": "models_orunmila_orunmilasession", + "community": 136, + "norm_label": "orunmilasession" }, { "label": "sandbox.py", @@ -4705,13 +4777,13 @@ "norm_label": "sandbox.py" }, { - "label": "PrometheusSandbox", + "label": "OrunmilaSandbox", "file_type": "code", "source_file": "main/models/sandbox.py", "source_location": "L5", - "id": "models_sandbox_prometheussandbox", - "community": 4, - "norm_label": "prometheussandbox" + "id": "models_sandbox_orunmilasandbox", + "community": 234, + "norm_label": "orunmilasandbox" }, { "label": "stocksapi_key.py", @@ -4849,39 +4921,39 @@ "norm_label": "initialize()" }, { - "label": "prometheus_service.py", + "label": "orunmila_service.py", "file_type": "code", - "source_file": "main/service/prometheus_service.py", + "source_file": "main/service/orunmila_service.py", "source_location": "L1", - "id": "main_service_prometheus_service_py", - "community": 72, - "norm_label": "prometheus_service.py" + "id": "main_service_orunmila_service_py", + "community": 130, + "norm_label": "orunmila_service.py" }, { "label": "memoryMaintenance()", "file_type": "code", - "source_file": "main/service/prometheus_service.py", + "source_file": "main/service/orunmila_service.py", "source_location": "L23", - "id": "service_prometheus_service_memorymaintenance", - "community": 488, + "id": "service_orunmila_service_memorymaintenance", + "community": 137, "norm_label": "memorymaintenance()" }, { - "label": "PrometheusService", + "label": "OrunmilaService", "file_type": "code", - "source_file": "main/service/prometheus_service.py", + "source_file": "main/service/orunmila_service.py", "source_location": "L65", - "id": "service_prometheus_service_prometheusservice", - "community": 140, - "norm_label": "prometheusservice" + "id": "service_orunmila_service_orunmilaservice", + "community": 130, + "norm_label": "orunmilaservice" }, { "label": "initialize()", "file_type": "code", - "source_file": "main/service/prometheus_service.py", + "source_file": "main/service/orunmila_service.py", "source_location": "L67", - "id": "service_prometheus_service_initialize", - "community": 72, + "id": "service_orunmila_service_initialize", + "community": 130, "norm_label": "initialize()" }, { @@ -4890,7 +4962,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L1", "id": "main_service_scraper_service_py", - "community": 563, + "community": 562, "norm_label": "scraper_service.py" }, { @@ -4899,7 +4971,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L13", "id": "service_scraper_service_runscraper", - "community": 563, + "community": 562, "norm_label": "runscraper()" }, { @@ -4908,7 +4980,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L23", "id": "service_scraper_service_registerscraperjobs", - "community": 563, + "community": 562, "norm_label": "registerscraperjobs()" }, { @@ -4917,7 +4989,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L49", "id": "service_scraper_service_scraperservice", - "community": 563, + "community": 562, "norm_label": "scraperservice" }, { @@ -4926,7 +4998,7 @@ "source_file": "main/service/scraper_service.py", "source_location": "L51", "id": "service_scraper_service_initialize", - "community": 563, + "community": 562, "norm_label": "initialize()" }, { @@ -5133,7 +5205,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L1", "id": "main_utils_http_session_py", - "community": 137, + "community": 580, "norm_label": "http_session.py" }, { @@ -5142,7 +5214,7 @@ "source_file": "main/utils/http_session.py", "source_location": "L8", "id": "utils_http_session_getsession", - "community": 137, + "community": 580, "norm_label": "getsession()" }, { @@ -5259,7 +5331,7 @@ "source_file": "main/utils/roles.py", "source_location": "L1", "id": "main_utils_roles_py", - "community": 498, + "community": 491, "norm_label": "roles.py" }, { @@ -5268,7 +5340,7 @@ "source_file": "main/utils/roles.py", "source_location": "L5", "id": "utils_roles_permission", - "community": 498, + "community": 45, "norm_label": "permission" }, { @@ -5277,7 +5349,7 @@ "source_file": "", "source_location": "", "id": "intflag", - "community": 498, + "community": 45, "norm_label": "intflag" }, { @@ -5295,7 +5367,7 @@ "source_file": "main/utils/roles.py", "source_location": "L17", "id": "utils_roles_roles", - "community": 498, + "community": 45, "norm_label": "roles" }, { @@ -5304,7 +5376,7 @@ "source_file": "main/utils/roles.py", "source_location": "L29", "id": "utils_roles_checkaccess", - "community": 498, + "community": 491, "norm_label": "checkaccess()" }, { @@ -5313,7 +5385,7 @@ "source_file": "main/utils/roles.py", "source_location": "L42", "id": "utils_roles_requirepermission", - "community": 498, + "community": 491, "norm_label": "requirepermission()" }, { @@ -5376,7 +5448,7 @@ "source_file": "main/utils/models/loader.py", "source_location": "L1", "id": "main_utils_models_loader_py", - "community": 84, + "community": 130, "norm_label": "loader.py" }, { @@ -5385,7 +5457,7 @@ "source_file": "main/utils/models/loader.py", "source_location": "L12", "id": "models_loader_getembeddingmodel", - "community": 84, + "community": 130, "norm_label": "getembeddingmodel()" }, { @@ -5865,6 +5937,42 @@ "community": 531, "norm_label": "composite index for session gc sweep (m2) revision id: f1a2b3c4d5e6 revises:" }, + { + "label": "f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "file_type": "code", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L1", + "id": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", + "community": 581, + "norm_label": "f7a8b9c0d1e2_rename_prometheus_to_orunmila.py" + }, + { + "label": "upgrade()", + "file_type": "code", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L25", + "id": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_upgrade", + "community": 581, + "norm_label": "upgrade()" + }, + { + "label": "downgrade()", + "file_type": "code", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L43", + "id": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_downgrade", + "community": 581, + "norm_label": "downgrade()" + }, + { + "label": "rename prometheus tables to orunmila Revision ID: f7a8b9c0d1e2 Revises: f1a2b3c", + "file_type": "rationale", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L1", + "id": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_rationale_1", + "community": 581, + "norm_label": "rename prometheus tables to orunmila revision id: f7a8b9c0d1e2 revises: f1a2b3c" + }, { "label": "AGENTS.md", "file_type": "document", @@ -6297,6 +6405,168 @@ "community": 41, "norm_label": "license" }, + { + "label": "investidor10-wallet-research.md", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L1", + "id": "docs_investidor10_wallet_research_md", + "community": 582, + "norm_label": "investidor10-wallet-research.md" + }, + { + "label": "Investidor10 Wallet \u2014 Empirical Research for Mansa", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L1", + "id": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "community": 582, + "norm_label": "investidor10 wallet \u2014 empirical research for mansa" + }, + { + "label": "1. Feature inventory + nav structure", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L10", + "id": "docs_investidor10_wallet_research_1_feature_inventory_nav_structure", + "community": 582, + "norm_label": "1. feature inventory + nav structure" + }, + { + "label": "2. User lifecycle end-to-end", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L30", + "id": "docs_investidor10_wallet_research_2_user_lifecycle_end_to_end", + "community": 582, + "norm_label": "2. user lifecycle end-to-end" + }, + { + "label": "3. Wallet API reference", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L40", + "id": "docs_investidor10_wallet_research_3_wallet_api_reference", + "community": 582, + "norm_label": "3. wallet api reference" + }, + { + "label": "4. Data model inference (from payloads, no DB access)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L65", + "id": "docs_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access", + "community": 582, + "norm_label": "4. data model inference (from payloads, no db access)" + }, + { + "label": "5. Product logic", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L74", + "id": "docs_investidor10_wallet_research_5_product_logic", + "community": 582, + "norm_label": "5. product logic" + }, + { + "label": "5b. Gaps / unverified (do not treat as fact)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L82", + "id": "docs_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact", + "community": 582, + "norm_label": "5b. gaps / unverified (do not treat as fact)" + }, + { + "label": "6. Concrete Mansa proposal (build first \u2192 later; minimal sketches)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L86", + "id": "docs_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches", + "community": 582, + "norm_label": "6. concrete mansa proposal (build first \u2192 later; minimal sketches)" + }, + { + "label": "investidor10-wallet-spec.md", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L1", + "id": "docs_investidor10_wallet_spec_md", + "community": 583, + "norm_label": "investidor10-wallet-spec.md" + }, + { + "label": "Mansa Wallet \u2014 Spec-Driven Implementation Spec", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L1", + "id": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "community": 583, + "norm_label": "mansa wallet \u2014 spec-driven implementation spec" + }, + { + "label": "1. Requirements", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L12", + "id": "docs_investidor10_wallet_spec_1_requirements", + "community": 583, + "norm_label": "1. requirements" + }, + { + "label": "1.1 Functional (per surface; tags: EXISTS = build on it, PARTIAL = half reusable, MISSING = greenfield)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L14", + "id": "docs_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield", + "community": 583, + "norm_label": "1.1 functional (per surface; tags: exists = build on it, partial = half reusable, missing = greenfield)" + }, + { + "label": "1.2 Non-functional", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L28", + "id": "docs_investidor10_wallet_spec_1_2_non_functional", + "community": 583, + "norm_label": "1.2 non-functional" + }, + { + "label": "2. Domain model", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L38", + "id": "docs_investidor10_wallet_spec_2_domain_model", + "community": 583, + "norm_label": "2. domain model" + }, + { + "label": "3. API contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `Depends(UserManager.getCurrentUser)` + `Depends(getSession)` throughout)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L49", + "id": "docs_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout", + "community": 583, + "norm_label": "3. api contracts (all under `/api/wallet`; chain: `main/controller/wallet_controller.py` \u2192 `main/service/wallet_service.py::` \u2192 `main/models/wallet.py::`; auth `depends(usermanager.getcurrentuser)` + `depends(getsession)` throughout)" + }, + { + "label": "4. Phased build plan (writing-plans: each phase independently reviewable; reviewer PASS per phase)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L66", + "id": "docs_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase", + "community": 583, + "norm_label": "4. phased build plan (writing-plans: each phase independently reviewable; reviewer pass per phase)" + }, + { + "label": "5. Risks / assumptions (honest flags carried over \u2014 do not treat as fact)", + "file_type": "document", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L72", + "id": "docs_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact", + "community": 583, + "norm_label": "5. risks / assumptions (honest flags carried over \u2014 do not treat as fact)" + }, { "label": "orunmila.md", "file_type": "document", @@ -6319,25 +6589,25 @@ "label": "Usage", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L7", + "source_location": "L5", "id": "docs_orunmila_usage", "community": 490, "norm_label": "usage" }, { - "label": "code:env (PROMETHEUS_ENABLED=TRUE)", + "label": "code:env (ORUNMILA_ENABLED=TRUE)", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L11", + "source_location": "L9", "id": "docs_orunmila_codeblock_1", "community": 490, - "norm_label": "code:env (prometheus_enabled=true)" + "norm_label": "code:env (orunmila_enabled=true)" }, { "label": "code:bash (python run.py)", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L56", + "source_location": "L54", "id": "docs_orunmila_codeblock_2", "community": 490, "norm_label": "code:bash (python run.py)" @@ -6346,7 +6616,7 @@ "label": "Workflow", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L60", + "source_location": "L58", "id": "docs_orunmila_workflow", "community": 490, "norm_label": "workflow" @@ -6355,7 +6625,7 @@ "label": "API Endpoints", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L74", + "source_location": "L72", "id": "docs_orunmila_api_endpoints", "community": 490, "norm_label": "api endpoints" @@ -6364,7 +6634,7 @@ "label": "License", "file_type": "document", "source_file": "docs/orunmila.md", - "source_location": "L89", + "source_location": "L87", "id": "docs_orunmila_license", "community": 490, "norm_label": "license" @@ -8598,7 +8868,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L166", "id": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "community": 569, + "community": 572, "norm_label": "task 2: alembic migration for wallet tables" }, { @@ -8607,7 +8877,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L189", "id": "plans_2026_09_04_wallet_management_codeblock_6", - "community": 569, + "community": 572, "norm_label": "code:python (\"\"\"add wallet_holdings and wallet_lots tables)" }, { @@ -8616,7 +8886,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L248", "id": "plans_2026_09_04_wallet_management_codeblock_7", - "community": 569, + "community": 572, "norm_label": "code:python (import main.models.wallet)" }, { @@ -8625,7 +8895,7 @@ "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L262", "id": "plans_2026_09_04_wallet_management_codeblock_8", - "community": 569, + "community": 572, "norm_label": "code:bash (git add migrations/versions/wallet_tables_20260904_add_walle)" }, { @@ -9619,1537 +9889,2977 @@ "norm_label": "spec self-review" }, { - "label": "Upgrade to Developer Starter", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L41", - "community": 23, - "norm_label": "upgrade to developer starter", - "id": "docs_user_upgrade_to_developer_starter" - }, - { - "label": "Upgrade to Developer Enterprise", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L47", - "community": 23, - "norm_label": "upgrade to developer enterprise", - "id": "docs_user_upgrade_to_developer_enterprise" + "label": "_serviceToken()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L18", + "community": 500, + "norm_label": "_servicetoken()", + "id": "stocks_api_key_servicetoken" }, { - "label": "code:bash (curl -X DELETE -H \"Authorization: Bearer \" http://loc)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L116", - "community": 23, - "norm_label": "code:bash (curl -x delete -h \"authorization: bearer \" http://loc)", - "id": "docs_user_codeblock_11" + "label": "_verifyUrl()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L22", + "community": 500, + "norm_label": "_verifyurl()", + "id": "stocks_api_key_verifyurl" }, { - "label": "code:json ({)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L120", - "community": 23, - "norm_label": "code:json ({)", - "id": "docs_user_codeblock_12" + "label": "initVerifyClient()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L26", + "community": 500, + "norm_label": "initverifyclient()", + "id": "stocks_api_key_initverifyclient" }, { - "label": "code:bash (curl -X POST -H \"Authorization: Bearer \" http://local)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L129", - "community": 23, - "norm_label": "code:bash (curl -x post -h \"authorization: bearer \" http://local)", - "id": "docs_user_codeblock_13" + "label": "closeVerifyClient()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L33", + "community": 500, + "norm_label": "closeverifyclient()", + "id": "stocks_api_key_closeverifyclient" }, { - "label": "code:json ({)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L133", - "community": 23, - "norm_label": "code:json ({)", - "id": "docs_user_codeblock_14" + "label": "requireServiceToken()", + "file_type": "code", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L245", + "community": 58, + "norm_label": "requireservicetoken()", + "id": "controller_authentication_controller_requireservicetoken" }, { - "label": "Permission System", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L140", - "community": 23, - "norm_label": "permission system", - "id": "docs_user_permission_system" + "label": "verifyServiceKey()", + "file_type": "code", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L277", + "community": 58, + "norm_label": "verifyservicekey()", + "id": "controller_authentication_controller_verifyservicekey" }, { - "label": "code:python (Permission.VIEW_PROFILE # View own profile)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L144", - "community": 23, - "norm_label": "code:python (permission.view_profile # view own profile)", - "id": "docs_user_codeblock_15" + "label": "_serviceToken()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L63", + "community": 491, + "norm_label": "_servicetoken()", + "id": "utils_roles_servicetoken" }, { - "label": "code:mermaid (graph TD)", - "file_type": "document", - "source_file": "docs/user.md", - "source_location": "L158", - "community": 23, - "norm_label": "code:mermaid (graph td)", - "id": "docs_user_codeblock_16" + "label": "_introspectUrl()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L69", + "community": 491, + "norm_label": "_introspecturl()", + "id": "utils_roles_introspecturl" }, { - "label": "Usage", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L9", - "community": 41, - "norm_label": "usage", - "id": "docs_authentication_usage" + "label": "_extractCredential()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L75", + "community": 491, + "norm_label": "_extractcredential()", + "id": "utils_roles_extractcredential" }, { - "label": "Profile (Me)", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L77", - "community": 41, - "norm_label": "profile (me)", - "id": "docs_authentication_profile_me" + "label": "introspectUser()", + "file_type": "code", + "source_file": "main/utils/roles.py", + "source_location": "L92", + "community": 491, + "norm_label": "introspectuser()", + "id": "utils_roles_introspectuser" }, { - "label": "code:bash (# Redirect your browser to:)", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L98", - "community": 41, - "norm_label": "code:bash (# redirect your browser to:)", - "id": "docs_authentication_codeblock_7" + "label": "PrometheusSettings", + "file_type": "code", + "source_file": "config.py", + "source_location": "L59", + "community": 102, + "norm_label": "prometheussettings", + "id": "server_config_prometheussettings" }, { - "label": "code:bash (GET http://localhost:3200/auth/google)", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L104", - "community": 41, - "norm_label": "code:bash (get http://localhost:3200/auth/google)", - "id": "docs_authentication_codeblock_8" + "label": "agent.py", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L1", + "community": 116, + "norm_label": "agent.py", + "id": "main_app_prometheus_agent_py" }, { - "label": "Google Callback", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L108", - "community": 41, - "norm_label": "google callback", - "id": "docs_authentication_google_callback" + "label": "safeFilter()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L25", + "community": 116, + "norm_label": "safefilter()", + "id": "prometheus_agent_safefilter" }, { - "label": "Device Detection", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L130", - "community": 41, - "norm_label": "device detection", - "id": "docs_authentication_device_detection" + "label": "persistEvent()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L31", + "community": 116, + "norm_label": "persistevent()", + "id": "prometheus_agent_persistevent" }, { - "label": "Session Management", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L144", - "community": 41, - "norm_label": "session management", - "id": "docs_authentication_session_management" + "label": "getClient()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L45", + "community": 116, + "norm_label": "getclient()", + "id": "prometheus_agent_getclient" }, { - "label": "code:mermaid (graph TD)", - "file_type": "document", - "source_file": "docs/authentication.md", - "source_location": "L156", - "community": 41, - "norm_label": "code:mermaid (graph td)", - "id": "docs_authentication_codeblock_9" + "label": "Prometheus", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L208", + "community": 116, + "norm_label": "prometheus", + "id": "prometheus_agent_prometheus" }, { - "label": "code:mermaid (graph TD)", - "file_type": "document", - "source_file": "docs/orunmila.md", - "source_location": "L55", - "community": 490, - "norm_label": "code:mermaid (graph td)", - "id": "docs_orunmila_codeblock_3" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L209", + "community": 116, + "norm_label": ".__init__()", + "id": "prometheus_agent_prometheus_init" }, { - "label": "API Key Verification", - "file_type": "document", - "source_file": "docs/stocks_api.md", - "source_location": "L40", - "community": 65, - "norm_label": "api key verification", - "id": "docs_stocks_api_api_key_verification" + "label": "buildSystemPrompt()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L213", + "community": 116, + "norm_label": "buildsystemprompt()", + "id": "prometheus_agent_buildsystemprompt" }, { - "label": "Key Management", - "file_type": "document", - "source_file": "docs/stocks_api.md", - "source_location": "L45", - "community": 65, - "norm_label": "key management", - "id": "docs_stocks_api_key_management" + "label": ".makeChat()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L242", + "community": 116, + "norm_label": ".makechat()", + "id": "prometheus_agent_prometheus_makechat" }, { - "label": "code:json ({)", - "file_type": "document", - "source_file": "docs/stocks_api.md", - "source_location": "L94", - "community": 65, - "norm_label": "code:json ({)", - "id": "docs_stocks_api_codeblock_9" + "label": ".streamMessage()", + "file_type": "code", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L253", + "community": 116, + "norm_label": ".streammessage()", + "id": "prometheus_agent_prometheus_streammessage" }, { - "label": "Brazilian Stocks Market Scraper", - "file_type": "document", - "source_file": "docs/scraper_b3.md", + "label": "chat.py", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", "source_location": "L1", - "community": 83, - "norm_label": "brazilian stocks market scraper", - "id": "docs_scraper_b3_brazilian_stocks_market_scraper" + "community": 125, + "norm_label": "chat.py", + "id": "main_app_prometheus_chat_py" }, { - "label": "Usage", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L5", - "community": 83, - "norm_label": "usage", - "id": "docs_scraper_b3_usage" + "label": "PrometheusChatManager", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L13", + "community": 68, + "norm_label": "prometheuschatmanager", + "id": "prometheus_chat_prometheuschatmanager" }, { - "label": "Output Format", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L27", - "community": 83, - "norm_label": "output format", - "id": "docs_scraper_b3_output_format" + "label": "getUserSessions()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L15", + "community": 125, + "norm_label": "getusersessions()", + "id": "prometheus_chat_getusersessions" }, { - "label": "MySQL Table (b3_stocks)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L29", - "community": 83, - "norm_label": "mysql table (b3_stocks)", - "id": "docs_scraper_b3_mysql_table_b3_stocks" + "label": "createSession()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L33", + "community": 125, + "norm_label": "createsession()", + "id": "prometheus_chat_createsession" }, { - "label": "Sample Record", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L38", - "community": 83, - "norm_label": "sample record", - "id": "docs_scraper_b3_sample_record" + "label": "updateSessionTitle()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L41", + "community": 125, + "norm_label": "updatesessiontitle()", + "id": "prometheus_chat_updatesessiontitle" }, { - "label": "code:json ({)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L40", - "community": 83, - "norm_label": "code:json ({)", - "id": "docs_scraper_b3_codeblock_2" + "label": "appendHistory()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L52", + "community": 125, + "norm_label": "appendhistory()", + "id": "prometheus_chat_appendhistory" }, { - "label": "Xang\u00f4", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L55", - "community": 83, - "norm_label": "xango", - "id": "docs_scraper_b3_xang\u00f4" + "label": "getHistory()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L71", + "community": 125, + "norm_label": "gethistory()", + "id": "prometheus_chat_gethistory" }, { - "label": "Global Score Function", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L60", - "community": 83, - "norm_label": "global score function", - "id": "docs_scraper_b3_global_score_function" + "label": "deleteSession()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L92", + "community": 125, + "norm_label": "deletesession()", + "id": "prometheus_chat_deletesession" }, { - "label": "Engines", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L69", - "community": 83, - "norm_label": "engines", - "id": "docs_scraper_b3_engines" + "label": "verifySessionOwnership()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L106", + "community": 125, + "norm_label": "verifysessionownership()", + "id": "prometheus_chat_verifysessionownership" }, { - "label": "Profit Quality Gate ($M_{profit}$)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L71", - "community": 83, - "norm_label": "profit quality gate ($m_{profit}$)", - "id": "docs_scraper_b3_profit_quality_gate_m_profit" + "label": "compact.py", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L1", + "community": 80, + "norm_label": "compact.py", + "id": "main_app_prometheus_compact_py" }, { - "label": "Fundamental Engine ($\\Phi$)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L76", - "community": 83, - "norm_label": "fundamental engine ($\\phi$)", - "id": "docs_scraper_b3_fundamental_engine_phi" + "label": "getTokenizer()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L35", + "community": 80, + "norm_label": "gettokenizer()", + "id": "prometheus_compact_gettokenizer" }, { - "label": "Risk-Quality Engine ($\\Omega$)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L89", - "community": 83, - "norm_label": "risk-quality engine ($\\omega$)", - "id": "docs_scraper_b3_risk_quality_engine_omega" + "label": "countTokens()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L47", + "community": 80, + "norm_label": "counttokens()", + "id": "prometheus_compact_counttokens" }, { - "label": "Constraint Engine ($\\Lambda$)", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L101", - "community": 83, - "norm_label": "constraint engine ($\\lambda$)", - "id": "docs_scraper_b3_constraint_engine_lambda" + "label": "getStocksFieldsUrl()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L64", + "community": 80, + "norm_label": "getstocksfieldsurl()", + "id": "prometheus_compact_getstocksfieldsurl" }, { - "label": "Configuration Parameters", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L113", - "community": 83, - "norm_label": "configuration parameters", - "id": "docs_scraper_b3_configuration_parameters" + "label": "isTransientFieldsError()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L68", + "community": 80, + "norm_label": "istransientfieldserror()", + "id": "prometheus_compact_istransientfieldserror" }, { - "label": "License", - "file_type": "document", - "source_file": "docs/scraper_b3.md", - "source_location": "L131", - "community": 83, - "norm_label": "license", - "id": "docs_scraper_b3_license" + "label": "fetchFieldsPayload()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L83", + "community": 80, + "norm_label": "fetchfieldspayload()", + "id": "prometheus_compact_fetchfieldspayload" }, { - "label": "SWARMS.md", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L1", - "community": 263, - "norm_label": "swarms.md", - "id": "swarms_md" + "label": "loadFieldData()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L89", + "community": 80, + "norm_label": "loadfielddata()", + "id": "prometheus_compact_loadfielddata" }, { - "label": "SWARMS.md \u2014 subagent swarm playbook (OpenCode / Hermes)", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L1", - "community": 263, - "norm_label": "swarms.md \u2014 subagent swarm playbook (opencode / hermes)", - "id": "server_swarms_swarms_md_subagent_swarm_playbook_opencode_hermes" + "label": "getMetricRegex()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L105", + "community": 80, + "norm_label": "getmetricregex()", + "id": "prometheus_compact_getmetricregex" }, { - "label": "1. Prime owns the goal, lanes own the work", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L6", - "community": 263, - "norm_label": "1. prime owns the goal, lanes own the work", - "id": "server_swarms_1_prime_owns_the_goal_lanes_own_the_work" + "label": "dedup()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L119", + "community": 80, + "norm_label": "dedup()", + "id": "prometheus_compact_dedup" }, { - "label": "2. Dispatch: `delegate()`, one per lane, one turn", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L12", - "community": 263, - "norm_label": "2. dispatch: `delegate()`, one per lane, one turn", - "id": "server_swarms_2_dispatch_delegate_one_per_lane_one_turn" + "label": "extractTickers()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L123", + "community": 80, + "norm_label": "extracttickers()", + "id": "prometheus_compact_extracttickers" }, { - "label": "3. Delegate toolsets vary \u2014 verify each lane", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L20", - "community": 263, - "norm_label": "3. delegate toolsets vary \u2014 verify each lane", - "id": "server_swarms_3_delegate_toolsets_vary_verify_each_lane" + "label": "extractMetrics()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L127", + "community": 80, + "norm_label": "extractmetrics()", + "id": "prometheus_compact_extractmetrics" }, { - "label": "4. Trust nothing \u2014 verify everything", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L26", - "community": 263, - "norm_label": "4. trust nothing \u2014 verify everything", - "id": "server_swarms_4_trust_nothing_verify_everything" + "label": "extractDecisions()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L131", + "community": 80, + "norm_label": "extractdecisions()", + "id": "prometheus_compact_extractdecisions" }, { - "label": "5. Windows PowerShell survival", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L33", - "community": 263, - "norm_label": "5. windows powershell survival", - "id": "server_swarms_5_windows_powershell_survival" + "label": "extractSnapshots()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L145", + "community": 80, + "norm_label": "extractsnapshots()", + "id": "prometheus_compact_extractsnapshots" }, { - "label": "6. Finish per lane, not per swarm", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L39", - "community": 263, - "norm_label": "6. finish per lane, not per swarm", - "id": "server_swarms_6_finish_per_lane_not_per_swarm" + "label": "extractToolCalls()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L158", + "community": 80, + "norm_label": "extracttoolcalls()", + "id": "prometheus_compact_extracttoolcalls" }, { - "label": "7. Standing bans (this repo)", - "file_type": "document", - "source_file": "SWARMS.md", - "source_location": "L45", - "community": 263, - "norm_label": "7. standing bans (this repo)", - "id": "server_swarms_7_standing_bans_this_repo" + "label": "buildSummary()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L174", + "community": 80, + "norm_label": "buildsummary()", + "id": "prometheus_compact_buildsummary" }, { - "label": "prometheus.md", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L1", - "community": 156, - "norm_label": "prometheus.md", - "id": "docs_prometheus_md" + "label": "PrometheusCompactor", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L195", + "community": 80, + "norm_label": "prometheuscompactor", + "id": "prometheus_compact_prometheuscompactor" }, { - "label": "Prometheus", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L1", - "community": 156, - "norm_label": "prometheus", - "id": "docs_prometheus_prometheus" + "label": ".shouldCompact()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L196", + "community": 80, + "norm_label": ".shouldcompact()", + "id": "prometheus_compact_prometheuscompactor_shouldcompact" }, { - "label": "Usage", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L9", - "community": 156, - "norm_label": "usage", - "id": "docs_prometheus_usage" + "label": ".getCompactableChunk()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L213", + "community": 80, + "norm_label": ".getcompactablechunk()", + "id": "prometheus_compact_prometheuscompactor_getcompactablechunk" }, { - "label": "code:env (#)", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L11", - "community": 156, - "norm_label": "code:env (#)", - "id": "docs_prometheus_codeblock_1" + "label": ".extractEpisode()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L222", + "community": 80, + "norm_label": ".extractepisode()", + "id": "prometheus_compact_prometheuscompactor_extractepisode" }, { - "label": "code:bash (python __init__.py)", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L51", - "community": 156, - "norm_label": "code:bash (python __init__.py)", - "id": "docs_prometheus_codeblock_2" + "label": ".consolidate()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L244", + "community": 80, + "norm_label": ".consolidate()", + "id": "prometheus_compact_prometheuscompactor_consolidate" }, { - "label": "Workflow", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L55", - "community": 156, - "norm_label": "workflow", - "id": "docs_prometheus_workflow" + "label": ".compact()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L271", + "community": 80, + "norm_label": ".compact()", + "id": "prometheus_compact_prometheuscompactor_compact" }, { - "label": "code:mermaid (graph TD)", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L57", - "community": 156, - "norm_label": "code:mermaid (graph td)", - "id": "docs_prometheus_codeblock_3" + "label": ".getEpisodes()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L310", + "community": 80, + "norm_label": ".getepisodes()", + "id": "prometheus_compact_prometheuscompactor_getepisodes" }, { - "label": "API Endpoints", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L67", - "community": 156, - "norm_label": "api endpoints", - "id": "docs_prometheus_api_endpoints" + "label": "mcp.py", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L1", + "community": 12, + "norm_label": "mcp.py", + "id": "main_app_prometheus_mcp_py" }, { - "label": "License", - "file_type": "document", - "source_file": "docs/prometheus.md", - "source_location": "L74", - "community": 156, - "norm_label": "license", - "id": "docs_prometheus_license" + "label": "buildClient()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L21", + "community": 12, + "norm_label": "buildclient()", + "id": "prometheus_mcp_buildclient" }, { - "label": "PONYTAIL.md", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L1", - "community": 509, - "norm_label": "ponytail.md", - "id": "ponytail_md" + "label": "connect()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L29", + "community": 12, + "norm_label": "connect()", + "id": "prometheus_mcp_connect" }, { - "label": "PONYTAIL.md \u2014 proposed cuts, NOT applied. Approve before any edit.", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L1", - "community": 509, - "norm_label": "ponytail.md \u2014 proposed cuts, not applied. approve before any edit.", - "id": "server_ponytail_ponytail_md_proposed_cuts_not_applied_approve_before_any_edit" + "label": "MCPClientPool", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L36", + "community": 12, + "norm_label": "mcpclientpool", + "id": "prometheus_mcp_mcpclientpool" }, { - "label": "Proposed (awaiting approval)", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L6", - "community": 509, - "norm_label": "proposed (awaiting approval)", - "id": "server_ponytail_proposed_awaiting_approval" + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L37", + "community": 12, + "norm_label": ".__init__()", + "id": "prometheus_mcp_mcpclientpool_init" }, { - "label": "Disputed (already litigated \u2014 needs your ruling to proceed)", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L64", - "community": 509, - "norm_label": "disputed (already litigated \u2014 needs your ruling to proceed)", - "id": "server_ponytail_disputed_already_litigated_needs_your_ruling_to_proceed" + "label": ".initialize()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L42", + "community": 12, + "norm_label": ".initialize()", + "id": "prometheus_mcp_mcpclientpool_initialize" }, { - "label": "Held out (your ignore rules \u2014 not proposed)", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L72", - "community": 509, - "norm_label": "held out (your ignore rules \u2014 not proposed)", - "id": "server_ponytail_held_out_your_ignore_rules_not_proposed" + "label": ".getClients()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L56", + "community": 12, + "norm_label": ".getclients()", + "id": "prometheus_mcp_mcpclientpool_getclients" }, { - "label": "Refused", - "file_type": "document", - "source_file": "PONYTAIL.md", - "source_location": "L78", - "community": 509, - "norm_label": "refused", - "id": "server_ponytail_refused" + "label": ".healthCheck()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L63", + "community": 12, + "norm_label": ".healthcheck()", + "id": "prometheus_mcp_mcpclientpool_healthcheck" }, { - "label": "getDeviceName()", + "label": ".reconnect()", "file_type": "code", - "source_file": "main/app/authentication/session.py", - "source_location": "L14", - "community": 149, - "norm_label": "getdevicename()", - "id": "authentication_session_getdevicename" + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L75", + "community": 12, + "norm_label": ".reconnect()", + "id": "prometheus_mcp_mcpclientpool_reconnect" }, { - "label": "walk()", + "label": ".close()", "file_type": "code", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L46", - "community": 215, - "norm_label": "walk()", - "id": "stocks_api_compress_walk" + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L90", + "community": 12, + "norm_label": ".close()", + "id": "prometheus_mcp_mcpclientpool_close" }, { - "label": "toColumnar()", + "label": "memory.py", "file_type": "code", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L75", - "community": 215, - "norm_label": "tocolumnar()", - "id": "stocks_api_compress_tocolumnar" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L1", + "community": 53, + "norm_label": "memory.py", + "id": "main_app_prometheus_memory_py" }, { - "label": "fixHeaders()", + "label": "getMatrix()", "file_type": "code", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L84", - "community": 215, - "norm_label": "fixheaders()", - "id": "stocks_api_compress_fixheaders" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L35", + "community": 53, + "norm_label": "getmatrix()", + "id": "prometheus_memory_getmatrix" }, { - "label": "StocksQueryManager", + "label": "invalidateUser()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L54", - "community": 101, - "norm_label": "stocksquerymanager", - "id": "stocks_api_query_stocksquerymanager" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L53", + "community": 53, + "norm_label": "invalidateuser()", + "id": "prometheus_memory_invalidateuser" }, { - "label": ".__init__()", + "label": "clearAll()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L55", - "community": 101, - "norm_label": ".__init__()", - "id": "stocks_api_query_stocksquerymanager_init" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L57", + "community": 53, + "norm_label": "clearall()", + "id": "prometheus_memory_clearall" }, { - "label": ".baseFrame()", + "label": "MemoryCandidate", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L58", - "community": 63, - "norm_label": ".baseframe()", - "id": "stocks_api_query_stocksquerymanager_baseframe" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L64", + "community": 45, + "norm_label": "memorycandidate", + "id": "prometheus_memory_memorycandidate" }, { - "label": ".finalize()", + "label": "newTokenCache()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L69", - "community": 63, - "norm_label": ".finalize()", - "id": "stocks_api_query_stocksquerymanager_finalize" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L90", + "community": 116, + "norm_label": "newtokencache()", + "id": "prometheus_memory_newtokencache" }, { - "label": ".deserializeJsonColumns()", + "label": "getClient()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L109", - "community": 63, - "norm_label": ".deserializejsoncolumns()", - "id": "stocks_api_query_stocksquerymanager_deserializejsoncolumns" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L97", + "community": 53, + "norm_label": "getclient()", + "id": "prometheus_memory_getclient" }, { - "label": ".filterBySearchTerms()", + "label": "minMax()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L136", - "community": 63, - "norm_label": ".filterbysearchterms()", - "id": "stocks_api_query_stocksquerymanager_filterbysearchterms" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L104", + "community": 13, + "norm_label": "minmax()", + "id": "prometheus_memory_minmax" }, { - "label": ".queryHistorical()", + "label": "normalizeKey()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L153", - "community": 63, - "norm_label": ".queryhistorical()", - "id": "stocks_api_query_stocksquerymanager_queryhistorical" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L113", + "community": 53, + "norm_label": "normalizekey()", + "id": "prometheus_memory_normalizekey" }, { - "label": ".queryFundamental()", + "label": "findSimilarKey()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L220", - "community": 63, - "norm_label": ".queryfundamental()", - "id": "stocks_api_query_stocksquerymanager_queryfundamental" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L120", + "community": 53, + "norm_label": "findsimilarkey()", + "id": "prometheus_memory_findsimilarkey" }, { - "label": ".queryCotations()", + "label": "scoreRow()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L284", - "community": 63, - "norm_label": ".querycotations()", - "id": "stocks_api_query_stocksquerymanager_querycotations" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L140", + "community": 13, + "norm_label": "scorerow()", + "id": "prometheus_memory_scorerow" }, { - "label": ".queryLiveCotation()", + "label": "scoreRecency()", "file_type": "code", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L331", - "community": 101, - "norm_label": ".querylivecotation()", - "id": "stocks_api_query_stocksquerymanager_querylivecotation" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L152", + "community": 13, + "norm_label": "scorerecency()", + "id": "prometheus_memory_scorerecency" }, { - "label": "getHistoricalFields()", + "label": "scoreCandidates()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L89", - "community": 80, - "norm_label": "gethistoricalfields()", - "id": "prometheus_compact_gethistoricalfields" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L162", + "community": 13, + "norm_label": "scorecandidates()", + "id": "prometheus_memory_scorecandidates" }, { - "label": "getFundamentalColumns()", + "label": "sumTokens()", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L93", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L179", "community": 80, - "norm_label": "getfundamentalcolumns()", - "id": "prometheus_compact_getfundamentalcolumns" + "norm_label": "sumtokens()", + "id": "prometheus_memory_sumtokens" }, { - "label": "invalidateFieldData()", + "label": "PrometheusMemory", "file_type": "code", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L97", - "community": 80, - "norm_label": "invalidatefielddata()", - "id": "prometheus_compact_invalidatefielddata" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L194", + "community": 140, + "norm_label": "prometheusmemory", + "id": "prometheus_memory_prometheusmemory" }, { - "label": "matrixKey()", + "label": "getMemoryLimit()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L31", + "source_location": "L196", "community": 53, - "norm_label": "matrixkey()", - "id": "prometheus_memory_matrixkey" + "norm_label": "getmemorylimit()", + "id": "prometheus_memory_getmemorylimit" }, { - "label": "matrixUserTag()", + "label": "countMemories()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L38", + "source_location": "L202", "community": 53, - "norm_label": "matrixusertag()", - "id": "prometheus_memory_matrixusertag" + "norm_label": "countmemories()", + "id": "prometheus_memory_countmemories" }, { - "label": "countTokensCached()", + "label": "touch()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L450", + "source_location": "L211", "community": 53, - "norm_label": "counttokenscached()", - "id": "prometheus_memory_counttokenscached" + "norm_label": "touch()", + "id": "prometheus_memory_touch" }, { - "label": "sync_cache()", + "label": "upsertMemory()", "file_type": "code", - "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L13", - "community": 511, - "norm_label": "sync_cache()", - "id": "stocks_api_sync_cache_sync_cache" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L222", + "community": 53, + "norm_label": "upsertmemory()", + "id": "prometheus_memory_upsertmemory" }, { - "label": "write_bytes()", + "label": "search()", "file_type": "code", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L194", - "community": 69, - "norm_label": "write_bytes()", - "id": "prometheus_sandbox_write_bytes" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L286", + "community": 13, + "norm_label": "search()", + "id": "prometheus_memory_search" }, { - "label": "ensureFastmcp()", + "label": "fullTextSearch()", "file_type": "code", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L10", - "community": 194, - "norm_label": "ensurefastmcp()", - "id": "prometheus_mcp_ensurefastmcp" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L349", + "community": 13, + "norm_label": "fulltextsearch()", + "id": "prometheus_memory_fulltextsearch" }, { - "label": "getMatrixAsync()", + "label": "getUserMemories()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L43", - "community": 53, - "norm_label": "getmatrixasync()", - "id": "prometheus_memory_getmatrixasync" + "source_location": "L407", + "community": 27, + "norm_label": "getusermemories()", + "id": "prometheus_memory_getusermemories" }, { - "label": "invalidateUserAsync()", + "label": "deleteMemory()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L55", + "source_location": "L432", "community": 53, - "norm_label": "invalidateuserasync()", - "id": "prometheus_memory_invalidateuserasync" + "norm_label": "deletememory()", + "id": "prometheus_memory_deletememory" }, { - "label": "clearAllAsync()", + "label": "extract()", "file_type": "code", "source_file": "main/app/prometheus/memory.py", - "source_location": "L59", + "source_location": "L450", "community": 53, - "norm_label": "clearallasync()", - "id": "prometheus_memory_clearallasync" + "norm_label": "extract()", + "id": "prometheus_memory_extract" }, { - "label": "upsertMemoryAsync()", + "label": "sandbox.py", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L244", - "community": 53, - "norm_label": "upsertmemoryasync()", - "id": "prometheus_memory_upsertmemoryasync" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L1", + "community": 69, + "norm_label": "sandbox.py", + "id": "main_app_prometheus_sandbox_py" }, { - "label": "searchAsync()", + "label": "lockFor()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L333", - "community": 126, - "norm_label": "searchasync()", - "id": "prometheus_memory_searchasync" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L18", + "community": 69, + "norm_label": "lockfor()", + "id": "prometheus_sandbox_lockfor" }, { - "label": "deleteMemoryAsync()", + "label": "getClient()", "file_type": "code", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L483", - "community": 53, - "norm_label": "deletememoryasync()", - "id": "prometheus_memory_deletememoryasync" + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L24", + "community": 69, + "norm_label": "getclient()", + "id": "prometheus_sandbox_getclient" }, { - "label": "Search user's saved memories, preferences, and past analysis context. Use", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L20", - "community": 152, - "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_20" + "label": "hostPath()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L32", + "community": 69, + "norm_label": "hostpath()", + "id": "prometheus_sandbox_hostpath" }, { - "label": "Store a memory about the user's preferences, analysis results, or feedback.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L50", - "community": 208, - "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_50" + "label": "sandboxPath()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L46", + "community": 69, + "norm_label": "sandboxpath()", + "id": "prometheus_sandbox_sandboxpath" }, { - "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L91", - "community": 487, - "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_91" + "label": "SandboxManager", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L51", + "community": 2, + "norm_label": "sandboxmanager", + "id": "prometheus_sandbox_sandboxmanager" }, { - "label": "Read a file from the workspace. Args: path: Path to the file (e.", - "file_type": "rationale", - "source_file": "main/app/prometheus/tools.py", + "label": "create()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L53", + "community": 69, + "norm_label": "create()", + "id": "prometheus_sandbox_create" + }, + { + "label": "destroy()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L69", + "community": 69, + "norm_label": "destroy()", + "id": "prometheus_sandbox_destroy" + }, + { + "label": "getOrCreate()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L81", + "community": 69, + "norm_label": "getorcreate()", + "id": "prometheus_sandbox_getorcreate" + }, + { + "label": "execute()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L128", + "community": 69, + "norm_label": "execute()", + "id": "prometheus_sandbox_execute" + }, + { + "label": "read_file()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L164", + "community": 69, + "norm_label": "read_file()", + "id": "prometheus_sandbox_read_file" + }, + { + "label": "write_file()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L171", + "community": 69, + "norm_label": "write_file()", + "id": "prometheus_sandbox_write_file" + }, + { + "label": "list_files()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L185", + "community": 69, + "norm_label": "list_files()", + "id": "prometheus_sandbox_list_files" + }, + { + "label": "delete_file()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L193", + "community": 69, + "norm_label": "delete_file()", + "id": "prometheus_sandbox_delete_file" + }, + { + "label": "syncToSandbox()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L210", + "community": 69, + "norm_label": "synctosandbox()", + "id": "prometheus_sandbox_synctosandbox" + }, + { + "label": "syncFromSandbox()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L229", + "community": 69, + "norm_label": "syncfromsandbox()", + "id": "prometheus_sandbox_syncfromsandbox" + }, + { + "label": "stream_bus.py", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L1", + "community": 210, + "norm_label": "stream_bus.py", + "id": "main_app_prometheus_stream_bus_py" + }, + { + "label": "StreamChannel", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L14", + "community": 210, + "norm_label": "streamchannel", + "id": "prometheus_stream_bus_streamchannel" + }, + { + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L15", + "community": 210, + "norm_label": ".__init__()", + "id": "prometheus_stream_bus_streamchannel_init" + }, + { + "label": ".publish()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L21", + "community": 210, + "norm_label": ".publish()", + "id": "prometheus_stream_bus_streamchannel_publish" + }, + { + "label": "StreamBus", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L32", + "community": 210, + "norm_label": "streambus", + "id": "prometheus_stream_bus_streambus" + }, + { + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L33", + "community": 210, + "norm_label": ".__init__()", + "id": "prometheus_stream_bus_streambus_init" + }, + { + "label": ".getOrCreate()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L36", + "community": 210, + "norm_label": ".getorcreate()", + "id": "prometheus_stream_bus_streambus_getorcreate" + }, + { + "label": ".publish()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L43", + "community": 210, + "norm_label": ".publish()", + "id": "prometheus_stream_bus_streambus_publish" + }, + { + "label": ".subscribe()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L46", + "community": 210, + "norm_label": ".subscribe()", + "id": "prometheus_stream_bus_streambus_subscribe" + }, + { + "label": ".unsubscribe()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L59", + "community": 210, + "norm_label": ".unsubscribe()", + "id": "prometheus_stream_bus_streambus_unsubscribe" + }, + { + "label": ".startRun()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L64", + "community": 210, + "norm_label": ".startrun()", + "id": "prometheus_stream_bus_streambus_startrun" + }, + { + "label": ".eventGenerator()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L86", + "community": 210, + "norm_label": ".eventgenerator()", + "id": "prometheus_stream_bus_streambus_eventgenerator" + }, + { + "label": ".streamResponse()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L109", + "community": 210, + "norm_label": ".streamresponse()", + "id": "prometheus_stream_bus_streambus_streamresponse" + }, + { + "label": ".forward()", + "file_type": "code", + "source_file": "main/app/prometheus/stream_bus.py", "source_location": "L112", - "community": 525, - "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_112" + "community": 210, + "norm_label": ".forward()", + "id": "prometheus_stream_bus_streambus_forward" }, { - "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", - "file_type": "rationale", + "label": "tools.py", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L126", + "source_location": "L1", "community": 523, - "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_126" + "norm_label": "tools.py", + "id": "main_app_prometheus_tools_py" }, { - "label": "List files in the workspace directory. Args: path: Directory pat", - "file_type": "rationale", + "label": "search_memory()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L142", - "community": 495, - "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_142" + "source_location": "L20", + "community": 152, + "norm_label": "search_memory()", + "id": "prometheus_tools_search_memory" }, { - "label": "Get a download link for a workspace file to share with the user. Use this", - "file_type": "rationale", + "label": "save_memory()", + "file_type": "code", "source_file": "main/app/prometheus/tools.py", - "source_location": "L155", - "community": 523, - "norm_label": "get a download link for a workspace file to share with the user. use this", - "id": "prometheus_tools_rationale_155" + "source_location": "L51", + "community": 126, + "norm_label": "save_memory()", + "id": "prometheus_tools_save_memory" }, { - "label": "Write-Fix()", + "label": "execute_code()", "file_type": "code", - "source_file": "ci.ps1", - "source_location": "L48", - "community": 203, - "norm_label": "write-fix()", - "id": "server_ci_write_fix" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L93", + "community": 487, + "norm_label": "execute_code()", + "id": "prometheus_tools_execute_code" }, { - "label": "saveMessage()", + "label": "read_file()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L52", - "community": 125, - "norm_label": "savemessage()", - "id": "prometheus_chat_savemessage" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L114", + "community": 208, + "norm_label": "read_file()", + "id": "prometheus_tools_read_file" }, { - "label": "saveLoopEvent()", + "label": "write_file()", "file_type": "code", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L76", - "community": 125, - "norm_label": "saveloopevent()", - "id": "prometheus_chat_saveloopevent" + "source_file": "main/app/prometheus/tools.py", + "source_location": "L128", + "community": 529, + "norm_label": "write_file()", + "id": "prometheus_tools_write_file" + }, + { + "label": "list_files()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L144", + "community": 525, + "norm_label": "list_files()", + "id": "prometheus_tools_list_files" + }, + { + "label": "serve_file()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L157", + "community": 525, + "norm_label": "serve_file()", + "id": "prometheus_tools_serve_file" + }, + { + "label": "dispatchToolCall()", + "file_type": "code", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L190", + "community": 49, + "norm_label": "dispatchtoolcall()", + "id": "prometheus_tools_dispatchtoolcall" }, { "label": "Search user's saved memories, preferences, and past analysis context. Use", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L19", + "source_location": "L21", "community": 152, "norm_label": "search user's saved memories, preferences, and past analysis context. use", - "id": "prometheus_tools_rationale_19" + "id": "prometheus_tools_rationale_21" }, { "label": "Store a memory about the user's preferences, analysis results, or feedback.", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L49", - "community": 208, + "source_location": "L52", + "community": 126, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", - "id": "prometheus_tools_rationale_49" + "id": "prometheus_tools_rationale_52" }, { "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L90", + "source_location": "L94", "community": 487, "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", - "id": "prometheus_tools_rationale_90" + "id": "prometheus_tools_rationale_94" }, { "label": "Read a file from the workspace. Args: path: Path to the file (e.", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L111", - "community": 525, + "source_location": "L115", + "community": 208, "norm_label": "read a file from the workspace. args: path: path to the file (e.", - "id": "prometheus_tools_rationale_111" + "id": "prometheus_tools_rationale_115" }, { "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L125", - "community": 523, + "source_location": "L129", + "community": 529, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", - "id": "prometheus_tools_rationale_125" + "id": "prometheus_tools_rationale_129" }, { "label": "List files in the workspace directory. Args: path: Directory pat", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L141", - "community": 523, + "source_location": "L145", + "community": 525, "norm_label": "list files in the workspace directory. args: path: directory pat", - "id": "prometheus_tools_rationale_141" + "id": "prometheus_tools_rationale_145" }, { "label": "Get a download link for a workspace file to share with the user. Use this", "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", - "source_location": "L154", - "community": 523, + "source_location": "L158", + "community": 525, "norm_label": "get a download link for a workspace file to share with the user. use this", - "id": "prometheus_tools_rationale_154" + "id": "prometheus_tools_rationale_158" }, { - "label": "hashKey()", + "label": "vector.py", "file_type": "code", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L17", - "community": 26, - "norm_label": "hashkey()", - "id": "stocks_api_key_hashkey" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L1", + "community": 13, + "norm_label": "vector.py", + "id": "main_app_prometheus_vector_py" }, { - "label": "JSONBytesResponse", + "label": "normalizeRows()", "file_type": "code", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L23", - "community": 197, - "norm_label": "jsonbytesresponse", - "id": "controller_stocksapi_controller_jsonbytesresponse" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L10", + "community": 13, + "norm_label": "normalizerows()", + "id": "prometheus_vector_normalizerows" }, { - "label": "FastAPIResponse", + "label": "embed()", "file_type": "code", - "source_file": "", - "source_location": "", - "community": 197, - "norm_label": "fastapiresponse", - "id": "fastapiresponse" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L15", + "community": 13, + "norm_label": "embed()", + "id": "prometheus_vector_embed" }, { - "label": ".render()", + "label": "decodeEmbeddings()", "file_type": "code", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L26", - "community": 197, - "norm_label": ".render()", - "id": "controller_stocksapi_controller_jsonbytesresponse_render" - }, - { - "label": "Discover available field names before querying /historical or /fundamental.", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L47", - "community": 54, - "norm_label": "discover available field names before querying /historical or /fundamental.", - "id": "controller_stocksapi_controller_rationale_47" - }, - { - "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L103", - "community": 197, - "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", - "id": "controller_stocksapi_controller_rationale_103" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L19", + "community": 13, + "norm_label": "decodeembeddings()", + "id": "prometheus_vector_decodeembeddings" }, { - "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L168", - "community": 157, - "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", - "id": "controller_stocksapi_controller_rationale_168" + "label": "batchCosineSimilarity()", + "file_type": "code", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L41", + "community": 13, + "norm_label": "batchcosinesimilarity()", + "id": "prometheus_vector_batchcosinesimilarity" }, { - "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L236", - "community": 169, - "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", - "id": "controller_stocksapi_controller_rationale_236" + "label": "contentHash()", + "file_type": "code", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L51", + "community": 53, + "norm_label": "contenthash()", + "id": "prometheus_vector_contenthash" }, { - "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", - "file_type": "rationale", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L290", - "community": 81, - "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", - "id": "controller_stocksapi_controller_rationale_290" + "label": "toVectorString()", + "file_type": "code", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L55", + "community": 13, + "norm_label": "tovectorstring()", + "id": "prometheus_vector_tovectorstring" }, { - "label": "Load historical/fundamental field names via STOCKS_API /fields endpoint, caching", - "file_type": "rationale", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L97", - "community": 80, - "norm_label": "load historical/fundamental field names via stocks_api /fields endpoint, caching", - "id": "prometheus_compact_rationale_97" + "label": "fromVectorString()", + "file_type": "code", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L59", + "community": 13, + "norm_label": "fromvectorstring()", + "id": "prometheus_vector_fromvectorstring" }, { - "label": "matrix_cache.py", + "label": "getRelevanceScore()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L1", - "community": 526, - "norm_label": "matrix_cache.py", - "id": "main_app_prometheus_matrix_cache_py" + "source_file": "main/app/prometheus/vector.py", + "source_location": "L71", + "community": 27, + "norm_label": "getrelevancescore()", + "id": "prometheus_vector_getrelevancescore" }, { - "label": "buildKey()", + "label": "prometheus_controller.py", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L21", - "community": 526, - "norm_label": "buildkey()", - "id": "prometheus_matrix_cache_buildkey" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L1", + "community": 84, + "norm_label": "prometheus_controller.py", + "id": "main_controller_prometheus_controller_py" }, { - "label": "runAwait()", + "label": "verifySessionOwnsership()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L28", - "community": 526, - "norm_label": "runawait()", - "id": "prometheus_matrix_cache_runawait" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L26", + "community": 84, + "norm_label": "verifysessionownsership()", + "id": "controller_prometheus_controller_verifysessionownsership" }, { - "label": "getMatrix()", + "label": "health()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", + "source_file": "main/controller/prometheus_controller.py", "source_location": "L32", - "community": 526, - "norm_label": "getmatrix()", - "id": "prometheus_matrix_cache_getmatrix" + "community": 84, + "norm_label": "health()", + "id": "controller_prometheus_controller_health" }, { - "label": "invalidateUser()", + "label": "getSessions()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L44", - "community": 526, - "norm_label": "invalidateuser()", - "id": "prometheus_matrix_cache_invalidateuser" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L37", + "community": 84, + "norm_label": "getsessions()", + "id": "controller_prometheus_controller_getsessions" }, { - "label": "clearAll()", + "label": "updateSessionTitle()", "file_type": "code", - "source_file": "main/app/prometheus/matrix_cache.py", - "source_location": "L54", - "community": 526, - "norm_label": "clearall()", - "id": "prometheus_matrix_cache_clearall" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L56", + "community": 84, + "norm_label": "updatesessiontitle()", + "id": "controller_prometheus_controller_updatesessiontitle" }, { - "label": "bench_memory_vector.py", + "label": "getHistory()", "file_type": "code", - "source_file": "bench/bench_memory_vector.py", - "source_location": "L1", - "community": 126, - "norm_label": "bench_memory_vector.py", - "id": "bench_bench_memory_vector_py" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L71", + "community": 84, + "norm_label": "gethistory()", + "id": "controller_prometheus_controller_gethistory" }, { - "label": "benchOnce()", + "label": "deleteSession()", "file_type": "code", - "source_file": "bench/bench_memory_vector.py", - "source_location": "L14", - "community": 126, - "norm_label": "benchonce()", - "id": "bench_bench_memory_vector_benchonce" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L90", + "community": 84, + "norm_label": "deletesession()", + "id": "controller_prometheus_controller_deletesession" }, { - "label": "main()", + "label": "chat_stream()", "file_type": "code", - "source_file": "bench/bench_memory_vector.py", - "source_location": "L41", - "community": 126, - "norm_label": "main()", - "id": "bench_bench_memory_vector_main" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L103", + "community": 84, + "norm_label": "chat_stream()", + "id": "controller_prometheus_controller_chat_stream" }, { - "label": "20260912T190329Z-baseline.json", + "label": "resumeChatStream()", "file_type": "code", - "source_file": "bench/results/20260912T190329Z-baseline.json", - "source_location": "L1", - "community": 557, - "norm_label": "20260912t190329z-baseline.json", - "id": "bench_results_20260912t190329z_baseline_json" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L154", + "community": 84, + "norm_label": "resumechatstream()", + "id": "controller_prometheus_controller_resumechatstream" }, { - "label": "label", + "label": "deleteWorkspaceFile()", "file_type": "code", - "source_file": "bench/results/20260912T190329Z-baseline.json", - "source_location": "L2", - "community": 557, - "norm_label": "label", - "id": "results_20260912t190329z_baseline_label" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L166", + "community": 84, + "norm_label": "deleteworkspacefile()", + "id": "controller_prometheus_controller_deleteworkspacefile" }, { - "label": "at", + "label": "downloadWorkspaceFile()", "file_type": "code", - "source_file": "bench/results/20260912T190329Z-baseline.json", - "source_location": "L3", - "community": 557, - "norm_label": "at", - "id": "results_20260912t190329z_baseline_at" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L179", + "community": 84, + "norm_label": "downloadworkspacefile()", + "id": "controller_prometheus_controller_downloadworkspacefile" }, { - "label": "rows", + "label": "listWorkspaceFiles()", "file_type": "code", - "source_file": "bench/results/20260912T190329Z-baseline.json", - "source_location": "L4", - "community": 557, - "norm_label": "rows", - "id": "results_20260912t190329z_baseline_rows" + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L195", + "community": 84, + "norm_label": "listworkspacefiles()", + "id": "controller_prometheus_controller_listworkspacefiles" }, { - "label": "20260912T192904Z-baseline.json", + "label": "PrometheusMemory", "file_type": "code", - "source_file": "bench/results/20260912T192904Z-baseline.json", - "source_location": "L1", - "community": 542, - "norm_label": "20260912t192904z-baseline.json", - "id": "bench_results_20260912t192904z_baseline_json" + "source_file": "main/models/memory.py", + "source_location": "L8", + "community": 140, + "norm_label": "prometheusmemory", + "id": "models_memory_prometheusmemory" }, { - "label": "label", + "label": "prometheus.py", "file_type": "code", - "source_file": "bench/results/20260912T192904Z-baseline.json", - "source_location": "L2", - "community": 542, - "norm_label": "label", - "id": "results_20260912t192904z_baseline_label" + "source_file": "main/models/prometheus.py", + "source_location": "L1", + "community": 61, + "norm_label": "prometheus.py", + "id": "main_models_prometheus_py" }, { - "label": "at", + "label": "PrometheusSession", "file_type": "code", - "source_file": "bench/results/20260912T192904Z-baseline.json", - "source_location": "L3", - "community": 542, - "norm_label": "at", - "id": "results_20260912t192904z_baseline_at" + "source_file": "main/models/prometheus.py", + "source_location": "L7", + "community": 61, + "norm_label": "prometheussession", + "id": "models_prometheus_prometheussession" }, { - "label": "rows", + "label": "PrometheusSandbox", "file_type": "code", - "source_file": "bench/results/20260912T192904Z-baseline.json", - "source_location": "L4", - "community": 542, - "norm_label": "rows", - "id": "results_20260912t192904z_baseline_rows" + "source_file": "main/models/sandbox.py", + "source_location": "L5", + "community": 4, + "norm_label": "prometheussandbox", + "id": "models_sandbox_prometheussandbox" }, { - "label": "backfill_normalize_embeddings.py", + "label": "prometheus_service.py", "file_type": "code", - "source_file": "scripts/backfill_normalize_embeddings.py", + "source_file": "main/service/prometheus_service.py", "source_location": "L1", - "community": 526, - "norm_label": "backfill_normalize_embeddings.py", - "id": "scripts_backfill_normalize_embeddings_py" + "community": 72, + "norm_label": "prometheus_service.py", + "id": "main_service_prometheus_service_py" }, { - "label": "main()", + "label": "memoryMaintenance()", "file_type": "code", - "source_file": "scripts/backfill_normalize_embeddings.py", - "source_location": "L11", - "community": 526, - "norm_label": "main()", - "id": "scripts_backfill_normalize_embeddings_main" + "source_file": "main/service/prometheus_service.py", + "source_location": "L23", + "community": 570, + "norm_label": "memorymaintenance()", + "id": "service_prometheus_service_memorymaintenance" }, { - "label": "One-shot: renormalize stored embeddings to unit norm. Usage: python scripts/back", - "file_type": "rationale", - "source_file": "scripts/backfill_normalize_embeddings.py", - "source_location": "L1", - "community": 526, - "norm_label": "one-shot: renormalize stored embeddings to unit norm. usage: python scripts/back", - "id": "scripts_backfill_normalize_embeddings_rationale_1" + "label": "PrometheusService", + "file_type": "code", + "source_file": "main/service/prometheus_service.py", + "source_location": "L65", + "community": 140, + "norm_label": "prometheusservice", + "id": "service_prometheus_service_prometheusservice" }, { - "label": "vector-scaleup-runbook.md", - "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L1", - "community": 492, - "norm_label": "vector-scaleup-runbook.md", - "id": "docs_vector_scaleup_runbook_md" + "label": "initialize()", + "file_type": "code", + "source_file": "main/service/prometheus_service.py", + "source_location": "L67", + "community": 72, + "norm_label": "initialize()", + "id": "service_prometheus_service_initialize" }, { - "label": "Vector Scale-Up Runbook", + "label": "Upgrade to Developer Starter", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L1", - "community": 492, - "norm_label": "vector scale-up runbook", - "id": "docs_vector_scaleup_runbook_vector_scale_up_runbook" + "source_file": "docs/user.md", + "source_location": "L41", + "community": 23, + "norm_label": "upgrade to developer starter", + "id": "docs_user_upgrade_to_developer_starter" }, { - "label": "Baseline (lane 4)", + "label": "Upgrade to Developer Enterprise", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L6", - "community": 492, - "norm_label": "baseline (lane 4)", - "id": "docs_vector_scaleup_runbook_baseline_lane_4" + "source_file": "docs/user.md", + "source_location": "L47", + "community": 23, + "norm_label": "upgrade to developer enterprise", + "id": "docs_user_upgrade_to_developer_enterprise" }, { - "label": "Move triggers (any one fires the migration)", + "label": "code:bash (curl -X DELETE -H \"Authorization: Bearer \" http://loc)", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L12", - "community": 492, - "norm_label": "move triggers (any one fires the migration)", - "id": "docs_vector_scaleup_runbook_move_triggers_any_one_fires_the_migration" + "source_file": "docs/user.md", + "source_location": "L116", + "community": 23, + "norm_label": "code:bash (curl -x delete -h \"authorization: bearer \" http://loc)", + "id": "docs_user_codeblock_11" }, { - "label": "Options", + "label": "code:json ({)", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L18", - "community": 492, - "norm_label": "options", - "id": "docs_vector_scaleup_runbook_options" + "source_file": "docs/user.md", + "source_location": "L120", + "community": 23, + "norm_label": "code:json ({)", + "id": "docs_user_codeblock_12" }, { - "label": "Export recipe", + "label": "code:bash (curl -X POST -H \"Authorization: Bearer \" http://local)", "file_type": "document", - "source_file": "docs/vector-scaleup-runbook.md", - "source_location": "L26", - "community": 492, - "norm_label": "export recipe", - "id": "docs_vector_scaleup_runbook_export_recipe" + "source_file": "docs/user.md", + "source_location": "L129", + "community": 23, + "norm_label": "code:bash (curl -x post -h \"authorization: bearer \" http://local)", + "id": "docs_user_codeblock_13" }, { - "label": "2026-09-12-lane1-vector-normalize.md", + "label": "code:json ({)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L1", - "community": 499, - "norm_label": "2026-09-12-lane1-vector-normalize.md", - "id": "docs_superpowers_plans_2026_09_12_lane1_vector_normalize_md" + "source_file": "docs/user.md", + "source_location": "L133", + "community": 23, + "norm_label": "code:json ({)", + "id": "docs_user_codeblock_14" }, { - "label": "Lane 1: Normalized Embeddings + Dot-Product Search Implementation Plan", + "label": "Permission System", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L1", - "community": 499, - "norm_label": "lane 1: normalized embeddings + dot-product search implementation plan", - "id": "plans_2026_09_12_lane1_vector_normalize_lane_1_normalized_embeddings_dot_product_search_implementation_plan" + "source_file": "docs/user.md", + "source_location": "L140", + "community": 23, + "norm_label": "permission system", + "id": "docs_user_permission_system" }, { - "label": "Global Constraints", + "label": "code:python (Permission.VIEW_PROFILE # View own profile)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L15", - "community": 499, - "norm_label": "global constraints", - "id": "plans_2026_09_12_lane1_vector_normalize_global_constraints" + "source_file": "docs/user.md", + "source_location": "L144", + "community": 23, + "norm_label": "code:python (permission.view_profile # view own profile)", + "id": "docs_user_codeblock_15" }, { - "label": "Task 1: Normalize on encode + row-normalize helper", + "label": "code:mermaid (graph TD)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L25", - "community": 499, - "norm_label": "task 1: normalize on encode + row-normalize helper", - "id": "plans_2026_09_12_lane1_vector_normalize_task_1_normalize_on_encode_row_normalize_helper" + "source_file": "docs/user.md", + "source_location": "L158", + "community": 23, + "norm_label": "code:mermaid (graph td)", + "id": "docs_user_codeblock_16" }, { - "label": "code:python (import numpy as np)", + "label": "Usage", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L37", - "community": 499, - "norm_label": "code:python (import numpy as np)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_1" + "source_file": "docs/authentication.md", + "source_location": "L9", + "community": 41, + "norm_label": "usage", + "id": "docs_authentication_usage" }, { - "label": "code:python (def normalizeRows(matrix: np.ndarray) -> np.ndarray:)", + "label": "Profile (Me)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L66", - "community": 499, - "norm_label": "code:python (def normalizerows(matrix: np.ndarray) -> np.ndarray:)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_2" + "source_file": "docs/authentication.md", + "source_location": "L77", + "community": 41, + "norm_label": "profile (me)", + "id": "docs_authentication_profile_me" }, { - "label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", + "label": "code:bash (# Redirect your browser to:)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L93", - "community": 499, - "norm_label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_3" + "source_file": "docs/authentication.md", + "source_location": "L98", + "community": 41, + "norm_label": "code:bash (# redirect your browser to:)", + "id": "docs_authentication_codeblock_7" }, { - "label": "Task 2: Backfill existing rows to unit norm", + "label": "code:bash (GET http://localhost:3200/auth/google)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L98", - "community": 499, - "norm_label": "task 2: backfill existing rows to unit norm", - "id": "plans_2026_09_12_lane1_vector_normalize_task_2_backfill_existing_rows_to_unit_norm" + "source_file": "docs/authentication.md", + "source_location": "L104", + "community": 41, + "norm_label": "code:bash (get http://localhost:3200/auth/google)", + "id": "docs_authentication_codeblock_8" }, { - "label": "code:python (\"\"\"One-shot: renormalize stored embeddings to unit norm. Usa)", + "label": "Google Callback", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L110", - "community": 499, - "norm_label": "code:python (\"\"\"one-shot: renormalize stored embeddings to unit norm. usa)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_4" + "source_file": "docs/authentication.md", + "source_location": "L108", + "community": 41, + "norm_label": "google callback", + "id": "docs_authentication_google_callback" }, { - "label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", + "label": "Device Detection", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", - "source_location": "L159", - "community": 499, - "norm_label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", - "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_5" + "source_file": "docs/authentication.md", + "source_location": "L130", + "community": 41, + "norm_label": "device detection", + "id": "docs_authentication_device_detection" }, { - "label": "2026-09-12-lane2-memory-query-path.md", + "label": "Session Management", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L1", - "community": 214, - "norm_label": "2026-09-12-lane2-memory-query-path.md", - "id": "docs_superpowers_plans_2026_09_12_lane2_memory_query_path_md" + "source_file": "docs/authentication.md", + "source_location": "L144", + "community": 41, + "norm_label": "session management", + "id": "docs_authentication_session_management" }, { - "label": "Lane 2: Memory Query-Path Fix Implementation Plan", + "label": "code:mermaid (graph TD)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L1", - "community": 214, - "norm_label": "lane 2: memory query-path fix implementation plan", - "id": "plans_2026_09_12_lane2_memory_query_path_lane_2_memory_query_path_fix_implementation_plan" + "source_file": "docs/authentication.md", + "source_location": "L156", + "community": 41, + "norm_label": "code:mermaid (graph td)", + "id": "docs_authentication_codeblock_9" }, { - "label": "Global Constraints", + "label": "code:mermaid (graph TD)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L16", - "community": 214, - "norm_label": "global constraints", - "id": "plans_2026_09_12_lane2_memory_query_path_global_constraints" + "source_file": "docs/orunmila.md", + "source_location": "L55", + "community": 490, + "norm_label": "code:mermaid (graph td)", + "id": "docs_orunmila_codeblock_3" }, { - "label": "Task 1: Two-phase candidate load with deferred BLOBs", + "label": "API Key Verification", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L27", - "community": 214, - "norm_label": "task 1: two-phase candidate load with deferred blobs", - "id": "plans_2026_09_12_lane2_memory_query_path_task_1_two_phase_candidate_load_with_deferred_blobs" + "source_file": "docs/stocks_api.md", + "source_location": "L40", + "community": 65, + "norm_label": "api key verification", + "id": "docs_stocks_api_api_key_verification" }, { - "label": "code:python (def test_search_defersEmbeddingBlob(db):)", + "label": "Key Management", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L40", - "community": 214, - "norm_label": "code:python (def test_search_defersembeddingblob(db):)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_1" + "source_file": "docs/stocks_api.md", + "source_location": "L45", + "community": 65, + "norm_label": "key management", + "id": "docs_stocks_api_key_management" }, { - "label": "code:python (from contextlib import contextmanager)", + "label": "code:json ({)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L52", - "community": 214, - "norm_label": "code:python (from contextlib import contextmanager)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_2" + "source_file": "docs/stocks_api.md", + "source_location": "L94", + "community": 65, + "norm_label": "code:json ({)", + "id": "docs_stocks_api_codeblock_9" }, { - "label": "code:python (from sqlalchemy.orm import defer)", + "label": "Brazilian Stocks Market Scraper", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L82", - "community": 214, - "norm_label": "code:python (from sqlalchemy.orm import defer)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_3" + "source_file": "docs/scraper_b3.md", + "source_location": "L1", + "community": 83, + "norm_label": "brazilian stocks market scraper", + "id": "docs_scraper_b3_brazilian_stocks_market_scraper" }, { - "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "label": "Usage", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L111", - "community": 214, - "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_4" + "source_file": "docs/scraper_b3.md", + "source_location": "L5", + "community": 83, + "norm_label": "usage", + "id": "docs_scraper_b3_usage" }, { - "label": "Task 2: Fuse vector, FULLTEXT and recency scores", + "label": "Output Format", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L116", - "community": 214, - "norm_label": "task 2: fuse vector, fulltext and recency scores", - "id": "plans_2026_09_12_lane2_memory_query_path_task_2_fuse_vector_fulltext_and_recency_scores" + "source_file": "docs/scraper_b3.md", + "source_location": "L27", + "community": 83, + "norm_label": "output format", + "id": "docs_scraper_b3_output_format" }, { - "label": "code:python (def test_search_fusesFulltextOverVectorOnly(db):)", + "label": "MySQL Table (b3_stocks)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L128", - "community": 214, - "norm_label": "code:python (def test_search_fusesfulltextovervectoronly(db):)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_5" + "source_file": "docs/scraper_b3.md", + "source_location": "L29", + "community": 83, + "norm_label": "mysql table (b3_stocks)", + "id": "docs_scraper_b3_mysql_table_b3_stocks" }, { - "label": "code:python (def minMax(values: list[float]) -> list[float]:)", + "label": "Sample Record", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L143", - "community": 214, - "norm_label": "code:python (def minmax(values: list[float]) -> list[float]:)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_6" + "source_file": "docs/scraper_b3.md", + "source_location": "L38", + "community": 83, + "norm_label": "sample record", + "id": "docs_scraper_b3_sample_record" }, { - "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "label": "code:json ({)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", - "source_location": "L173", - "community": 214, - "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", - "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_7" + "source_file": "docs/scraper_b3.md", + "source_location": "L40", + "community": 83, + "norm_label": "code:json ({)", + "id": "docs_scraper_b3_codeblock_2" }, { - "label": "2026-09-12-lane4-vector-bench.md", + "label": "Xang\u00f4", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L1", - "community": 540, - "norm_label": "2026-09-12-lane4-vector-bench.md", - "id": "docs_superpowers_plans_2026_09_12_lane4_vector_bench_md" + "source_file": "docs/scraper_b3.md", + "source_location": "L55", + "community": 83, + "norm_label": "xango", + "id": "docs_scraper_b3_xang\u00f4" }, { - "label": "Lane 4: Before/After Bench Implementation Plan", + "label": "Global Score Function", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L1", - "community": 540, - "norm_label": "lane 4: before/after bench implementation plan", - "id": "plans_2026_09_12_lane4_vector_bench_lane_4_before_after_bench_implementation_plan" + "source_file": "docs/scraper_b3.md", + "source_location": "L60", + "community": 83, + "norm_label": "global score function", + "id": "docs_scraper_b3_global_score_function" }, { - "label": "Global Constraints", + "label": "Engines", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L16", - "community": 540, - "norm_label": "global constraints", - "id": "plans_2026_09_12_lane4_vector_bench_global_constraints" + "source_file": "docs/scraper_b3.md", + "source_location": "L69", + "community": 83, + "norm_label": "engines", + "id": "docs_scraper_b3_engines" }, { - "label": "Task 1: Bench script with synthetic scale sweep", + "label": "Profit Quality Gate ($M_{profit}$)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L25", - "community": 540, - "norm_label": "task 1: bench script with synthetic scale sweep", - "id": "plans_2026_09_12_lane4_vector_bench_task_1_bench_script_with_synthetic_scale_sweep" + "source_file": "docs/scraper_b3.md", + "source_location": "L71", + "community": 83, + "norm_label": "profit quality gate ($m_{profit}$)", + "id": "docs_scraper_b3_profit_quality_gate_m_profit" }, { - "label": "code:python (import argparse)", + "label": "Fundamental Engine ($\\Phi$)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L38", - "community": 540, - "norm_label": "code:python (import argparse)", - "id": "plans_2026_09_12_lane4_vector_bench_codeblock_1" + "source_file": "docs/scraper_b3.md", + "source_location": "L76", + "community": 83, + "norm_label": "fundamental engine ($\\phi$)", + "id": "docs_scraper_b3_fundamental_engine_phi" }, { - "label": "code:bash (git add bench/bench_memory_vector.py)", + "label": "Risk-Quality Engine ($\\Omega$)", "file_type": "document", - "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", - "source_location": "L100", - "community": 540, - "norm_label": "code:bash (git add bench/bench_memory_vector.py)", - "id": "plans_2026_09_12_lane4_vector_bench_codeblock_2" + "source_file": "docs/scraper_b3.md", + "source_location": "L89", + "community": 83, + "norm_label": "risk-quality engine ($\\omega$)", + "id": "docs_scraper_b3_risk_quality_engine_omega" }, { - "label": "Task 2: Record baseline and post-lane numbers", + "label": "Constraint Engine ($\\Lambda$)", + "file_type": "document", + "source_file": "docs/scraper_b3.md", + "source_location": "L101", + "community": 83, + "norm_label": "constraint engine ($\\lambda$)", + "id": "docs_scraper_b3_constraint_engine_lambda" + }, + { + "label": "Configuration Parameters", + "file_type": "document", + "source_file": "docs/scraper_b3.md", + "source_location": "L113", + "community": 83, + "norm_label": "configuration parameters", + "id": "docs_scraper_b3_configuration_parameters" + }, + { + "label": "License", + "file_type": "document", + "source_file": "docs/scraper_b3.md", + "source_location": "L131", + "community": 83, + "norm_label": "license", + "id": "docs_scraper_b3_license" + }, + { + "label": "SWARMS.md", + "file_type": "document", + "source_file": "SWARMS.md", + "source_location": "L1", + "community": 263, + "norm_label": "swarms.md", + "id": "swarms_md" + }, + { + "label": "SWARMS.md \u2014 subagent swarm playbook (OpenCode / Hermes)", + "file_type": "document", + "source_file": "SWARMS.md", + "source_location": "L1", + "community": 263, + "norm_label": "swarms.md \u2014 subagent swarm playbook (opencode / hermes)", + "id": "server_swarms_swarms_md_subagent_swarm_playbook_opencode_hermes" + }, + { + "label": "1. Prime owns the goal, lanes own the work", + "file_type": "document", + "source_file": "SWARMS.md", + "source_location": "L6", + "community": 263, + "norm_label": "1. prime owns the goal, lanes own the work", + "id": "server_swarms_1_prime_owns_the_goal_lanes_own_the_work" + }, + { + "label": "2. Dispatch: `delegate()`, one per lane, one turn", + "file_type": "document", + "source_file": "SWARMS.md", + "source_location": "L12", + "community": 263, + "norm_label": "2. dispatch: `delegate()`, one per lane, one turn", + "id": "server_swarms_2_dispatch_delegate_one_per_lane_one_turn" + }, + { + "label": "3. Delegate toolsets vary \u2014 verify each lane", + "file_type": "document", + "source_file": "SWARMS.md", + "source_location": "L20", + "community": 263, + "norm_label": "3. delegate toolsets vary \u2014 verify each lane", + "id": "server_swarms_3_delegate_toolsets_vary_verify_each_lane" + }, + { + "label": "4. Trust nothing \u2014 verify everything", + "file_type": "document", + "source_file": "SWARMS.md", + "source_location": "L26", + "community": 263, + "norm_label": "4. trust nothing \u2014 verify everything", + "id": "server_swarms_4_trust_nothing_verify_everything" + }, + { + "label": "5. Windows PowerShell survival", + "file_type": "document", + "source_file": "SWARMS.md", + "source_location": "L33", + "community": 263, + "norm_label": "5. windows powershell survival", + "id": "server_swarms_5_windows_powershell_survival" + }, + { + "label": "6. Finish per lane, not per swarm", + "file_type": "document", + "source_file": "SWARMS.md", + "source_location": "L39", + "community": 263, + "norm_label": "6. finish per lane, not per swarm", + "id": "server_swarms_6_finish_per_lane_not_per_swarm" + }, + { + "label": "7. Standing bans (this repo)", + "file_type": "document", + "source_file": "SWARMS.md", + "source_location": "L45", + "community": 263, + "norm_label": "7. standing bans (this repo)", + "id": "server_swarms_7_standing_bans_this_repo" + }, + { + "label": "prometheus.md", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L1", + "community": 156, + "norm_label": "prometheus.md", + "id": "docs_prometheus_md" + }, + { + "label": "Prometheus", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L1", + "community": 156, + "norm_label": "prometheus", + "id": "docs_prometheus_prometheus" + }, + { + "label": "Usage", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L9", + "community": 156, + "norm_label": "usage", + "id": "docs_prometheus_usage" + }, + { + "label": "code:env (#)", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L11", + "community": 156, + "norm_label": "code:env (#)", + "id": "docs_prometheus_codeblock_1" + }, + { + "label": "code:bash (python __init__.py)", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L51", + "community": 156, + "norm_label": "code:bash (python __init__.py)", + "id": "docs_prometheus_codeblock_2" + }, + { + "label": "Workflow", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L55", + "community": 156, + "norm_label": "workflow", + "id": "docs_prometheus_workflow" + }, + { + "label": "code:mermaid (graph TD)", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L57", + "community": 156, + "norm_label": "code:mermaid (graph td)", + "id": "docs_prometheus_codeblock_3" + }, + { + "label": "API Endpoints", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L67", + "community": 156, + "norm_label": "api endpoints", + "id": "docs_prometheus_api_endpoints" + }, + { + "label": "License", + "file_type": "document", + "source_file": "docs/prometheus.md", + "source_location": "L74", + "community": 156, + "norm_label": "license", + "id": "docs_prometheus_license" + }, + { + "label": "PONYTAIL.md", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L1", + "community": 509, + "norm_label": "ponytail.md", + "id": "ponytail_md" + }, + { + "label": "PONYTAIL.md \u2014 proposed cuts, NOT applied. Approve before any edit.", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L1", + "community": 509, + "norm_label": "ponytail.md \u2014 proposed cuts, not applied. approve before any edit.", + "id": "server_ponytail_ponytail_md_proposed_cuts_not_applied_approve_before_any_edit" + }, + { + "label": "Proposed (awaiting approval)", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L6", + "community": 509, + "norm_label": "proposed (awaiting approval)", + "id": "server_ponytail_proposed_awaiting_approval" + }, + { + "label": "Disputed (already litigated \u2014 needs your ruling to proceed)", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L64", + "community": 509, + "norm_label": "disputed (already litigated \u2014 needs your ruling to proceed)", + "id": "server_ponytail_disputed_already_litigated_needs_your_ruling_to_proceed" + }, + { + "label": "Held out (your ignore rules \u2014 not proposed)", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L72", + "community": 509, + "norm_label": "held out (your ignore rules \u2014 not proposed)", + "id": "server_ponytail_held_out_your_ignore_rules_not_proposed" + }, + { + "label": "Refused", + "file_type": "document", + "source_file": "PONYTAIL.md", + "source_location": "L78", + "community": 509, + "norm_label": "refused", + "id": "server_ponytail_refused" + }, + { + "label": "getDeviceName()", + "file_type": "code", + "source_file": "main/app/authentication/session.py", + "source_location": "L14", + "community": 149, + "norm_label": "getdevicename()", + "id": "authentication_session_getdevicename" + }, + { + "label": "walk()", + "file_type": "code", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L46", + "community": 194, + "norm_label": "walk()", + "id": "stocks_api_compress_walk" + }, + { + "label": "toColumnar()", + "file_type": "code", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L75", + "community": 194, + "norm_label": "tocolumnar()", + "id": "stocks_api_compress_tocolumnar" + }, + { + "label": "fixHeaders()", + "file_type": "code", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L84", + "community": 194, + "norm_label": "fixheaders()", + "id": "stocks_api_compress_fixheaders" + }, + { + "label": "StocksQueryManager", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L54", + "community": 63, + "norm_label": "stocksquerymanager", + "id": "stocks_api_query_stocksquerymanager" + }, + { + "label": ".__init__()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L55", + "community": 63, + "norm_label": ".__init__()", + "id": "stocks_api_query_stocksquerymanager_init" + }, + { + "label": ".baseFrame()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L58", + "community": 63, + "norm_label": ".baseframe()", + "id": "stocks_api_query_stocksquerymanager_baseframe" + }, + { + "label": ".finalize()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L69", + "community": 63, + "norm_label": ".finalize()", + "id": "stocks_api_query_stocksquerymanager_finalize" + }, + { + "label": ".deserializeJsonColumns()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L109", + "community": 63, + "norm_label": ".deserializejsoncolumns()", + "id": "stocks_api_query_stocksquerymanager_deserializejsoncolumns" + }, + { + "label": ".filterBySearchTerms()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L136", + "community": 63, + "norm_label": ".filterbysearchterms()", + "id": "stocks_api_query_stocksquerymanager_filterbysearchterms" + }, + { + "label": ".queryHistorical()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L153", + "community": 63, + "norm_label": ".queryhistorical()", + "id": "stocks_api_query_stocksquerymanager_queryhistorical" + }, + { + "label": ".queryFundamental()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L220", + "community": 63, + "norm_label": ".queryfundamental()", + "id": "stocks_api_query_stocksquerymanager_queryfundamental" + }, + { + "label": ".queryCotations()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L284", + "community": 63, + "norm_label": ".querycotations()", + "id": "stocks_api_query_stocksquerymanager_querycotations" + }, + { + "label": ".queryLiveCotation()", + "file_type": "code", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L331", + "community": 63, + "norm_label": ".querylivecotation()", + "id": "stocks_api_query_stocksquerymanager_querylivecotation" + }, + { + "label": "getHistoricalFields()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L89", + "community": 80, + "norm_label": "gethistoricalfields()", + "id": "prometheus_compact_gethistoricalfields" + }, + { + "label": "getFundamentalColumns()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L93", + "community": 80, + "norm_label": "getfundamentalcolumns()", + "id": "prometheus_compact_getfundamentalcolumns" + }, + { + "label": "invalidateFieldData()", + "file_type": "code", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L97", + "community": 80, + "norm_label": "invalidatefielddata()", + "id": "prometheus_compact_invalidatefielddata" + }, + { + "label": "matrixKey()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L31", + "community": 53, + "norm_label": "matrixkey()", + "id": "prometheus_memory_matrixkey" + }, + { + "label": "matrixUserTag()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L38", + "community": 53, + "norm_label": "matrixusertag()", + "id": "prometheus_memory_matrixusertag" + }, + { + "label": "countTokensCached()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L450", + "community": 80, + "norm_label": "counttokenscached()", + "id": "prometheus_memory_counttokenscached" + }, + { + "label": "sync_cache()", + "file_type": "code", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L13", + "community": 511, + "norm_label": "sync_cache()", + "id": "stocks_api_sync_cache_sync_cache" + }, + { + "label": "write_bytes()", + "file_type": "code", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L194", + "community": 69, + "norm_label": "write_bytes()", + "id": "prometheus_sandbox_write_bytes" + }, + { + "label": "ensureFastmcp()", + "file_type": "code", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L10", + "community": 12, + "norm_label": "ensurefastmcp()", + "id": "prometheus_mcp_ensurefastmcp" + }, + { + "label": "getMatrixAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L43", + "community": 53, + "norm_label": "getmatrixasync()", + "id": "prometheus_memory_getmatrixasync" + }, + { + "label": "invalidateUserAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L55", + "community": 53, + "norm_label": "invalidateuserasync()", + "id": "prometheus_memory_invalidateuserasync" + }, + { + "label": "clearAllAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L59", + "community": 53, + "norm_label": "clearallasync()", + "id": "prometheus_memory_clearallasync" + }, + { + "label": "upsertMemoryAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L244", + "community": 53, + "norm_label": "upsertmemoryasync()", + "id": "prometheus_memory_upsertmemoryasync" + }, + { + "label": "searchAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L333", + "community": 13, + "norm_label": "searchasync()", + "id": "prometheus_memory_searchasync" + }, + { + "label": "deleteMemoryAsync()", + "file_type": "code", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L483", + "community": 53, + "norm_label": "deletememoryasync()", + "id": "prometheus_memory_deletememoryasync" + }, + { + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L20", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_20" + }, + { + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L50", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_50" + }, + { + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L91", + "community": 487, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_91" + }, + { + "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L112", + "community": 208, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "prometheus_tools_rationale_112" + }, + { + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L126", + "community": 529, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "prometheus_tools_rationale_126" + }, + { + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L142", + "community": 523, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_142" + }, + { + "label": "Get a download link for a workspace file to share with the user. Use this", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L155", + "community": 529, + "norm_label": "get a download link for a workspace file to share with the user. use this", + "id": "prometheus_tools_rationale_155" + }, + { + "label": "Write-Fix()", + "file_type": "code", + "source_file": "ci.ps1", + "source_location": "L48", + "community": 203, + "norm_label": "write-fix()", + "id": "server_ci_write_fix" + }, + { + "label": "saveMessage()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L52", + "community": 125, + "norm_label": "savemessage()", + "id": "prometheus_chat_savemessage" + }, + { + "label": "saveLoopEvent()", + "file_type": "code", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L76", + "community": 125, + "norm_label": "saveloopevent()", + "id": "prometheus_chat_saveloopevent" + }, + { + "label": "Search user's saved memories, preferences, and past analysis context. Use", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L19", + "community": 152, + "norm_label": "search user's saved memories, preferences, and past analysis context. use", + "id": "prometheus_tools_rationale_19" + }, + { + "label": "Store a memory about the user's preferences, analysis results, or feedback.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L49", + "community": 126, + "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", + "id": "prometheus_tools_rationale_49" + }, + { + "label": "Execute Python code in an isolated sandbox. Use for quantitative analysis,", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L90", + "community": 487, + "norm_label": "execute python code in an isolated sandbox. use for quantitative analysis,", + "id": "prometheus_tools_rationale_90" + }, + { + "label": "Read a file from the workspace. Args: path: Path to the file (e.", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L111", + "community": 208, + "norm_label": "read a file from the workspace. args: path: path to the file (e.", + "id": "prometheus_tools_rationale_111" + }, + { + "label": "Write a file to the workspace. Use this to save data files (CSV, JSON, scri", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L125", + "community": 529, + "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", + "id": "prometheus_tools_rationale_125" + }, + { + "label": "List files in the workspace directory. Args: path: Directory pat", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L141", + "community": 525, + "norm_label": "list files in the workspace directory. args: path: directory pat", + "id": "prometheus_tools_rationale_141" + }, + { + "label": "Get a download link for a workspace file to share with the user. Use this", + "file_type": "rationale", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L154", + "community": 523, + "norm_label": "get a download link for a workspace file to share with the user. use this", + "id": "prometheus_tools_rationale_154" + }, + { + "label": "hashKey()", + "file_type": "code", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L17", + "community": 26, + "norm_label": "hashkey()", + "id": "stocks_api_key_hashkey" + }, + { + "label": "JSONBytesResponse", + "file_type": "code", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L23", + "community": 169, + "norm_label": "jsonbytesresponse", + "id": "controller_stocksapi_controller_jsonbytesresponse" + }, + { + "label": "FastAPIResponse", + "file_type": "code", + "source_file": "", + "source_location": "", + "community": 169, + "norm_label": "fastapiresponse", + "id": "fastapiresponse" + }, + { + "label": ".render()", + "file_type": "code", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L26", + "community": 169, + "norm_label": ".render()", + "id": "controller_stocksapi_controller_jsonbytesresponse_render" + }, + { + "label": "Discover available field names before querying /historical or /fundamental.", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L47", + "community": 54, + "norm_label": "discover available field names before querying /historical or /fundamental.", + "id": "controller_stocksapi_controller_rationale_47" + }, + { + "label": "Get year-based historical financial data for Brazilian B3 stocks. Returns", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L103", + "community": 197, + "norm_label": "get year-based historical financial data for brazilian b3 stocks. returns", + "id": "controller_stocksapi_controller_rationale_103" + }, + { + "label": "Get point-in-time fundamental/valuation data for Brazilian B3 stocks. Ret", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L168", + "community": 157, + "norm_label": "get point-in-time fundamental/valuation data for brazilian b3 stocks. ret", + "id": "controller_stocksapi_controller_rationale_168" + }, + { + "label": "Get 10-year daily price history (cotation) for Brazilian B3 stocks. Retur", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L236", + "community": 169, + "norm_label": "get 10-year daily price history (cotation) for brazilian b3 stocks. retur", + "id": "controller_stocksapi_controller_rationale_236" + }, + { + "label": "Get real-time price quotation for a single Brazilian B3 stock. Returns th", + "file_type": "rationale", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L290", + "community": 81, + "norm_label": "get real-time price quotation for a single brazilian b3 stock. returns th", + "id": "controller_stocksapi_controller_rationale_290" + }, + { + "label": "Load historical/fundamental field names via STOCKS_API /fields endpoint, caching", + "file_type": "rationale", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L97", + "community": 80, + "norm_label": "load historical/fundamental field names via stocks_api /fields endpoint, caching", + "id": "prometheus_compact_rationale_97" + }, + { + "label": "matrix_cache.py", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L1", + "community": 526, + "norm_label": "matrix_cache.py", + "id": "main_app_prometheus_matrix_cache_py" + }, + { + "label": "buildKey()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L21", + "community": 526, + "norm_label": "buildkey()", + "id": "prometheus_matrix_cache_buildkey" + }, + { + "label": "runAwait()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L28", + "community": 526, + "norm_label": "runawait()", + "id": "prometheus_matrix_cache_runawait" + }, + { + "label": "getMatrix()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L32", + "community": 526, + "norm_label": "getmatrix()", + "id": "prometheus_matrix_cache_getmatrix" + }, + { + "label": "invalidateUser()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L44", + "community": 526, + "norm_label": "invalidateuser()", + "id": "prometheus_matrix_cache_invalidateuser" + }, + { + "label": "clearAll()", + "file_type": "code", + "source_file": "main/app/prometheus/matrix_cache.py", + "source_location": "L54", + "community": 526, + "norm_label": "clearall()", + "id": "prometheus_matrix_cache_clearall" + }, + { + "label": "bench_memory_vector.py", + "file_type": "code", + "source_file": "bench/bench_memory_vector.py", + "source_location": "L1", + "community": 13, + "norm_label": "bench_memory_vector.py", + "id": "bench_bench_memory_vector_py" + }, + { + "label": "benchOnce()", + "file_type": "code", + "source_file": "bench/bench_memory_vector.py", + "source_location": "L14", + "community": 13, + "norm_label": "benchonce()", + "id": "bench_bench_memory_vector_benchonce" + }, + { + "label": "main()", + "file_type": "code", + "source_file": "bench/bench_memory_vector.py", + "source_location": "L41", + "community": 13, + "norm_label": "main()", + "id": "bench_bench_memory_vector_main" + }, + { + "label": "20260912T190329Z-baseline.json", + "file_type": "code", + "source_file": "bench/results/20260912T190329Z-baseline.json", + "source_location": "L1", + "community": 557, + "norm_label": "20260912t190329z-baseline.json", + "id": "bench_results_20260912t190329z_baseline_json" + }, + { + "label": "label", + "file_type": "code", + "source_file": "bench/results/20260912T190329Z-baseline.json", + "source_location": "L2", + "community": 557, + "norm_label": "label", + "id": "results_20260912t190329z_baseline_label" + }, + { + "label": "at", + "file_type": "code", + "source_file": "bench/results/20260912T190329Z-baseline.json", + "source_location": "L3", + "community": 557, + "norm_label": "at", + "id": "results_20260912t190329z_baseline_at" + }, + { + "label": "rows", + "file_type": "code", + "source_file": "bench/results/20260912T190329Z-baseline.json", + "source_location": "L4", + "community": 557, + "norm_label": "rows", + "id": "results_20260912t190329z_baseline_rows" + }, + { + "label": "20260912T192904Z-baseline.json", + "file_type": "code", + "source_file": "bench/results/20260912T192904Z-baseline.json", + "source_location": "L1", + "community": 542, + "norm_label": "20260912t192904z-baseline.json", + "id": "bench_results_20260912t192904z_baseline_json" + }, + { + "label": "label", + "file_type": "code", + "source_file": "bench/results/20260912T192904Z-baseline.json", + "source_location": "L2", + "community": 542, + "norm_label": "label", + "id": "results_20260912t192904z_baseline_label" + }, + { + "label": "at", + "file_type": "code", + "source_file": "bench/results/20260912T192904Z-baseline.json", + "source_location": "L3", + "community": 542, + "norm_label": "at", + "id": "results_20260912t192904z_baseline_at" + }, + { + "label": "rows", + "file_type": "code", + "source_file": "bench/results/20260912T192904Z-baseline.json", + "source_location": "L4", + "community": 542, + "norm_label": "rows", + "id": "results_20260912t192904z_baseline_rows" + }, + { + "label": "backfill_normalize_embeddings.py", + "file_type": "code", + "source_file": "scripts/backfill_normalize_embeddings.py", + "source_location": "L1", + "community": 526, + "norm_label": "backfill_normalize_embeddings.py", + "id": "scripts_backfill_normalize_embeddings_py" + }, + { + "label": "main()", + "file_type": "code", + "source_file": "scripts/backfill_normalize_embeddings.py", + "source_location": "L11", + "community": 526, + "norm_label": "main()", + "id": "scripts_backfill_normalize_embeddings_main" + }, + { + "label": "One-shot: renormalize stored embeddings to unit norm. Usage: python scripts/back", + "file_type": "rationale", + "source_file": "scripts/backfill_normalize_embeddings.py", + "source_location": "L1", + "community": 526, + "norm_label": "one-shot: renormalize stored embeddings to unit norm. usage: python scripts/back", + "id": "scripts_backfill_normalize_embeddings_rationale_1" + }, + { + "label": "vector-scaleup-runbook.md", + "file_type": "document", + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L1", + "community": 492, + "norm_label": "vector-scaleup-runbook.md", + "id": "docs_vector_scaleup_runbook_md" + }, + { + "label": "Vector Scale-Up Runbook", + "file_type": "document", + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L1", + "community": 492, + "norm_label": "vector scale-up runbook", + "id": "docs_vector_scaleup_runbook_vector_scale_up_runbook" + }, + { + "label": "Baseline (lane 4)", + "file_type": "document", + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L6", + "community": 492, + "norm_label": "baseline (lane 4)", + "id": "docs_vector_scaleup_runbook_baseline_lane_4" + }, + { + "label": "Move triggers (any one fires the migration)", + "file_type": "document", + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L12", + "community": 492, + "norm_label": "move triggers (any one fires the migration)", + "id": "docs_vector_scaleup_runbook_move_triggers_any_one_fires_the_migration" + }, + { + "label": "Options", + "file_type": "document", + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L18", + "community": 492, + "norm_label": "options", + "id": "docs_vector_scaleup_runbook_options" + }, + { + "label": "Export recipe", + "file_type": "document", + "source_file": "docs/vector-scaleup-runbook.md", + "source_location": "L26", + "community": 492, + "norm_label": "export recipe", + "id": "docs_vector_scaleup_runbook_export_recipe" + }, + { + "label": "2026-09-12-lane1-vector-normalize.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L1", + "community": 499, + "norm_label": "2026-09-12-lane1-vector-normalize.md", + "id": "docs_superpowers_plans_2026_09_12_lane1_vector_normalize_md" + }, + { + "label": "Lane 1: Normalized Embeddings + Dot-Product Search Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L1", + "community": 499, + "norm_label": "lane 1: normalized embeddings + dot-product search implementation plan", + "id": "plans_2026_09_12_lane1_vector_normalize_lane_1_normalized_embeddings_dot_product_search_implementation_plan" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L15", + "community": 499, + "norm_label": "global constraints", + "id": "plans_2026_09_12_lane1_vector_normalize_global_constraints" + }, + { + "label": "Task 1: Normalize on encode + row-normalize helper", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L25", + "community": 499, + "norm_label": "task 1: normalize on encode + row-normalize helper", + "id": "plans_2026_09_12_lane1_vector_normalize_task_1_normalize_on_encode_row_normalize_helper" + }, + { + "label": "code:python (import numpy as np)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L37", + "community": 499, + "norm_label": "code:python (import numpy as np)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_1" + }, + { + "label": "code:python (def normalizeRows(matrix: np.ndarray) -> np.ndarray:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L66", + "community": 499, + "norm_label": "code:python (def normalizerows(matrix: np.ndarray) -> np.ndarray:)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_2" + }, + { + "label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L93", + "community": 499, + "norm_label": "code:bash (git add main/app/prometheus/vector.py tests/test_vector_norm)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_3" + }, + { + "label": "Task 2: Backfill existing rows to unit norm", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L98", + "community": 499, + "norm_label": "task 2: backfill existing rows to unit norm", + "id": "plans_2026_09_12_lane1_vector_normalize_task_2_backfill_existing_rows_to_unit_norm" + }, + { + "label": "code:python (\"\"\"One-shot: renormalize stored embeddings to unit norm. Usa)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L110", + "community": 499, + "norm_label": "code:python (\"\"\"one-shot: renormalize stored embeddings to unit norm. usa)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_4" + }, + { + "label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane1-vector-normalize.md", + "source_location": "L159", + "community": 499, + "norm_label": "code:bash (git add scripts/backfill_normalize_embeddings.py)", + "id": "plans_2026_09_12_lane1_vector_normalize_codeblock_5" + }, + { + "label": "2026-09-12-lane2-memory-query-path.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L1", + "community": 214, + "norm_label": "2026-09-12-lane2-memory-query-path.md", + "id": "docs_superpowers_plans_2026_09_12_lane2_memory_query_path_md" + }, + { + "label": "Lane 2: Memory Query-Path Fix Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L1", + "community": 214, + "norm_label": "lane 2: memory query-path fix implementation plan", + "id": "plans_2026_09_12_lane2_memory_query_path_lane_2_memory_query_path_fix_implementation_plan" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L16", + "community": 214, + "norm_label": "global constraints", + "id": "plans_2026_09_12_lane2_memory_query_path_global_constraints" + }, + { + "label": "Task 1: Two-phase candidate load with deferred BLOBs", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L27", + "community": 214, + "norm_label": "task 1: two-phase candidate load with deferred blobs", + "id": "plans_2026_09_12_lane2_memory_query_path_task_1_two_phase_candidate_load_with_deferred_blobs" + }, + { + "label": "code:python (def test_search_defersEmbeddingBlob(db):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L40", + "community": 214, + "norm_label": "code:python (def test_search_defersembeddingblob(db):)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_1" + }, + { + "label": "code:python (from contextlib import contextmanager)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L52", + "community": 214, + "norm_label": "code:python (from contextlib import contextmanager)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_2" + }, + { + "label": "code:python (from sqlalchemy.orm import defer)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L82", + "community": 214, + "norm_label": "code:python (from sqlalchemy.orm import defer)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_3" + }, + { + "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L111", + "community": 214, + "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_4" + }, + { + "label": "Task 2: Fuse vector, FULLTEXT and recency scores", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L116", + "community": 214, + "norm_label": "task 2: fuse vector, fulltext and recency scores", + "id": "plans_2026_09_12_lane2_memory_query_path_task_2_fuse_vector_fulltext_and_recency_scores" + }, + { + "label": "code:python (def test_search_fusesFulltextOverVectorOnly(db):)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L128", + "community": 214, + "norm_label": "code:python (def test_search_fusesfulltextovervectoronly(db):)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_5" + }, + { + "label": "code:python (def minMax(values: list[float]) -> list[float]:)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L143", + "community": 214, + "norm_label": "code:python (def minmax(values: list[float]) -> list[float]:)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_6" + }, + { + "label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane2-memory-query-path.md", + "source_location": "L173", + "community": 214, + "norm_label": "code:bash (git add main/app/prometheus/memory.py tests/test_memory_sear)", + "id": "plans_2026_09_12_lane2_memory_query_path_codeblock_7" + }, + { + "label": "2026-09-12-lane4-vector-bench.md", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L1", + "community": 540, + "norm_label": "2026-09-12-lane4-vector-bench.md", + "id": "docs_superpowers_plans_2026_09_12_lane4_vector_bench_md" + }, + { + "label": "Lane 4: Before/After Bench Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L1", + "community": 540, + "norm_label": "lane 4: before/after bench implementation plan", + "id": "plans_2026_09_12_lane4_vector_bench_lane_4_before_after_bench_implementation_plan" + }, + { + "label": "Global Constraints", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L16", + "community": 540, + "norm_label": "global constraints", + "id": "plans_2026_09_12_lane4_vector_bench_global_constraints" + }, + { + "label": "Task 1: Bench script with synthetic scale sweep", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L25", + "community": 540, + "norm_label": "task 1: bench script with synthetic scale sweep", + "id": "plans_2026_09_12_lane4_vector_bench_task_1_bench_script_with_synthetic_scale_sweep" + }, + { + "label": "code:python (import argparse)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L38", + "community": 540, + "norm_label": "code:python (import argparse)", + "id": "plans_2026_09_12_lane4_vector_bench_codeblock_1" + }, + { + "label": "code:bash (git add bench/bench_memory_vector.py)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", + "source_location": "L100", + "community": 540, + "norm_label": "code:bash (git add bench/bench_memory_vector.py)", + "id": "plans_2026_09_12_lane4_vector_bench_codeblock_2" + }, + { + "label": "Task 2: Record baseline and post-lane numbers", "file_type": "document", "source_file": "docs/superpowers/plans/2026-09-12-lane4-vector-bench.md", "source_location": "L105", @@ -11441,7 +13151,7 @@ "file_type": "rationale", "source_file": "main/service/scraper_service.py", "source_location": "L23", - "community": 563, + "community": 562, "norm_label": "p5: register the scraper cron jobs on the shared scheduler. kept in this", "id": "service_scraper_service_rationale_23" }, @@ -12845,7 +14555,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L54", - "community": 208, + "community": 126, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_54" }, @@ -12863,7 +14573,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L113", - "community": 525, + "community": 208, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_113" }, @@ -12872,7 +14582,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L127", - "community": 523, + "community": 529, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", "id": "prometheus_tools_rationale_127" }, @@ -12881,7 +14591,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L143", - "community": 523, + "community": 529, "norm_label": "list files in the workspace directory. args: path: directory pat", "id": "prometheus_tools_rationale_143" }, @@ -12890,7 +14600,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L156", - "community": 523, + "community": 525, "norm_label": "get a download link for a workspace file to share with the user. use this", "id": "prometheus_tools_rationale_156" }, @@ -13115,7 +14825,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L122", - "community": 523, + "community": 529, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", "id": "prometheus_tools_rationale_122" }, @@ -13124,7 +14834,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L135", - "community": 523, + "community": 208, "norm_label": "list files in the workspace directory. args: path: directory pat", "id": "prometheus_tools_rationale_135" }, @@ -13403,7 +15113,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/key.py", "source_location": "L61", - "community": 26, + "community": 500, "norm_label": "createkey()", "id": "stocks_api_key_createkey" }, @@ -13421,7 +15131,7 @@ "file_type": "rationale", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L24", - "community": 197, + "community": 169, "norm_label": "sends pre-serialized json bytes without re-encoding (cache-friendly).", "id": "controller_stocksapi_controller_rationale_24" }, @@ -13475,7 +15185,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L1", - "community": 63, + "community": 215, "norm_label": "response_cache.py", "id": "main_app_stocks_api_response_cache_py" }, @@ -13484,7 +15194,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L19", - "community": 63, + "community": 215, "norm_label": "responsecache", "id": "stocks_api_response_cache_responsecache" }, @@ -13493,7 +15203,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L20", - "community": 63, + "community": 215, "norm_label": ".__init__()", "id": "stocks_api_response_cache_responsecache_init" }, @@ -13502,7 +15212,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L29", - "community": 63, + "community": 215, "norm_label": ".makekey()", "id": "stocks_api_response_cache_responsecache_makekey" }, @@ -13511,7 +15221,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L34", - "community": 63, + "community": 215, "norm_label": ".get()", "id": "stocks_api_response_cache_responsecache_get" }, @@ -13520,7 +15230,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/response_cache.py", "source_location": "L51", - "community": 63, + "community": 215, "norm_label": ".set()", "id": "stocks_api_response_cache_responsecache_set" }, @@ -13565,7 +15275,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L323", - "community": 197, + "community": 500, "norm_label": "generatekey()", "id": "controller_stocksapi_controller_generatekey" }, @@ -14312,7 +16022,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L38", - "community": 194, + "community": 12, "norm_label": ".__new__()", "id": "prometheus_mcp_mcpclientpool_new" }, @@ -14366,7 +16076,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L1", - "community": 256, + "community": 574, "norm_label": "compressor.py", "id": "main_app_stocks_api_compressor_py" }, @@ -14375,7 +16085,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L25", - "community": 256, + "community": 574, "norm_label": "getabbr()", "id": "stocks_api_compressor_getabbr" }, @@ -14384,7 +16094,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L36", - "community": 256, + "community": 574, "norm_label": "getnest()", "id": "stocks_api_compressor_getnest" }, @@ -14393,7 +16103,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L46", - "community": 82, + "community": 574, "norm_label": "rebuildabbrevs()", "id": "stocks_api_compressor_rebuildabbrevs" }, @@ -14402,7 +16112,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L51", - "community": 256, + "community": 574, "norm_label": "walk()", "id": "stocks_api_compressor_walk" }, @@ -14411,7 +16121,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L59", - "community": 256, + "community": 574, "norm_label": "compactvalue()", "id": "stocks_api_compressor_compactvalue" }, @@ -14420,7 +16130,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L80", - "community": 256, + "community": 574, "norm_label": "tocolumnar()", "id": "stocks_api_compressor_tocolumnar" }, @@ -14429,7 +16139,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L89", - "community": 256, + "community": 574, "norm_label": "fixheaders()", "id": "stocks_api_compressor_fixheaders" }, @@ -14438,7 +16148,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L98", - "community": 256, + "community": 574, "norm_label": "compactrow()", "id": "stocks_api_compressor_compactrow" }, @@ -14447,7 +16157,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L126", - "community": 256, + "community": 574, "norm_label": "compactcotations()", "id": "stocks_api_compressor_compactcotations" }, @@ -14456,7 +16166,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/compressor.py", "source_location": "L160", - "community": 256, + "community": 574, "norm_label": "compressresponse()", "id": "stocks_api_compressor_compressresponse" }, @@ -15392,7 +17102,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L89", - "community": 8, + "community": 162, "norm_label": "get_state()", "id": "prometheus_tools_get_state" }, @@ -15428,7 +17138,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L144", - "community": 523, + "community": 208, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_144" }, @@ -15437,7 +17147,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L168", - "community": 523, + "community": 525, "norm_label": "list files in the workspace directory. args: path: directory pat", "id": "prometheus_tools_rationale_168" }, @@ -15446,7 +17156,7 @@ "file_type": "code", "source_file": "main/app/prometheus/mcp.py", "source_location": "L16", - "community": 194, + "community": 12, "norm_label": "_parseservers()", "id": "prometheus_mcp_parseservers" }, @@ -16805,7 +18515,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L44", - "community": 208, + "community": 126, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_44" }, @@ -16814,7 +18524,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L81", - "community": 8, + "community": 162, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_81" }, @@ -16841,7 +18551,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L146", - "community": 523, + "community": 529, "norm_label": "write a file to the workspace. use this to save data files (csv, json, scri", "id": "prometheus_tools_rationale_146" }, @@ -16850,7 +18560,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L159", - "community": 523, + "community": 525, "norm_label": "list files in the workspace directory. args: path: directory pat", "id": "prometheus_tools_rationale_159" }, @@ -17543,7 +19253,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L27", - "community": 73, + "community": 215, "norm_label": "_parse_date()", "id": "stocks_api_util_parse_date" }, @@ -17759,7 +19469,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L39", - "community": 73, + "community": 215, "norm_label": "parsedatestart()", "id": "stocks_api_util_parsedatestart" }, @@ -17768,7 +19478,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/util.py", "source_location": "L43", - "community": 73, + "community": 215, "norm_label": "parsedateend()", "id": "stocks_api_util_parsedateend" }, @@ -23087,7 +24797,7 @@ "file_type": "code", "source_file": "tests/conftest.py", "source_location": "L81", - "community": 539, + "community": 105, "norm_label": "stocks_http_client()", "id": "tests_conftest_stocks_http_client" }, @@ -23096,7 +24806,7 @@ "file_type": "code", "source_file": "tests/conftest.py", "source_location": "L106", - "community": 539, + "community": 105, "norm_label": "client()", "id": "tests_conftest_client" }, @@ -23123,7 +24833,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L82", - "community": 539, + "community": 105, "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", "id": "tests_conftest_rationale_82" }, @@ -23132,7 +24842,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L107", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_107" }, @@ -23240,7 +24950,7 @@ "file_type": "code", "source_file": "tests/test_agent_state_integration.py", "source_location": "L7", - "community": 474, + "community": 8, "norm_label": "testbuildsystempromptstate", "id": "tests_test_agent_state_integration_testbuildsystempromptstate" }, @@ -23249,7 +24959,7 @@ "file_type": "code", "source_file": "tests/test_agent_state_integration.py", "source_location": "L8", - "community": 474, + "community": 8, "norm_label": ".test_build_system_prompt_no_state()", "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_no_state" }, @@ -23258,7 +24968,7 @@ "file_type": "code", "source_file": "tests/test_agent_state_integration.py", "source_location": "L13", - "community": 474, + "community": 8, "norm_label": ".test_build_system_prompt_with_state()", "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_with_state" }, @@ -23267,7 +24977,7 @@ "file_type": "code", "source_file": "tests/test_agent_state_integration.py", "source_location": "L21", - "community": 474, + "community": 8, "norm_label": ".test_build_system_prompt_empty_state()", "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_empty_state" }, @@ -23276,7 +24986,7 @@ "file_type": "code", "source_file": "tests/test_agent_state_integration.py", "source_location": "L27", - "community": 474, + "community": 8, "norm_label": ".test_build_system_prompt_state_after_memories()", "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_state_after_memories" }, @@ -23285,7 +24995,7 @@ "file_type": "code", "source_file": "tests/test_agent_state_integration.py", "source_location": "L37", - "community": 474, + "community": 8, "norm_label": ".test_build_system_prompt_multiple_state_entries()", "id": "tests_test_agent_state_integration_testbuildsystempromptstate_test_build_system_prompt_multiple_state_entries" }, @@ -23366,7 +25076,7 @@ "file_type": "rationale", "source_file": "tests/test_agent_state_integration.py", "source_location": "L9", - "community": 474, + "community": 8, "norm_label": "system prompt should work without state parameter.", "id": "tests_test_agent_state_integration_rationale_9" }, @@ -23375,7 +25085,7 @@ "file_type": "rationale", "source_file": "tests/test_agent_state_integration.py", "source_location": "L14", - "community": 474, + "community": 8, "norm_label": "system prompt should include state context when provided.", "id": "tests_test_agent_state_integration_rationale_14" }, @@ -23384,7 +25094,7 @@ "file_type": "rationale", "source_file": "tests/test_agent_state_integration.py", "source_location": "L22", - "community": 474, + "community": 8, "norm_label": "system prompt should not include state section when empty.", "id": "tests_test_agent_state_integration_rationale_22" }, @@ -23393,7 +25103,7 @@ "file_type": "rationale", "source_file": "tests/test_agent_state_integration.py", "source_location": "L28", - "community": 474, + "community": 8, "norm_label": "state section should appear after memories section.", "id": "tests_test_agent_state_integration_rationale_28" }, @@ -23402,7 +25112,7 @@ "file_type": "rationale", "source_file": "tests/test_agent_state_integration.py", "source_location": "L38", - "community": 474, + "community": 8, "norm_label": "all state entries should appear in the prompt.", "id": "tests_test_agent_state_integration_rationale_38" }, @@ -23456,7 +25166,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L1", - "community": 546, + "community": 26, "norm_label": "test_api_key_quota_atomic.py", "id": "tests_test_api_key_quota_atomic_py" }, @@ -23465,7 +25175,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L18", - "community": 546, + "community": 26, "norm_label": "samplekeydata()", "id": "tests_test_api_key_quota_atomic_samplekeydata" }, @@ -23528,7 +25238,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L164", - "community": 561, + "community": 26, "norm_label": ".test_multiple_keys_independent_quotas()", "id": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_multiple_keys_independent_quotas" }, @@ -23546,7 +25256,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L220", - "community": 535, + "community": 567, "norm_label": "testverifyapikeyintegration", "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration" }, @@ -23555,7 +25265,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L223", - "community": 535, + "community": 567, "norm_label": ".test_verify_api_key_success()", "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" }, @@ -23564,7 +25274,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L238", - "community": 535, + "community": 567, "norm_label": ".test_verify_api_key_quota_exceeded()", "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" }, @@ -23573,7 +25283,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L253", - "community": 535, + "community": 567, "norm_label": ".test_verify_api_key_invalid()", "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_invalid" }, @@ -23582,7 +25292,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L264", - "community": 535, + "community": 567, "norm_label": ".test_verify_api_key_missing()", "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_missing" }, @@ -23591,7 +25301,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L275", - "community": 535, + "community": 567, "norm_label": ".test_verify_api_key_disabled()", "id": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_disabled" }, @@ -23600,7 +25310,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L1", - "community": 546, + "community": 26, "norm_label": "tests for atomic api key quota enforcement (race condition fix). verifies tha", "id": "tests_test_api_key_quota_atomic_rationale_1" }, @@ -23609,7 +25319,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L19", - "community": 546, + "community": 26, "norm_label": "sample api key data for tests.", "id": "tests_test_api_key_quota_atomic_rationale_19" }, @@ -23672,7 +25382,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L165", - "community": 561, + "community": 26, "norm_label": "test that multiple api keys have independent quotas.", "id": "tests_test_api_key_quota_atomic_rationale_165" }, @@ -23690,7 +25400,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L221", - "community": 535, + "community": 567, "norm_label": "integration tests for the verifyapikey function.", "id": "tests_test_api_key_quota_atomic_rationale_221" }, @@ -23699,7 +25409,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L224", - "community": 535, + "community": 567, "norm_label": "test successful api key verification.", "id": "tests_test_api_key_quota_atomic_rationale_224" }, @@ -23708,7 +25418,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L239", - "community": 535, + "community": 567, "norm_label": "test api key verification when quota is exceeded.", "id": "tests_test_api_key_quota_atomic_rationale_239" }, @@ -23717,7 +25427,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L254", - "community": 535, + "community": 567, "norm_label": "test api key verification with invalid key.", "id": "tests_test_api_key_quota_atomic_rationale_254" }, @@ -23726,7 +25436,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L265", - "community": 535, + "community": 567, "norm_label": "test api key verification with missing key.", "id": "tests_test_api_key_quota_atomic_rationale_265" }, @@ -23735,7 +25445,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L276", - "community": 535, + "community": 567, "norm_label": "test that api key system can be disabled.", "id": "tests_test_api_key_quota_atomic_rationale_276" }, @@ -23744,7 +25454,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L1", - "community": 491, + "community": 43, "norm_label": "test_auth_util.py", "id": "tests_test_auth_util_py" }, @@ -23843,7 +25553,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L69", - "community": 491, + "community": 43, "norm_label": "testsessionexpiryconfig", "id": "tests_test_auth_util_testsessionexpiryconfig" }, @@ -23852,7 +25562,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L70", - "community": 491, + "community": 43, "norm_label": ".test_session_expiry_days_is_30()", "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_days_is_30" }, @@ -23861,7 +25571,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L73", - "community": 491, + "community": 43, "norm_label": ".test_session_expiry_hours_calculation()", "id": "tests_test_auth_util_testsessionexpiryconfig_test_session_expiry_hours_calculation" }, @@ -23870,7 +25580,7 @@ "file_type": "code", "source_file": "tests/test_auth_util.py", "source_location": "L78", - "community": 491, + "community": 43, "norm_label": ".test_default_token_expiry_equals_30_days()", "id": "tests_test_auth_util_testsessionexpiryconfig_test_default_token_expiry_equals_30_days" }, @@ -23933,7 +25643,7 @@ "file_type": "code", "source_file": "tests/test_config.py", "source_location": "L1", - "community": 93, + "community": 251, "norm_label": "test_config.py", "id": "tests_test_config_py" }, @@ -23996,7 +25706,7 @@ "file_type": "code", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L8", - "community": 574, + "community": 596, "norm_label": "testcheckmysqlconnection", "id": "tests_test_connectivity_coverage_testcheckmysqlconnection" }, @@ -24086,7 +25796,7 @@ "file_type": "code", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L114", - "community": 573, + "community": 595, "norm_label": "testcheckserviceconnection", "id": "tests_test_connectivity_coverage_testcheckserviceconnection" }, @@ -24176,7 +25886,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L9", - "community": 574, + "community": 596, "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", "id": "tests_test_connectivity_coverage_rationale_9" }, @@ -24185,7 +25895,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L115", - "community": 573, + "community": 595, "norm_label": "checkserviceconnection \u2014 success, not found, errors.", "id": "tests_test_connectivity_coverage_rationale_115" }, @@ -24221,7 +25931,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L57", - "community": 16, + "community": 99, "norm_label": "_make_prometheus_client()", "id": "tests_test_controllers_coverage_make_prometheus_client" }, @@ -24275,7 +25985,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L130", - "community": 498, + "community": 45, "norm_label": "testhealthendpoint", "id": "tests_test_controllers_coverage_testhealthendpoint" }, @@ -24284,7 +25994,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L133", - "community": 498, + "community": 45, "norm_label": ".test_health_returns_ok()", "id": "tests_test_controllers_coverage_testhealthendpoint_test_health_returns_ok" }, @@ -24293,7 +26003,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L146", - "community": 498, + "community": 120, "norm_label": "testregisterendpoint", "id": "tests_test_controllers_coverage_testregisterendpoint" }, @@ -24338,7 +26048,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L215", - "community": 498, + "community": 120, "norm_label": "testloginendpoint", "id": "tests_test_controllers_coverage_testloginendpoint" }, @@ -24365,7 +26075,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L257", - "community": 498, + "community": 120, "norm_label": "testlogoutendpoint", "id": "tests_test_controllers_coverage_testlogoutendpoint" }, @@ -24428,7 +26138,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L344", - "community": 498, + "community": 45, "norm_label": "testgooglelogin", "id": "tests_test_controllers_coverage_testgooglelogin" }, @@ -24455,7 +26165,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L390", - "community": 498, + "community": 120, "norm_label": "testgooglecallback", "id": "tests_test_controllers_coverage_testgooglecallback" }, @@ -24734,7 +26444,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L849", - "community": 16, + "community": 99, "norm_label": "testprometheusgetsessions", "id": "tests_test_controllers_coverage_testprometheusgetsessions" }, @@ -24743,7 +26453,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L852", - "community": 16, + "community": 99, "norm_label": ".test_get_sessions()", "id": "tests_test_controllers_coverage_testprometheusgetsessions_test_get_sessions" }, @@ -24752,7 +26462,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L867", - "community": 16, + "community": 99, "norm_label": "testprometheuscreatesession", "id": "tests_test_controllers_coverage_testprometheuscreatesession" }, @@ -24761,7 +26471,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L870", - "community": 16, + "community": 99, "norm_label": ".test_create_session()", "id": "tests_test_controllers_coverage_testprometheuscreatesession_test_create_session" }, @@ -24806,7 +26516,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L915", - "community": 136, + "community": 104, "norm_label": "testprometheusgethistory", "id": "tests_test_controllers_coverage_testprometheusgethistory" }, @@ -24815,7 +26525,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L918", - "community": 136, + "community": 104, "norm_label": ".test_get_history_found()", "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" }, @@ -24824,7 +26534,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L962", - "community": 136, + "community": 104, "norm_label": ".test_get_history_not_found()", "id": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" }, @@ -24887,7 +26597,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1085", - "community": 104, + "community": 16, "norm_label": ".test_chat_existing_session_not_owner()", "id": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" }, @@ -24995,7 +26705,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1229", - "community": 560, + "community": 563, "norm_label": "testaddroletouser", "id": "tests_test_controllers_coverage_testaddroletouser" }, @@ -25004,7 +26714,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1232", - "community": 560, + "community": 564, "norm_label": ".test_add_role_success()", "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_success" }, @@ -25013,7 +26723,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1249", - "community": 560, + "community": 568, "norm_label": ".test_add_role_already_has_role()", "id": "tests_test_controllers_coverage_testaddroletouser_test_add_role_already_has_role" }, @@ -25058,7 +26768,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1307", - "community": 560, + "community": 569, "norm_label": ".test_get_current_user_session_revoked()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_session_revoked" }, @@ -25067,7 +26777,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1323", - "community": 493, + "community": 546, "norm_label": ".test_get_current_user_not_found()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_not_found" }, @@ -25076,7 +26786,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1340", - "community": 493, + "community": 560, "norm_label": ".test_get_current_user_generic_exception()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_generic_exception" }, @@ -25085,7 +26795,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1357", - "community": 493, + "community": 561, "norm_label": ".test_get_current_user_no_session_id()", "id": "tests_test_controllers_coverage_testgetcurrentuser_test_get_current_user_no_session_id" }, @@ -25094,7 +26804,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1381", - "community": 524, + "community": 45, "norm_label": "testhashpasswordempty", "id": "tests_test_controllers_coverage_testhashpasswordempty" }, @@ -25103,7 +26813,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1384", - "community": 524, + "community": 43, "norm_label": ".test_empty_password_raises()", "id": "tests_test_controllers_coverage_testhashpasswordempty_test_empty_password_raises" }, @@ -25130,7 +26840,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1410", - "community": 544, + "community": 524, "norm_label": ".test_invalid_token()", "id": "tests_test_controllers_coverage_testverifyaccesstoken_test_invalid_token" }, @@ -25139,7 +26849,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1422", - "community": 498, + "community": 114, "norm_label": "testextracttokenpayloadreraise", "id": "tests_test_controllers_coverage_testextracttokenpayloadreraise" }, @@ -25202,7 +26912,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L58", - "community": 16, + "community": 99, "norm_label": "return (client, app) with prometheus router and mocked deps.", "id": "tests_test_controllers_coverage_rationale_58" }, @@ -25229,7 +26939,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L131", - "community": 498, + "community": 45, "norm_label": "covers line 28: get /auth/health.", "id": "tests_test_controllers_coverage_rationale_131" }, @@ -25238,7 +26948,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L147", - "community": 498, + "community": 120, "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", "id": "tests_test_controllers_coverage_rationale_147" }, @@ -25283,7 +26993,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L216", - "community": 498, + "community": 120, "norm_label": "covers lines 87-93, 102: login success and failure paths.", "id": "tests_test_controllers_coverage_rationale_216" }, @@ -25310,7 +27020,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L258", - "community": 498, + "community": 120, "norm_label": "covers lines 107, 109-130, 133: logout token extraction and revocation.", "id": "tests_test_controllers_coverage_rationale_258" }, @@ -25328,7 +27038,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L281", - "community": 498, + "community": 120, "norm_label": "covers lines 111-113: token extracted from authorization bearer header.", "id": "tests_test_controllers_coverage_rationale_281" }, @@ -25373,7 +27083,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L345", - "community": 498, + "community": 45, "norm_label": "covers lines 139, 141-149: googlelogin endpoint.", "id": "tests_test_controllers_coverage_rationale_345" }, @@ -25400,7 +27110,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L391", - "community": 498, + "community": 120, "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", "id": "tests_test_controllers_coverage_rationale_391" }, @@ -25598,7 +27308,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L850", - "community": 16, + "community": 99, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_850" }, @@ -25607,7 +27317,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L868", - "community": 16, + "community": 99, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_868" }, @@ -25652,7 +27362,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L916", - "community": 136, + "community": 104, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_916" }, @@ -25661,7 +27371,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L919", - "community": 136, + "community": 104, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_919" }, @@ -25670,7 +27380,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L963", - "community": 136, + "community": 104, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_963" }, @@ -25733,7 +27443,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1086", - "community": 104, + "community": 16, "norm_label": "covers lines 120-121: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1086" }, @@ -25814,7 +27524,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1230", - "community": 560, + "community": 563, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1230" }, @@ -25823,7 +27533,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1233", - "community": 560, + "community": 564, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1233" }, @@ -25832,7 +27542,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1250", - "community": 560, + "community": 568, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1250" }, @@ -25868,7 +27578,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1308", - "community": 560, + "community": 569, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1308" }, @@ -25877,7 +27587,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1324", - "community": 493, + "community": 546, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1324" }, @@ -25886,7 +27596,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1341", - "community": 493, + "community": 560, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1341" }, @@ -25895,7 +27605,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1358", - "community": 493, + "community": 561, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1358" }, @@ -25904,7 +27614,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1382", - "community": 524, + "community": 45, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1382" }, @@ -25931,7 +27641,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1411", - "community": 544, + "community": 524, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1411" }, @@ -25940,7 +27650,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1423", - "community": 498, + "community": 114, "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", "id": "tests_test_controllers_coverage_rationale_1423" }, @@ -26822,7 +28532,7 @@ "file_type": "code", "source_file": "tests/test_harness_state.py", "source_location": "L1", - "community": 93, + "community": 251, "norm_label": "test_harness_state.py", "id": "tests_test_harness_state_py" }, @@ -27371,7 +29081,7 @@ "file_type": "code", "source_file": "tests/test_logging_config_coverage.py", "source_location": "L103", - "community": 122, + "community": 188, "norm_label": "testsetuplogging", "id": "tests_test_logging_config_coverage_testsetuplogging" }, @@ -27416,7 +29126,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L8", - "community": 67, + "community": 140, "norm_label": "_create_memory()", "id": "tests_test_memory_dedup_create_memory" }, @@ -27425,7 +29135,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L12", - "community": 67, + "community": 140, "norm_label": "_count_memories()", "id": "tests_test_memory_dedup_count_memories" }, @@ -27434,7 +29144,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L20", - "community": 67, + "community": 140, "norm_label": "_get_memory()", "id": "tests_test_memory_dedup_get_memory" }, @@ -27452,7 +29162,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L29", - "community": 67, + "community": 140, "norm_label": ".test_exact_same_key_updates()", "id": "tests_test_memory_dedup_testexactsamekeyupdates_test_exact_same_key_updates" }, @@ -27470,7 +29180,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L37", - "community": 67, + "community": 140, "norm_label": ".test_similar_key_merges()", "id": "tests_test_memory_dedup_testsimilarkeymerges_test_similar_key_merges" }, @@ -27488,7 +29198,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L47", - "community": 67, + "community": 140, "norm_label": ".test_different_keys_no_merge()", "id": "tests_test_memory_dedup_testdifferentkeysnomerge_test_different_keys_no_merge" }, @@ -27506,7 +29216,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L56", - "community": 67, + "community": 140, "norm_label": ".test_merge_boosts_score()", "id": "tests_test_memory_dedup_testmergeboostsscore_test_merge_boosts_score" }, @@ -27524,7 +29234,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L65", - "community": 67, + "community": 140, "norm_label": ".test_merge_increments_access()", "id": "tests_test_memory_dedup_testmergeincrementsaccess_test_merge_increments_access" }, @@ -27542,7 +29252,7 @@ "file_type": "code", "source_file": "tests/test_memory_dedup.py", "source_location": "L74", - "community": 67, + "community": 140, "norm_label": ".test_threshold_boundary()", "id": "tests_test_memory_dedup_testthresholdboundary_test_threshold_boundary" }, @@ -27551,7 +29261,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L38", - "community": 67, + "community": 140, "norm_label": "keys with jaccard > 0.8 should merge.", "id": "tests_test_memory_dedup_rationale_38" }, @@ -27560,7 +29270,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L48", - "community": 67, + "community": 140, "norm_label": "keys with low similarity should not merge.", "id": "tests_test_memory_dedup_rationale_48" }, @@ -27569,7 +29279,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L75", - "community": 67, + "community": 140, "norm_label": "keys with jaccard <= 0.8 should not merge.", "id": "tests_test_memory_dedup_rationale_75" }, @@ -27659,7 +29369,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L84", - "community": 518, + "community": 140, "norm_label": "testarchive", "id": "tests_test_memory_maintenance_testarchive" }, @@ -27668,7 +29378,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L85", - "community": 518, + "community": 544, "norm_label": ".test_dead_memory_archived()", "id": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" }, @@ -27677,7 +29387,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L92", - "community": 518, + "community": 573, "norm_label": ".test_low_score_but_recent_not_archived()", "id": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" }, @@ -27686,7 +29396,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L99", - "community": 518, + "community": 539, "norm_label": ".test_zero_access_but_high_score_not_archived()", "id": "tests_test_memory_maintenance_testarchive_test_zero_access_but_high_score_not_archived" }, @@ -27695,7 +29405,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L106", - "community": 518, + "community": 570, "norm_label": ".test_accessed_memory_not_archived()", "id": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" }, @@ -27704,7 +29414,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L113", - "community": 518, + "community": 570, "norm_label": ".test_already_archived_not_double_archived()", "id": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" }, @@ -27785,7 +29495,7 @@ "file_type": "code", "source_file": "tests/test_memory_maintenance.py", "source_location": "L171", - "community": 488, + "community": 570, "norm_label": ".test_no_memories_does_not_crash()", "id": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" }, @@ -27821,7 +29531,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L86", - "community": 518, + "community": 544, "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", "id": "tests_test_memory_maintenance_rationale_86" }, @@ -27830,7 +29540,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L93", - "community": 518, + "community": 573, "norm_label": "low score but accessed recently \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_93" }, @@ -27839,7 +29549,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L100", - "community": 518, + "community": 539, "norm_label": "zero access but score still above threshold \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_100" }, @@ -27848,7 +29558,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L107", - "community": 518, + "community": 570, "norm_label": "even with low score, if accessed \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_107" }, @@ -27857,7 +29567,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L114", - "community": 518, + "community": 570, "norm_label": "already archived memories are skipped.", "id": "tests_test_memory_maintenance_rationale_114" }, @@ -27911,7 +29621,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L9", - "community": 576, + "community": 140, "norm_label": ".test_basic_user()", "id": "tests_test_memory_manager_testgetmemorylimit_test_basic_user" }, @@ -27929,7 +29639,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L15", - "community": 581, + "community": 140, "norm_label": ".test_admin_user()", "id": "tests_test_memory_manager_testgetmemorylimit_test_admin_user" }, @@ -27965,7 +29675,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L40", - "community": 582, + "community": 140, "norm_label": ".test_unchanged()", "id": "tests_test_memory_manager_testupsertmemory_test_unchanged" }, @@ -27974,7 +29684,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L45", - "community": 583, + "community": 140, "norm_label": ".test_limit_enforcement()", "id": "tests_test_memory_manager_testupsertmemory_test_limit_enforcement" }, @@ -27983,7 +29693,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L59", - "community": 584, + "community": 140, "norm_label": ".test_limit_not_enforced_without_roles()", "id": "tests_test_memory_manager_testupsertmemory_test_limit_not_enforced_without_roles" }, @@ -27992,7 +29702,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L66", - "community": 585, + "community": 140, "norm_label": ".test_upsert_with_embedding()", "id": "tests_test_memory_manager_testupsertmemory_test_upsert_with_embedding" }, @@ -28046,7 +29756,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L102", - "community": 575, + "community": 140, "norm_label": ".test_returns_memories()", "id": "tests_test_memory_manager_testgetusermemories_test_returns_memories" }, @@ -28055,7 +29765,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L109", - "community": 578, + "community": 140, "norm_label": ".test_pagination()", "id": "tests_test_memory_manager_testgetusermemories_test_pagination" }, @@ -28064,7 +29774,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L115", - "community": 579, + "community": 140, "norm_label": ".test_excludes_archived()", "id": "tests_test_memory_manager_testgetusermemories_test_excludes_archived" }, @@ -28082,7 +29792,7 @@ "file_type": "code", "source_file": "tests/test_memory_manager.py", "source_location": "L126", - "community": 580, + "community": 140, "norm_label": ".test_soft_delete()", "id": "tests_test_memory_manager_testdeletememory_test_soft_delete" }, @@ -28136,7 +29846,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L23", - "community": 105, + "community": 584, "norm_label": "testmemorytoolfunctions", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions" }, @@ -28145,7 +29855,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L26", - "community": 105, + "community": 584, "norm_label": ".test_search_memory_has_docstring()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_docstring" }, @@ -28154,7 +29864,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L30", - "community": 105, + "community": 584, "norm_label": ".test_save_memory_has_docstring()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_docstring" }, @@ -28163,7 +29873,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L34", - "community": 105, + "community": 584, "norm_label": ".test_search_memory_signature()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_signature" }, @@ -28172,7 +29882,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L39", - "community": 105, + "community": 584, "norm_label": ".test_save_memory_signature()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_signature" }, @@ -28181,7 +29891,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L46", - "community": 105, + "community": 584, "norm_label": ".test_search_memory_has_type_hints()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_search_memory_has_type_hints" }, @@ -28190,7 +29900,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L50", - "community": 105, + "community": 584, "norm_label": ".test_save_memory_has_type_hints()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_save_memory_has_type_hints" }, @@ -28199,7 +29909,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L54", - "community": 105, + "community": 584, "norm_label": ".test_memory_tools_is_list_of_callables()", "id": "tests_test_memory_tools_wiring_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" }, @@ -28217,7 +29927,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L64", - "community": 572, + "community": 215, "norm_label": "testtoolregistry", "id": "tests_test_memory_tools_wiring_testtoolregistry" }, @@ -28226,7 +29936,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L67", - "community": 572, + "community": 215, "norm_label": ".test_registry_contains_memory_tools()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_contains_memory_tools" }, @@ -28235,7 +29945,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L71", - "community": 572, + "community": 215, "norm_label": ".test_registry_values_are_callable()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_values_are_callable" }, @@ -28244,7 +29954,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L75", - "community": 572, + "community": 215, "norm_label": ".test_registry_matches_tool_names()", "id": "tests_test_memory_tools_wiring_testtoolregistry_test_registry_matches_tool_names" }, @@ -28271,7 +29981,7 @@ "file_type": "code", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L112", - "community": 49, + "community": 575, "norm_label": "testdispatchroutesmemorytools", "id": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" }, @@ -28316,7 +30026,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L24", - "community": 105, + "community": 584, "norm_label": "verify the actual async tool functions have correct signatures.", "id": "tests_test_memory_tools_wiring_rationale_24" }, @@ -28325,7 +30035,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L65", - "community": 572, + "community": 215, "norm_label": "tool_registry pattern must work correctly.", "id": "tests_test_memory_tools_wiring_rationale_65" }, @@ -28343,7 +30053,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L113", - "community": 49, + "community": 575, "norm_label": "dispatchtoolcall must route memory tool names via tool_registry.", "id": "tests_test_memory_tools_wiring_rationale_113" }, @@ -28460,7 +30170,7 @@ "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L1", - "community": 125, + "community": 61, "norm_label": "test_models.py", "id": "tests_test_models_py" }, @@ -28676,7 +30386,7 @@ "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L162", - "community": 125, + "community": 61, "norm_label": "testprometheussessionmodel", "id": "tests_test_models_testprometheussessionmodel" }, @@ -28685,7 +30395,7 @@ "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L163", - "community": 125, + "community": 61, "norm_label": ".test_create_session()", "id": "tests_test_models_testprometheussessionmodel_test_create_session" }, @@ -28694,7 +30404,7 @@ "file_type": "code", "source_file": "tests/test_models.py", "source_location": "L172", - "community": 125, + "community": 61, "norm_label": ".test_default_history()", "id": "tests_test_models_testprometheussessionmodel_test_default_history" }, @@ -28901,7 +30611,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L1", - "community": 504, + "community": 482, "norm_label": "test_pagination.py", "id": "tests_test_pagination_py" }, @@ -28910,7 +30620,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L14", - "community": 504, + "community": 482, "norm_label": "app()", "id": "tests_test_pagination_app" }, @@ -28919,7 +30629,7 @@ "file_type": "code", "source_file": "tests/test_pagination.py", "source_location": "L35", - "community": 504, + "community": 482, "norm_label": "client()", "id": "tests_test_pagination_client" }, @@ -29018,7 +30728,7 @@ "file_type": "rationale", "source_file": "tests/test_pagination.py", "source_location": "L1", - "community": 504, + "community": 482, "norm_label": "tests for inline pagination params (used in user + prometheus controllers).", "id": "tests_test_pagination_rationale_1" }, @@ -29747,7 +31457,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L44", - "community": 512, + "community": 100, "norm_label": "testmemorytoolfunctions", "id": "tests_test_prometheus_tools_testmemorytoolfunctions" }, @@ -29756,7 +31466,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L45", - "community": 512, + "community": 100, "norm_label": ".test_search_memory_has_docstring()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_docstring" }, @@ -29765,7 +31475,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L49", - "community": 512, + "community": 100, "norm_label": ".test_save_memory_has_docstring()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_docstring" }, @@ -29774,7 +31484,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L53", - "community": 512, + "community": 100, "norm_label": ".test_search_memory_signature()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_signature" }, @@ -29783,7 +31493,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L59", - "community": 512, + "community": 100, "norm_label": ".test_save_memory_signature()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_signature" }, @@ -29792,7 +31502,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L66", - "community": 512, + "community": 100, "norm_label": ".test_search_memory_has_type_hints()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_search_memory_has_type_hints" }, @@ -29801,7 +31511,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L71", - "community": 512, + "community": 100, "norm_label": ".test_save_memory_has_type_hints()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_save_memory_has_type_hints" }, @@ -29810,7 +31520,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L77", - "community": 512, + "community": 100, "norm_label": ".test_memory_tools_is_list_of_callables()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tools_is_list_of_callables" }, @@ -29819,7 +31529,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L83", - "community": 512, + "community": 100, "norm_label": ".test_memory_tool_names_unchanged()", "id": "tests_test_prometheus_tools_testmemorytoolfunctions_test_memory_tool_names_unchanged" }, @@ -29900,7 +31610,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L118", - "community": 100, + "community": 487, "norm_label": ".test_set_state_no_state_returns_error()", "id": "tests_test_prometheus_tools_teststatetoolfunctions_test_set_state_no_state_returns_error" }, @@ -29909,7 +31619,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L126", - "community": 577, + "community": 100, "norm_label": "testgeminicompatibility", "id": "tests_test_prometheus_tools_testgeminicompatibility" }, @@ -29927,7 +31637,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L135", - "community": 577, + "community": 100, "norm_label": ".test_no_harnessstate_in_any_signature()", "id": "tests_test_prometheus_tools_testgeminicompatibility_test_no_harnessstate_in_any_signature" }, @@ -29936,7 +31646,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L151", - "community": 571, + "community": 100, "norm_label": "testtoolregistry", "id": "tests_test_prometheus_tools_testtoolregistry" }, @@ -29945,7 +31655,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L152", - "community": 571, + "community": 100, "norm_label": ".test_registry_contains_memory_tools()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_contains_memory_tools" }, @@ -29954,7 +31664,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L156", - "community": 571, + "community": 100, "norm_label": ".test_registry_values_are_callable()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_values_are_callable" }, @@ -29963,7 +31673,7 @@ "file_type": "code", "source_file": "tests/test_prometheus_tools.py", "source_location": "L160", - "community": 571, + "community": 100, "norm_label": ".test_registry_matches_tool_names()", "id": "tests_test_prometheus_tools_testtoolregistry_test_registry_matches_tool_names" }, @@ -29981,7 +31691,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L127", - "community": 577, + "community": 100, "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", "id": "tests_test_prometheus_tools_rationale_127" }, @@ -29990,7 +31700,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L136", - "community": 577, + "community": 100, "norm_label": "regression: harnessstate must never leak into tool signatures.", "id": "tests_test_prometheus_tools_rationale_136" }, @@ -31619,7 +33329,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L1", - "community": 8, + "community": 162, "norm_label": "test_state_tools.py", "id": "tests_test_state_tools_py" }, @@ -31709,7 +33419,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L60", - "community": 8, + "community": 162, "norm_label": "testgetstate", "id": "tests_test_state_tools_testgetstate" }, @@ -31718,7 +33428,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L62", - "community": 8, + "community": 162, "norm_label": "test_get_state_specific_key()", "id": "tests_test_state_tools_test_get_state_specific_key" }, @@ -31727,7 +33437,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L69", - "community": 8, + "community": 162, "norm_label": "test_get_state_all()", "id": "tests_test_state_tools_test_get_state_all" }, @@ -31736,7 +33446,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L77", - "community": 8, + "community": 162, "norm_label": "test_get_state_missing_key()", "id": "tests_test_state_tools_test_get_state_missing_key" }, @@ -31745,7 +33455,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L83", - "community": 8, + "community": 162, "norm_label": "test_get_state_no_state()", "id": "tests_test_state_tools_test_get_state_no_state" }, @@ -31754,7 +33464,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L88", - "community": 8, + "community": 162, "norm_label": "testsetstate", "id": "tests_test_state_tools_testsetstate" }, @@ -31763,7 +33473,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L90", - "community": 8, + "community": 162, "norm_label": "test_set_state()", "id": "tests_test_state_tools_test_set_state" }, @@ -31781,7 +33491,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L102", - "community": 8, + "community": 162, "norm_label": "teststatedispatch", "id": "tests_test_state_tools_teststatedispatch" }, @@ -31790,7 +33500,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L104", - "community": 8, + "community": 162, "norm_label": "test_dispatch_get_state()", "id": "tests_test_state_tools_test_dispatch_get_state" }, @@ -31799,7 +33509,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L114", - "community": 8, + "community": 162, "norm_label": "test_dispatch_set_state()", "id": "tests_test_state_tools_test_dispatch_set_state" }, @@ -31961,7 +33671,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1", - "community": 567, + "community": 500, "norm_label": "test_stocks_api_coverage.py", "id": "tests_test_stocks_api_coverage_py" }, @@ -31970,7 +33680,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L23", - "community": 112, + "community": 3, "norm_label": "_make_stocks_df()", "id": "tests_test_stocks_api_coverage_make_stocks_df" }, @@ -31997,7 +33707,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L55", - "community": 567, + "community": 500, "norm_label": "test_cache_scheduler_starts_apscheduler()", "id": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_apscheduler" }, @@ -32069,7 +33779,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L152", - "community": 567, + "community": 571, "norm_label": "testverifyapikey", "id": "tests_test_stocks_api_coverage_testverifyapikey" }, @@ -32078,7 +33788,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L157", - "community": 567, + "community": 500, "norm_label": "test_verify_api_key_disabled_returns_none()", "id": "tests_test_stocks_api_coverage_test_verify_api_key_disabled_returns_none" }, @@ -32087,7 +33797,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L168", - "community": 567, + "community": 500, "norm_label": "test_verify_api_key_missing_raises_401()", "id": "tests_test_stocks_api_coverage_test_verify_api_key_missing_raises_401" }, @@ -32096,7 +33806,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L181", - "community": 567, + "community": 500, "norm_label": "test_verify_api_key_invalid_key_raises_401()", "id": "tests_test_stocks_api_coverage_test_verify_api_key_invalid_key_raises_401" }, @@ -32105,7 +33815,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L198", - "community": 567, + "community": 500, "norm_label": "test_verify_api_key_quota_exceeded()", "id": "tests_test_stocks_api_coverage_test_verify_api_key_quota_exceeded" }, @@ -32114,7 +33824,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L216", - "community": 567, + "community": 500, "norm_label": "test_verify_api_key_success()", "id": "tests_test_stocks_api_coverage_test_verify_api_key_success" }, @@ -32123,7 +33833,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L230", - "community": 567, + "community": 500, "norm_label": "test_verify_api_key_http_exception_rollback()", "id": "tests_test_stocks_api_coverage_test_verify_api_key_http_exception_rollback" }, @@ -32132,7 +33842,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L249", - "community": 567, + "community": 500, "norm_label": "test_verify_api_key_generic_exception_rollback()", "id": "tests_test_stocks_api_coverage_test_verify_api_key_generic_exception_rollback" }, @@ -32186,7 +33896,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L291", - "community": 567, + "community": 500, "norm_label": "test_create_key_new_user()", "id": "tests_test_stocks_api_coverage_test_create_key_new_user" }, @@ -32204,7 +33914,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L323", - "community": 567, + "community": 500, "norm_label": "test_create_key_exception_rollback()", "id": "tests_test_stocks_api_coverage_test_create_key_exception_rollback" }, @@ -32222,7 +33932,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L344", - "community": 101, + "community": 63, "norm_label": "._make_manager()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_make_manager" }, @@ -32321,7 +34031,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L419", - "community": 520, + "community": 577, "norm_label": ".test_deserialize_float_nan_direct()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_float_nan_direct" }, @@ -32348,7 +34058,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L451", - "community": 3, + "community": 86, "norm_label": ".test_deserialize_mixed_string_none_parses_json()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_mixed_string_none_parses_json" }, @@ -32357,7 +34067,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L473", - "community": 3, + "community": 520, "norm_label": ".test_deserialize_multiple_special_cols_with_none()", "id": "tests_test_stocks_api_coverage_testdeserializejsoncolumns_test_deserialize_multiple_special_cols_with_none" }, @@ -32366,7 +34076,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L498", - "community": 3, + "community": 86, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms" }, @@ -32375,7 +34085,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L501", - "community": 101, + "community": 86, "norm_label": "._make_manager()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_make_manager" }, @@ -32384,7 +34094,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L509", - "community": 3, + "community": 86, "norm_label": ".test_filter_empty_search_returns_all()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_empty_search_returns_all" }, @@ -32393,7 +34103,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L515", - "community": 3, + "community": 86, "norm_label": ".test_filter_ticker_index_hit()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_ticker_index_hit" }, @@ -32402,7 +34112,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L523", - "community": 3, + "community": 86, "norm_label": ".test_filter_multiple_terms_index()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_multiple_terms_index" }, @@ -32411,7 +34121,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L530", - "community": 3, + "community": 86, "norm_label": ".test_filter_no_index_match_fallback_to_str()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_no_index_match_fallback_to_str" }, @@ -32420,7 +34130,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L538", - "community": 3, + "community": 86, "norm_label": ".test_filter_fallback_multiple_terms()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_fallback_multiple_terms" }, @@ -32429,7 +34139,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L545", - "community": 3, + "community": 86, "norm_label": ".test_filter_case_insensitive()", "id": "tests_test_stocks_api_coverage_testfilterbysearchterms_test_filter_case_insensitive" }, @@ -32438,7 +34148,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L553", - "community": 112, + "community": 28, "norm_label": "testqueryhistorical", "id": "tests_test_stocks_api_coverage_testqueryhistorical" }, @@ -32447,7 +34157,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L556", - "community": 101, + "community": 63, "norm_label": "._make_manager()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_make_manager" }, @@ -32456,7 +34166,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L566", - "community": 112, + "community": 28, "norm_label": ".test_cache_not_initialized_raises_503()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_cache_not_initialized_raises_503" }, @@ -32465,7 +34175,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L574", - "community": 112, + "community": 3, "norm_label": ".test_basic_historical_query()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_basic_historical_query" }, @@ -32474,7 +34184,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L583", - "community": 112, + "community": 3, "norm_label": ".test_historical_with_search()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_search" }, @@ -32492,7 +34202,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L599", - "community": 112, + "community": 3, "norm_label": ".test_historical_with_dates()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_dates" }, @@ -32501,7 +34211,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L605", - "community": 112, + "community": 3, "norm_label": ".test_historical_with_order_by()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_order_by" }, @@ -32510,7 +34220,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L611", - "community": 112, + "community": 3, "norm_label": ".test_historical_with_limit()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_limit" }, @@ -32528,7 +34238,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L628", - "community": 112, + "community": 3, "norm_label": ".test_historical_sorts_by_time()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_sorts_by_time" }, @@ -32537,7 +34247,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L634", - "community": 112, + "community": 3, "norm_label": ".test_historical_deduplicates_by_ticker()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_deduplicates_by_ticker" }, @@ -32564,7 +34274,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L669", - "community": 112, + "community": 3, "norm_label": ".test_historical_search_with_no_results()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_search_with_no_results" }, @@ -32582,7 +34292,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L686", - "community": 562, + "community": 28, "norm_label": ".test_historical_with_date_range()", "id": "tests_test_stocks_api_coverage_testqueryhistorical_test_historical_with_date_range" }, @@ -32636,7 +34346,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L733", - "community": 112, + "community": 3, "norm_label": ".test_basic_fundamental_query()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_basic_fundamental_query" }, @@ -32645,7 +34355,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L741", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_with_search()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_search" }, @@ -32654,7 +34364,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L748", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_with_fields()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_fields" }, @@ -32663,7 +34373,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L754", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_with_date_range()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_date_range" }, @@ -32672,7 +34382,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L760", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_with_single_date()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_single_date" }, @@ -32681,7 +34391,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L766", - "community": 497, + "community": 39, "norm_label": ".test_fundamental_with_invalid_date()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_invalid_date" }, @@ -32690,7 +34400,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L776", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_with_order_by()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_order_by" }, @@ -32699,7 +34409,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L782", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_with_limit()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_limit" }, @@ -32708,7 +34418,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L788", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_deduplicates_without_search()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_deduplicates_without_search" }, @@ -32717,7 +34427,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L796", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_with_search_no_dedup()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_with_search_no_dedup" }, @@ -32735,7 +34445,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L819", - "community": 17, + "community": 39, "norm_label": ".test_fundamental_empty_search_string_no_dedup()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_empty_search_string_no_dedup" }, @@ -32744,7 +34454,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L828", - "community": 17, + "community": 39, "norm_label": ".test_fundamental_no_time_column()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_no_time_column" }, @@ -32789,7 +34499,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L890", - "community": 39, + "community": 17, "norm_label": ".test_fundamental_search_fallback_string_match()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_search_fallback_string_match" }, @@ -32807,7 +34517,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L913", - "community": 570, + "community": 112, "norm_label": ".test_fundamental_excludes_cotacao_10y()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_excludes_cotacao_10y" }, @@ -32816,7 +34526,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L940", - "community": 101, + "community": 46, "norm_label": ".test_fundamental_does_not_mutate_cache_time_dtype()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_does_not_mutate_cache_time_dtype" }, @@ -32825,7 +34535,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L963", - "community": 112, + "community": 3, "norm_label": ".test_fundamental_requires_search_fields_or_dates()", "id": "tests_test_stocks_api_coverage_testqueryfundamental_test_fundamental_requires_search_fields_or_dates" }, @@ -32843,7 +34553,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L986", - "community": 10, + "community": 3, "norm_label": "._make_manager()", "id": "tests_test_stocks_api_coverage_testquerycotations_make_manager" }, @@ -32987,7 +34697,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1139", - "community": 521, + "community": 10, "norm_label": ".test_cotations_http_route()", "id": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" }, @@ -33077,7 +34787,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1265", - "community": 234, + "community": 587, "norm_label": ".test_http_route_search_required()", "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" }, @@ -33113,7 +34823,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1315", - "community": 568, + "community": 22, "norm_label": ".test_cotations_search_required()", "id": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" }, @@ -33122,7 +34832,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1", - "community": 567, + "community": 500, "norm_label": "tests to increase coverage for query.py, key.py, and cache.py in stocks_api.", "id": "tests_test_stocks_api_coverage_rationale_1" }, @@ -33131,7 +34841,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L24", - "community": 112, + "community": 3, "norm_label": "return a small dataframe with the columns the query module expects.", "id": "tests_test_stocks_api_coverage_rationale_24" }, @@ -33149,7 +34859,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L153", - "community": 567, + "community": 571, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_153" }, @@ -33275,7 +34985,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L420", - "community": 520, + "community": 577, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_420" }, @@ -33302,7 +35012,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L452", - "community": 3, + "community": 86, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_452" }, @@ -33311,7 +35021,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L474", - "community": 3, + "community": 520, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_474" }, @@ -33320,7 +35030,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L499", - "community": 3, + "community": 86, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_499" }, @@ -33329,7 +35039,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L554", - "community": 112, + "community": 28, "norm_label": "tests covering query.py lines 77-132.", "id": "tests_test_stocks_api_coverage_rationale_554" }, @@ -33383,7 +35093,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L687", - "community": 562, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_687" }, @@ -33419,7 +35129,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L767", - "community": 497, + "community": 39, "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", "id": "tests_test_stocks_api_coverage_rationale_767" }, @@ -33428,7 +35138,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L820", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_820" }, @@ -33437,7 +35147,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L829", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_829" }, @@ -33446,7 +35156,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L842", - "community": 497, + "community": 39, "norm_label": "two dates in the range, both valid.", "id": "tests_test_stocks_api_coverage_rationale_842" }, @@ -33482,7 +35192,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L891", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_891" }, @@ -33500,7 +35210,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L914", - "community": 570, + "community": 112, "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", "id": "tests_test_stocks_api_coverage_rationale_914" }, @@ -33509,7 +35219,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L941", - "community": 101, + "community": 46, "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", "id": "tests_test_stocks_api_coverage_rationale_941" }, @@ -33554,7 +35264,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1140", - "community": 521, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1140" }, @@ -33572,7 +35282,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1266", - "community": 234, + "community": 587, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1266" }, @@ -33581,7 +35291,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1316", - "community": 568, + "community": 22, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1316" }, @@ -34598,7 +36308,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L21", - "community": 137, + "community": 580, "norm_label": "testgetsession", "id": "tests_test_thread_safety_testgetsession" }, @@ -34607,7 +36317,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L24", - "community": 137, + "community": 580, "norm_label": ".test_same_session_within_same_thread()", "id": "tests_test_thread_safety_testgetsession_test_same_session_within_same_thread" }, @@ -34616,7 +36326,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L32", - "community": 137, + "community": 580, "norm_label": ".test_different_sessions_in_different_threads()", "id": "tests_test_thread_safety_testgetsession_test_different_sessions_in_different_threads" }, @@ -34625,7 +36335,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L52", - "community": 137, + "community": 580, "norm_label": ".test_isolation_under_high_concurrency()", "id": "tests_test_thread_safety_testgetsession_test_isolation_under_high_concurrency" }, @@ -34634,7 +36344,7 @@ "file_type": "code", "source_file": "tests/test_thread_safety.py", "source_location": "L73", - "community": 137, + "community": 580, "norm_label": ".test_session_is_requests_session()", "id": "tests_test_thread_safety_testgetsession_test_session_is_requests_session" }, @@ -34715,7 +36425,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L22", - "community": 137, + "community": 580, "norm_label": "verify that getsession() returns per-thread session instances.", "id": "tests_test_thread_safety_rationale_22" }, @@ -34724,7 +36434,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L25", - "community": 137, + "community": 580, "norm_label": "calling getsession() twice in the same thread returns the same object.", "id": "tests_test_thread_safety_rationale_25" }, @@ -34733,7 +36443,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L33", - "community": 137, + "community": 580, "norm_label": "two threads must not share a session object.", "id": "tests_test_thread_safety_rationale_33" }, @@ -34742,7 +36452,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L53", - "community": 137, + "community": 580, "norm_label": "with 20 concurrent threads, every thread must get its own session.", "id": "tests_test_thread_safety_rationale_53" }, @@ -34751,7 +36461,7 @@ "file_type": "rationale", "source_file": "tests/test_thread_safety.py", "source_location": "L74", - "community": 137, + "community": 580, "norm_label": "the returned object must be a real requests.session.", "id": "tests_test_thread_safety_rationale_74" }, @@ -34823,7 +36533,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L1", - "community": 488, + "community": 570, "norm_label": "test_type_aware_decay.py", "id": "tests_test_type_aware_decay_py" }, @@ -34832,7 +36542,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L11", - "community": 488, + "community": 570, "norm_label": "_create()", "id": "tests_test_type_aware_decay_create" }, @@ -34841,7 +36551,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L29", - "community": 488, + "community": 570, "norm_label": "testtypeawaredecay", "id": "tests_test_type_aware_decay_testtypeawaredecay" }, @@ -34850,7 +36560,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L30", - "community": 488, + "community": 570, "norm_label": ".test_preference_decays_slowly()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_decays_slowly" }, @@ -34859,7 +36569,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L36", - "community": 488, + "community": 570, "norm_label": ".test_context_decays_fast()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_context_decays_fast" }, @@ -34868,7 +36578,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L42", - "community": 488, + "community": 570, "norm_label": ".test_analysis_decays_normally()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_analysis_decays_normally" }, @@ -34877,7 +36587,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L48", - "community": 488, + "community": 570, "norm_label": ".test_feedback_decays_medium()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_feedback_decays_medium" }, @@ -34886,7 +36596,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L54", - "community": 488, + "community": 570, "norm_label": ".test_unknown_type_uses_default()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_unknown_type_uses_default" }, @@ -34895,7 +36605,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L60", - "community": 488, + "community": 570, "norm_label": ".test_mixed_types_all_correct()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_mixed_types_all_correct" }, @@ -34904,7 +36614,7 @@ "file_type": "code", "source_file": "tests/test_type_aware_decay.py", "source_location": "L76", - "community": 488, + "community": 570, "norm_label": ".test_preference_survives_longer()", "id": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_survives_longer" }, @@ -34913,7 +36623,7 @@ "file_type": "rationale", "source_file": "tests/test_type_aware_decay.py", "source_location": "L77", - "community": 488, + "community": 570, "norm_label": "after 10 cycles, preference (0.99^10) > context (0.90^10).", "id": "tests_test_type_aware_decay_rationale_77" }, @@ -34922,7 +36632,7 @@ "file_type": "code", "source_file": "tests/test_user_deps.py", "source_location": "L1", - "community": 500, + "community": 482, "norm_label": "test_user_deps.py", "id": "tests_test_user_deps_py" }, @@ -36479,7 +38189,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1083", - "community": 104, + "community": 16, "norm_label": "covers lines 114-115: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1083" }, @@ -36560,7 +38270,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1223", - "community": 560, + "community": 563, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1223" }, @@ -36569,7 +38279,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1226", - "community": 560, + "community": 564, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1226" }, @@ -36578,7 +38288,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1243", - "community": 560, + "community": 568, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1243" }, @@ -36605,7 +38315,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1301", - "community": 560, + "community": 569, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1301" }, @@ -36614,7 +38324,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1317", - "community": 493, + "community": 546, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1317" }, @@ -36623,7 +38333,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1334", - "community": 493, + "community": 560, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1334" }, @@ -36632,7 +38342,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1351", - "community": 493, + "community": 561, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1351" }, @@ -36641,7 +38351,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1375", - "community": 524, + "community": 45, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1375" }, @@ -36668,7 +38378,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1404", - "community": 544, + "community": 524, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1404" }, @@ -36803,7 +38513,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L42", - "community": 208, + "community": 126, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_42" }, @@ -36812,7 +38522,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L79", - "community": 8, + "community": 162, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_79" }, @@ -36821,7 +38531,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L147", - "community": 525, + "community": 208, "norm_label": "read a file from the workspace. args: path: path to the file (e.", "id": "prometheus_tools_rationale_147" }, @@ -36830,7 +38540,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L171", - "community": 523, + "community": 525, "norm_label": "list files in the workspace directory. args: path: directory pat", "id": "prometheus_tools_rationale_171" }, @@ -36839,7 +38549,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L30", - "community": 67, + "community": 140, "norm_label": "keys with jaccard > 0.8 should merge.", "id": "tests_test_memory_dedup_rationale_30" }, @@ -36848,7 +38558,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L40", - "community": 67, + "community": 140, "norm_label": "keys with low similarity should not merge.", "id": "tests_test_memory_dedup_rationale_40" }, @@ -36857,7 +38567,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L67", - "community": 67, + "community": 140, "norm_label": "keys with jaccard <= 0.8 should not merge.", "id": "tests_test_memory_dedup_rationale_67" }, @@ -37127,7 +38837,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L131", - "community": 525, + "community": 208, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_131" }, @@ -37325,7 +39035,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L130", - "community": 525, + "community": 208, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_130" }, @@ -37334,7 +39044,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L7", - "community": 529, + "community": 522, "norm_label": "testagentsandboxintegration", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration" }, @@ -37343,7 +39053,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L8", - "community": 529, + "community": 522, "norm_label": ".test_build_system_prompt_includes_sandbox_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_sandbox_instructions" }, @@ -37352,7 +39062,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L14", - "community": 529, + "community": 522, "norm_label": ".test_build_system_prompt_includes_state_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_includes_state_instructions" }, @@ -37361,7 +39071,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L19", - "community": 529, + "community": 522, "norm_label": ".test_build_system_prompt_with_state()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_with_state" }, @@ -37460,7 +39170,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L41", - "community": 208, + "community": 126, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_41" }, @@ -37469,7 +39179,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L78", - "community": 8, + "community": 162, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_78" }, @@ -39692,7 +41402,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L128", - "community": 577, + "community": 100, "norm_label": "every function in tool_registry must have gemini-safe signatures. custom cl", "id": "tests_test_prometheus_tools_rationale_128" }, @@ -39701,7 +41411,7 @@ "file_type": "rationale", "source_file": "tests/test_prometheus_tools.py", "source_location": "L137", - "community": 577, + "community": 100, "norm_label": "regression: harnessstate must never leak into tool signatures.", "id": "tests_test_prometheus_tools_rationale_137" }, @@ -39818,7 +41528,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L139", - "community": 495, + "community": 523, "norm_label": "read_sandbox_file()", "id": "prometheus_tools_read_sandbox_file" }, @@ -39827,7 +41537,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L151", - "community": 495, + "community": 523, "norm_label": "upload_to_sandbox()", "id": "prometheus_tools_upload_to_sandbox" }, @@ -39836,7 +41546,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L165", - "community": 495, + "community": 523, "norm_label": "check_cache()", "id": "prometheus_tools_check_cache" }, @@ -39863,7 +41573,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L140", - "community": 495, + "community": 523, "norm_label": "read a file from the sandbox filesystem. args: path: absolute pa", "id": "prometheus_tools_rationale_140" }, @@ -39872,7 +41582,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L152", - "community": 495, + "community": 523, "norm_label": "upload a file to the sandbox filesystem. use this to push data files (csv,", "id": "prometheus_tools_rationale_152" }, @@ -39881,7 +41591,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L166", - "community": 495, + "community": 523, "norm_label": "check if a computed result exists in the cache. use before executing expens", "id": "prometheus_tools_rationale_166" }, @@ -39890,7 +41600,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L9", - "community": 529, + "community": 522, "norm_label": ".test_build_system_prompt_no_state()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_no_state" }, @@ -39899,7 +41609,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L20", - "community": 529, + "community": 522, "norm_label": ".test_build_system_prompt_empty_state()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_build_system_prompt_empty_state" }, @@ -39908,7 +41618,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L25", - "community": 529, + "community": 522, "norm_label": ".test_system_prompt_includes_state_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_state_instructions" }, @@ -39917,7 +41627,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L30", - "community": 529, + "community": 522, "norm_label": ".test_system_prompt_includes_sandbox_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_sandbox_instructions" }, @@ -39926,7 +41636,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L34", - "community": 529, + "community": 522, "norm_label": ".test_system_prompt_includes_cache_instructions()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_system_prompt_includes_cache_instructions" }, @@ -39935,7 +41645,7 @@ "file_type": "code", "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L38", - "community": 529, + "community": 522, "norm_label": ".test_makechat_uses_tool_registry()", "id": "tests_test_agent_sandbox_integration_testagentsandboxintegration_test_makechat_uses_tool_registry" }, @@ -40106,7 +41816,7 @@ "file_type": "code", "source_file": "tests/test_config_sandbox.py", "source_location": "L1", - "community": 102, + "community": 251, "norm_label": "test_config_sandbox.py", "id": "tests_test_config_sandbox_py" }, @@ -41159,7 +42869,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L77", - "community": 8, + "community": 162, "norm_label": "retrieve values from the harness state. use this to recall intermediate results,", "id": "prometheus_tools_rationale_77" }, @@ -41222,7 +42932,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L104", - "community": 8, + "community": 162, "norm_label": "executestatetool()", "id": "prometheus_tools_executestatetool" }, @@ -41240,7 +42950,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L39", - "community": 208, + "community": 126, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_39" }, @@ -41267,7 +42977,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L54", - "community": 8, + "community": 162, "norm_label": "testexecutestatetool", "id": "tests_test_state_tools_testexecutestatetool" }, @@ -41276,7 +42986,7 @@ "file_type": "code", "source_file": "tests/test_state_tools.py", "source_location": "L84", - "community": 8, + "community": 162, "norm_label": "test_unknown_tool()", "id": "tests_test_state_tools_test_unknown_tool" }, @@ -41366,7 +43076,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L38", - "community": 208, + "community": 126, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_38" }, @@ -41420,7 +43130,7 @@ "file_type": "code", "source_file": "main/app/prometheus/tools.py", "source_location": "L46", - "community": 84, + "community": 130, "norm_label": "executememorytool()", "id": "prometheus_tools_executememorytool" }, @@ -41429,7 +43139,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/tools.py", "source_location": "L29", - "community": 208, + "community": 126, "norm_label": "store a memory about the user's preferences, analysis results, or feedback.", "id": "prometheus_tools_rationale_29" }, @@ -41438,7 +43148,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L52", - "community": 67, + "community": 140, "norm_label": "keys with low similarity should not merge.", "id": "tests_test_memory_dedup_rationale_52" }, @@ -41447,7 +43157,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_dedup.py", "source_location": "L85", - "community": 67, + "community": 140, "norm_label": "keys with jaccard <= 0.8 should not merge.", "id": "tests_test_memory_dedup_rationale_85" }, @@ -41573,7 +43283,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L89", - "community": 49, + "community": 575, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_89" }, @@ -41609,7 +43319,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L92", - "community": 49, + "community": 575, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_92" }, @@ -41654,7 +43364,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L85", - "community": 518, + "community": 544, "norm_label": "score below threshold + accesscount=0 + 90+ days \u2192 archived.", "id": "tests_test_memory_maintenance_rationale_85" }, @@ -41663,7 +43373,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L92", - "community": 518, + "community": 573, "norm_label": "low score but accessed recently \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_92" }, @@ -41672,7 +43382,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L99", - "community": 518, + "community": 539, "norm_label": "zero access but score still above threshold \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_99" }, @@ -41681,7 +43391,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L106", - "community": 518, + "community": 570, "norm_label": "even with low score, if accessed \u2192 not archived.", "id": "tests_test_memory_maintenance_rationale_106" }, @@ -41690,7 +43400,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_maintenance.py", "source_location": "L113", - "community": 518, + "community": 570, "norm_label": "already archived memories are skipped.", "id": "tests_test_memory_maintenance_rationale_113" }, @@ -41726,7 +43436,7 @@ "file_type": "code", "source_file": "main/utils/models/loader.py", "source_location": "L23", - "community": 84, + "community": 130, "norm_label": "embed()", "id": "models_loader_embed" }, @@ -41906,7 +43616,7 @@ "file_type": "code", "source_file": "main/utils/models/loader.py", "source_location": "L11", - "community": 84, + "community": 130, "norm_label": "_downloadmodel()", "id": "models_loader_downloadmodel" }, @@ -42041,7 +43751,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1277", - "community": 493, + "community": 563, "norm_label": "covers lines 36-38, 40-44, 46, 48-49, 51, 58-59, 61: successful user retrieval.", "id": "tests_test_controllers_coverage_rationale_1277" }, @@ -42050,7 +43760,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1302", - "community": 560, + "community": 569, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1302" }, @@ -42059,7 +43769,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1318", - "community": 493, + "community": 546, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1318" }, @@ -42068,7 +43778,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1335", - "community": 493, + "community": 560, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1335" }, @@ -42077,7 +43787,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1352", - "community": 493, + "community": 561, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1352" }, @@ -42086,7 +43796,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1376", - "community": 524, + "community": 45, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1376" }, @@ -42104,7 +43814,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1389", - "community": 493, + "community": 560, "norm_label": "covers lines 48-49: jwt.expiredsignatureerror.", "id": "tests_test_controllers_coverage_rationale_1389" }, @@ -42113,7 +43823,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1405", - "community": 544, + "community": 524, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1405" }, @@ -42122,7 +43832,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1417", - "community": 498, + "community": 114, "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", "id": "tests_test_controllers_coverage_rationale_1417" }, @@ -42374,7 +44084,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L91", - "community": 49, + "community": 575, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_91" }, @@ -42707,7 +44417,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_tools_wiring.py", "source_location": "L76", - "community": 49, + "community": 575, "norm_label": "dispatchtoolcall must route memory tool names to executememorytool.", "id": "tests_test_memory_tools_wiring_rationale_76" }, @@ -42797,7 +44507,7 @@ "file_type": "code", "source_file": "main/controller/prometheus_controller.py", "source_location": "L177", - "community": 84, + "community": 130, "norm_label": "creatememory()", "id": "controller_prometheus_controller_creatememory" }, @@ -42815,7 +44525,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L1", - "community": 86, + "community": 67, "norm_label": "test_memory_controller.py", "id": "tests_test_memory_controller_py" }, @@ -42824,7 +44534,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L10", - "community": 86, + "community": 67, "norm_label": "testmemorycontrollerroutes", "id": "tests_test_memory_controller_testmemorycontrollerroutes" }, @@ -42833,7 +44543,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L11", - "community": 86, + "community": 67, "norm_label": ".test_get_memories_endpoint_exists()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_endpoint_exists" }, @@ -42842,7 +44552,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L15", - "community": 86, + "community": 67, "norm_label": ".test_post_memories_endpoint_exists()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_post_memories_endpoint_exists" }, @@ -42851,7 +44561,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L19", - "community": 86, + "community": 67, "norm_label": ".test_delete_memories_endpoint_exists()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_delete_memories_endpoint_exists" }, @@ -42860,7 +44570,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L23", - "community": 86, + "community": 67, "norm_label": ".test_get_memories_rejects_unauthenticated()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" }, @@ -42869,7 +44579,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L38", - "community": 86, + "community": 67, "norm_label": ".test_get_memories_rejects_basic_user()", "id": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" }, @@ -42878,7 +44588,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L65", - "community": 86, + "community": 67, "norm_label": "testmemoryendpointsintegration", "id": "tests_test_memory_controller_testmemoryendpointsintegration" }, @@ -42887,7 +44597,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L67", - "community": 86, + "community": 67, "norm_label": "test_get_memories_calls_manager()", "id": "tests_test_memory_controller_test_get_memories_calls_manager" }, @@ -42896,7 +44606,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L90", - "community": 86, + "community": 67, "norm_label": "test_create_memory_calls_manager()", "id": "tests_test_memory_controller_test_create_memory_calls_manager" }, @@ -42905,7 +44615,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L111", - "community": 86, + "community": 67, "norm_label": "test_create_memory_limit_reached()", "id": "tests_test_memory_controller_test_create_memory_limit_reached" }, @@ -42914,7 +44624,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L126", - "community": 86, + "community": 67, "norm_label": "test_delete_memory_calls_manager()", "id": "tests_test_memory_controller_test_delete_memory_calls_manager" }, @@ -42923,7 +44633,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L135", - "community": 86, + "community": 67, "norm_label": "test_delete_memory_not_found()", "id": "tests_test_memory_controller_test_delete_memory_not_found" }, @@ -42932,7 +44642,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L141", - "community": 86, + "community": 67, "norm_label": ".test_create_memory_missing_key()", "id": "tests_test_memory_controller_testmemoryendpointsintegration_test_create_memory_missing_key" }, @@ -42941,7 +44651,7 @@ "file_type": "code", "source_file": "tests/test_memory_controller.py", "source_location": "L145", - "community": 86, + "community": 67, "norm_label": ".test_create_memory_missing_value()", "id": "tests_test_memory_controller_testmemoryendpointsintegration_test_create_memory_missing_value" }, @@ -43481,7 +45191,7 @@ "file_type": "code", "source_file": "main/app/prometheus/memory.py", "source_location": "L138", - "community": 126, + "community": 53, "norm_label": "_fulltext_search()", "id": "prometheus_memory_fulltext_search" }, @@ -43607,7 +45317,7 @@ "file_type": "code", "source_file": "main/controller/prometheus_controller.py", "source_location": "L177", - "community": 84, + "community": 130, "norm_label": "create_memory()", "id": "controller_prometheus_controller_create_memory" }, @@ -43706,7 +45416,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L11", - "community": 86, + "community": 67, "norm_label": "verify memory endpoints exist and are wired correctly.", "id": "tests_test_memory_controller_rationale_11" }, @@ -43715,7 +45425,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L14", - "community": 86, + "community": 67, "norm_label": "get /prometheus/memories exists.", "id": "tests_test_memory_controller_rationale_14" }, @@ -43724,7 +45434,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L20", - "community": 86, + "community": 67, "norm_label": "post /prometheus/memories exists.", "id": "tests_test_memory_controller_rationale_20" }, @@ -43733,7 +45443,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L25", - "community": 86, + "community": 67, "norm_label": "delete /prometheus/memories/{id} exists.", "id": "tests_test_memory_controller_rationale_25" }, @@ -43742,7 +45452,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L30", - "community": 86, + "community": 67, "norm_label": "get /memories requires authentication.", "id": "tests_test_memory_controller_rationale_30" }, @@ -43751,7 +45461,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L47", - "community": 86, + "community": 67, "norm_label": "get /memories requires use_prometheus (basic user role denied).", "id": "tests_test_memory_controller_rationale_47" }, @@ -43760,7 +45470,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L75", - "community": 86, + "community": 67, "norm_label": "full integration tests using mocked memorymanager.", "id": "tests_test_memory_controller_rationale_75" }, @@ -43814,7 +45524,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L141", - "community": 86, + "community": 67, "norm_label": "post /memories rejects missing key.", "id": "tests_test_memory_controller_rationale_141" }, @@ -43823,7 +45533,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_controller.py", "source_location": "L146", - "community": 86, + "community": 67, "norm_label": "post /memories rejects missing value.", "id": "tests_test_memory_controller_rationale_146" }, @@ -43832,7 +45542,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L11", - "community": 576, + "community": 140, "norm_label": "non-extended role gets basic limit.", "id": "tests_test_memory_manager_rationale_11" }, @@ -43850,7 +45560,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L19", - "community": 581, + "community": 140, "norm_label": "admin gets extended limit (has all permissions).", "id": "tests_test_memory_manager_rationale_19" }, @@ -43877,7 +45587,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L43", - "community": 582, + "community": 140, "norm_label": "returns unchanged when value is identical.", "id": "tests_test_memory_manager_rationale_43" }, @@ -43886,7 +45596,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L49", - "community": 583, + "community": 140, "norm_label": "rejects new memory when limit reached.", "id": "tests_test_memory_manager_rationale_49" }, @@ -43895,7 +45605,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L61", - "community": 584, + "community": 140, "norm_label": "no role check when user_roles not provided.", "id": "tests_test_memory_manager_rationale_61" }, @@ -43904,7 +45614,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L69", - "community": 585, + "community": 140, "norm_label": "stores embedding alongside memory.", "id": "tests_test_memory_manager_rationale_69" }, @@ -43931,7 +45641,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L107", - "community": 575, + "community": 140, "norm_label": "returns paginated memories.", "id": "tests_test_memory_manager_rationale_107" }, @@ -43940,7 +45650,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L115", - "community": 578, + "community": 140, "norm_label": "offset and limit work.", "id": "tests_test_memory_manager_rationale_115" }, @@ -43949,7 +45659,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L122", - "community": 579, + "community": 140, "norm_label": "archived memories excluded.", "id": "tests_test_memory_manager_rationale_122" }, @@ -43958,7 +45668,7 @@ "file_type": "rationale", "source_file": "tests/test_memory_manager.py", "source_location": "L135", - "community": 580, + "community": 140, "norm_label": "soft-deletes a memory.", "id": "tests_test_memory_manager_rationale_135" }, @@ -45083,7 +46793,7 @@ "file_type": "code", "source_file": "main/app/prometheus/generation.py", "source_location": "L1", - "community": 162, + "community": 29, "norm_label": "generation.py", "id": "main_app_prometheus_generation_py" }, @@ -45119,7 +46829,7 @@ "file_type": "code", "source_file": "main/app/prometheus/generation.py", "source_location": "L36", - "community": 162, + "community": 29, "norm_label": ".executeworkflow()", "id": "prometheus_generation_prometheusgenerator_executeworkflow" }, @@ -45200,7 +46910,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L74", - "community": 539, + "community": 105, "norm_label": "testclient with stocks router + verifyapikey + getcurrentuser overrides.", "id": "tests_conftest_rationale_74" }, @@ -45209,7 +46919,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L99", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_99" }, @@ -45371,7 +47081,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L846", - "community": 16, + "community": 99, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_846" }, @@ -45380,7 +47090,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L864", - "community": 16, + "community": 99, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_864" }, @@ -45425,7 +47135,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L912", - "community": 136, + "community": 104, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_912" }, @@ -45434,7 +47144,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L915", - "community": 136, + "community": 104, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_915" }, @@ -45443,7 +47153,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L959", - "community": 136, + "community": 104, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_959" }, @@ -45506,7 +47216,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1079", - "community": 104, + "community": 16, "norm_label": "covers lines 114-115: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1079" }, @@ -45587,7 +47297,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1219", - "community": 560, + "community": 563, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1219" }, @@ -45596,7 +47306,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1222", - "community": 560, + "community": 564, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1222" }, @@ -45605,7 +47315,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1239", - "community": 560, + "community": 568, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1239" }, @@ -45641,7 +47351,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1298", - "community": 560, + "community": 569, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1298" }, @@ -45650,7 +47360,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1314", - "community": 493, + "community": 546, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1314" }, @@ -45659,7 +47369,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1331", - "community": 493, + "community": 560, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1331" }, @@ -45668,7 +47378,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1348", - "community": 493, + "community": 561, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1348" }, @@ -45677,7 +47387,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1372", - "community": 493, + "community": 546, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1372" }, @@ -45686,7 +47396,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1401", - "community": 544, + "community": 524, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1401" }, @@ -45695,7 +47405,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1413", - "community": 498, + "community": 114, "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", "id": "tests_test_controllers_coverage_rationale_1413" }, @@ -45983,7 +47693,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L844", - "community": 16, + "community": 99, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_844" }, @@ -45992,7 +47702,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L862", - "community": 16, + "community": 99, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_862" }, @@ -46037,7 +47747,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L910", - "community": 136, + "community": 104, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_910" }, @@ -46046,7 +47756,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L913", - "community": 136, + "community": 104, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_913" }, @@ -46055,7 +47765,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L957", - "community": 136, + "community": 104, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_957" }, @@ -46118,7 +47828,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1078", - "community": 104, + "community": 16, "norm_label": "covers lines 114-115: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1078" }, @@ -46190,7 +47900,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1218", - "community": 560, + "community": 563, "norm_label": "covers lines 13, 17, 19-20, 22-27: usermanager.addroletouser.", "id": "tests_test_controllers_coverage_rationale_1218" }, @@ -46199,7 +47909,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1221", - "community": 560, + "community": 564, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1221" }, @@ -46208,7 +47918,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1238", - "community": 560, + "community": 568, "norm_label": "covers line 27: user already has the role.", "id": "tests_test_controllers_coverage_rationale_1238" }, @@ -46244,7 +47954,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1297", - "community": 560, + "community": 568, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1297" }, @@ -46253,7 +47963,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1313", - "community": 493, + "community": 546, "norm_label": "covers lines 48-49: user not in db.", "id": "tests_test_controllers_coverage_rationale_1313" }, @@ -46262,7 +47972,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1330", - "community": 493, + "community": 560, "norm_label": "covers lines 65-67: unexpected exception.", "id": "tests_test_controllers_coverage_rationale_1330" }, @@ -46271,7 +47981,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1347", - "community": 493, + "community": 561, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1347" }, @@ -46280,7 +47990,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1371", - "community": 524, + "community": 45, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1371" }, @@ -46307,7 +48017,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1400", - "community": 544, + "community": 524, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1400" }, @@ -46316,7 +48026,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1412", - "community": 498, + "community": 114, "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", "id": "tests_test_controllers_coverage_rationale_1412" }, @@ -46658,7 +48368,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L229", - "community": 567, + "community": 571, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_229" }, @@ -46775,7 +48485,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L496", - "community": 520, + "community": 577, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_496" }, @@ -46802,7 +48512,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L528", - "community": 3, + "community": 86, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_528" }, @@ -46811,7 +48521,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L550", - "community": 3, + "community": 520, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_550" }, @@ -46820,7 +48530,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L575", - "community": 3, + "community": 86, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_575" }, @@ -46829,7 +48539,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L630", - "community": 112, + "community": 28, "norm_label": "tests covering query.py lines 77-132.", "id": "tests_test_stocks_api_coverage_rationale_630" }, @@ -46910,7 +48620,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L843", - "community": 497, + "community": 39, "norm_label": "invalid date -> inner 400 passes through (not wrapped as 500).", "id": "tests_test_stocks_api_coverage_rationale_843" }, @@ -46928,7 +48638,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L905", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_905" }, @@ -46973,7 +48683,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L967", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_967" }, @@ -46991,7 +48701,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L990", - "community": 570, + "community": 112, "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", "id": "tests_test_stocks_api_coverage_rationale_990" }, @@ -47000,7 +48710,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1017", - "community": 101, + "community": 46, "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", "id": "tests_test_stocks_api_coverage_rationale_1017" }, @@ -47045,7 +48755,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1216", - "community": 521, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1216" }, @@ -47063,7 +48773,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1342", - "community": 234, + "community": 587, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1342" }, @@ -47072,7 +48782,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1392", - "community": 568, + "community": 22, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1392" }, @@ -47198,7 +48908,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1344", - "community": 234, + "community": 587, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1344" }, @@ -47207,7 +48917,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1394", - "community": 568, + "community": 22, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1394" }, @@ -47387,7 +49097,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1400", - "community": 234, + "community": 587, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1400" }, @@ -47396,7 +49106,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1468", - "community": 568, + "community": 22, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1468" }, @@ -47405,7 +49115,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L23", - "community": 112, + "community": 3, "norm_label": "return a small dataframe with the columns the query module expects.", "id": "tests_test_stocks_api_coverage_rationale_23" }, @@ -47423,7 +49133,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L228", - "community": 567, + "community": 571, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_228" }, @@ -47540,7 +49250,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L495", - "community": 520, + "community": 577, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_495" }, @@ -47567,7 +49277,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L527", - "community": 3, + "community": 86, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_527" }, @@ -47576,7 +49286,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L549", - "community": 3, + "community": 520, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_549" }, @@ -47585,7 +49295,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L574", - "community": 3, + "community": 86, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_574" }, @@ -47594,7 +49304,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L629", - "community": 112, + "community": 28, "norm_label": "tests covering query.py lines 77-132.", "id": "tests_test_stocks_api_coverage_rationale_629" }, @@ -47648,7 +49358,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L762", - "community": 562, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_762" }, @@ -47684,7 +49394,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L895", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_895" }, @@ -47693,7 +49403,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L904", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_904" }, @@ -47729,7 +49439,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L964", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_964" }, @@ -47747,7 +49457,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L986", - "community": 570, + "community": 112, "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", "id": "tests_test_stocks_api_coverage_rationale_986" }, @@ -47756,7 +49466,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1013", - "community": 101, + "community": 46, "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", "id": "tests_test_stocks_api_coverage_rationale_1013" }, @@ -47801,7 +49511,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1212", - "community": 521, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1212" }, @@ -47819,7 +49529,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1396", - "community": 234, + "community": 587, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1396" }, @@ -47828,7 +49538,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1464", - "community": 568, + "community": 22, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1464" }, @@ -47855,7 +49565,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1388", - "community": 234, + "community": 587, "norm_label": "get /stocks/realtime-cotation without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1388" }, @@ -47864,7 +49574,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1456", - "community": 568, + "community": 22, "norm_label": "get /cotations without search returns 422.", "id": "tests_test_stocks_api_coverage_rationale_1456" }, @@ -47945,7 +49655,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1210", - "community": 521, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1210" }, @@ -47963,7 +49673,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L832", - "community": 17, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_832" }, @@ -47972,7 +49682,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L885", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_885" }, @@ -47981,7 +49691,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L894", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_894" }, @@ -48017,7 +49727,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L954", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_954" }, @@ -48035,7 +49745,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L976", - "community": 570, + "community": 112, "norm_label": "cotacao 10y padrao and cotacao 10y ajustada belong to /cotations, not /fundament", "id": "tests_test_stocks_api_coverage_rationale_976" }, @@ -48044,7 +49754,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1003", - "community": 101, + "community": 46, "norm_label": "regression: queryfundamental must not mutate the shared cache time column.", "id": "tests_test_stocks_api_coverage_rationale_1003" }, @@ -48089,7 +49799,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1191", - "community": 521, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1191" }, @@ -48620,7 +50330,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1170", - "community": 521, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1170" }, @@ -48665,7 +50375,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1141", - "community": 521, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1141" }, @@ -48692,7 +50402,7 @@ "file_type": "code", "source_file": "main/app/stocks_api/query.py", "source_location": "L344", - "community": 101, + "community": 63, "norm_label": ".queryrealtimecotation()", "id": "stocks_api_query_stocksquerymanager_queryrealtimecotation" }, @@ -48719,7 +50429,7 @@ "file_type": "rationale", "source_file": "main/app/stocks_api/query.py", "source_location": "L345", - "community": 101, + "community": 63, "norm_label": "fetch live prices for b3 tickers via yfinance. b3 tickers must match", "id": "stocks_api_query_rationale_345" }, @@ -48728,7 +50438,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L63", - "community": 197, + "community": 169, "norm_label": "getrealtimecotation()", "id": "controller_stocksapi_controller_getrealtimecotation" }, @@ -48746,7 +50456,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L1148", - "community": 521, + "community": 10, "norm_label": "hit the actual /stocks/cotations http endpoint with adjusted=false.", "id": "tests_test_stocks_api_coverage_rationale_1148" }, @@ -48782,7 +50492,7 @@ "file_type": "code", "source_file": "main/app/prometheus/generation.py", "source_location": "L19", - "community": 162, + "community": 29, "norm_label": "sessionproxy", "id": "prometheus_generation_sessionproxy" }, @@ -48791,7 +50501,7 @@ "file_type": "code", "source_file": "main/app/prometheus/generation.py", "source_location": "L20", - "community": 162, + "community": 29, "norm_label": ".get()", "id": "prometheus_generation_sessionproxy_get" }, @@ -48800,7 +50510,7 @@ "file_type": "code", "source_file": "main/app/prometheus/generation.py", "source_location": "L23", - "community": 162, + "community": 29, "norm_label": ".post()", "id": "prometheus_generation_sessionproxy_post" }, @@ -48836,7 +50546,7 @@ "file_type": "code", "source_file": "main/controller/stocksapi_controller.py", "source_location": "L23", - "community": 197, + "community": 169, "norm_label": "apikeytest()", "id": "controller_stocksapi_controller_apikeytest" }, @@ -48890,7 +50600,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L18", - "community": 564, + "community": 512, "norm_label": "cleanup()", "id": "utils_http_session_cleanup" }, @@ -48899,7 +50609,7 @@ "file_type": "code", "source_file": "main/utils/pagination.py", "source_location": "L1", - "community": 500, + "community": 482, "norm_label": "pagination.py", "id": "main_utils_pagination_py" }, @@ -48908,7 +50618,7 @@ "file_type": "code", "source_file": "main/utils/pagination.py", "source_location": "L4", - "community": 500, + "community": 482, "norm_label": "paginationparams", "id": "utils_pagination_paginationparams" }, @@ -48917,7 +50627,7 @@ "file_type": "code", "source_file": "main/utils/pagination.py", "source_location": "L5", - "community": 500, + "community": 482, "norm_label": ".__init__()", "id": "utils_pagination_paginationparams_init" }, @@ -48935,7 +50645,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L75", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_75" }, @@ -48944,7 +50654,7 @@ "file_type": "code", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L20", - "community": 546, + "community": 26, "norm_label": "dbsession()", "id": "tests_test_api_key_quota_atomic_dbsession" }, @@ -48953,7 +50663,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L21", - "community": 546, + "community": 26, "norm_label": "create an in-memory sqlite database for testing.", "id": "tests_test_api_key_quota_atomic_rationale_21" }, @@ -48962,7 +50672,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L34", - "community": 546, + "community": 26, "norm_label": "sample api key data for tests.", "id": "tests_test_api_key_quota_atomic_rationale_34" }, @@ -49025,7 +50735,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L180", - "community": 561, + "community": 26, "norm_label": "test that multiple api keys have independent quotas.", "id": "tests_test_api_key_quota_atomic_rationale_180" }, @@ -49043,7 +50753,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L236", - "community": 535, + "community": 567, "norm_label": "integration tests for the verifyapikey function.", "id": "tests_test_api_key_quota_atomic_rationale_236" }, @@ -49052,7 +50762,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L269", - "community": 535, + "community": 567, "norm_label": "test api key verification with invalid key.", "id": "tests_test_api_key_quota_atomic_rationale_269" }, @@ -49061,7 +50771,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L280", - "community": 535, + "community": 567, "norm_label": "test api key verification with missing key.", "id": "tests_test_api_key_quota_atomic_rationale_280" }, @@ -49070,7 +50780,7 @@ "file_type": "rationale", "source_file": "tests/test_api_key_quota_atomic.py", "source_location": "L291", - "community": 535, + "community": 567, "norm_label": "test that api key system can be disabled.", "id": "tests_test_api_key_quota_atomic_rationale_291" }, @@ -49115,7 +50825,7 @@ "file_type": "code", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1194", - "community": 14, + "community": 45, "norm_label": "teststocksapikeytest", "id": "tests_test_controllers_coverage_teststocksapikeytest" }, @@ -49151,7 +50861,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L132", - "community": 498, + "community": 45, "norm_label": "covers line 28: get /auth/health.", "id": "tests_test_controllers_coverage_rationale_132" }, @@ -49160,7 +50870,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L148", - "community": 498, + "community": 120, "norm_label": "covers lines 44-54, 63, 66-71: register success, valueerror, generic exception.", "id": "tests_test_controllers_coverage_rationale_148" }, @@ -49187,7 +50897,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L228", - "community": 498, + "community": 120, "norm_label": "covers lines 87-93, 102: login success and failure paths.", "id": "tests_test_controllers_coverage_rationale_228" }, @@ -49268,7 +50978,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L379", - "community": 498, + "community": 45, "norm_label": "covers lines 139, 141-149: googlelogin endpoint.", "id": "tests_test_controllers_coverage_rationale_379" }, @@ -49295,7 +51005,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L425", - "community": 498, + "community": 120, "norm_label": "covers lines 155-156, 158, 160-168, 170-177, 179-184, 186, 190-204: googlecallba", "id": "tests_test_controllers_coverage_rationale_425" }, @@ -49475,7 +51185,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L889", - "community": 16, + "community": 99, "norm_label": "covers lines 33-36: get /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_889" }, @@ -49484,7 +51194,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L907", - "community": 16, + "community": 99, "norm_label": "covers line 52: post /prometheus/sessions.", "id": "tests_test_controllers_coverage_rationale_907" }, @@ -49529,7 +51239,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L955", - "community": 136, + "community": 104, "norm_label": "covers lines 77, 83-84, 86: get /prometheus/history/{sessionid}.", "id": "tests_test_controllers_coverage_rationale_955" }, @@ -49538,7 +51248,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L958", - "community": 136, + "community": 104, "norm_label": "covers lines 77, 86: session found with history.", "id": "tests_test_controllers_coverage_rationale_958" }, @@ -49547,7 +51257,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1002", - "community": 136, + "community": 104, "norm_label": "covers lines 83-84: session not found.", "id": "tests_test_controllers_coverage_rationale_1002" }, @@ -49610,7 +51320,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1123", - "community": 104, + "community": 16, "norm_label": "covers lines 114-115: session ownership check fails.", "id": "tests_test_controllers_coverage_rationale_1123" }, @@ -49691,7 +51401,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1280", - "community": 560, + "community": 564, "norm_label": "covers lines 17, 22-27: user found, role not present, role added.", "id": "tests_test_controllers_coverage_rationale_1280" }, @@ -49709,7 +51419,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1356", - "community": 560, + "community": 569, "norm_label": "covers lines 42-44: session validation fails.", "id": "tests_test_controllers_coverage_rationale_1356" }, @@ -49718,7 +51428,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1406", - "community": 493, + "community": 561, "norm_label": "covers lines 37-38, 46, 51, 58 (sessionid is none): skips session validation.", "id": "tests_test_controllers_coverage_rationale_1406" }, @@ -49727,7 +51437,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1430", - "community": 524, + "community": 45, "norm_label": "covers line 16: empty password raises valueerror.", "id": "tests_test_controllers_coverage_rationale_1430" }, @@ -49754,7 +51464,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1459", - "community": 544, + "community": 524, "norm_label": "covers lines 50-51: jwt.invalidtokenerror.", "id": "tests_test_controllers_coverage_rationale_1459" }, @@ -49763,7 +51473,7 @@ "file_type": "rationale", "source_file": "tests/test_controllers_coverage.py", "source_location": "L1471", - "community": 498, + "community": 114, "norm_label": "covers line 67: extracttokenpayload re-raises httpexception from verifyaccesstok", "id": "tests_test_controllers_coverage_rationale_1471" }, @@ -49799,7 +51509,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L28", - "community": 564, + "community": 512, "norm_label": "testcleanup", "id": "tests_test_http_session_coverage_testcleanup" }, @@ -49808,7 +51518,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L29", - "community": 564, + "community": 512, "norm_label": ".test_cleanup_closes_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_closes_session" }, @@ -49817,7 +51527,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L37", - "community": 564, + "community": 512, "norm_label": ".test_cleanup_no_session()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_no_session" }, @@ -49826,7 +51536,7 @@ "file_type": "code", "source_file": "tests/test_http_session_coverage.py", "source_location": "L46", - "community": 564, + "community": 512, "norm_label": ".test_cleanup_exception_during_close()", "id": "tests_test_http_session_coverage_testcleanup_test_cleanup_exception_during_close" }, @@ -50240,7 +51950,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L227", - "community": 567, + "community": 571, "norm_label": "tests covering key.py lines 15-40. uses asyncio.run() since pytest-asyncio", "id": "tests_test_stocks_api_coverage_rationale_227" }, @@ -50357,7 +52067,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L494", - "community": 520, + "community": 577, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_494" }, @@ -50384,7 +52094,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L526", - "community": 3, + "community": 86, "norm_label": "regression: is_string_dtype fails when column has strings + none (pandas 2.x).", "id": "tests_test_stocks_api_coverage_rationale_526" }, @@ -50393,7 +52103,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L548", - "community": 3, + "community": 520, "norm_label": "all four special_cols should parse correctly when mixed with none.", "id": "tests_test_stocks_api_coverage_rationale_548" }, @@ -50402,7 +52112,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L573", - "community": 3, + "community": 86, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_573" }, @@ -50411,7 +52121,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L628", - "community": 112, + "community": 28, "norm_label": "tests covering query.py lines 77-132.", "id": "tests_test_stocks_api_coverage_rationale_628" }, @@ -50465,7 +52175,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L761", - "community": 562, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_761" }, @@ -50483,7 +52193,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L831", - "community": 497, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_831" }, @@ -50492,7 +52202,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L884", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_884" }, @@ -50501,7 +52211,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L893", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_893" }, @@ -50546,7 +52256,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L953", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_953" }, @@ -50726,7 +52436,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L757", - "community": 562, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_757" }, @@ -50753,7 +52463,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L827", - "community": 497, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_827" }, @@ -50762,7 +52472,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L876", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_876" }, @@ -50825,7 +52535,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L756", - "community": 562, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_756" }, @@ -50843,7 +52553,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L826", - "community": 497, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_826" }, @@ -50879,7 +52589,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L943", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_943" }, @@ -50897,7 +52607,7 @@ "file_type": "rationale", "source_file": "main/app/prometheus/generation.py", "source_location": "L20", - "community": 162, + "community": 29, "norm_label": "thread-safe proxy that delegates to per-thread sessions.", "id": "prometheus_generation_rationale_20" }, @@ -50906,7 +52616,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L582", - "community": 112, + "community": 28, "norm_label": "tests covering query.py lines 77-132.", "id": "tests_test_stocks_api_coverage_rationale_582" }, @@ -50960,7 +52670,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L710", - "community": 562, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_710" }, @@ -50978,7 +52688,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L780", - "community": 497, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_780" }, @@ -50987,7 +52697,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L828", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_828" }, @@ -50996,7 +52706,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L837", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_837" }, @@ -51032,7 +52742,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L897", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_897" }, @@ -51041,7 +52751,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L8", - "community": 574, + "community": 596, "norm_label": "checkmysqlconnection \u2014 success, errors, engine=none paths.", "id": "tests_test_connectivity_coverage_rationale_8" }, @@ -51050,7 +52760,7 @@ "file_type": "rationale", "source_file": "tests/test_connectivity_coverage.py", "source_location": "L105", - "community": 573, + "community": 595, "norm_label": "checkserviceconnection \u2014 success, not found, errors.", "id": "tests_test_connectivity_coverage_rationale_105" }, @@ -51068,7 +52778,7 @@ "file_type": "code", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L54", - "community": 567, + "community": 500, "norm_label": "test_cache_scheduler_starts_daemon_thread()", "id": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_daemon_thread" }, @@ -51077,7 +52787,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L583", - "community": 112, + "community": 28, "norm_label": "tests covering query.py lines 77-132.", "id": "tests_test_stocks_api_coverage_rationale_583" }, @@ -51131,7 +52841,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L711", - "community": 562, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_711" }, @@ -51149,7 +52859,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L781", - "community": 497, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_781" }, @@ -51158,7 +52868,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L838", - "community": 17, + "community": 39, "norm_label": "dataframe without time column.", "id": "tests_test_stocks_api_coverage_rationale_838" }, @@ -51266,7 +52976,7 @@ "file_type": "code", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 137, + "community": 580, "norm_label": "get_session()", "id": "utils_http_session_get_session" }, @@ -51275,7 +52985,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L10", - "community": 137, + "community": 580, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_10" }, @@ -51284,7 +52994,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L23", - "community": 564, + "community": 512, "norm_label": "close the main thread's session at interpreter shutdown.", "id": "utils_http_session_rationale_23" }, @@ -51689,7 +53399,7 @@ "file_type": "rationale", "source_file": "main/utils/http_session.py", "source_location": "L9", - "community": 137, + "community": 580, "norm_label": "return a requests.session for the current thread. sessions are created la", "id": "utils_http_session_rationale_9" }, @@ -52157,7 +53867,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L489", - "community": 520, + "community": 577, "norm_label": "replacenan handles direct float nan values (line 34).", "id": "tests_test_stocks_api_coverage_rationale_489" }, @@ -52184,7 +53894,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L522", - "community": 3, + "community": 86, "norm_label": "tests covering query.py lines 50-67.", "id": "tests_test_stocks_api_coverage_rationale_522" }, @@ -52193,7 +53903,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L577", - "community": 112, + "community": 28, "norm_label": "tests covering query.py lines 77-132.", "id": "tests_test_stocks_api_coverage_rationale_577" }, @@ -52238,7 +53948,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L705", - "community": 562, + "community": 28, "norm_label": "historical query with a year range.", "id": "tests_test_stocks_api_coverage_rationale_705" }, @@ -52265,7 +53975,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L775", - "community": 497, + "community": 39, "norm_label": "invalid date -> inner 400 caught by outer except -> 500.", "id": "tests_test_stocks_api_coverage_rationale_775" }, @@ -52274,7 +53984,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L823", - "community": 17, + "community": 39, "norm_label": "search.strip() == '' should still dedup (line 181).", "id": "tests_test_stocks_api_coverage_rationale_823" }, @@ -52310,7 +54020,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_api_coverage.py", "source_location": "L892", - "community": 39, + "community": 17, "norm_label": "search with no index match falls back to string startswith.", "id": "tests_test_stocks_api_coverage_rationale_892" }, @@ -52328,7 +54038,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L62", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_62" }, @@ -52337,7 +54047,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L61", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_61" }, @@ -52346,7 +54056,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L57", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_57" }, @@ -52355,7 +54065,7 @@ "file_type": "rationale", "source_file": "tests/conftest.py", "source_location": "L49", - "community": 539, + "community": 105, "norm_label": "testclient with all routers mounted \u2014 no lifespan (no db/service init). o", "id": "tests_conftest_rationale_49" }, @@ -52895,7 +54605,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L135", - "community": 522, + "community": 590, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_cache_testqueryoptimization" }, @@ -52904,7 +54614,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 522, + "community": 590, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_cache_testqueryoptimization_test_all_optimizations_present" }, @@ -52913,7 +54623,7 @@ "file_type": "code", "source_file": "tests/test_stocks_cache.py", "source_location": "L153", - "community": 522, + "community": 590, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_cache_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -53165,7 +54875,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L136", - "community": 522, + "community": 590, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_136" }, @@ -53174,7 +54884,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L139", - "community": 522, + "community": 590, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_139" }, @@ -53183,7 +54893,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L154", - "community": 522, + "community": 590, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_154" }, @@ -53453,7 +55163,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L138", - "community": 522, + "community": 590, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_cache_rationale_138" }, @@ -53462,7 +55172,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L141", - "community": 522, + "community": 590, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_cache_rationale_141" }, @@ -53471,7 +55181,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_cache.py", "source_location": "L156", - "community": 522, + "community": 590, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_cache_rationale_156" }, @@ -53651,7 +55361,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L1", - "community": 130, + "community": 183, "norm_label": "test_stocks_optimization.py", "id": "tests_test_stocks_optimization_py" }, @@ -53714,7 +55424,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L72", - "community": 183, + "community": 101, "norm_label": "testquerycaching", "id": "tests_test_stocks_optimization_testquerycaching" }, @@ -53723,7 +55433,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L75", - "community": 183, + "community": 101, "norm_label": ".test_cache_manager_has_caches_method()", "id": "tests_test_stocks_optimization_testquerycaching_test_cache_manager_has_caches_method" }, @@ -53732,7 +55442,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L83", - "community": 183, + "community": 101, "norm_label": ".test_querycache_ttl_configuration()", "id": "tests_test_stocks_optimization_testquerycaching_test_queryCache_ttl_configuration" }, @@ -53741,7 +55451,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L91", - "community": 183, + "community": 101, "norm_label": ".test_get_cached_stocks_respects_columns_parameter()", "id": "tests_test_stocks_optimization_testquerycaching_test_get_cached_stocks_respects_columns_parameter" }, @@ -53750,7 +55460,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L101", - "community": 183, + "community": 101, "norm_label": ".test_different_queries_not_cached()", "id": "tests_test_stocks_optimization_testquerycaching_test_different_queries_not_cached" }, @@ -53759,7 +55469,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L105", - "community": 183, + "community": 101, "norm_label": ".test_cache_expiry_after_ttl()", "id": "tests_test_stocks_optimization_testquerycaching_test_cache_expiry_after_ttl" }, @@ -53768,7 +55478,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L111", - "community": 130, + "community": 183, "norm_label": "testconnectionpool", "id": "tests_test_stocks_optimization_testconnectionpool" }, @@ -53777,7 +55487,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L114", - "community": 130, + "community": 183, "norm_label": ".test_stocks_engine_has_pool_configuration()", "id": "tests_test_stocks_optimization_testconnectionpool_test_stocks_engine_has_pool_configuration" }, @@ -53786,7 +55496,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L123", - "community": 130, + "community": 183, "norm_label": "testlazydeserialization", "id": "tests_test_stocks_optimization_testlazydeserialization" }, @@ -53795,7 +55505,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L126", - "community": 130, + "community": 183, "norm_label": ".test_query_manager_has_deserialize_method()", "id": "tests_test_stocks_optimization_testlazydeserialization_test_query_manager_has_deserialize_method" }, @@ -53804,7 +55514,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L137", - "community": 130, + "community": 183, "norm_label": "testqueryoptimization", "id": "tests_test_stocks_optimization_testqueryoptimization" }, @@ -53813,7 +55523,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L140", - "community": 130, + "community": 183, "norm_label": ".test_all_optimizations_present()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" }, @@ -53822,7 +55532,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L155", - "community": 130, + "community": 183, "norm_label": ".test_query_filter_uses_optimization()", "id": "tests_test_stocks_optimization_testqueryoptimization_test_query_filter_uses_optimization" }, @@ -53894,7 +55604,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L301", - "community": 130, + "community": 183, "norm_label": "testfilterbysearchterms", "id": "tests_test_stocks_optimization_testfilterbysearchterms" }, @@ -53903,7 +55613,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L304", - "community": 130, + "community": 183, "norm_label": ".test_filter_with_tickerindex()", "id": "tests_test_stocks_optimization_testfilterbysearchterms_test_filter_with_tickerIndex" }, @@ -53912,7 +55622,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L310", - "community": 130, + "community": 183, "norm_label": "testqueryperformance", "id": "tests_test_stocks_optimization_testqueryperformance" }, @@ -53921,7 +55631,7 @@ "file_type": "code", "source_file": "tests/test_stocks_optimization.py", "source_location": "L313", - "community": 130, + "community": 183, "norm_label": ".test_query_response_time_under_1_second()", "id": "tests_test_stocks_optimization_testqueryperformance_test_query_response_time_under_1_second" }, @@ -53984,7 +55694,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L73", - "community": 183, + "community": 101, "norm_label": "tests for query result caching", "id": "tests_test_stocks_optimization_rationale_73" }, @@ -53993,7 +55703,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L76", - "community": 183, + "community": 101, "norm_label": "cachemanager should track cached queries", "id": "tests_test_stocks_optimization_rationale_76" }, @@ -54002,7 +55712,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L84", - "community": 183, + "community": 101, "norm_label": "query cache should have configurable ttl", "id": "tests_test_stocks_optimization_rationale_84" }, @@ -54011,7 +55721,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L92", - "community": 183, + "community": 101, "norm_label": "getcachedstocks should support column filtering", "id": "tests_test_stocks_optimization_rationale_92" }, @@ -54020,7 +55730,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L102", - "community": 183, + "community": 101, "norm_label": "different query parameters should not share cache", "id": "tests_test_stocks_optimization_rationale_102" }, @@ -54029,7 +55739,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L106", - "community": 183, + "community": 101, "norm_label": "cache should expire after ttl", "id": "tests_test_stocks_optimization_rationale_106" }, @@ -54038,7 +55748,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L112", - "community": 130, + "community": 183, "norm_label": "tests for connection pool configuration", "id": "tests_test_stocks_optimization_rationale_112" }, @@ -54047,7 +55757,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L115", - "community": 130, + "community": 183, "norm_label": "stocks engine should have optimized pool settings", "id": "tests_test_stocks_optimization_rationale_115" }, @@ -54056,7 +55766,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L124", - "community": 130, + "community": 183, "norm_label": "tests for lazy json deserialization", "id": "tests_test_stocks_optimization_rationale_124" }, @@ -54065,7 +55775,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L127", - "community": 130, + "community": 183, "norm_label": "query manager should have deserialize method", "id": "tests_test_stocks_optimization_rationale_127" }, @@ -54074,7 +55784,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L138", - "community": 130, + "community": 183, "norm_label": "integration tests for all query optimizations", "id": "tests_test_stocks_optimization_rationale_138" }, @@ -54083,7 +55793,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L141", - "community": 130, + "community": 183, "norm_label": "all optimizations should be implemented", "id": "tests_test_stocks_optimization_rationale_141" }, @@ -54092,7 +55802,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L156", - "community": 130, + "community": 183, "norm_label": "query filter should use ticker index", "id": "tests_test_stocks_optimization_rationale_156" }, @@ -54164,7 +55874,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L302", - "community": 130, + "community": 183, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_optimization_rationale_302" }, @@ -54173,7 +55883,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L305", - "community": 130, + "community": 183, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_optimization_rationale_305" }, @@ -54182,7 +55892,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L311", - "community": 130, + "community": 183, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_optimization_rationale_311" }, @@ -54191,7 +55901,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L314", - "community": 130, + "community": 183, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_optimization_rationale_314" }, @@ -54209,7 +55919,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L173", - "community": 130, + "community": 183, "norm_label": "tests for optimized search filtering", "id": "tests_test_stocks_optimization_rationale_173" }, @@ -54218,7 +55928,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L176", - "community": 130, + "community": 183, "norm_label": "filter should use ticker index for o(1) lookup", "id": "tests_test_stocks_optimization_rationale_176" }, @@ -54227,7 +55937,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L182", - "community": 130, + "community": 183, "norm_label": "performance tests for query operations", "id": "tests_test_stocks_optimization_rationale_182" }, @@ -54236,7 +55946,7 @@ "file_type": "rationale", "source_file": "tests/test_stocks_optimization.py", "source_location": "L185", - "community": 130, + "community": 183, "norm_label": "query should respond within 1 second", "id": "tests_test_stocks_optimization_rationale_185" }, @@ -54519,7 +56229,7 @@ "label": "FastAPI", "file_type": "rationale", "source_file": "README.md", - "community": 500, + "community": 482, "norm_label": "fastapi", "id": "fastapi" }, @@ -54559,7 +56269,7 @@ "label": "Authentication System", "file_type": "document", "source_file": "docs/authentication.md", - "community": 491, + "community": 43, "norm_label": "authentication system", "id": "authentication" }, @@ -54567,7 +56277,7 @@ "label": "JWT Authentication", "file_type": "rationale", "source_file": "docs/authentication.md", - "community": 491, + "community": 43, "norm_label": "jwt authentication", "id": "jwt" }, @@ -54575,7 +56285,7 @@ "label": "Google OAuth", "file_type": "rationale", "source_file": "docs/authentication.md", - "community": 491, + "community": 43, "norm_label": "google oauth", "id": "google_oauth" }, @@ -54663,7 +56373,7 @@ "label": "Pytest Testing", "file_type": "rationale", "source_file": "pyproject.toml", - "community": 93, + "community": 251, "norm_label": "pytest testing", "id": "pytest" }, @@ -54919,11 +56629,11 @@ "relation": "contains", "confidence": "EXTRACTED", "source_file": "config.py", - "source_location": "L79", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, "source": "config_py", - "target": "server_config_prometheussettings" + "target": "server_config_orunmilasettings" }, { "relation": "contains", @@ -54975,6 +56685,16 @@ "source": "config_py", "target": "server_config_getstockssession" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L79", + "weight": 1.0, + "confidence_score": 1.0, + "source": "config_py", + "target": "server_config_prometheussettings" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -55039,10 +56759,10 @@ "relation": "inherits", "confidence": "EXTRACTED", "source_file": "config.py", - "source_location": "L61", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "server_config_prometheussettings", + "source": "server_config_orunmilasettings", "target": "basesettings" }, { @@ -55065,6 +56785,16 @@ "source": "server_config_discordsettings", "target": "basesettings" }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L61", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_prometheussettings", + "target": "basesettings" + }, { "relation": "inherits", "confidence": "EXTRACTED", @@ -55136,90 +56866,6 @@ "source": "server_config_stocksapisettings", "target": "tests_test_config_testconfig_test_stocks_api_getitem" }, - { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L79", - "weight": 1.0, - "confidence_score": 1.0, - "source": "server_config_basemansasettings", - "target": "server_config_prometheussettings" - }, - { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "config.py", - "source_location": "L86", - "weight": 1.0, - "confidence_score": 1.0, - "source": "server_config_prometheussettings", - "target": "server_config_prometheussettings_getitem" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_config.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_prometheussettings", - "target": "tests_test_config_testconfig" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config.py", - "source_location": "L13", - "weight": 1.0, - "source": "server_config_prometheussettings", - "target": "tests_test_config_testconfig_test_prometheus_getitem" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_config_sandbox.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "server_config_prometheussettings", - "target": "tests_test_config_sandbox_testsandboxconfig" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config_sandbox.py", - "source_location": "L7", - "weight": 1.0, - "source": "server_config_prometheussettings", - "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_defaults" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config_sandbox.py", - "source_location": "L14", - "weight": 1.0, - "source": "server_config_prometheussettings", - "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_fields_exist" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_config_sandbox.py", - "source_location": "L22", - "weight": 1.0, - "source": "server_config_prometheussettings", - "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_types" - }, { "relation": "inherits", "confidence": "EXTRACTED", @@ -55284,62 +56930,62 @@ { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", + "source_file": "main/app/orunmila/agent.py", "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "server_config_config", - "target": "prometheus_agent_prometheus" + "source": "orunmila_agent_orunmila", + "target": "server_config_config" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L52", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_compact_prometheuscompactor", + "source": "orunmila_compact_orunmilacompactor", "target": "server_config_config" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L8", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_mcp_mcpclientpool", + "source": "orunmila_mcp_mcpclientpool", "target": "server_config_config" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/orunmila/memory.py", "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", + "source": "orunmila_memory_memorycandidate", "target": "server_config_config" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L38", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", + "source": "orunmila_memory_orunmilamemory", "target": "server_config_config" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L14", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "server_config_config", - "target": "prometheus_sandbox_sandboxmanager" + "source": "orunmila_sandbox_sandboxmanager", + "target": "server_config_config" }, { "relation": "uses", @@ -55381,6 +57027,86 @@ "source": "server_config_config", "target": "utils_logging_config_discordhandler" }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/roles.py", + "source_location": "L70", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/roles.py", + "source_location": "L70", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "prometheus_agent_prometheus" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L52", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_compact_prometheuscompactor", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_mcp_mcpclientpool", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L38", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "server_config_config" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "server_config_config", + "target": "prometheus_sandbox_sandboxmanager" + }, { "relation": "uses", "confidence": "INFERRED", @@ -59611,6 +61337,16 @@ "source": "main_app_authentication_authentication_py", "target": "authentication_authentication_authenticateuser" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/authentication/authentication.py", + "source_location": "L79", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_authentication_authentication_py", + "target": "authentication_authentication_resolveuniqueusername" + }, { "relation": "uses", "confidence": "INFERRED", @@ -59754,6 +61490,49 @@ "source": "authentication_authentication_authenticateuser", "target": "authentication_util_verifypassword" }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/app/authentication/introspect.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_authentication_introspect_py", + "target": "fastapi" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/authentication/introspect.py", + "source_location": "L10", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_authentication_introspect_py", + "target": "authentication_introspect_introspecttoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/authentication/introspect.py", + "source_location": "L15", + "weight": 1.0, + "source": "authentication_introspect_introspecttoken", + "target": "authentication_util_verifyaccesstoken" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/authentication_controller.py", + "source_location": "L167", + "weight": 1.0, + "source": "controller_authentication_controller_introspect", + "target": "authentication_introspect_introspecttoken" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -59834,6 +61613,16 @@ "source": "main_app_authentication_session_py", "target": "authentication_session_revokeallsessions" }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/authentication/session.py", + "source_location": "L122", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_authentication_session_py", + "target": "authentication_session_revokeallexcept" + }, { "relation": "contains", "confidence": "EXTRACTED", @@ -60042,22 +61831,22 @@ "context": "call", "confidence": "EXTRACTED", "source_file": "main/app/authentication/session.py", - "source_location": "L81", + "source_location": "L133", "weight": 1.0, "confidence_score": 1.0, "source": "authentication_session_getsessionbyid", - "target": "authentication_session_revokesession" + "target": "authentication_session_validatesession" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", "source_file": "main/app/authentication/session.py", - "source_location": "L133", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, "source": "authentication_session_getsessionbyid", - "target": "authentication_session_validatesession" + "target": "authentication_session_revokesession" }, { "relation": "contains", @@ -60471,6 +62260,17 @@ "source": "authentication_util_verifyaccesstoken", "target": "controller_authentication_controller_logout" }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/authentication_controller.py", + "source_location": "L260", + "weight": 1.0, + "source": "controller_authentication_controller_introspect", + "target": "authentication_util_verifyaccesstoken" + }, { "relation": "calls", "context": "call", @@ -60589,9477 +62389,11355 @@ "source_file": "tests/test_user_deps.py", "source_location": "L74", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_empty_user_id_raises_401" + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_empty_user_id_raises_401" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_user_deps.py", + "source_location": "L83", + "weight": 1.0, + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_empty_bearer_value_raises_401" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_user_deps.py", + "source_location": "L92", + "weight": 1.0, + "source": "authentication_util_extracttokenpayload", + "target": "tests_test_user_deps_testextracttokenpayload_test_non_bearer_auth_header_raises_401" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_safefilter" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_persistevent" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_getclient" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L208", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_orunmila" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L213", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_agent_py", + "target": "orunmila_agent_buildsystemprompt" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L347", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_agent_persistevent" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L210", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila_init", + "target": "orunmila_agent_getclient" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L209", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila", + "target": "orunmila_agent_orunmila_init" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L242", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila", + "target": "orunmila_agent_orunmila_makechat" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L253", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila", + "target": "orunmila_agent_orunmila_streammessage" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "models_orunmila_orunmilasession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "models_memory_orunmilamemory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "orunmila_chat_orunmilachatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L15", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "orunmila_compact_orunmilacompactor" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_agent_orunmila", + "target": "orunmila_sandbox_sandboxmanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L294", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_agent_buildsystemprompt" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L228", + "weight": 1.0, + "source": "orunmila_agent_buildsystemprompt", + "target": "orunmila_compact_orunmilacompactor" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/agent.py", + "source_location": "L306", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_agent_orunmila_makechat" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L257", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_compact_loadfielddata" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L262", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_memory_newtokencache" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L265", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_compact_orunmilacompactor" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L283", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_memory_extract" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/agent.py", + "source_location": "L370", + "weight": 1.0, + "source": "orunmila_agent_orunmila_streammessage", + "target": "orunmila_tools_dispatchtoolcall" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_orunmilachatmanager" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_getusersessions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_createsession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_updatesessiontitle" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L52", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_appendhistory" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L71", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_gethistory" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_deletesession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L106", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_chat_py", + "target": "orunmila_chat_verifysessionownership" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/chat.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_chat_orunmilachatmanager", + "target": "models_orunmila_orunmilasession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L26", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_memorycandidate", + "target": "orunmila_chat_orunmilachatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L26", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_memory_orunmilamemory", + "target": "orunmila_chat_orunmilachatmanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/chat.py", + "source_location": "L35", + "weight": 1.0, + "source": "orunmila_chat_createsession", + "target": "models_orunmila_orunmilasession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_gettokenizer" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_counttokens" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L64", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_getstocksfieldsurl" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L68", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_istransientfieldserror" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L83", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_fetchfieldspayload" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L89", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_loadfielddata" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L105", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_getmetricregex" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L119", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_dedup" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L123", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extracttickers" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L127", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extractmetrics" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L131", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extractdecisions" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L145", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extractsnapshots" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L158", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_extracttoolcalls" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L174", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_buildsummary" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L195", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_compact_py", + "target": "orunmila_compact_orunmilacompactor" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_counttokens", + "target": "orunmila_compact_gettokenizer" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L201", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_shouldcompact", + "target": "orunmila_compact_counttokens" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/memory.py", + "source_location": "L183", + "weight": 1.0, + "source": "orunmila_memory_sumtokens", + "target": "orunmila_compact_counttokens" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L84", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_fetchfieldspayload", + "target": "orunmila_compact_getstocksfieldsurl" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L93", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_loadfielddata", + "target": "orunmila_compact_fetchfieldspayload" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L108", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_getmetricregex", + "target": "orunmila_compact_loadfielddata" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L128", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_extractmetrics", + "target": "orunmila_compact_getmetricregex" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L124", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_extracttickers", + "target": "orunmila_compact_dedup" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L128", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_extractmetrics", + "target": "orunmila_compact_dedup" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L142", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_extractdecisions", + "target": "orunmila_compact_dedup" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L155", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_extractsnapshots", + "target": "orunmila_compact_dedup" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L171", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_extracttoolcalls", + "target": "orunmila_compact_dedup" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L236", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_dedup" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L265", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_consolidate", + "target": "orunmila_compact_dedup" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L229", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extracttickers" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L230", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extractmetrics" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L231", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extractdecisions" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L232", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extractsnapshots" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L233", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_extracttoolcalls" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L235", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_extractepisode", + "target": "orunmila_compact_buildsummary" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L196", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_shouldcompact" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L213", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_getcompactablechunk" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L222", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_extractepisode" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L244", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_consolidate" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L271", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_compact" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L310", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor", + "target": "orunmila_compact_orunmilacompactor_getepisodes" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L16", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_compact_orunmilacompactor", + "target": "models_orunmila_orunmilasession" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L280", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_shouldcompact" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L278", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_getcompactablechunk" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L283", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_extractepisode" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L296", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_consolidate" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/compact.py", + "source_location": "L277", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_compact_orunmilacompactor_compact", + "target": "orunmila_compact_orunmilacompactor_getepisodes" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_mcp_py", + "target": "orunmila_mcp_buildclient" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L29", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_mcp_py", + "target": "orunmila_mcp_connect" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_mcp_py", + "target": "orunmila_mcp_mcpclientpool" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_connect", + "target": "orunmila_mcp_buildclient" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool_initialize", + "target": "orunmila_mcp_connect" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L84", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool_reconnect", + "target": "orunmila_mcp_connect" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_init" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_initialize" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L56", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_getclients" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L63", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_healthcheck" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L75", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_reconnect" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L90", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool", + "target": "orunmila_mcp_mcpclientpool_close" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L58", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool_getclients", + "target": "orunmila_mcp_mcpclientpool_initialize" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool_getclients", + "target": "orunmila_mcp_mcpclientpool_healthcheck" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/mcp.py", + "source_location": "L73", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_mcp_mcpclientpool_healthcheck", + "target": "orunmila_mcp_mcpclientpool_reconnect" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_getmatrix" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L53", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_invalidateuser" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_clearall" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L64", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_memorycandidate" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L90", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_newtokencache" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L97", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_getclient" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L83", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L104", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_empty_bearer_value_raises_401" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_minmax" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_user_deps.py", - "source_location": "L92", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L113", "weight": 1.0, - "source": "authentication_util_extracttokenpayload", - "target": "tests_test_user_deps_testextracttokenpayload_test_non_bearer_auth_header_raises_401" + "confidence_score": 1.0, + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_normalizekey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L26", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_safefilter" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_findsimilarkey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L31", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L140", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_persistevent" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_scorerow" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L58", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L152", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_getclient" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_scorerecency" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L134", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L162", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_prometheus" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_scorecandidates" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L139", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_buildsystemprompt" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_sumtokens" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L21", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L194", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_safe_filter" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_orunmilamemory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L27", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L196", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_onextractiondone" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_getmemorylimit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L35", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L202", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_spawnextraction" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_countmemories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L58", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L211", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_get_client" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_touch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L161", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L222", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_openmcpclients" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_upsertmemory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L90", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L286", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_executememorytool" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_search" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L27", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L349", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_build_system_prompt" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_fulltextsearch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L57", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L407", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_get_memory_tools" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_getusermemories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L92", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L432", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_execute_memory_tool" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_deletememory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L47", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L450", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_agent_py", - "target": "prometheus_agent_chatsession" + "source": "main_app_orunmila_memory_py", + "target": "orunmila_memory_extract" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L344", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L330", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_persistevent" + "source": "orunmila_memory_search", + "target": "orunmila_memory_getmatrix" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L223", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L248", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_init", - "target": "prometheus_agent_getclient" + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_invalidateuser" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L135", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L445", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_init" + "source": "orunmila_memory_deletememory", + "target": "orunmila_memory_invalidateuser" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L169", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/orunmila_service.py", + "source_location": "L52", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_makechat" + "source": "service_orunmila_service_memorymaintenance", + "target": "orunmila_memory_invalidateuser" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L178", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_streammessage" + "source": "orunmila_memory_memorycandidate", + "target": "basemodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L13", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L22", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "models_prometheus_prometheussession" + "source": "orunmila_memory_memorycandidate", + "target": "models_memory_orunmilamemory" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L11", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L23", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "models_memory_prometheusmemory" + "source": "orunmila_memory_memorycandidate", + "target": "utils_roles_permission" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L12", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L23", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_chat_prometheuschatmanager" + "source": "orunmila_memory_memorycandidate", + "target": "utils_roles_roles" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L18", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_compact_prometheuscompactor" + "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": "main/app/prometheus/agent.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_sandbox_sandboxmanager" + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L64", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_memory_memorycandidate", + "target": "basemodel" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L16", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_events_looplogger" + "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": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L15", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_compact_fieldregistry" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L490", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_memory_getclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L16", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_mcp_mcpclientpool" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L338", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_memory_minmax" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_state_harnessstate" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L126", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_findsimilarkey", + "target": "orunmila_memory_normalizekey" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_summarizer_prometheussummarizer" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L252", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_findsimilarkey" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_state_integration_testbuildsystempromptstate" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L157", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_scorerecency", + "target": "orunmila_memory_scorerow" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_state_integration_testsendmessagestateintegration" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L176", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_scorecandidates", + "target": "orunmila_memory_scorerow" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_state_integration_teststreammessagestateintegration" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L314", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_memory_scorerecency" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_agent_state_integration.py", - "source_location": "L192", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_state_integration_testsystempromptstateinstructions" + "confidence_score": 0.8, + "source_file": "main/app/orunmila/memory.py", + "source_location": "L156", + "weight": 1.0, + "source": "orunmila_memory_scorerecency", + "target": "orunmila_vector_getrelevancescore" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L90", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testmemorytoolfunctions" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L342", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_memory_scorecandidates" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L90", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testtoolregistry" + "confidence_score": 0.8, + "source_file": "main/app/orunmila/memory.py", + "source_location": "L172", + "weight": 1.0, + "source": "orunmila_memory_scorecandidates", + "target": "orunmila_vector_getrelevancescore" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L58", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L476", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_memory_sumtokens" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L58", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L22", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" + "source": "orunmila_memory_orunmilamemory", + "target": "models_memory_orunmilamemory" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L23", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testprometheusinit" + "source": "orunmila_memory_orunmilamemory", + "target": "utils_roles_permission" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L23", "weight": 0.8, "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" + "source": "orunmila_memory_orunmilamemory", + "target": "utils_roles_roles" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L263", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_getmemorylimit" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L483", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_memory_getmemorylimit" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testsessionmanager" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L264", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_countmemories" }, { - "relation": "uses", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L483", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_memory_countmemories" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L244", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_memory_touch" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L543", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_memory_upsertmemory" + }, + { + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L159", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_prometheus_auth_coverage_testsso" + "confidence_score": 0.8, + "source_file": "main/app/orunmila/memory.py", + "source_location": "L240", + "weight": 1.0, + "source": "orunmila_memory_upsertmemory", + "target": "orunmila_vector_contenthash" }, { - "relation": "uses", + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/memory.py", + "source_location": "L339", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_memory_fulltextsearch" + }, + { + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_streammessage_no_chatsession_fakechunk" + "confidence_score": 0.8, + "source_file": "main/app/orunmila/memory.py", + "source_location": "L332", + "weight": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_vector_embed" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_streammessage_no_chatsession.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_streammessage_no_chatsession_teststreammessagenochatsession" + "confidence_score": 0.8, + "source_file": "main/app/orunmila/memory.py", + "source_location": "L333", + "weight": 1.0, + "source": "orunmila_memory_search", + "target": "orunmila_vector_batchcosinesimilarity" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" + "confidence_score": 0.8, + "source_file": "main/app/orunmila/memory.py", + "source_location": "L424", + "weight": 1.0, + "source": "orunmila_memory_getusermemories", + "target": "orunmila_vector_getrelevancescore" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L31", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "models_memory_usermemory" + "confidence_score": 0.8, + "source_file": "main/app/orunmila/memory.py", + "source_location": "L533", + "weight": 1.0, + "source": "orunmila_memory_extract", + "target": "orunmila_vector_embed" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L34", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_sendmessage" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_lockfor" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_sandbox_integration_testagentsandboxintegration" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_getclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_agent_sandbox_integration_testpremiumcheck" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_hostpath" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L15", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_cache_resultcache" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L46", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_sandboxpath" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L58", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "tests_test_memory_tools_wiring_testmemorytoolsdefinition" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_sandboxmanager" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L102", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_executetoolcall" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_create" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L94", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_agent_prometheus", - "target": "prometheus_memory_memorymanager" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L69", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_destroy" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L21", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus", - "target": "prometheus_agent_prometheus_updatedates" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_getorcreate" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L224", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_init", - "target": "prometheus_agent_get_client" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_execute" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L19", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_init", - "target": "prometheus_agent_prometheus_updatedates" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_read_file" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L182", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_buildsystemprompt" + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_write_file" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L185", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_list_files" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L193", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_delete_file" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L210", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_synctosandbox" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L229", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_orunmila_sandbox_py", + "target": "orunmila_sandbox_syncfromsandbox" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L213", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L82", "weight": 1.0, - "source": "prometheus_agent_buildsystemprompt", - "target": "prometheus_compact_prometheuscompactor" + "confidence_score": 1.0, + "source": "orunmila_sandbox_getorcreate", + "target": "orunmila_sandbox_lockfor" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L163", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L54", "weight": 1.0, - "source": "prometheus_agent_buildsystemprompt", - "target": "prometheus_summarizer_prometheussummarizer" + "confidence_score": 1.0, + "source": "orunmila_sandbox_create", + "target": "orunmila_sandbox_getclient" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L261", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_buildsystemprompt", - "target": "prometheus_agent_prometheus_sendmessage" + "source": "orunmila_sandbox_destroy", + "target": "orunmila_sandbox_getclient" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L186", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_prometheus_makechat" + "source": "orunmila_sandbox_getorcreate", + "target": "orunmila_sandbox_getclient" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L160", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_makechat", - "target": "prometheus_agent_prometheus_sendmessage" + "source": "orunmila_sandbox_execute", + "target": "orunmila_sandbox_getclient" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L212", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L215", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_makechat", - "target": "prometheus_agent_get_memory_tools" + "source": "orunmila_sandbox_synctosandbox", + "target": "orunmila_sandbox_getclient" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L251", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L230", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_compact_loadfielddata" + "confidence_score": 1.0, + "source": "orunmila_sandbox_syncfromsandbox", + "target": "orunmila_sandbox_getclient" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L262", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L165", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_memory_newtokencache" + "confidence_score": 1.0, + "source": "orunmila_sandbox_read_file", + "target": "orunmila_sandbox_hostpath" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L256", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L173", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_compact_prometheuscompactor" + "confidence_score": 1.0, + "source": "orunmila_sandbox_write_file", + "target": "orunmila_sandbox_hostpath" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L252", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L186", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_memory_extract" + "confidence_score": 1.0, + "source": "orunmila_sandbox_list_files", + "target": "orunmila_sandbox_hostpath" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L231", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L195", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_tools_dispatchtoolcall" + "confidence_score": 1.0, + "source": "orunmila_sandbox_delete_file", + "target": "orunmila_sandbox_hostpath" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L272", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_spawnextraction" + "source": "orunmila_sandbox_syncfromsandbox", + "target": "orunmila_sandbox_hostpath" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L202", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L169", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_events_looplogger" + "source": "orunmila_tools_serve_file", + "target": "orunmila_sandbox_hostpath" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L239", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L185", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_mcp_mcpclientpool" + "source": "controller_orunmila_controller_downloadworkspacefile", + "target": "orunmila_sandbox_hostpath" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L242", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L189", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_compact_fieldregistry" + "confidence_score": 1.0, + "source": "orunmila_sandbox_list_files", + "target": "orunmila_sandbox_sandboxpath" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "orunmila_sandbox_sandboxmanager", + "target": "models_sandbox_orunmilasandbox" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L182", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L110", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_state_harnessstate" + "confidence_score": 1.0, + "source": "orunmila_sandbox_getorcreate", + "target": "orunmila_sandbox_create" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L185", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L121", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_openmcpclients" + "source": "orunmila_sandbox_getorcreate", + "target": "orunmila_sandbox_synctosandbox" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L293", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L158", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_summarizer_prometheussummarizer" + "confidence_score": 1.0, + "source": "orunmila_sandbox_execute", + "target": "orunmila_sandbox_getorcreate" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/agent.py", - "source_location": "L203", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L113", "weight": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_cache_resultcache" + "source": "orunmila_sandbox_getorcreate", + "target": "models_sandbox_orunmilasandbox" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L208", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L133", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_prometheus_executetoolcall" + "source": "orunmila_sandbox_execute", + "target": "orunmila_sandbox_synctosandbox" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L281", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_build_system_prompt" + "source": "orunmila_sandbox_execute", + "target": "orunmila_sandbox_syncfromsandbox" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/agent.py", - "source_location": "L88", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L237", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_agent_prometheus_streammessage", - "target": "prometheus_agent_chatsession" + "source": "orunmila_sandbox_syncfromsandbox", + "target": "orunmila_sandbox_read_file" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L15", + "source_file": "main/app/orunmila/sandbox.py", + "source_location": "L222", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_prometheuschatmanager" + "source": "orunmila_sandbox_synctosandbox", + "target": "orunmila_sandbox_write_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L17", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_getusersessions" + "source": "main_app_orunmila_stream_bus_py", + "target": "orunmila_stream_bus_streamchannel" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L35", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_createsession" + "source": "main_app_orunmila_stream_bus_py", + "target": "orunmila_stream_bus_streambus" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L43", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_updatesessiontitle" + "source": "orunmila_stream_bus_streamchannel", + "target": "orunmila_stream_bus_streamchannel_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L52", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_appendhistory" + "source": "orunmila_stream_bus_streamchannel", + "target": "orunmila_stream_bus_streamchannel_publish" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L82", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_gethistory" + "source": "orunmila_stream_bus_streambus_getorcreate", + "target": "orunmila_stream_bus_streamchannel" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L105", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_deletesession" + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L119", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_verifysessionownership" + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_getorcreate" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L54", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_savemessage" + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_publish" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L76", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_saveloopevent" + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_subscribe" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L98", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_chat_py", - "target": "prometheus_chat_updatesummary" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "models_prometheus_prometheussession" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L26", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "prometheus_chat_prometheuschatmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L319", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "prometheus_chat_prometheuschatmanager" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L383", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusinit" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L383", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_unsubscribe" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L64", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_startrun" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L86", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_eventgenerator" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testsessionmanager" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L109", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_streamresponse" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testsso" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L112", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus", + "target": "orunmila_stream_bus_streambus_forward" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L446", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L44", "weight": 1.0, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_init" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus_publish", + "target": "orunmila_stream_bus_streambus_getorcreate" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_prometheus_auth_coverage.py", - "source_location": "L650", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L65", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus_startrun", + "target": "orunmila_stream_bus_streambus_getorcreate" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "prometheus_generation_prometheusgenerator" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L87", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus_eventgenerator", + "target": "orunmila_stream_bus_streambus_subscribe" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/chat.py", - "source_location": "L11", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_chat_prometheuschatmanager", - "target": "prometheus_chat_prometheuschatmanager_init" + "source": "orunmila_stream_bus_streambus_forward", + "target": "orunmila_stream_bus_streambus_subscribe" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_chat_prometheuschatmanager", - "target": "prometheus_generation_sessionproxy" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L107", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus_eventgenerator", + "target": "orunmila_stream_bus_streambus_unsubscribe" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/chat.py", - "source_location": "L41", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L134", "weight": 1.0, - "source": "prometheus_chat_createsession", - "target": "models_prometheus_prometheussession" + "confidence_score": 1.0, + "source": "orunmila_stream_bus_streambus_forward", + "target": "orunmila_stream_bus_streambus_unsubscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L33", + "source_file": "main/app/orunmila/stream_bus.py", + "source_location": "L110", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_gettokenizer" + "source": "orunmila_stream_bus_streambus_streamresponse", + "target": "orunmila_stream_bus_streambus_eventgenerator" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L45", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_counttokens" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_search_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L92", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_getstocksfieldsurl" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_save_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L67", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_istransientfieldserror" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_execute_code" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L82", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_fetchfieldspayload" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_read_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L93", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_loadfielddata" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_write_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L133", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_getmetricregex" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_list_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L117", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L157", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_dedup" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_serve_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L109", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L190", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extracttickers" + "source": "main_app_orunmila_tools_py", + "target": "orunmila_tools_dispatchtoolcall" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L113", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extractmetrics" + "source": "orunmila_tools_rationale_21", + "target": "orunmila_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L123", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extractdecisions" + "source": "orunmila_tools_rationale_52", + "target": "orunmila_tools_save_memory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/orunmila/tools.py", + "source_location": "L70", + "weight": 1.0, + "source": "orunmila_tools_save_memory", + "target": "orunmila_vector_embed" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L137", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extractsnapshots" + "source": "orunmila_tools_rationale_94", + "target": "orunmila_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L150", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_extracttoolcalls" + "source": "orunmila_tools_rationale_115", + "target": "orunmila_tools_read_file" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L129", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_129", + "target": "orunmila_tools_write_file" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L145", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_145", + "target": "orunmila_tools_list_files" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/app/orunmila/tools.py", + "source_location": "L158", + "weight": 1.0, + "confidence_score": 1.0, + "source": "orunmila_tools_rationale_158", + "target": "orunmila_tools_serve_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L166", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_buildsummary" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_normalizerows" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L186", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_prometheuscompactor" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_embed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L119", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_gethistoricalfields" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_decodeembeddings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L123", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_getfundamentalcolumns" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_batchcosinesimilarity" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L127", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_invalidatefielddata" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_contenthash" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L41", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_fieldregistry" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_tovectorstring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L105", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_compact_py", - "target": "prometheus_compact_charcount" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_fromvectorstring" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L48", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_counttokens", - "target": "prometheus_compact_gettokenizer" + "source": "main_app_orunmila_vector_py", + "target": "orunmila_vector_getrelevancescore" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L228", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_shouldcompact", - "target": "prometheus_compact_counttokens" + "source": "orunmila_vector_batchcosinesimilarity", + "target": "orunmila_vector_normalizerows" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L191", + "source_file": "main/app/orunmila/vector.py", + "source_location": "L16", "weight": 1.0, - "source": "prometheus_memory_sumtokens", - "target": "prometheus_compact_counttokens" + "source": "orunmila_vector_embed", + "target": "models_loader_getembeddingmodel" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L347", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L32", "weight": 1.0, - "source": "prometheus_memory_counttokenscached", - "target": "prometheus_compact_counttokens" + "confidence_score": 1.0, + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_getcurrentselic" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L340", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L31", "weight": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_compact_counttokens" + "confidence_score": 1.0, + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_b3scraper" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L154", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_charcount", - "target": "prometheus_compact_counttokens" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_getinitialdata" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L83", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_fetchfieldspayload", - "target": "prometheus_compact_getstocksfieldsurl" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicalrentability" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L108", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_loadfielddata", - "target": "prometheus_compact_getstocksfieldsurl" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicaldividends" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L92", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_loadfielddata", - "target": "prometheus_compact_fetchfieldspayload" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicaldividendyields" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L136", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L188", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_getmetricregex", - "target": "prometheus_compact_loadfielddata" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicalrevenue" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L120", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_gethistoricalfields", - "target": "prometheus_compact_loadfielddata" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicalcotationprofits" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L124", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_getfundamentalcolumns", - "target": "prometheus_compact_loadfielddata" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_historicalcotations" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L97", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L252", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_rationale_97", - "target": "prometheus_compact_loadfielddata" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_tagalong" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L95", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L276", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_rationale_95", - "target": "prometheus_compact_loadfielddata" + "source": "main_app_scraper_b3_scraper_py", + "target": "scraper_b3_scraper_stocknews" }, { - "relation": "calls", - "context": "call", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L151", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractmetrics", - "target": "prometheus_compact_getmetricregex" + "source": "main_app_scraper_b3_scraper_py", + "target": "main_app_scraper_b3_xango_py" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L122", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extracttickers", - "target": "prometheus_compact_dedup" + "source": "scraper_b3_scraper_getcurrentselic", + "target": "scraper_b3_scraper_b3scraper_init" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L128", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractmetrics", - "target": "prometheus_compact_dedup" + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_init" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L142", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L222", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractdecisions", - "target": "prometheus_compact_dedup" + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_historicalcotationprofits_oceans14" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L155", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L289", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractsnapshots", - "target": "prometheus_compact_dedup" + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_fundamentalindicators" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L171", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L438", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extracttoolcalls", - "target": "prometheus_compact_dedup" + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_processticker" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L236", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L469", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_dedup" + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_scrapestocks" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L265", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L519", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_consolidate", - "target": "prometheus_compact_dedup" + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_reordercolumns" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L529", + "weight": 1.0, + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_serializecomplextypes" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L550", + "weight": 1.0, + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_exportjson" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L586", + "weight": 1.0, + "confidence_score": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "scraper_b3_scraper_b3scraper_exportmysql" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/scraper_service.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "scraper_b3_scraper_b3scraper", + "target": "service_scraper_service_scraperservice" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/scraper_service.py", + "source_location": "L18", + "weight": 1.0, + "source": "scraper_b3_scraper_b3scraper", + "target": "service_scraper_service_runscraper" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L212", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L470", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extracttickers" + "source": "scraper_b3_scraper_getinitialdata", + "target": "scraper_b3_scraper_b3scraper_scrapestocks" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L213", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L461", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extractmetrics" + "source": "scraper_b3_scraper_b3scraper_fundamentalindicators", + "target": "scraper_b3_scraper_b3scraper_processticker" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L392", + "weight": 1.0, + "source": "scraper_b3_scraper_b3scraper_fundamentalindicators", + "target": "scraper_b3_xango_calculateinvestingscore" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L115", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L477", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_extractmetrics", - "target": "prometheus_compact_fieldregistry_getmetricregex" + "source": "scraper_b3_scraper_b3scraper_processticker", + "target": "scraper_b3_scraper_b3scraper_scrapestocks" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L214", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L513", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extractdecisions" + "source": "scraper_b3_scraper_b3scraper_scrapestocks", + "target": "scraper_b3_scraper_b3scraper_reordercolumns" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L215", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L514", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extractsnapshots" + "source": "scraper_b3_scraper_b3scraper_scrapestocks", + "target": "scraper_b3_scraper_b3scraper_serializecomplextypes" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L216", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L516", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_extracttoolcalls" + "source": "scraper_b3_scraper_b3scraper_scrapestocks", + "target": "scraper_b3_scraper_b3scraper_exportjson" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L218", + "source_file": "main/app/scraper_b3/scraper.py", + "source_location": "L517", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_extractepisode", - "target": "prometheus_compact_buildsummary" + "source": "scraper_b3_scraper_b3scraper_scrapestocks", + "target": "scraper_b3_scraper_b3scraper_exportmysql" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L190", + "source_file": "main/app/scraper_b3/xango.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_shouldcompact" + "source": "main_app_scraper_b3_xango_py", + "target": "scraper_b3_xango_calculateinvestingscore" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L196", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_getcompactablechunk" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_optimizedtypes" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L205", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_extractepisode" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_arrowtypefor" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L227", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_consolidate" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_buildfeathercache" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L254", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_compact" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_trybuildlock" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L293", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L170", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_getepisodes" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_sortcacheframe" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_compact_prometheuscompactor", - "target": "models_prometheus_prometheussession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L190", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_buildtickerindex" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L187", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor", - "target": "prometheus_compact_prometheuscompactor_init" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_stockscachemanager" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L265", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_shouldcompact" + "source": "main_app_stocks_api_cache_py", + "target": "stocks_api_cache_buildcotationdateindex" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L193", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_shouldcompact", - "target": "prometheus_compact_charcount" + "source": "stocks_api_cache_buildfeathercache", + "target": "stocks_api_cache_optimizedtypes" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L263", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_getcompactablechunk" + "source": "stocks_api_cache_optimizedtypes", + "target": "stocks_api_cache_stockscachemanager_getcachedstocks" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L268", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_extractepisode" + "source": "stocks_api_cache_buildfeathercache", + "target": "stocks_api_cache_arrowtypefor" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L281", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_consolidate" + "source": "stocks_api_cache_rationale_59", + "target": "stocks_api_cache_arrowtypefor" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/compact.py", - "source_location": "L262", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L157", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_compact_prometheuscompactor_compact", - "target": "prometheus_compact_prometheuscompactor_getepisodes" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_trybuildlock" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L26", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_buildclient" + "source": "stocks_api_cache_rationale_91", + "target": "stocks_api_cache_trybuildlock" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L29", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L239", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_connect" + "source": "stocks_api_cache_stockscachemanager_loadfromfeather", + "target": "stocks_api_cache_sortcacheframe" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L15", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_mcpclientpool" + "source": "stocks_api_cache_rationale_171", + "target": "stocks_api_cache_sortcacheframe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L10", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L240", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_ensurefastmcp" + "source": "stocks_api_cache_stockscachemanager_loadfromfeather", + "target": "stocks_api_cache_buildtickerindex" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L16", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_mcp_py", - "target": "prometheus_mcp_parseservers" + "source": "stocks_api_cache_rationale_191", + "target": "stocks_api_cache_buildtickerindex" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L30", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_mcp_connect", - "target": "prometheus_mcp_buildclient" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_init" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L55", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_initialize", - "target": "prometheus_mcp_buildclient" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_snapshot" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L95", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_reconnect", - "target": "prometheus_mcp_buildclient" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_cachescheduler" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L34", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_mcp_buildclient", - "target": "prometheus_mcp_ensurefastmcp" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_loadfromfeather" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L47", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_initialize", - "target": "prometheus_mcp_connect" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_getcachedstocks" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_teststockscachemanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testverifyapikey" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testgeneratesecurekey" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testcreatekey" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testfilterbysearchterms" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testqueryhistorical" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L724", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testqueryfundamental" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L988", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testquerycotations" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1260", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_testquerylivecotation" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L84", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L50", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_reconnect", - "target": "prometheus_mcp_connect" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_teststockscachemanager_make_manager" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L33", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L58", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_init" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_apscheduler" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L26", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_initialize" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_putcache" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L41", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_getclients" + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_cache_stockscachemanager_clearquerycache" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L48", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "stocks_api_query_stocksquerymanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_cache.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcachelrueviction" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_cache.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcolumnvalidator" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_cache.py", + "source_location": "L11", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcachettllogic" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_cache.py", + "source_location": "L20", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_healthcheck" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcachelrueviction_make_manager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_cache.py", + "source_location": "L110", + "weight": 1.0, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_cache_testcachettllogic_make_manager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L58", + "weight": 1.0, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_daemon_thread" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testconnectionpool" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testlazydeserialization" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L60", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_reconnect" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testqueryoptimization" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L78", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_close" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L21", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool", - "target": "prometheus_mcp_mcpclientpool_new" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testfilterbysearchterms" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L43", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_getclients", - "target": "prometheus_mcp_mcpclientpool_initialize" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_cache.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testqueryperformance" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L46", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L22", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_initialize", - "target": "prometheus_mcp_parseservers" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_built_after_cache_load" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L45", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L30", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_getclients", - "target": "prometheus_mcp_mcpclientpool_healthcheck" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_contains_all_tickers" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L58", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_healthcheck", - "target": "prometheus_mcp_mcpclientpool_reconnect" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_case_insensitive" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/mcp.py", - "source_location": "L87", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_mcp_mcpclientpool_reconnect", - "target": "prometheus_mcp_parseservers" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L53", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getmatrix" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L63", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_invalidateuser" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L67", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_clearall" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L64", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L49", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_memorycandidate" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_ticker_lookup_returns_valid_index" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L90", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_newtokencache" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_rebuilt_on_cache_refresh" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L35", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L77", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getclient" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching_test_cache_manager_has_caches_method" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L48", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L85", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_minmax" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching_test_querycache_ttl_configuration" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L93", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_normalizekey" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching_test_get_cached_stocks_respects_columns_parameter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L23", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L142", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_findsimilarkey" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testqueryoptimization_test_all_optimizations_present" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L123", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L180", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_scorerow" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_tickerindex_lookup_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L141", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L200", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_scorerecency" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_prefix_scan_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L159", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L220", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_scorecandidates" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L187", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L250", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_sumtokens" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_querycache_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L16", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L273", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_prometheusmemory" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_column_projection_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L289", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getmemorylimit" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_cache_initialization_time" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L23", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L22", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_countmemories" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_built_after_cache_load" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L194", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L30", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_touch" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_contains_all_tickers" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L32", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_upsertmemory" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_case_insensitive" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L89", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_search" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_rebuilt_on_cache_refresh" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L134", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L85", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_fulltextsearch" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testquerycaching_test_queryCache_ttl_configuration" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L163", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L180", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getusermemories" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_tickerIndex_lookup_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L189", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_cache.py", + "source_location": "L250", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_deletememory" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_cache_testperformancebenchmarks_test_queryCache_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L318", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_extract" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L41", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_matrixkey" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testquerycaching" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L48", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_matrixusertag" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testconnectionpool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L342", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_counttokenscached" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testlazydeserialization" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L43", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_getmatrixasync" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testqueryoptimization" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L55", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_invalidateuserasync" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L59", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_clearallasync" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testfilterbysearchterms" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L244", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_upsertmemoryasync" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testqueryperformance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L333", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L22", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_searchasync" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_built_after_cache_load" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L483", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L30", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_deletememoryasync" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_contains_all_tickers" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L50", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_applyupdate" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_case_insensitive" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L49", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_normalize_key" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_ticker_lookup_returns_valid_index" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L216", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_archivedead" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_rebuilt_on_cache_refresh" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L16", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L77", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_now" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testquerycaching_test_cache_manager_has_caches_method" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L203", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L85", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_decayscores" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testquerycaching_test_queryCache_ttl_configuration" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L13", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L93", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_memorymanager" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testquerycaching_test_get_cached_stocks_respects_columns_parameter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L17", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L142", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_get_memory_limit" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L24", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L180", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_count_memories" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_tickerIndex_lookup_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L34", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L200", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_upsert_memory" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_prefix_scan_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L138", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L220", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_fulltext_search" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L168", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L250", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_get_user_memories" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_queryCache_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L195", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L273", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_delete_memory" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_column_projection_performance" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L209", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_optimization.py", + "source_location": "L289", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_decay_scores" + "source": "stocks_api_cache_stockscachemanager", + "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_cache_initialization_time" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/cache.py", "source_location": "L223", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_archive_dead" + "source": "stocks_api_cache_stockscachemanager_cachescheduler", + "target": "utils_scheduler_registerjob" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L3", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_save_memory" + "source": "stocks_api_cache_stockscachemanager_cachescheduler", + "target": "stocks_api_cache_stockscachemanager_getcachedstocks" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L6", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_memory_py", - "target": "prometheus_memory_search_memory" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_stockscachemanager_loadfromfeather" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L290", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L115", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_getmatrix" + "source": "stocks_api_cache_stockscachemanager_loadfromfeather", + "target": "stocks_api_compress_rebuildabbrevs" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L54", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L91", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_getmatrix", - "target": "prometheus_memory_matrixkey" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_compress_rebuildabbrevs" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L59", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_getmatrix", - "target": "prometheus_memory_matrixusertag" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_buildcotationdateindex" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/cache.py", "source_location": "L64", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_getmatrix", - "target": "prometheus_memory_getmatrixasync" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_compressor_rebuildabbrevs" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L186", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_invalidateuser" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_stockscachemanager_putcache" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L422", + "source_file": "main/app/stocks_api/cache.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_deletememory", - "target": "prometheus_memory_invalidateuser" + "source": "stocks_api_cache_stockscachemanager_getcachedstocks", + "target": "stocks_api_cache_rationale_33" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L52", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L25", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "prometheus_memory_invalidateuser" + "confidence_score": 1.0, + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_getabbr" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L68", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_invalidateuser", - "target": "prometheus_memory_invalidateuserasync" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_getnest" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L72", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_clearall", - "target": "prometheus_memory_clearallasync" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_rebuildabbrevs" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L64", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_memorycandidate", - "target": "basemodel" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L22", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "models_memory_prometheusmemory" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_compactvalue" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L23", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "utils_roles_permission" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_compactrow" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L23", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_memorycandidate", - "target": "utils_roles_roles" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L126", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_compactcotations" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L13", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_errorresponse", - "target": "basemodel" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_compressresponse" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L20", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "basemodel", - "target": "tests_test_error_handlers_samplebody" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_walk" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L354", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_getclient" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_tocolumnar" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L241", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_minmax" + "source": "main_app_stocks_api_compress_py", + "target": "stocks_api_compress_fixheaders" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L385", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_memory_minmax" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_getabbr" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compress.py", "source_location": "L29", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_normalizekey", - "target": "prometheus_memory_findsimilarkey" + "weight": 1.0, + "source": "stocks_api_compress_getabbr", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", + "source_file": "main/app/stocks_api/compress.py", "source_location": "L30", "weight": 1.0, - "source": "prometheus_memory_normalizekey", - "target": "stocks_api_response_cache_responsecache_set" + "source": "stocks_api_compress_getabbr", + "target": "stocks_api_util_generateabbreviations" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L21", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L177", "weight": 1.0, - "source": "prometheus_memory_normalizekey", - "target": "prometheus_state_harnessstate_set" + "confidence_score": 1.0, + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_getnest" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L88", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_findsimilarkey", - "target": "prometheus_memory_upsertmemory" + "source": "stocks_api_compress_getnest", + "target": "stocks_api_util_detectnestedfields" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L281", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L69", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemoryasync", - "target": "prometheus_memory_findsimilarkey" + "source": "controller_stocksapi_controller_listfields", + "target": "stocks_api_compress_getnest" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L29", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L147", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_findsimilarkey", - "target": "prometheus_memory_normalize_key" + "source": "stocks_api_compress_compactcotations", + "target": "stocks_api_compress_compactvalue" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L140", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L178", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_scorerecency", - "target": "prometheus_memory_scorerow" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_compactrow" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L159", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L116", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_scorecandidates", - "target": "prometheus_memory_scorerow" + "source": "stocks_api_compress_compactrow", + "target": "stocks_api_response_cache_responsecache_set" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L314", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_scorerecency" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_compactcotations" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L149", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L140", "weight": 1.0, - "source": "prometheus_memory_scorerecency", - "target": "prometheus_vector_getrelevancescore" + "source": "controller_stocksapi_controller_gethistorical", + "target": "stocks_api_compress_compressresponse" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L361", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L215", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_memory_scorerecency" + "source": "controller_stocksapi_controller_getfundamental", + "target": "stocks_api_compress_compressresponse" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L342", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L275", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_scorecandidates" + "source": "controller_stocksapi_controller_getcotations", + "target": "stocks_api_compress_compressresponse" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L169", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L318", "weight": 1.0, - "source": "prometheus_memory_scorecandidates", - "target": "prometheus_vector_getrelevancescore" + "source": "controller_stocksapi_controller_getlivecotation", + "target": "stocks_api_compress_compressresponse" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L389", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_memory_scorecandidates" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_walk" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L461", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L181", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_sumtokens" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_tocolumnar" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L502", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_counttokenscached", - "target": "prometheus_memory_sumtokens" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "models_memory_prometheusmemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "utils_roles_permission" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "utils_roles_roles" + "source": "stocks_api_compress_compressresponse", + "target": "stocks_api_compress_fixheaders" }, { - "relation": "calls", - "context": "call", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L117", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_prometheusmemory", - "target": "prometheus_memory_upsertmemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "models_memory_usermemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testexactsamekeyupdates" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testsimilarkeymerges" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testdifferentkeysnomerge" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testmergeboostsscore" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testmergeincrementsaccess" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testthresholdboundary" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testdecay" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testarchive" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testemptydatabase" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testgetmemorylimit" + "source": "main_app_stocks_api_key_py", + "target": "fastapi" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testupsertmemory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_hashapikey" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testcountmemories" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L29", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_createstoredapikey" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testgetusermemories" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_isvalidstoredkey" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testdeletememory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_verifyapikey" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_memory_prometheusmemory", - "target": "tests_test_memory_manager_testsearchfulltext" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L18", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_servicetoken" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L66", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_getmemorylimit", - "target": "prometheus_memory_upsertmemory" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_verifyurl" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L347", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_getmemorylimit" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_initverifyclient" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L299", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemoryasync", - "target": "prometheus_memory_getmemorylimit" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_closeverifyclient" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L67", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_countmemories", - "target": "prometheus_memory_upsertmemory" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_hashkey" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L347", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_countmemories" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_generatesecurekey" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L300", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemoryasync", - "target": "prometheus_memory_countmemories" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_createkey" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L227", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_touch" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_isquotaexceeded" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L368", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_upsertmemory" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_needsreset" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L47", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L37", "weight": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_vector_contenthash" + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_resetquota" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L231", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_upsertmemoryasync" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_incrementusage" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L138", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L46", "weight": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_matrix_cache_invalidateuser" + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_getremainingquota" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L100", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_applyupdate" + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_keytodict" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L71", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L16", "weight": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "models_memory_usermemory" + "confidence_score": 1.0, + "source": "main_app_stocks_api_key_py", + "target": "stocks_api_key_hash_key" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L50", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L32", "weight": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "utils_vector_contenthash" + "confidence_score": 1.0, + "source": "stocks_api_key_createstoredapikey", + "target": "stocks_api_key_hashapikey" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L63", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_upsertmemory", - "target": "prometheus_memory_now" + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_isvalidstoredkey" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L131", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_fulltextsearch" + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_servicetoken" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L104", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L49", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_vector_embed" + "confidence_score": 1.0, + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_verifyurl" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L109", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L48", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_vector_batchcosinesimilarity" + "confidence_score": 1.0, + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_initverifyclient" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L330", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_searchasync" + "source": "stocks_api_key_hashkey", + "target": "stocks_api_key_verifyapikey" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L120", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L247", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_vector_getrelevancescore" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L242", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L263", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_matrix_cache_getmatrix" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L162", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L274", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_vector_decodeembeddings" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_invalid" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L113", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L285", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "utils_vector_batchcosinesimilarity" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_missing" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L125", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L295", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "utils_vector_getrelevancescore" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_disabled" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L106", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L239", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_now" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_disabled_returns_none" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L135", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L252", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_search", - "target": "prometheus_memory_fulltext_search" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_missing_raises_401" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L117", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L266", "weight": 1.0, - "source": "prometheus_memory_search", - "target": "utils_vector_batch_cosine_similarity" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_invalid_key_raises_401" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L386", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L282", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_memory_fulltextsearch" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_quota_exceeded" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L154", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L296", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_memory_fulltextsearch", - "target": "prometheus_memory_now" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_success" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L180", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L314", "weight": 1.0, - "source": "prometheus_memory_getusermemories", - "target": "prometheus_vector_getrelevancescore" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_http_exception_rollback" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L185", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L329", "weight": 1.0, - "source": "prometheus_memory_getusermemories", - "target": "utils_vector_getrelevancescore" + "source": "stocks_api_key_verifyapikey", + "target": "tests_test_stocks_api_coverage_test_verify_api_key_generic_exception_rollback" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L178", + "source_file": "main/app/stocks_api/key.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_getusermemories", - "target": "prometheus_memory_now" + "source": "stocks_api_key_verifyapikey", + "target": "stocks_api_key_hash_key" }, { - "relation": "calls", - "context": "call", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L480", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_deletememory", - "target": "prometheus_memory_deletememoryasync" + "source": "main_app_stocks_api_query_py", + "target": "fastapi" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L369", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L16", "weight": 1.0, - "source": "prometheus_memory_deletememory", - "target": "prometheus_matrix_cache_invalidateuser" + "confidence_score": 1.0, + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L191", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_deletememory", - "target": "prometheus_memory_now" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_filtercotationcolumn" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L367", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L53", "weight": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_vector_embed" + "confidence_score": 1.0, + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_baseframe" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L386", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_memory_extract", - "target": "prometheus_memory_counttokenscached" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_validatefields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L18", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_lockfor" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_envelope" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L24", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_getclient" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_finalize" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L28", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_hostpath" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_deserializejsoncolumns" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L42", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L151", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_sandboxpath" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_filterbysearchterms" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L47", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_sandboxmanager" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_queryhistorical" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L49", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L226", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_create" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_queryfundamental" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L65", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L284", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_destroy" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_querycotations" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L77", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L332", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_getorcreate" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_istransientliveerror" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L123", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L347", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_execute" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_fetchlivepayload" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L189", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L325", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_read_file" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_querylivecotation" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L196", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_write_file" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_stocksquerymanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L207", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_list_files" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_parsecotationdates" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L197", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_delete_file" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_filtercotationdata" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L215", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_synctosandbox" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_parsecotationdate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L234", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_syncfromsandbox" + "source": "main_app_stocks_api_query_py", + "target": "stocks_api_query_filtercotationbydate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L186", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_write_bytes" + "source": "stocks_api_query_envelope", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L159", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_executewithworkspace" + "source": "stocks_api_query_deserializejsoncolumns", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L134", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_syncworkspace" + "source": "stocks_api_query_stocksquerymanager_finalize", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L148", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_restoreworkspace" + "source": "stocks_api_query_stocksquerymanager_deserializejsoncolumns", + "target": "stocks_api_query_sanitizenanvalues" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L159", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L153", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_savebackup" + "source": "stocks_api_query_sanitizenanvalues", + "target": "stocks_api_query_stocksquerymanager_queryhistorical" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L168", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_loadbackup" + "source": "stocks_api_query_sanitizenanvalues", + "target": "stocks_api_query_stocksquerymanager_queryfundamental" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L12", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L336", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_query_sanitizenanvalues", + "target": "stocks_api_query_stocksquerymanager_querycotations" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L57", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_checkpoint" + "source": "stocks_api_query_finalize", + "target": "stocks_api_query_filtercotationcolumn" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L70", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_restore" + "source": "stocks_api_query_stocksquerymanager_finalize", + "target": "stocks_api_query_filtercotationcolumn" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L326", + "weight": 1.0, + "confidence_score": 1.0, + "source": "stocks_api_query_filtercotationcolumn", + "target": "stocks_api_query_stocksquerymanager_querycotations" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1421", + "weight": 1.0, + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_filters_by_date" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1440", + "weight": 1.0, + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_range" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L79", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1449", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_upload_file" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_handles_non_list" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L19", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1240", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_filters_by_date" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1253", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_sandbox_py", - "target": "prometheus_sandbox_rationale_1" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_range" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L78", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1262", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_lockfor" + "source": "stocks_api_query_filtercotationcolumn", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_handles_non_list" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L160", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_lockfor" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_query_baseframe" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L50", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L236", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_create", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_query_baseframe" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L66", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L290", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_destroy", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_querycotations", + "target": "stocks_api_query_baseframe" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L83", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_query_validatefields" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L124", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L247", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_query_validatefields" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L220", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_synctosandbox", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_finalize", + "target": "stocks_api_query_envelope" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L235", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L297", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_syncfromsandbox", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_querycotations", + "target": "stocks_api_query_envelope" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L168", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_getclient" + "source": "stocks_api_query_finalize", + "target": "stocks_api_query_filterbysearchterms" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/sandbox_cleanup.py", - "source_location": "L23", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L113", "weight": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_cleanup_cleanup_expired_sandboxes" + "confidence_score": 1.0, + "source": "stocks_api_query_finalize", + "target": "stocks_api_query_deserializejsoncolumns" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L57", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L207", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_read_file" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_query_finalize" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L66", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L276", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_write_file" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_query_finalize" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L78", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L306", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_list_files" + "source": "stocks_api_query_querycotations", + "target": "stocks_api_query_finalize" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L136", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L117", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_syncworkspace" + "source": "stocks_api_query_finalize", + "target": "stocks_api_util_parsedaterange" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L150", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L253", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getclient", - "target": "prometheus_sandbox_restoreworkspace" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_query_filterbysearchterms" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L190", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L300", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_read_file", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_querycotations", + "target": "stocks_api_query_filterbysearchterms" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L198", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L184", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_write_file", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L208", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L193", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_list_files", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_queryhistorical", + "target": "stocks_api_util_parsedaterange" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L199", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L142", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_delete_file", - "target": "prometheus_sandbox_hostpath" + "source": "controller_stocksapi_controller_gethistorical", + "target": "stocks_api_query_queryhistorical" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L243", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L241", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_syncfromsandbox", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/tools.py", - "source_location": "L156", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L258", "weight": 1.0, - "source": "prometheus_tools_serve_file", - "target": "prometheus_sandbox_hostpath" + "source": "stocks_api_query_queryfundamental", + "target": "stocks_api_util_parsedaterange" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L189", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L212", "weight": 1.0, - "source": "controller_prometheus_controller_downloadworkspacefile", - "target": "prometheus_sandbox_hostpath" + "source": "controller_stocksapi_controller_getfundamental", + "target": "stocks_api_query_queryfundamental" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L188", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L268", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_write_bytes", - "target": "prometheus_sandbox_hostpath" + "source": "controller_stocksapi_controller_getcotations", + "target": "stocks_api_query_querycotations" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L211", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L358", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_list_files", - "target": "prometheus_sandbox_sandboxpath" + "source": "stocks_api_query_querylivecotation", + "target": "stocks_api_query_fetchlivepayload" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "models_sandbox_prometheussandbox" + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L313", + "weight": 1.0, + "source": "controller_stocksapi_controller_getlivecotation", + "target": "stocks_api_query_querylivecotation" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_agent_sandbox_integration.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L14", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_sync_cache_py", + "target": "stocks_api_sync_cache_cache" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxmanager" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/sync_cache.py", + "source_location": "L16", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_sync_cache_py", + "target": "stocks_api_sync_cache_sync_cache" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel" + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L2", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "fastapi" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_persistence_testsandboxpersistence" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L15", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_dedupabbrev" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_persistence_testsandboxcleanup" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_autoabbreviate" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_fakeclient" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_generateabbreviations" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxcreate" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_categorizecolumns" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxexecute" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L71", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parsedate" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxcheckpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxrestore" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L94", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_detectnestedfields" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxuploadfile" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parse_date" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxreadfile" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parsedatestart" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "tests_test_sandbox_testsandboxdestroy" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parsedateend" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/context.py", - "source_location": "L16", - "weight": 0.8, - "confidence_score": 0.5, - "source": "prometheus_sandbox_sandboxmanager", - "target": "prometheus_context_toolcontext" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L29", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_normalizecolumns" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L24", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_sandboxmanager", - "target": "prometheus_sandbox_rationale_24" + "source": "main_app_stocks_api_util_py", + "target": "stocks_api_util_parseyearinput" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L104", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_create" + "source": "stocks_api_util_generateabbreviations", + "target": "stocks_api_util_dedupabbrev" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L162", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_create" + "source": "stocks_api_util_detectnestedfields", + "target": "stocks_api_util_dedupabbrev" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L20", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_create", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_util_generateabbreviations", + "target": "stocks_api_util_autoabbreviate" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L33", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_create", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_util_detectnestedfields", + "target": "stocks_api_util_autoabbreviate" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L186", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L65", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_destroy" + "source": "controller_stocksapi_controller_listfields", + "target": "stocks_api_util_generateabbreviations" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L80", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/util.py", + "source_location": "L46", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_destroy", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_util_generateabbreviations", + "target": "stocks_api_response_cache_responsecache_set" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L99", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L33", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_destroy", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_compressor_getabbr", + "target": "stocks_api_util_generateabbreviations" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L116", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/util.py", + "source_location": "L46", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_synctosandbox" + "source": "stocks_api_util_generateabbreviations", + "target": "prometheus_state_harnessstate_set" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L153", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L52", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_getorcreate" + "source": "stocks_api_util_categorizecolumns", + "target": "controller_stocksapi_controller_listfields" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L75", + "source_file": "main/app/stocks_api/query.py", + "source_location": "L76", "weight": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "models_sandbox_prometheussandbox" + "source": "stocks_api_query_stocksquerymanager_queryhistorical", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L69", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L141", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_loadbackup" + "source": "stocks_api_query_stocksquerymanager_queryfundamental", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L71", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_getorcreate", - "target": "prometheus_sandbox_restoreworkspace" + "source": "stocks_api_compressor_getabbr", + "target": "stocks_api_util_categorizecolumns" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L128", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L11", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_synctosandbox" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_historical_and_fundamental" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L139", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L20", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_syncfromsandbox" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_only_fundamental" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L37", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L26", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_reserved_words_excluded" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L51", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_execute", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_single_year" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L242", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L37", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_syncfromsandbox", - "target": "prometheus_sandbox_read_file" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_no_year_suffix" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L142", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L14", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_read_file", - "target": "prometheus_sandbox_syncworkspace" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_historical_only" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L73", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L23", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_read_file", - "target": "prometheus_sandbox_baseurl" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_fundamental_only" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L91", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_read_file", - "target": "prometheus_sandbox_base_url" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_mixed" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L227", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_synctosandbox", - "target": "prometheus_sandbox_write_file" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_excludes_special" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L154", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L47", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_write_file", - "target": "prometheus_sandbox_restoreworkspace" + "source": "stocks_api_util_categorizecolumns", + "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_empty" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L164", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_synctosandbox" + "source": "stocks_api_util_parsedaterange", + "target": "stocks_api_util_parsedate" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/sandbox.py", - "source_location": "L180", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L97", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_sandbox_executewithworkspace", - "target": "prometheus_sandbox_syncfromsandbox" + "source": "stocks_api_query_stocksquerymanager_finalize", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L10", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L124", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_stream_bus_py", - "target": "prometheus_stream_bus_streamchannel" + "source": "stocks_api_query_stocksquerymanager_queryhistorical", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L28", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L197", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_stream_bus_py", - "target": "prometheus_stream_bus_streambus" + "source": "stocks_api_query_stocksquerymanager_queryfundamental", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L11", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/query.py", + "source_location": "L318", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streamchannel", - "target": "prometheus_stream_bus_streamchannel_init" + "source": "stocks_api_query_stocksquerymanager_querycotations", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L17", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_stream_bus_streamchannel", - "target": "prometheus_stream_bus_streamchannel_publish" + "source": "stocks_api_util_parsedaterange", + "target": "stocks_api_util_parse_date" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L35", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_getorcreate", - "target": "prometheus_stream_bus_streamchannel" + "source": "stocks_api_util_parsedatestart", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "method", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L29", + "source_file": "main/app/stocks_api/util.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_init" + "source": "stocks_api_util_parsedateend", + "target": "stocks_api_util_parsedaterange" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L32", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L45", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_getorcreate" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_empty_string" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L39", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L48", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_publish" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_none" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L42", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L51", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_subscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_single_year" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L55", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L60", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_unsubscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_year_range" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L60", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L65", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_startrun" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_spaces" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L86", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L71", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_eventgenerator" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_three_values_raises" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L109", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L75", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_streamresponse" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_month_start" }, { - "relation": "method", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L83", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_util_coverage.py", + "source_location": "L82", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus", - "target": "prometheus_stream_bus_streambus_forward" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_full_date" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L40", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L55", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_publish", - "target": "prometheus_stream_bus_streambus_getorcreate" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_single" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L61", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L64", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_startrun", - "target": "prometheus_stream_bus_streambus_getorcreate" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_range" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L87", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L69", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_eventgenerator", - "target": "prometheus_stream_bus_streambus_subscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_none" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L74", + "weight": 1.0, + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_empty_string" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L84", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L79", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_forward", - "target": "prometheus_stream_bus_streambus_subscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_month" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L107", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L86", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_eventgenerator", - "target": "prometheus_stream_bus_streambus_unsubscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_full_date" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L105", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L90", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_forward", - "target": "prometheus_stream_bus_streambus_unsubscribe" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_two_values" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/stream_bus.py", - "source_location": "L110", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_stream_bus_streambus_streamresponse", - "target": "prometheus_stream_bus_streambus_eventgenerator" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L17", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_util.py", + "source_location": "L98", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_search_memory" + "source": "stocks_api_util_parsedaterange", + "target": "tests_test_stocks_util_testparsedaterange_test_parse_three_values_raises" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L43", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/util.py", + "source_location": "L114", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_save_memory" + "source": "stocks_api_util_detectnestedfields", + "target": "stocks_api_response_cache_responsecache_set" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L113", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/compressor.py", + "source_location": "L47", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_execute_code" + "source": "stocks_api_compressor_getnest", + "target": "stocks_api_util_detectnestedfields" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L134", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/util.py", + "source_location": "L114", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_read_file" + "source": "stocks_api_util_detectnestedfields", + "target": "prometheus_state_harnessstate_set" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L145", + "source_file": "main/app/user/user.py", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_write_file" + "source": "main_app_user_user_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L158", + "source_file": "main/app/user/user.py", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_list_files" + "source": "main_app_user_user_py", + "target": "user_user_usermanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L144", + "source_file": "main/app/user/user.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_serve_file" + "source": "main_app_user_user_py", + "target": "user_user_getroleslist" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L180", + "source_file": "main/app/user/user.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_dispatchtoolcall" + "source": "main_app_user_user_py", + "target": "user_user_getcurrentuser" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L18", + "source_file": "main/app/user/user.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_getdb" + "source": "main_app_user_user_py", + "target": "user_user_todict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L80", + "source_file": "main/app/user/user.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_get_state" + "source": "main_app_user_user_py", + "target": "user_user_addrole" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L95", + "source_file": "main/app/user/user.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_set_state" + "source": "main_app_user_user_py", + "target": "user_user_hasrole" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L141", + "source_file": "main/app/user/user.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_read_sandbox_file" + "source": "main_app_user_user_py", + "target": "user_user_addroletouser" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L151", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_upload_to_sandbox" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/user/user.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "models_user_user" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L153", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_check_cache" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/roles.py", + "source_location": "L65", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "utils_roles_permission" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L104", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_executestatetool" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/roles.py", + "source_location": "L65", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "utils_roles_roles" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L46", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_prometheus_tools_py", - "target": "prometheus_tools_executememorytool" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testissecurescheme" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L21", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_21", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testhealthendpoint" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L20", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_20", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testregisterendpoint" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L19", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_19", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testloginendpoint" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L39", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_getdb" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testlogoutendpoint" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L27", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_27", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgooglelogin" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L18", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_18", - "target": "prometheus_tools_search_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgooglecallback" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L16", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_16" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testuserhealth" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L15", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_15" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgetme" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L17", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_17" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testupgradeendpoints" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L13", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_13" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testadminaccess" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L12", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_search_memory", - "target": "prometheus_tools_rationale_12" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgetsessions" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L52", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_52", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgetcurrentsession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/tools.py", - "source_location": "L52", - "weight": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_vector_embed" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testrevokesession" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L50", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_50", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testrevokeallsessions" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L49", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_49", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheushealth" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L67", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_getdb" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheusgetsessions" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L54", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_54", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheuscreatesession" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L44", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_44", - "target": "prometheus_tools_save_memory" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L42", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_42" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheusgethistory" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L41", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_41" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheusdeletesession" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L39", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_39" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testprometheuschat" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L38", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_38" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapihealth" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L29", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_save_memory", - "target": "prometheus_tools_rationale_29" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapihistorical" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L94", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_94", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapifundamental" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L91", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_91", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapigeneratekey" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L90", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_90", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testaddroletouser" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L92", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_92", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testgetcurrentuser" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L123", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_123", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testhashpasswordempty" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L114", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_114", - "target": "prometheus_tools_execute_code" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testverifyaccesstoken" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L112", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_execute_code", - "target": "prometheus_tools_rationale_112" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L111", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_execute_code", - "target": "prometheus_tools_rationale_111" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testmanagerinit" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L109", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_execute_code", - "target": "prometheus_tools_rationale_109" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_models_testusermodel" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L115", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_115", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_models_teststocksapikeymodel" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L112", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_112", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_models_testprometheussessionmodel" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L111", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1495", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_111", - "target": "prometheus_tools_read_file" + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_testmanagerinit_test_manager_init" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L113", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_113", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_controller.py", + "source_location": "L52", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_memory_controller_testmemorycontrollerroutes" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L144", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_144", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_controller.py", + "source_location": "L52", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_memory_controller_testmemoryendpointsintegration" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L135", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_135", - "target": "prometheus_tools_read_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_teststockscachemanager" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L147", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_read_file", - "target": "prometheus_tools_rationale_147" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testverifyapikey" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L131", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_read_file", - "target": "prometheus_tools_rationale_131" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testgeneratesecurekey" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L130", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_read_file", - "target": "prometheus_tools_rationale_130" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testcreatekey" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L129", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_129", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L126", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_126", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testfilterbysearchterms" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L125", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_125", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testqueryhistorical" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L127", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_127", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testqueryfundamental" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L122", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_122", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1160", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testquerycotations" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L155", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_155", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1461", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_stocks_api_coverage_testquerylivecotation" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L146", - "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_rationale_146", - "target": "prometheus_tools_write_file" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1493", + "weight": 0.8, + "confidence_score": 0.5, + "source": "user_user_usermanager", + "target": "tests_test_controllers_coverage_teststocksapikeytest" }, { - "relation": "rationale_for", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L158", + "source_file": "main/app/user/user.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_write_file", - "target": "prometheus_tools_rationale_158" + "source": "user_user_usermanager", + "target": "user_user_usermanager_init" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L144", + "source_file": "main/app/user/user.py", + "source_location": "L83", "weight": 1.0, - "confidence_score": 1.0, - "source": "prometheus_tools_write_file", - "target": "prometheus_tools_rationale_144" + "confidence_score": 1.0, + "source": "user_user_getroleslist", + "target": "user_user_getcurrentuser" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L143", + "source_file": "main/app/user/user.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_write_file", - "target": "prometheus_tools_rationale_143" + "source": "user_user_getroleslist", + "target": "user_user_todict" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L145", + "source_file": "main/app/user/user.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_145", - "target": "prometheus_tools_list_files" + "source": "user_user_getroleslist", + "target": "user_user_addrole" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L142", + "source_file": "main/app/user/user.py", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_142", - "target": "prometheus_tools_list_files" + "source": "user_user_getroleslist", + "target": "user_user_hasrole" }, { - "relation": "rationale_for", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L141", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_141", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "fastapi" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L143", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_143", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_issecurescheme" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L135", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_135", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_resolvecookiedomain" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L168", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_168", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_issuesessioncookie" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L159", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_159", - "target": "prometheus_tools_list_files" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_health" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L171", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_list_files", - "target": "prometheus_tools_rationale_171" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_register" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L158", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_list_files", - "target": "prometheus_tools_rationale_158" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_login" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L158", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_158", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_logout" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L155", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L253", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_155", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_introspect" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L154", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_154", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_googlelogin" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L156", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L146", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_156", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_googlecallback" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L145", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L245", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_rationale_145", - "target": "prometheus_tools_serve_file" + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_requireservicetoken" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L125", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L277", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_search_memory_routed_via_registry" + "confidence_score": 1.0, + "source": "main_controller_authentication_controller_py", + "target": "controller_authentication_controller_verifyservicekey" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L140", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L39", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_save_memory_routed_via_registry" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_issuesessioncookie" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L158", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L123", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_non_registry_tool_not_routed" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_logout" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L33", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L114", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_execute_code" + "source": "controller_authentication_controller_issecurescheme", + "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_https" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L85", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L121", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_execute_code_no_sandbox" + "source": "controller_authentication_controller_issecurescheme", + "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_http" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L52", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L128", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_read_file" + "source": "controller_authentication_controller_issecurescheme", + "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_no_scheme" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L62", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L49", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_write_file" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_register" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L72", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L87", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_list_files" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_login" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L80", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L176", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_read_file_no_sandbox" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issecurescheme", + "target": "controller_authentication_controller_googlecallback" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_state_tools.py", - "source_location": "L108", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L58", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_state_tools_test_dispatch_get_state" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_resolvecookiedomain" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_state_tools.py", - "source_location": "L117", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L160", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_state_tools_test_dispatch_set_state" + "confidence_score": 1.0, + "source": "controller_authentication_controller_logout", + "target": "controller_authentication_controller_resolvecookiedomain" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_tools.py", - "source_location": "L68", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L81", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_sandbox_tools_test_dispatch_execute_code_routes_to_registry" + "confidence_score": 1.0, + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_register" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L129", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "prometheus_tools_executestatetool" + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_login" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L85", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "prometheus_tools_executememorytool" + "source": "controller_authentication_controller_issuesessioncookie", + "target": "controller_authentication_controller_googlecallback" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L86", + "confidence": "EXTRACTED", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L257", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_search_memory_routed_to_executememorytool" + "confidence_score": 1.0, + "source": "controller_authentication_controller_introspect", + "target": "controller_authentication_controller_requireservicetoken" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L99", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L5", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_save_memory_routed_to_executememorytool" + "confidence_score": 1.0, + "source": "main_controller_orunmila_controller_py", + "target": "fastapi" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L114", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L26", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_memory_tool_skipped_without_user" + "confidence_score": 1.0, + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_verifysessionownsership" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_tools_wiring.py", - "source_location": "L127", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L32", "weight": 1.0, - "source": "prometheus_tools_dispatchtoolcall", - "target": "tests_test_memory_tools_wiring_test_non_memory_tool_not_routed_to_executememorytool" + "confidence_score": 1.0, + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_health" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/tools.py", - "source_location": "L94", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_tools_set_state", - "target": "prometheus_tools_rationale_94" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_getsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L10", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_normalizerows" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_updatesessiontitle" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L10", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_embed" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_gethistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L14", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_decodeembeddings" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_deletesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L8", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L103", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_batchcosinesimilarity" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_chat_stream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L20", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_contenthash" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_resumechatstream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L55", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_tovectorstring" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_deleteworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L59", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L179", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_fromvectorstring" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_downloadworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L24", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_prometheus_vector_py", - "target": "prometheus_vector_getrelevancescore" + "source": "main_controller_orunmila_controller_py", + "target": "controller_orunmila_controller_listworkspacefiles" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/prometheus/vector.py", - "source_location": "L35", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L62", "weight": 1.0, "confidence_score": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "prometheus_vector_normalizerows" + "source": "controller_orunmila_controller_updatesessiontitle", + "target": "controller_orunmila_controller_verifysessionownsership" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/vector.py", - "source_location": "L11", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L76", "weight": 1.0, - "source": "prometheus_vector_embed", - "target": "models_loader_getembeddingmodel" + "confidence_score": 1.0, + "source": "controller_orunmila_controller_gethistory", + "target": "controller_orunmila_controller_verifysessionownsership" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L379", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L114", "weight": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_vector_embed" + "confidence_score": 1.0, + "source": "controller_orunmila_controller_chat_stream", + "target": "controller_orunmila_controller_verifysessionownsership" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "bench/bench_memory_vector.py", - "source_location": "L32", + "confidence": "EXTRACTED", + "source_file": "main/controller/orunmila_controller.py", + "source_location": "L160", "weight": 1.0, - "source": "bench_bench_memory_vector_benchonce", - "target": "prometheus_vector_embed" + "confidence_score": 1.0, + "source": "controller_orunmila_controller_resumechatstream", + "target": "controller_orunmila_controller_verifysessionownsership" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/tools.py", - "source_location": "L63", + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L2", "weight": 1.0, - "source": "prometheus_vector_embed", - "target": "prometheus_tools_executememorytool" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "fastapi" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "bench/bench_memory_vector.py", - "source_location": "L22", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L16", "weight": 1.0, - "source": "bench_bench_memory_vector_benchonce", - "target": "prometheus_vector_decodeembeddings" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_health" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L380", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L25", "weight": 1.0, - "source": "prometheus_memory_searchasync", - "target": "prometheus_vector_batchcosinesimilarity" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "bench/bench_memory_vector.py", - "source_location": "L25", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L24", "weight": 1.0, - "source": "bench_bench_memory_vector_benchonce", - "target": "prometheus_vector_batchcosinesimilarity" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L8", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L35", "weight": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_empty_matrix" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L14", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L49", "weight": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_single_row" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L27", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L60", "weight": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_multiple_rows" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L34", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L23", "weight": 1.0, - "source": "prometheus_vector_batchcosinesimilarity", - "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_zero_query" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_jsonbytesresponse" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L262", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L46", "weight": 1.0, - "source": "prometheus_memory_upsertmemoryasync", - "target": "prometheus_vector_contenthash" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_generatekey" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/prometheus/memory.py", - "source_location": "L54", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L63", "weight": 1.0, - "source": "prometheus_memory_applyupdate", - "target": "prometheus_vector_contenthash" + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_getrealtimecotation" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_controller_stocksapi_controller_py", + "target": "controller_stocksapi_controller_apikeytest" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_39", + "target": "controller_stocksapi_controller_listfields" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_47", + "target": "controller_stocksapi_controller_listfields" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_36", + "target": "controller_stocksapi_controller_listfields" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", "source_location": "L40", "weight": 1.0, - "source": "prometheus_vector_contenthash", - "target": "tests_test_vector_utils_testcontenthash_test_deterministic" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_40", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L43", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L48", "weight": 1.0, - "source": "prometheus_vector_contenthash", - "target": "tests_test_vector_utils_testcontenthash_test_different_inputs" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_48", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L46", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L49", "weight": 1.0, - "source": "prometheus_vector_contenthash", - "target": "tests_test_vector_utils_testcontenthash_test_hex_format" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_49", + "target": "controller_stocksapi_controller_listfields" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L21", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L30", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_just_accessed_has_full_score" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_30", + "target": "controller_stocksapi_controller_listfields" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L66", + "weight": 1.0, + "source": "controller_stocksapi_controller_listfields", + "target": "stocks_api_compressor_getnest" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_27", + "target": "controller_stocksapi_controller_listfields" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", "source_location": "L26", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_one_day_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_listfields", + "target": "controller_stocksapi_controller_rationale_26" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L31", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L95", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_seven_days_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_95", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L36", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L103", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_thirty_days_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_103", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L41", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L92", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_ninety_days_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_92", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L46", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L96", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_one_year_old" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_96", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L52", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L104", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testtimedecay_test_score_always_positive" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_104", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L61", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L105", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_high_base_beats_low_base_same_age" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_105", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L69", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L85", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_frequently_used_survives_longer" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_85", + "target": "controller_stocksapi_controller_gethistorical" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L75", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L129", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_rare_old_loses_to_popular_new" + "source": "controller_stocksapi_controller_gethistorical", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L79", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L82", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_score_capped_at_one" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_82", + "target": "controller_stocksapi_controller_gethistorical" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L87", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L66", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testbasescoreimpact_test_equal_age_higher_base_wins" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_gethistorical", + "target": "controller_stocksapi_controller_rationale_66" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L95", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L65", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testdecaymonotonicity_test_older_always_lower_score" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_gethistorical", + "target": "controller_stocksapi_controller_rationale_65" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L102", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L160", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testdecaymonotonicity_test_never_accessed_uses_full_base" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_160", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L110", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L168", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testnocronneeded_test_same_memory_same_time_same_score" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_168", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_relevance_score.py", - "source_location": "L117", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L157", "weight": 1.0, - "source": "prometheus_vector_getrelevancescore", - "target": "tests_test_relevance_score_testnocronneeded_test_different_times_different_scores" + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_157", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L32", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L161", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_getcurrentselic" + "source": "controller_stocksapi_controller_rationale_161", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L31", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L169", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_b3scraper" + "source": "controller_stocksapi_controller_rationale_169", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L51", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L167", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_getinitialdata" + "source": "controller_stocksapi_controller_rationale_167", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L106", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L165", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicalrentability" + "source": "controller_stocksapi_controller_rationale_165", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L129", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicaldividends" + "source": "controller_stocksapi_controller_rationale_155", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L196", + "weight": 1.0, + "source": "controller_stocksapi_controller_getfundamental", + "target": "stocks_api_compressor_compressresponse" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L160", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicaldividendyields" + "source": "controller_stocksapi_controller_rationale_144", + "target": "controller_stocksapi_controller_getfundamental" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L188", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicalrevenue" + "source": "controller_stocksapi_controller_getfundamental", + "target": "controller_stocksapi_controller_rationale_124" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L209", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L123", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_getfundamental", + "target": "controller_stocksapi_controller_rationale_123" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L228", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_228", + "target": "controller_stocksapi_controller_getcotations" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L236", + "weight": 1.0, + "confidence_score": 1.0, + "source": "controller_stocksapi_controller_rationale_236", + "target": "controller_stocksapi_controller_getcotations" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L225", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicalcotationprofits" + "source": "controller_stocksapi_controller_rationale_225", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L235", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L229", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_historicalcotations" + "source": "controller_stocksapi_controller_rationale_229", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L252", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L237", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_tagalong" + "source": "controller_stocksapi_controller_rationale_237", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L276", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L234", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "scraper_b3_scraper_stocknews" + "source": "controller_stocksapi_controller_rationale_234", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "imports_from", - "context": "import", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L20", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L238", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_scraper_py", - "target": "main_app_scraper_b3_xango_py" + "source": "controller_stocksapi_controller_rationale_238", + "target": "controller_stocksapi_controller_getcotations" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L51", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L250", "weight": 1.0, - "confidence_score": 1.0, - "source": "scraper_b3_scraper_getcurrentselic", - "target": "scraper_b3_scraper_b3scraper_init" + "source": "controller_stocksapi_controller_getcotations", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L32", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_init" + "source": "controller_stocksapi_controller_rationale_209", + "target": "controller_stocksapi_controller_getcotations" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L222", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L185", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_historicalcotationprofits_oceans14" + "source": "controller_stocksapi_controller_getcotations", + "target": "controller_stocksapi_controller_rationale_185" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L289", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L184", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_fundamentalindicators" + "source": "controller_stocksapi_controller_getcotations", + "target": "controller_stocksapi_controller_rationale_184" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L438", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L282", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_processticker" + "source": "controller_stocksapi_controller_rationale_282", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L469", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L290", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_scrapestocks" + "source": "controller_stocksapi_controller_rationale_290", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L519", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L279", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_reordercolumns" + "source": "controller_stocksapi_controller_rationale_279", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L529", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L283", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_serializecomplextypes" + "source": "controller_stocksapi_controller_rationale_283", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L550", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L291", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_exportjson" + "source": "controller_stocksapi_controller_rationale_291", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "method", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L586", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L288", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "scraper_b3_scraper_b3scraper_exportmysql" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/scraper_service.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "scraper_b3_scraper_b3scraper", - "target": "service_scraper_service_scraperservice" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/scraper_service.py", - "source_location": "L18", - "weight": 1.0, - "source": "scraper_b3_scraper_b3scraper", - "target": "service_scraper_service_runscraper" + "source": "controller_stocksapi_controller_rationale_288", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L470", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L296", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_getinitialdata", - "target": "scraper_b3_scraper_b3scraper_scrapestocks" + "source": "controller_stocksapi_controller_rationale_296", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L461", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L286", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_fundamentalindicators", - "target": "scraper_b3_scraper_b3scraper_processticker" + "source": "controller_stocksapi_controller_rationale_286", + "target": "controller_stocksapi_controller_getlivecotation" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L392", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L293", "weight": 1.0, - "source": "scraper_b3_scraper_b3scraper_fundamentalindicators", - "target": "scraper_b3_xango_calculateinvestingscore" + "source": "controller_stocksapi_controller_getlivecotation", + "target": "stocks_api_compressor_compressresponse" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L477", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L261", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_processticker", - "target": "scraper_b3_scraper_b3scraper_scrapestocks" + "source": "controller_stocksapi_controller_rationale_261", + "target": "controller_stocksapi_controller_getlivecotation" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L513", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L233", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_scrapestocks", - "target": "scraper_b3_scraper_b3scraper_reordercolumns" + "source": "controller_stocksapi_controller_getlivecotation", + "target": "controller_stocksapi_controller_rationale_233" }, { - "relation": "calls", - "context": "call", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L514", + "source_file": "main/controller/stocksapi_controller.py", + "source_location": "L232", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_scrapestocks", - "target": "scraper_b3_scraper_b3scraper_serializecomplextypes" + "source": "controller_stocksapi_controller_getlivecotation", + "target": "controller_stocksapi_controller_rationale_232" }, { - "relation": "calls", - "context": "call", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L516", + "source_file": "main/controller/user_controller.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_scrapestocks", - "target": "scraper_b3_scraper_b3scraper_exportjson" + "source": "main_controller_user_controller_py", + "target": "fastapi" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/scraper.py", - "source_location": "L517", + "source_file": "main/controller/user_controller.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "scraper_b3_scraper_b3scraper_scrapestocks", - "target": "scraper_b3_scraper_b3scraper_exportmysql" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_sessiontodict" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/scraper_b3/xango.py", - "source_location": "L14", + "source_file": "main/controller/user_controller.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_scraper_b3_xango_py", - "target": "scraper_b3_xango_calculateinvestingscore" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_health" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L22", + "source_file": "main/controller/user_controller.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_optimizedtypes" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_getme" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L58", + "source_file": "main/controller/user_controller.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_arrowtypefor" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_testadminaccess" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L50", + "source_file": "main/controller/user_controller.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_buildfeathercache" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_getsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L90", + "source_file": "main/controller/user_controller.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_trybuildlock" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_getcurrentsession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L170", + "source_file": "main/controller/user_controller.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_sortcacheframe" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_revokesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L190", + "source_file": "main/controller/user_controller.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_buildtickerindex" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_revokeallsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L12", + "source_file": "main/controller/user_controller.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_stockscachemanager" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_upgradetodeveloperstarter" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L38", + "source_file": "main/controller/user_controller.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_cache_py", - "target": "stocks_api_cache_buildcotationdateindex" + "source": "main_controller_user_controller_py", + "target": "controller_user_controller_upgradetodeveloperenterprise" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L71", + "source_file": "main/controller/user_controller.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_buildfeathercache", - "target": "stocks_api_cache_optimizedtypes" + "source": "controller_user_controller_getsessions", + "target": "controller_user_controller_sessiontodict" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L89", + "source_file": "main/controller/user_controller.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_optimizedtypes", - "target": "stocks_api_cache_stockscachemanager_getcachedstocks" + "source": "controller_user_controller_getcurrentsession", + "target": "controller_user_controller_sessiontodict" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L124", + "source_file": "main/models/memory.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_buildfeathercache", - "target": "stocks_api_cache_arrowtypefor" + "source": "main_models_memory_py", + "target": "models_memory_orunmilamemory" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L59", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_rationale_59", - "target": "stocks_api_cache_arrowtypefor" + "source": "main_models_memory_py", + "target": "models_memory_prometheusmemory" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L157", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_trybuildlock" + "source": "main_models_memory_py", + "target": "models_memory_usermemory" }, { - "relation": "rationale_for", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L91", + "source_file": "main/models/memory.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_rationale_91", - "target": "stocks_api_cache_trybuildlock" + "source": "models_memory_orunmilamemory", + "target": "base" }, { - "relation": "calls", - "context": "call", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/models/memory.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_orunmilamemory", + "target": "models_types_vectortype" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/models/memory.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_orunmilamemory", + "target": "models_user_user" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/orunmila_service.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_orunmila_service_orunmilaservice", + "target": "models_memory_orunmilamemory" + }, + { + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L239", + "source_file": "main/models/orunmila.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_loadfromfeather", - "target": "stocks_api_cache_sortcacheframe" + "source": "models_orunmila_orunmilasession", + "target": "base" }, { - "relation": "rationale_for", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L171", + "source_file": "main/models/sandbox.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_rationale_171", - "target": "stocks_api_cache_sortcacheframe" + "source": "models_sandbox_orunmilasandbox", + "target": "base" }, { - "relation": "calls", - "context": "call", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L240", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_loadfromfeather", - "target": "stocks_api_cache_buildtickerindex" + "source": "base", + "target": "models_stocksapi_key_stocksapikey" }, { - "relation": "rationale_for", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L191", + "source_file": "main/models/user.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_rationale_191", - "target": "stocks_api_cache_buildtickerindex" + "source": "base", + "target": "models_user_user" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L13", + "source_file": "main/models/user_session.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_init" + "source": "base", + "target": "models_user_session_usersession" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L198", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_snapshot" + "source": "models_memory_prometheusmemory", + "target": "base" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L18", + "source_file": "main/models/prometheus.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_cachescheduler" + "source": "base", + "target": "models_prometheus_prometheussession" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L101", + "source_file": "main/models/sandbox.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_loadfromfeather" + "source": "base", + "target": "models_sandbox_prometheussandbox" }, { - "relation": "method", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L28", + "source_file": "main/models/memory.py", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_getcachedstocks" + "source": "base", + "target": "models_memory_usermemory" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/harness.py", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "base", + "target": "models_harness_loopevent" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/orunmila.py", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_orunmila_py", + "target": "models_orunmila_orunmilasession" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "main/models/orunmila.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_teststockscachemanager" + "source": "models_orunmila_orunmilasession", + "target": "models_user_user" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/sandbox.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_sandbox_py", + "target": "models_sandbox_orunmilasandbox" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/sandbox.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_sandbox_py", + "target": "models_sandbox_prometheussandbox" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_stocksapi_key_py", + "target": "models_stocksapi_key_stocksapikey" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testverifyapikey" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_user_user" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testgeneratesecurekey" + "confidence_score": 0.8, + "source_file": "main/app/stocks_api/key.py", + "source_location": "L58", + "weight": 1.0, + "source": "stocks_api_key_createkey", + "target": "models_stocksapi_key_stocksapikey" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L15", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testcreatekey" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L15", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "tests/test_models.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testfilterbysearchterms" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_testusermodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "tests/test_models.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testqueryhistorical" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L724", + "source_file": "tests/test_models.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testqueryfundamental" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_testprometheussessionmodel" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L988", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testquerycotations" + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L43", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_normal_quota_check_works" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1260", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_testquerylivecotation" + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L70", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_atomic_increment_prevents_overuse" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L50", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L111", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_teststockscachemanager_make_manager" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_concurrent_requests_serialized_at_db_level" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L58", + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L145", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_apscheduler" + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_request_at_exact_quota_limit" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L181", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_multiple_keys_independent_quotas" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L216", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_increment_from_zero" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L240", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_api_key_quota_atomic.py", + "source_location": "L255", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L92", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_create_api_key" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L101", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_true" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L107", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_false" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L113", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_no_last_reset" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L118", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_expired" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L124", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_false_recent" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L130", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_reset_quota" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L138", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_increment_usage" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L144", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L150", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota_exceeded" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L156", + "weight": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "tests_test_models_teststocksapikeymodel_test_toDict" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L78", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_putcache" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_isquotaexceeded" }, { "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L71", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_cache_stockscachemanager_clearquerycache" + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_needsreset" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_resetquota" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_incrementusage" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_getremainingquota" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_todict" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/stocksapi_key.py", + "source_location": "L18", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_stocksapi_key_stocksapikey", + "target": "models_stocksapi_key_stocksapikey_repr" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_types_py", + "target": "models_types_vectortype" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_types_vectortype", + "target": "typedecorator" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_types_vectortype", + "target": "models_types_vectortype_init" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L13", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_types_vectortype", + "target": "models_types_vectortype_process_bind_param" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/types.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_types_vectortype", + "target": "models_types_vectortype_process_result_value" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L12", + "source_file": "main/models/memory.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "stocks_api_query_stocksquerymanager" + "source": "models_memory_prometheusmemory", + "target": "models_types_vectortype" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_cache.py", - "source_location": "L11", + "source_file": "tests/test_memory_types.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcachelrueviction" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_cache.py", - "source_location": "L11", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcolumnvalidator" + "confidence_score": 0.8, + "source_file": "tests/test_memory_types.py", + "source_location": "L9", + "weight": 1.0, + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_roundtrip" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_cache.py", - "source_location": "L11", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcachettllogic" + "confidence_score": 0.8, + "source_file": "tests/test_memory_types.py", + "source_location": "L19", + "weight": 1.0, + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_none_roundtrip" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_cache.py", - "source_location": "L20", + "source_file": "tests/test_memory_types.py", + "source_location": "L25", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcachelrueviction_make_manager" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_wrong_dims_raises" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_cache.py", - "source_location": "L110", + "source_file": "tests/test_memory_types.py", + "source_location": "L31", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_cache_testcachettllogic_make_manager" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_preserves_negative_values" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L58", + "source_file": "tests/test_memory_types.py", + "source_location": "L39", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_api_coverage_test_cache_scheduler_starts_daemon_thread" + "source": "models_types_vectortype", + "target": "tests_test_memory_types_testvectortype_test_large_random_vector" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", + "source_file": "main/models/memory.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex" + "source": "models_types_vectortype", + "target": "models_memory_usermemory" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/models/memory_types.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "typedecorator", + "target": "models_memory_types_vectortype" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_models_user_py", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", + "source_file": "main/models/user_session.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testconnectionpool" + "source": "models_user_session_usersession", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", + "source_file": "main/models/memory.py", + "source_location": "L5", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testlazydeserialization" + "source": "models_memory_prometheusmemory", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", + "source_file": "main/models/prometheus.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testqueryoptimization" + "source": "models_prometheus_prometheussession", + "target": "models_user_user" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", + "source_file": "tests/test_models.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks" + "source": "models_user_user", + "target": "tests_test_models_testusermodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", + "source_file": "tests/test_models.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testfilterbysearchterms" + "source": "models_user_user", + "target": "tests_test_models_teststocksapikeymodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_cache.py", - "source_location": "L10", + "source_file": "tests/test_models.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testqueryperformance" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L22", - "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_built_after_cache_load" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L30", - "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_contains_all_tickers" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L40", - "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_case_insensitive" + "source": "models_user_user", + "target": "tests_test_models_testprometheussessionmodel" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L49", + "source_file": "tests/test_models.py", + "source_location": "L9", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_ticker_lookup_returns_valid_index" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_create_user" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L60", + "source_file": "tests/test_models.py", + "source_location": "L19", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerindex_rebuilt_on_cache_refresh" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_get_roles_list_default" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L77", + "source_file": "tests/test_models.py", + "source_location": "L24", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching_test_cache_manager_has_caches_method" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_get_roles_list_single_role" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L85", + "source_file": "tests/test_models.py", + "source_location": "L29", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching_test_querycache_ttl_configuration" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_get_roles_list_multiple_roles" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L93", + "source_file": "tests/test_models.py", + "source_location": "L37", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching_test_get_cached_stocks_respects_columns_parameter" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_add_role_new" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L142", + "source_file": "tests/test_models.py", + "source_location": "L43", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testqueryoptimization_test_all_optimizations_present" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_add_role_existing" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L180", + "source_file": "tests/test_models.py", + "source_location": "L63", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_tickerindex_lookup_performance" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_has_role_true" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L200", + "source_file": "tests/test_models.py", + "source_location": "L68", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_prefix_scan_performance" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_has_role_false" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L220", + "source_file": "tests/test_models.py", + "source_location": "L75", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_has_role_with_enum" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L250", + "source_file": "tests/test_models.py", + "source_location": "L80", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_querycache_performance" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_toDict" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L273", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L22", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_column_projection_performance" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_getroleslist" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L289", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L27", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_cache_initialization_time" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_addrole" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L22", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L43", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_built_after_cache_load" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_hasrole" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L30", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L48", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_contains_all_tickers" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_todict" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L40", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L19", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_case_insensitive" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_repr" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L60", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user.py", + "source_location": "L35", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testtickerindex_test_tickerIndex_rebuilt_on_cache_refresh" + "confidence_score": 1.0, + "source": "models_user_user", + "target": "models_user_user_removerole" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L85", + "source_file": "tests/test_models.py", + "source_location": "L50", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testquerycaching_test_queryCache_ttl_configuration" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_remove_role_existing" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L180", + "source_file": "tests/test_models.py", + "source_location": "L57", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_tickerIndex_lookup_performance" + "source": "models_user_user", + "target": "tests_test_models_testusermodel_test_remove_role_last_role" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_cache.py", - "source_location": "L250", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/models/user_session.py", + "source_location": "L5", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_cache_testperformancebenchmarks_test_queryCache_performance" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testquerycaching" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testconnectionpool" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testlazydeserialization" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testqueryoptimization" + "confidence_score": 1.0, + "source": "main_models_user_session_py", + "target": "models_user_session_usersession" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "main/service/user_service.py", + "source_location": "L8", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks" + "source": "models_user_session_usersession", + "target": "service_user_service_userservice" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "tests/test_sessions.py", + "source_location": "L7", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testfilterbysearchterms" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L10", + "source_file": "tests/test_sessions.py", + "source_location": "L8", "weight": 0.8, "confidence_score": 0.5, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testqueryperformance" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L22", + "source_file": "tests/test_sessions.py", + "source_location": "L56", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_built_after_cache_load" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_browser_and_os" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L30", + "source_file": "tests/test_sessions.py", + "source_location": "L69", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_contains_all_tickers" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_fingerprint_only" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L40", + "source_file": "tests/test_sessions.py", + "source_location": "L81", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_case_insensitive" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_fallback" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L49", + "source_file": "tests/test_sessions.py", + "source_location": "L94", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_ticker_lookup_returns_valid_index" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_empty_strings" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L60", + "source_file": "tests/test_sessions.py", + "source_location": "L108", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testtickerindex_test_tickerIndex_rebuilt_on_cache_refresh" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_isactive_default" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L77", + "source_file": "tests/test_sessions.py", + "source_location": "L112", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testquerycaching_test_cache_manager_has_caches_method" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_isactive_can_be_false" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L85", + "source_file": "tests/test_sessions.py", + "source_location": "L156", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testquerycaching_test_queryCache_ttl_configuration" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_session_can_expire" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L93", + "source_file": "tests/test_sessions.py", + "source_location": "L175", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testquerycaching_test_get_cached_stocks_respects_columns_parameter" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_session_still_valid_within_expiry" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L142", + "source_file": "tests/test_sessions.py", + "source_location": "L193", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testqueryoptimization_test_all_optimizations_present" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_session_exactly_at_boundary" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L180", + "source_file": "tests/test_sessions.py", + "source_location": "L210", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_tickerIndex_lookup_performance" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testsessionexpiration_test_created_at_future_date" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L200", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user_session.py", + "source_location": "L38", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_prefix_scan_performance" + "confidence_score": 1.0, + "source": "models_user_session_usersession", + "target": "models_user_session_usersession_getdevicename" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L220", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user_session.py", + "source_location": "L22", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_index_lookup_vs_scan_comparison" + "confidence_score": 1.0, + "source": "models_user_session_usersession", + "target": "models_user_session_usersession_repr" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L250", + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/models/user_session.py", + "source_location": "L25", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_queryCache_performance" + "confidence_score": 1.0, + "source": "models_user_session_usersession", + "target": "models_user_session_usersession_todict" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L273", + "source_file": "tests/test_sessions.py", + "source_location": "L12", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_column_projection_performance" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_repr" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_optimization.py", - "source_location": "L289", + "source_file": "tests/test_sessions.py", + "source_location": "L17", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager", - "target": "tests_test_stocks_optimization_testperformancebenchmarks_test_cache_initialization_time" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_toDict_basic" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L223", - "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager_cachescheduler", - "target": "utils_scheduler_registerjob" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L29", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_cachescheduler", - "target": "stocks_api_cache_stockscachemanager_getcachedstocks" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L122", + "source_file": "tests/test_sessions.py", + "source_location": "L34", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_stockscachemanager_loadfromfeather" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_toDict_with_sensitive" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L115", + "source_file": "tests/test_sessions.py", + "source_location": "L45", "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager_loadfromfeather", - "target": "stocks_api_compress_rebuildabbrevs" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_toDict_hides_useragent" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L91", - "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_compress_rebuildabbrevs" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L95", + "source_file": "tests/test_sessions.py", + "source_location": "L118", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_buildcotationdateindex" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_todict_with_timestamps" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L64", - "weight": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_compressor_rebuildabbrevs" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L71", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_stockscachemanager_putcache" - }, - { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/cache.py", - "source_location": "L33", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_cache_stockscachemanager_getcachedstocks", - "target": "stocks_api_cache_rationale_33" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L25", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_getabbr" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L36", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_getnest" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L46", + "source_file": "tests/test_sessions.py", + "source_location": "L132", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_rebuildabbrevs" + "source": "models_user_session_usersession", + "target": "tests_test_sessions_testusersessionmodel_test_todict_without_timestamps" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L59", + "source_file": "main/service/authentication_service.py", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_compactvalue" + "source": "main_service_authentication_service_py", + "target": "service_authentication_service_authenticationservice" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L98", + "source_file": "main/service/authentication_service.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_compactrow" + "source": "main_service_authentication_service_py", + "target": "service_authentication_service_initialize" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L126", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_compactcotations" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/authentication_service.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_authentication_service_authenticationservice", + "target": "utils_service_manager_servicemanager" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L160", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/authentication_service.py", + "source_location": "L12", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_compressresponse" + "source": "service_authentication_service_initialize", + "target": "utils_service_manager_getapp" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L51", + "source_file": "main/service/orunmila_service.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_walk" + "source": "main_service_orunmila_service_py", + "target": "service_orunmila_service_memorymaintenance" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L80", + "source_file": "main/service/orunmila_service.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_tocolumnar" + "source": "main_service_orunmila_service_py", + "target": "service_orunmila_service_orunmilaservice" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L89", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_compress_py", - "target": "stocks_api_compress_fixheaders" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L177", + "source_file": "main/service/orunmila_service.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_getabbr" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L29", - "weight": 1.0, - "source": "stocks_api_compress_getabbr", - "target": "stocks_api_util_categorizecolumns" + "source": "main_service_orunmila_service_py", + "target": "service_orunmila_service_initialize" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L30", - "weight": 1.0, - "source": "stocks_api_compress_getabbr", - "target": "stocks_api_util_generateabbreviations" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L177", + "source_file": "main/service/orunmila_service.py", + "source_location": "L68", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_getnest" + "source": "service_orunmila_service_initialize", + "target": "utils_service_manager_getapp" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L40", + "source_file": "main/service/orunmila_service.py", + "source_location": "L71", "weight": 1.0, - "source": "stocks_api_compress_getnest", - "target": "stocks_api_util_detectnestedfields" + "source": "service_orunmila_service_initialize", + "target": "models_loader_getembeddingmodel" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L69", + "source_file": "main/service/orunmila_service.py", + "source_location": "L73", "weight": 1.0, - "source": "controller_stocksapi_controller_listfields", - "target": "stocks_api_compress_getnest" + "source": "service_orunmila_service_initialize", + "target": "utils_scheduler_registerjob" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L147", + "source_file": "main/service/scraper_service.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compactcotations", - "target": "stocks_api_compress_compactvalue" + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_runscraper" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L178", + "source_file": "main/service/scraper_service.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_compactrow" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L116", - "weight": 1.0, - "source": "stocks_api_compress_compactrow", - "target": "stocks_api_response_cache_responsecache_set" + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_registerscraperjobs" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L169", + "source_file": "main/service/scraper_service.py", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_compactcotations" + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_scraperservice" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L140", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/service/scraper_service.py", + "source_location": "L27", "weight": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "stocks_api_compress_compressresponse" + "confidence_score": 1.0, + "source": "main_service_scraper_service_py", + "target": "service_scraper_service_initialize" }, { "relation": "calls", "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L215", + "confidence": "EXTRACTED", + "source_file": "main/service/scraper_service.py", + "source_location": "L60", "weight": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "stocks_api_compress_compressresponse" + "confidence_score": 1.0, + "source": "service_scraper_service_initialize", + "target": "service_scraper_service_registerscraperjobs" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L275", + "source_file": "main/service/scraper_service.py", + "source_location": "L42", "weight": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "stocks_api_compress_compressresponse" + "source": "service_scraper_service_registerscraperjobs", + "target": "utils_scheduler_registerjob" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L318", + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/service/scraper_service.py", + "source_location": "L23", "weight": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "stocks_api_compress_compressresponse" + "confidence_score": 1.0, + "source": "service_scraper_service_rationale_23", + "target": "service_scraper_service_registerscraperjobs" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L179", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_walk" + "source": "main_service_stocksapi_service_py", + "target": "service_stocksapi_service_mcpdetectmiddleware" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L181", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_tocolumnar" + "source": "main_service_stocksapi_service_py", + "target": "service_stocksapi_service_stocksapiservice" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L185", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_compress_compressresponse", - "target": "stocks_api_compress_fixheaders" + "source": "main_service_stocksapi_service_py", + "target": "service_stocksapi_service_initialize" }, { - "relation": "imports_from", - "context": "import", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L3", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "fastapi" + "source": "service_stocksapi_service_mcpdetectmiddleware", + "target": "service_stocksapi_service_mcpdetectmiddleware_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", + "source_file": "main/service/stocksapi_service.py", "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_verifyapikey" + "source": "service_stocksapi_service_mcpdetectmiddleware", + "target": "service_stocksapi_service_mcpdetectmiddleware_call" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L16", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_hashkey" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_stocksapi_service_mcpdetectmiddleware", + "target": "utils_service_manager_servicemanager" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L44", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/stocksapi_service.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_stocksapi_service_stocksapiservice", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/stocksapi_service.py", + "source_location": "L29", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_generatesecurekey" + "source": "service_stocksapi_service_initialize", + "target": "utils_service_manager_getapp" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L47", + "source_file": "main/service/user_service.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_createkey" + "source": "main_service_user_service_py", + "target": "service_user_service_removeinactivesessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L22", + "source_file": "main/service/user_service.py", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_isquotaexceeded" + "source": "main_service_user_service_py", + "target": "service_user_service_userservice" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L26", + "source_file": "main/service/user_service.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_needsreset" + "source": "main_service_user_service_py", + "target": "service_user_service_initialize" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L37", + "source_file": "main/service/user_service.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_resetquota" + "source": "main_service_user_service_py", + "target": "service_user_service_registersessioncleanupjobs" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L42", + "source_file": "main/service/user_service.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_incrementusage" + "source": "main_service_user_service_py", + "target": "service_user_service_inactivesessionsscheduler" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L46", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/user_service.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_user_service_userservice", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/user_service.py", + "source_location": "L42", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_getremainingquota" + "source": "service_user_service_initialize", + "target": "utils_service_manager_getapp" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L50", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/user_service.py", + "source_location": "L48", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_keytodict" + "source": "service_user_service_initialize", + "target": "utils_scheduler_registerjob" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L16", + "source_file": "main/service/user_service.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_key_py", - "target": "stocks_api_key_hash_key" + "source": "service_user_service_initialize", + "target": "service_user_service_registersessioncleanupjobs" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L27", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_key_hashkey", - "target": "stocks_api_key_verifyapikey" + "source": "main_utils_connectivity_py", + "target": "utils_connectivity_checkdatabaseconnection" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L247", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/connectivity.py", + "source_location": "L51", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" + "confidence_score": 1.0, + "source": "main_utils_connectivity_py", + "target": "utils_connectivity_checkserviceconnection" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L263", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" + "confidence_score": 1.0, + "source": "main_utils_connectivity_py", + "target": "utils_connectivity_checkmysqlconnection" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L274", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/connectivity.py", + "source_location": "L13", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_invalid" + "confidence_score": 1.0, + "source": "main_utils_connectivity_py", + "target": "utils_connectivity_checksingledb" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L285", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L112", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_missing" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_service_not_found" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L295", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L124", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_disabled" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_stocks_api_health_ok" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L239", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L139", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_disabled_returns_none" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_non_stocks_prefix" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L252", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L154", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_missing_raises_401" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_non_200_status" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L266", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L164", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_invalid_key_raises_401" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_connection_error" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L282", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L174", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_quota_exceeded" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_timeout" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L296", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L184", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_success" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_request_exception" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L314", + "source_file": "tests/test_connectivity_coverage.py", + "source_location": "L194", "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_http_exception_rollback" + "source": "utils_connectivity_checkserviceconnection", + "target": "tests_test_connectivity_coverage_test_generic_exception" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L329", - "weight": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "tests_test_stocks_api_coverage_test_verify_api_key_generic_exception_rollback" - }, - { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/key.py", - "source_location": "L28", + "source_file": "main/utils/connectivity.py", + "source_location": "L66", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_key_verifyapikey", - "target": "stocks_api_key_hash_key" + "source": "utils_connectivity_checkserviceconnection", + "target": "utils_http_session_get_session" }, { "relation": "imports_from", "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L2", + "source_file": "main/utils/errors.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", + "source": "main_utils_errors_py", "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L16", + "source_file": "main/utils/errors.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_sanitizenanvalues" + "source": "main_utils_errors_py", + "target": "utils_errors_errorresponse" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L49", + "source_file": "main/utils/errors.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_filtercotationcolumn" + "source": "main_utils_errors_py", + "target": "utils_errors_requestcontextfilter" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L53", + "source_file": "main/utils/errors.py", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_baseframe" + "source": "main_utils_errors_py", + "target": "utils_errors_builderrorresponse" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L66", + "source_file": "main/utils/errors.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_validatefields" + "source": "main_utils_errors_py", + "target": "utils_errors_httpexceptionhandler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L79", + "source_file": "main/utils/errors.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_envelope" + "source": "main_utils_errors_py", + "target": "utils_errors_validationexceptionhandler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L90", + "source_file": "main/utils/errors.py", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_finalize" + "source": "main_utils_errors_py", + "target": "utils_errors_genericexceptionhandler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L123", + "source_file": "main/utils/errors.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_deserializejsoncolumns" + "source": "main_utils_errors_py", + "target": "utils_errors_registererrorhandlers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L151", + "source_file": "main/utils/errors.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_filterbysearchterms" + "source": "main_utils_errors_py", + "target": "utils_errors_build_error_response" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L169", + "source_file": "main/utils/errors.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_queryhistorical" + "source": "main_utils_errors_py", + "target": "utils_errors_http_exception_handler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L226", + "source_file": "main/utils/errors.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_queryfundamental" + "source": "main_utils_errors_py", + "target": "utils_errors_validation_exception_handler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L284", + "source_file": "main/utils/errors.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_querycotations" + "source": "main_utils_errors_py", + "target": "utils_errors_generic_exception_handler" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L332", + "source_file": "main/utils/errors.py", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_istransientliveerror" + "source": "main_utils_errors_py", + "target": "utils_errors_register_error_handlers" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L347", + "source_file": "main/utils/errors.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_fetchlivepayload" + "source": "utils_errors_errorresponse", + "target": "utils_errors_builderrorresponse" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L325", + "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, - "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_querylivecotation" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L14", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L65", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_stocksquerymanager" + "source": "utils_errors_errorresponse", + "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L40", + "source_file": "main/utils/errors.py", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_parsecotationdates" + "source": "utils_errors_errorresponse", + "target": "utils_errors_build_error_response" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L49", + "source_file": "main/utils/errors.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_filtercotationdata" + "source": "utils_errors_requestcontextfilter", + "target": "utils_errors_requestcontextfilter_filter" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L45", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/utils/logging_config.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "target": "utils_logging_config_discordhandler" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/utils/logging_config.py", + "source_location": "L20", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_parsecotationdate" + "source": "utils_errors_requestcontextfilter", + "target": "utils_logging_config_setuplogging" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L55", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L12", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_errors_requestcontextfilter", + "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_requestcontextfilter", + "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_requestcontextfilter", + "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_requestcontextfilter", + "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_requestcontextfilter", + "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_requestcontextfilter", + "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_requestcontextfilter", + "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": "L78", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_query_py", - "target": "stocks_api_query_filtercotationbydate" + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testrequestcontextfilter_test_injects_request_id_from_contextvar" }, { "relation": "calls", "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L87", + "weight": 1.0, + "source": "utils_errors_requestcontextfilter", + "target": "tests_test_error_handlers_testrequestcontextfilter_test_empty_request_id_default" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L86", + "source_file": "main/utils/errors.py", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_query_envelope", - "target": "stocks_api_query_sanitizenanvalues" + "source": "utils_errors_requestcontextfilter", + "target": "utils_errors_rationale_22" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L142", + "source_file": "main/utils/errors.py", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_query_deserializejsoncolumns", - "target": "stocks_api_query_sanitizenanvalues" + "source": "utils_errors_builderrorresponse", + "target": "utils_errors_httpexceptionhandler" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L106", + "source_file": "main/utils/errors.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_query_stocksquerymanager_finalize", - "target": "stocks_api_query_sanitizenanvalues" + "source": "utils_errors_builderrorresponse", + "target": "utils_errors_validationexceptionhandler" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L93", + "source_file": "main/utils/errors.py", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_query_stocksquerymanager_deserializejsoncolumns", - "target": "stocks_api_query_sanitizenanvalues" + "source": "utils_errors_builderrorresponse", + "target": "utils_errors_genericexceptionhandler" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L153", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/conftest.py", + "source_location": "L84", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_sanitizenanvalues", - "target": "stocks_api_query_stocksquerymanager_queryhistorical" + "source": "utils_errors_registererrorhandlers", + "target": "tests_conftest_stocks_http_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L225", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/conftest.py", + "source_location": "L93", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_sanitizenanvalues", - "target": "stocks_api_query_stocksquerymanager_queryfundamental" + "source": "utils_errors_registererrorhandlers", + "target": "tests_conftest_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L336", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L31", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_sanitizenanvalues", - "target": "stocks_api_query_stocksquerymanager_querycotations" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_auth_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L119", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L46", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_query_filtercotationcolumn" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_user_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L99", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L66", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_stocksquerymanager_finalize", - "target": "stocks_api_query_filtercotationcolumn" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_prometheus_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L326", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L87", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "stocks_api_query_stocksquerymanager_querycotations" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_make_stocksapi_client" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1421", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L685", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_filters_by_date" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1440", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L731", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_range" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_found" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1449", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L754", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_filter_cotation_column_handles_non_list" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_not_found" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1240", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L784", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_filters_by_date" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1253", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L807", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_range" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1262", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L832", "weight": 1.0, - "source": "stocks_api_query_filtercotationcolumn", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_filter_cotation_column_handles_non_list" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L179", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L858", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_query_baseframe" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testrevokeallsessions_test_revoke_all_sessions" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L236", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L975", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_query_baseframe" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L290", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1011", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_querycotations", - "target": "stocks_api_query_baseframe" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L189", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1090", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_query_validatefields" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L247", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L1132", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_query_validatefields" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L120", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_error_handlers.py", + "source_location": "L28", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_query_envelope" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_error_handlers_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L297", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_oauth_cookie_security.py", + "source_location": "L28", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_querycotations", - "target": "stocks_api_query_envelope" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_oauth_cookie_security_make_callback_client" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L104", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sso_state_cookie.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_query_filterbysearchterms" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_sso_state_cookie_build_app" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L113", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_controller.py", + "source_location": "L38", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_query_deserializejsoncolumns" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L207", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_controller.py", + "source_location": "L57", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_query_finalize" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L276", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1165", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_query_finalize" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L306", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1353", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_querycotations", - "target": "stocks_api_query_finalize" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_returns_200" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L117", + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1377", "weight": 1.0, - "source": "stocks_api_query_finalize", - "target": "stocks_api_util_parsedaterange" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L253", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1466", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_query_filterbysearchterms" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L300", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_stocks_api_coverage.py", + "source_location": "L1298", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_querycotations", - "target": "stocks_api_query_filterbysearchterms" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_search_required" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L184", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L156", "weight": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_util_categorizecolumns" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testregisterendpoint_make_register_client" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L193", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L236", "weight": 1.0, - "source": "stocks_api_query_queryhistorical", - "target": "stocks_api_util_parsedaterange" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testloginendpoint_make_login_client" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L142", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L289", "weight": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "stocks_api_query_queryhistorical" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testlogoutendpoint_make_logout_client" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L241", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L433", "weight": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_util_categorizecolumns" + "source": "utils_errors_registererrorhandlers", + "target": "tests_test_controllers_coverage_testgooglecallback_make_callback_client" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/http_session.py", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_http_session_py", + "target": "utils_http_session_getsession" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/http_session.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_http_session_py", + "target": "utils_http_session_cleanup" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/http_session.py", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_http_session_py", + "target": "utils_http_session_get_session" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_logging_config_py", + "target": "utils_logging_config_setuplogging" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_logging_config_py", + "target": "utils_logging_config_discordhandler" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L49", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_logging_config_py", + "target": "utils_logging_config_setupdiscordhandler" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_logging_config_discordhandler", + "target": "utils_logging_config_discordhandler_init" + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_logging_config_discordhandler", + "target": "utils_logging_config_discordhandler_emit" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/logging_config.py", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_logging_config_discordhandler", + "target": "utils_logging_config_setupdiscordhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_logging_config_coverage_testdiscordhandleremit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_logging_config_coverage_testsetuplogging" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_thread_safety.py", + "source_location": "L138", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testgetsession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_thread_safety.py", + "source_location": "L138", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testdiscordhandlerthreadpool" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_thread_safety.py", + "source_location": "L138", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testconcurrentgetsession" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L258", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L10", "weight": 1.0, - "source": "stocks_api_query_queryfundamental", - "target": "stocks_api_util_parsedaterange" + "source": "utils_logging_config_discordhandler", + "target": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L212", + "source_file": "tests/test_thread_safety.py", + "source_location": "L110", "weight": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "stocks_api_query_queryfundamental" + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_emit_submits_to_executor" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L268", + "source_file": "tests/test_thread_safety.py", + "source_location": "L140", "weight": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "stocks_api_query_querycotations" + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_concurrent_emits_do_not_spawn_unbounded_threads" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_thread_safety.py", + "source_location": "L138", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_logging_config_discordhandler", + "target": "tests_test_thread_safety_testconcurrenthttpproxy" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/query.py", - "source_location": "L358", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L107", "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_query_querylivecotation", - "target": "stocks_api_query_fetchlivepayload" + "source": "utils_logging_config_setupdiscordhandler", + "target": "tests_test_logging_config_coverage_test_setup_discord_handler_enabled" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L313", + "source_file": "tests/test_logging_config_coverage.py", + "source_location": "L113", "weight": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "stocks_api_query_querylivecotation" + "source": "utils_logging_config_setupdiscordhandler", + "target": "tests_test_logging_config_coverage_test_setup_discord_handler_disabled" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L14", + "source_file": "main/utils/migrator.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_sync_cache_py", - "target": "stocks_api_sync_cache_cache" + "source": "main_utils_migrator_py", + "target": "utils_migrator_runmigrations" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/sync_cache.py", - "source_location": "L16", + "source_file": "main/utils/request_id.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_sync_cache_py", - "target": "stocks_api_sync_cache_sync_cache" + "source": "main_utils_request_id_py", + "target": "utils_request_id_requestidmiddleware" }, { - "relation": "imports_from", - "context": "import", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L2", + "source_file": "main/utils/request_id.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "fastapi" + "source": "utils_request_id_requestidmiddleware", + "target": "basehttpmiddleware" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L15", + "source_file": "main/utils/request_id.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_dedupabbrev" + "source": "utils_request_id_requestidmiddleware", + "target": "utils_request_id_requestidmiddleware_dispatch" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L24", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_autoabbreviate" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_samplebody" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testerrorresponsemodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testrequestcontextfilter" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testhttpexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testvalidationexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testgenericexceptionhandler" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_error_handlers.py", + "source_location": "L17", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_error_handlers_testsuccesspassthrough" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_request_id.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_request_id_requestidmiddleware", + "target": "tests_test_request_id_testrequestidmiddleware" + }, + { + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L45", + "source_file": "main/utils/roles.py", + "source_location": "L2", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_generateabbreviations" + "source": "main_utils_roles_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L5", + "source_file": "main/utils/roles.py", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_categorizecolumns" + "source": "main_utils_roles_py", + "target": "utils_roles_permission" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L71", + "source_file": "main/utils/roles.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parsedate" + "source": "main_utils_roles_py", + "target": "utils_roles_all" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L55", + "source_file": "main/utils/roles.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parsedaterange" + "source": "main_utils_roles_py", + "target": "utils_roles_roles" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L94", + "source_file": "main/utils/roles.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_detectnestedfields" + "source": "main_utils_roles_py", + "target": "utils_roles_checkaccess" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L27", + "source_file": "main/utils/roles.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parse_date" + "source": "main_utils_roles_py", + "target": "utils_roles_requirepermission" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L33", + "source_file": "main/utils/roles.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parsedatestart" + "source": "main_utils_roles_py", + "target": "utils_roles_servicetoken" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L43", + "source_file": "main/utils/roles.py", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parsedateend" + "source": "main_utils_roles_py", + "target": "utils_roles_introspecturl" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L29", + "source_file": "main/utils/roles.py", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_normalizecolumns" + "source": "main_utils_roles_py", + "target": "utils_roles_extractcredential" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L21", + "source_file": "main/utils/roles.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "main_app_stocks_api_util_py", - "target": "stocks_api_util_parseyearinput" + "source": "main_utils_roles_py", + "target": "utils_roles_introspectuser" }, { - "relation": "calls", - "context": "call", + "relation": "inherits", "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L49", + "source_file": "main/utils/roles.py", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "stocks_api_util_generateabbreviations", - "target": "stocks_api_util_dedupabbrev" + "source": "utils_roles_permission", + "target": "intflag" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L129", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_detectnestedfields", - "target": "stocks_api_util_dedupabbrev" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "utils_roles_permission" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L49", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_generateabbreviations", - "target": "stocks_api_util_autoabbreviate" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "utils_roles_permission" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L129", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_detectnestedfields", - "target": "stocks_api_util_autoabbreviate" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_testpermission" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L65", - "weight": 1.0, - "source": "controller_stocksapi_controller_listfields", - "target": "stocks_api_util_generateabbreviations" + "source_file": "tests/test_roles.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_testroles" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/util.py", - "source_location": "L46", - "weight": 1.0, - "source": "stocks_api_util_generateabbreviations", - "target": "stocks_api_response_cache_responsecache_set" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_coverage_testcheckaccess" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L33", - "weight": 1.0, - "source": "stocks_api_compressor_getabbr", - "target": "stocks_api_util_generateabbreviations" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_coverage_testrequirepermission" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/util.py", - "source_location": "L46", - "weight": 1.0, - "source": "stocks_api_util_generateabbreviations", - "target": "prometheus_state_harnessstate_set" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_coverage_testpermissionall" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L52", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "controller_stocksapi_controller_listfields" + "source_file": "tests/test_roles_coverage.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_roles_coverage_testroleshierarchy" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L76", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_queryhistorical", - "target": "stocks_api_util_categorizecolumns" + "source_file": "main/app/prometheus/memory.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "prometheus_memory_memorymanager" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L141", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_queryfundamental", - "target": "stocks_api_util_categorizecolumns" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testgetmemorylimit" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L32", - "weight": 1.0, - "source": "stocks_api_compressor_getabbr", - "target": "stocks_api_util_categorizecolumns" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testupsertmemory" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L11", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_historical_and_fundamental" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testcountmemories" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L20", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_only_fundamental" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testgetusermemories" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L26", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_reserved_words_excluded" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testdeletememory" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L32", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_single_year" + "source_file": "tests/test_memory_manager.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_memory_manager_testsearchfulltext" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L37", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_api_util_coverage_testcategorizecolumns_test_no_year_suffix" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testissecurescheme" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L14", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_historical_only" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testhealthendpoint" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L23", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_fundamental_only" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testregisterendpoint" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L32", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_mixed" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testloginendpoint" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L40", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_excludes_special" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testlogoutendpoint" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L47", - "weight": 1.0, - "source": "stocks_api_util_categorizecolumns", - "target": "tests_test_stocks_util_testcategorizecolumns_test_categorize_columns_empty" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgooglelogin" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L88", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "stocks_api_util_parsedate" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgooglecallback" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L97", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_finalize", - "target": "stocks_api_util_parsedaterange" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testuserhealth" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L124", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_queryhistorical", - "target": "stocks_api_util_parsedaterange" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgetme" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L197", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_queryfundamental", - "target": "stocks_api_util_parsedaterange" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testupgradeendpoints" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/query.py", - "source_location": "L318", - "weight": 1.0, - "source": "stocks_api_query_stocksquerymanager_querycotations", - "target": "stocks_api_util_parsedaterange" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testadminaccess" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L44", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "stocks_api_util_parse_date" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgetsessions" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L60", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_parsedatestart", - "target": "stocks_api_util_parsedaterange" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgetcurrentsession" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/app/stocks_api/util.py", - "source_location": "L60", - "weight": 1.0, - "confidence_score": 1.0, - "source": "stocks_api_util_parsedateend", - "target": "stocks_api_util_parsedaterange" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testrevokesession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L45", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_empty_string" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testrevokeallsessions" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L48", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_none" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheushealth" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L51", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_single_year" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusgetsessions" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L60", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_year_range" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheuscreatesession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L65", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_spaces" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L71", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_three_values_raises" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusgethistory" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L75", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_month_start" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheusdeletesession" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_util_coverage.py", - "source_location": "L82", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_api_util_coverage_testparsedaterange_test_full_date" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testprometheuschat" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L55", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_single" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapihealth" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L64", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_range" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapikeytest" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L69", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_none" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapihistorical" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L74", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_year_empty_string" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapifundamental" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L79", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_month" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_teststocksapigeneratekey" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L86", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_full_date" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testaddroletouser" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L90", - "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_two_values" + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testgetcurrentuser" }, { - "relation": "calls", - "context": "call", + "relation": "uses", "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_util.py", - "source_location": "L98", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testhashpasswordempty" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testverifyaccesstoken" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_permission", + "target": "tests_test_controllers_coverage_testmanagerinit" + }, + { + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "main/utils/roles.py", + "source_location": "L32", "weight": 1.0, - "source": "stocks_api_util_parsedaterange", - "target": "tests_test_stocks_util_testparsedaterange_test_parse_three_values_raises" + "confidence_score": 1.0, + "source": "intflag", + "target": "utils_roles_roles" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/util.py", - "source_location": "L114", + "source_file": "main/app/stocks_api/compress.py", + "source_location": "L84", "weight": 1.0, - "source": "stocks_api_util_detectnestedfields", - "target": "stocks_api_response_cache_responsecache_set" + "source": "stocks_api_compress_tocolumnar", + "target": "utils_roles_all" }, { "relation": "calls", @@ -70067,11499 +73745,12976 @@ "confidence": "INFERRED", "confidence_score": 0.8, "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L47", + "source_location": "L91", "weight": 1.0, - "source": "stocks_api_compressor_getnest", - "target": "stocks_api_util_detectnestedfields" + "source": "stocks_api_compressor_tocolumnar", + "target": "utils_roles_all" }, { "relation": "calls", "context": "call", "confidence": "INFERRED", "confidence_score": 0.8, - "source_file": "main/app/stocks_api/util.py", - "source_location": "L114", - "weight": 1.0, - "source": "stocks_api_util_detectnestedfields", - "target": "prometheus_state_harnessstate_set" - }, - { - "relation": "imports_from", - "context": "import", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L4", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "fastapi" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L9", + "source_file": "tests/test_vector_utils.py", + "source_location": "L112", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_usermanager" + "source": "utils_roles_all", + "target": "tests_test_vector_utils_testcontenthash_test_hex_format" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L13", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_getroleslist" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L23", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "utils_roles_roles" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L28", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_getcurrentuser" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "utils_roles_roles" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L34", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_todict" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_roles_testpermission" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L19", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_addrole" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_roles_testroles" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L28", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_hasrole" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles_coverage.py", + "source_location": "L65", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_roles_coverage_testcheckaccess" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L14", - "weight": 1.0, - "confidence_score": 1.0, - "source": "main_app_user_user_py", - "target": "user_user_addroletouser" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_roles_coverage.py", + "source_location": "L65", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_roles_coverage_testrequirepermission" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/user/user.py", - "source_location": "L7", + "source_file": "tests/test_roles_coverage.py", + "source_location": "L65", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "models_user_user" + "source": "utils_roles_roles", + "target": "tests_test_roles_coverage_testpermissionall" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/utils/roles.py", + "source_file": "tests/test_roles_coverage.py", "source_location": "L65", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "utils_roles_permission" + "source": "utils_roles_roles", + "target": "tests_test_roles_coverage_testroleshierarchy" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/utils/roles.py", - "source_location": "L65", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L7", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "utils_roles_roles" + "source": "utils_roles_roles", + "target": "prometheus_memory_memorymanager" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testissecurescheme" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testhealthendpoint" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testregisterendpoint" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testloginendpoint" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testlogoutendpoint" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgooglelogin" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgooglecallback" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testuserhealth" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgetme" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testupgradeendpoints" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testadminaccess" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgetsessions" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgetcurrentsession" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testrevokesession" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testrevokeallsessions" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheushealth" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheusgetsessions" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheuscreatesession" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheusgethistory" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheusdeletesession" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testprometheuschat" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_teststocksapihealth" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_teststocksapikeytest" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_teststocksapihistorical" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_teststocksapifundamental" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_teststocksapigeneratekey" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testaddroletouser" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testgetcurrentuser" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testhashpasswordempty" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testverifyaccesstoken" }, { "relation": "uses", "confidence": "INFERRED", "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", + "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "user_user_usermanager", + "source": "utils_roles_roles", "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_controllers_coverage_testmanagerinit" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_controllers_coverage.py", + "source_location": "L61", + "weight": 0.8, + "confidence_score": 0.5, + "source": "utils_roles_roles", + "target": "tests_test_controllers_coverage_testmanagerinit" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_scheduler_py", + "target": "utils_scheduler_getsharedscheduler" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L42", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_scheduler_py", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_rationale_1", + "target": "main_utils_scheduler_py" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_registerjob", + "target": "utils_scheduler_getsharedscheduler" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L33", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_rationale_33", + "target": "utils_scheduler_getsharedscheduler" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L70", + "weight": 1.0, + "source": "service_prometheus_service_initialize", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/user_service.py", + "source_location": "L55", + "weight": 1.0, + "source": "service_user_service_registersessioncleanupjobs", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L69", + "weight": 1.0, + "source": "service_prometheus_service_registermemorymaintenancejob", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "main/utils/scheduler.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "utils_scheduler_rationale_43", + "target": "utils_scheduler_registerjob" + }, + { + "relation": "imports_from", + "context": "import", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L8", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "fastapi" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "utils_service_manager_getapp" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L48", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "utils_service_manager_runall" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/service_manager.py", + "source_location": "L16", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_service_manager_py", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L64", + "weight": 1.0, + "source": "service_prometheus_service_initialize", + "target": "utils_service_manager_getapp" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L12", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_models_loader_py", + "target": "models_loader_getembeddingmodel" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_models_loader_py", + "target": "models_loader_embed" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_utils_models_loader_py", + "target": "models_loader_downloadmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/vector.py", + "source_location": "L11", + "weight": 1.0, + "source": "prometheus_vector_embed", + "target": "models_loader_getembeddingmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L12", + "weight": 1.0, + "source": "service_prometheus_service_initialize", + "target": "models_loader_getembeddingmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_loader_getembeddingmodel", + "target": "models_loader_embed" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/utils/models/loader.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "models_loader_getembeddingmodel", + "target": "models_loader_downloadmodel" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_py", + "target": "migrations_env_getdatabaseurl" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_py", + "target": "migrations_env_runmigrationsoffline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L39", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_py", + "target": "migrations_env_runmigrationsonline" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L30", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_getdatabaseurl", + "target": "migrations_env_runmigrationsoffline" + }, + { + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "migrations/env.py", + "source_location": "L41", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_env_getdatabaseurl", + "target": "migrations_env_runmigrationsonline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_25af7ad931e7_initial_migration_py", + "target": "versions_25af7ad931e7_initial_migration_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", + "source_location": "L61", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_25af7ad931e7_initial_migration_py", + "target": "versions_25af7ad931e7_initial_migration_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_25af7ad931e7_initial_migration_py", + "target": "versions_25af7ad931e7_initial_migration_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", + "target": "versions_4a2f1c9e3b5d_user_sessions_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", + "target": "versions_4a2f1c9e3b5d_user_sessions_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", + "target": "versions_4a2f1c9e3b5d_user_sessions_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_1" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L44", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_9f3b339dde20_drop_unused_user_sessions_columns_upgrade", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_44" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", + "source_location": "L51", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_9f3b339dde20_drop_unused_user_sessions_columns_downgrade", + "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_51" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_add_access_token_hash_py", + "target": "versions_add_access_token_hash_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L54", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_add_access_token_hash_py", + "target": "versions_add_access_token_hash_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_add_access_token_hash_py", + "target": "versions_add_access_token_hash_rationale_1" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_add_access_token_hash_upgrade", + "target": "versions_add_access_token_hash_rationale_22" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/add_access_token_hash.py", + "source_location": "L55", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_add_access_token_hash_downgrade", + "target": "versions_add_access_token_hash_rationale_55" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", + "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", + "source_location": "L50", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", + "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_downgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", + "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_fix_partial" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", + "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", + "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", + "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", + "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", + "source_location": "L17", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3df3fc5ca72_rename_memory_base_score_py", + "target": "versions_d3df3fc5ca72_rename_memory_base_score_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3df3fc5ca72_rename_memory_base_score_py", + "target": "versions_d3df3fc5ca72_rename_memory_base_score_downgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", + "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", + "source_location": "L36", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", + "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", + "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_rationale_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py", + "target": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", + "source_location": "L45", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py", + "target": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_rationale_1", + "target": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", + "source_location": "L22", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py", + "target": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py", + "target": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_rationale_1", + "target": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", + "source_location": "L26", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", + "target": "versions_f1a2b3c4d5e6_session_gc_index_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", + "target": "versions_f1a2b3c4d5e6_session_gc_index_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_f1a2b3c4d5e6_session_gc_index_rationale_1", + "target": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", + "target": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_upgrade" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py", + "target": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_downgrade" + }, + { + "relation": "rationale_for", + "confidence": "EXTRACTED", + "source_file": "migrations/versions/f7a8b9c0d1e2_rename_prometheus_to_orunmila.py", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_rationale_1", + "target": "migrations_versions_f7a8b9c0d1e2_rename_prometheus_to_orunmila_py" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_project_overview" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L4", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_dev_commands" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L23", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_architecture" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_testing" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L38", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_graphify" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_swarm_delegation_default" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_stocks_api_pandas_first_pattern" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L54", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_scraper_b3_xango_batch_data_pipeline" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L60", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_auth_users_dual_layer_session_security" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L28", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_key_quirks" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "agents_md", + "target": "server_agents_prometheus_ai_chat_strengths_gaps" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_agents_dev_commands", + "target": "server_agents_codeblock_1" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "AGENTS.md", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_agents_dev_commands", + "target": "server_agents_ci_pipeline_order" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_models_testusermodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "readme_md", + "target": "server_readme_mansa_server" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_models_teststocksapikeymodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L7", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_run_with_docker" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_models_testprometheussessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L20", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_environment_setup" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1495", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L85", "weight": 1.0, - "source": "user_user_usermanager", - "target": "tests_test_controllers_coverage_testmanagerinit_test_manager_init" + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_health_check" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_controller.py", - "source_location": "L52", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_memory_controller_testmemorycontrollerroutes" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L91", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_mansa_server", + "target": "server_readme_license" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_controller.py", - "source_location": "L52", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_memory_controller_testmemoryendpointsintegration" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L9", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_run_with_docker", + "target": "server_readme_codeblock_1" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_teststockscachemanager" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L24", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_environment_setup", + "target": "server_readme_codeblock_2" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testverifyapikey" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "README.md", + "source_location": "L87", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_readme_health_check", + "target": "server_readme_codeblock_3" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testgeneratesecurekey" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L25", + "weight": 1.0, + "confidence_score": 1.0, + "source": "todo_md", + "target": "server_todo_user_structure_defined_by_string_roles" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testcreatekey" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_user" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testdeserializejsoncolumns" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L37", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_premium" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testfilterbysearchterms" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L40", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_developer" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testqueryhistorical" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L67", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_stocks_api" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testqueryfundamental" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "TODO.md", + "source_location": "L70", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_todo_user_structure_defined_by_string_roles", + "target": "server_todo_prometheus" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1160", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testquerycotations" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L1", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_md", + "target": "docs_authentication_authentication_management" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1461", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_stocks_api_coverage_testquerylivecotation" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L5", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_token_session_lifetime" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1493", - "weight": 0.8, - "confidence_score": 0.5, - "source": "user_user_usermanager", - "target": "tests_test_controllers_coverage_teststocksapikeytest" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L11", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_token_extraction_order" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L10", + "source_file": "docs/authentication.md", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_usermanager", - "target": "user_user_usermanager_init" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_cookie_handling_conditional_secure" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L83", + "source_file": "docs/authentication.md", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_getroleslist", - "target": "user_user_getcurrentuser" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_session_data_model_family_only" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", + "source_file": "docs/authentication.md", "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_getroleslist", - "target": "user_user_todict" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_roles_and_permissions" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L22", + "source_file": "docs/authentication.md", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_getroleslist", - "target": "user_user_addrole" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_rate_limits" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/app/user/user.py", - "source_location": "L31", + "source_file": "docs/authentication.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "user_user_getroleslist", - "target": "user_user_hasrole" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_api_endpoints" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L6", + "source_file": "docs/authentication.md", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "fastapi" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_security_features" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L20", + "source_file": "docs/authentication.md", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_issecurescheme" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_not_implemented" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L44", + "source_file": "docs/authentication.md", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_resolvecookiedomain" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_workflow" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L32", + "source_file": "docs/authentication.md", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_issuesessioncookie" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_license" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L24", + "source_file": "docs/authentication.md", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_health" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_usage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L29", + "source_file": "docs/authentication.md", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_register" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_device_detection" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L71", + "source_file": "docs/authentication.md", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_login" + "source": "docs_authentication_authentication_management", + "target": "docs_authentication_session_management" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L100", + "source_file": "docs/authentication.md", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_logout" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_health_check" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L131", + "source_file": "docs/authentication.md", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_googlelogin" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_user_registration" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L146", + "source_file": "docs/authentication.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_authentication_controller_py", - "target": "controller_authentication_controller_googlecallback" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_user_login" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L39", + "source_file": "docs/authentication.md", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_issuesessioncookie" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_logout" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L123", + "source_file": "docs/authentication.md", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_logout" + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_oauth2_login" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L114", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L120", "weight": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_https" + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_callback_cookie_only" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L121", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L77", "weight": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_http" + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_profile_me" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L128", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/authentication.md", + "source_location": "L108", "weight": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "tests_test_controllers_coverage_testissecurescheme_test_is_secure_no_scheme" + "confidence_score": 1.0, + "source": "docs_authentication_api_endpoints", + "target": "docs_authentication_google_callback" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L49", + "source_file": "docs/authentication.md", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_register" + "source": "docs_authentication_health_check", + "target": "docs_authentication_codeblock_1" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L87", + "source_file": "docs/authentication.md", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_login" + "source": "docs_authentication_health_check", + "target": "docs_authentication_codeblock_2" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L176", + "source_file": "docs/authentication.md", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issecurescheme", - "target": "controller_authentication_controller_googlecallback" + "source": "docs_authentication_usage", + "target": "docs_authentication_codeblock_1" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L58", + "source_file": "docs/authentication.md", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_resolvecookiedomain" + "source": "docs_authentication_user_registration", + "target": "docs_authentication_codeblock_2" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L160", + "source_file": "docs/authentication.md", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_logout", - "target": "controller_authentication_controller_resolvecookiedomain" + "source": "docs_authentication_user_registration", + "target": "docs_authentication_codeblock_3" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L81", + "source_file": "docs/authentication.md", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_register" + "source": "docs_authentication_user_login", + "target": "docs_authentication_codeblock_3" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L107", + "source_file": "docs/authentication.md", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_login" + "source": "docs_authentication_user_login", + "target": "docs_authentication_codeblock_4" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/authentication_controller.py", - "source_location": "L186", + "source_file": "docs/authentication.md", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_authentication_controller_issuesessioncookie", - "target": "controller_authentication_controller_googlecallback" + "source": "docs_authentication_logout", + "target": "docs_authentication_codeblock_4" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L8", + "source_file": "docs/authentication.md", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "fastapi" + "source": "docs_authentication_logout", + "target": "docs_authentication_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L21", + "source_file": "docs/authentication.md", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_verifysessionownsership" + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L19", + "source_file": "docs/authentication.md", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_health" + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L23", + "source_file": "docs/authentication.md", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_getsessions" + "source": "docs_authentication_google_oauth2_login", + "target": "docs_authentication_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L36", + "source_file": "docs/authentication.md", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_updatesessiontitle" + "source": "docs_authentication_profile_me", + "target": "docs_authentication_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L50", + "source_file": "docs/authentication.md", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_gethistory" + "source": "docs_authentication_workflow", + "target": "docs_authentication_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L67", + "source_file": "docs/authentication.md", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_deletesession" + "source": "docs_authentication_workflow", + "target": "docs_authentication_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L130", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_chat_stream" + "source": "docs_investidor10_wallet_research_md", + "target": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L132", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_resumechatstream" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_1_feature_inventory_nav_structure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L170", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_deleteworkspacefile" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_2_user_lifecycle_end_to_end" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L183", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_downloadworkspacefile" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_3_wallet_api_reference" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L199", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_listworkspacefiles" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_4_data_model_inference_from_payloads_no_db_access" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L145", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_forward" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_5_product_logic" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L147", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_uploadworkspacefile" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_5b_gaps_unverified_do_not_treat_as_fact" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L28", + "source_file": "docs/investidor10-wallet-research.md", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_createsession" + "source": "docs_investidor10_wallet_research_investidor10_wallet_empirical_research_for_mansa", + "target": "docs_investidor10_wallet_research_6_concrete_mansa_proposal_build_first_later_minimal_sketches" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L75", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_chat" + "source": "docs_investidor10_wallet_spec_md", + "target": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L163", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_getmemories" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_1_requirements" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L177", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_creatememory" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_2_domain_model" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L201", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_deletememory" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_3_api_contracts_all_under_api_wallet_chain_main_controller_wallet_controller_py_main_service_wallet_service_py_fn_main_models_wallet_py_model_auth_depends_usermanager_getcurrentuser_depends_getsession_throughout" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L163", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_get_memories" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_4_phased_build_plan_writing_plans_each_phase_independently_reviewable_reviewer_pass_per_phase" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L177", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_create_memory" + "source": "docs_investidor10_wallet_spec_mansa_wallet_spec_driven_implementation_spec", + "target": "docs_investidor10_wallet_spec_5_risks_assumptions_honest_flags_carried_over_do_not_treat_as_fact" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L201", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_delete_memory" + "source": "docs_investidor10_wallet_spec_1_requirements", + "target": "docs_investidor10_wallet_spec_1_1_functional_per_surface_tags_exists_build_on_it_partial_half_reusable_missing_greenfield" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L21", + "source_file": "docs/investidor10-wallet-spec.md", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_prometheus_controller_py", - "target": "controller_prometheus_controller_verify_session_ownership" + "source": "docs_investidor10_wallet_spec_1_requirements", + "target": "docs_investidor10_wallet_spec_1_2_non_functional" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L67", + "source_file": "docs/orunmila.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_verifysessionownsership", - "target": "controller_prometheus_controller_updatesessiontitle" + "source": "docs_orunmila_md", + "target": "docs_orunmila_orunmila" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L81", + "source_file": "docs/orunmila.md", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_verifysessionownsership", - "target": "controller_prometheus_controller_gethistory" + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_usage" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L140", + "source_file": "docs/orunmila.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_verifysessionownsership", - "target": "controller_prometheus_controller_chat_stream" + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_workflow" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L141", + "source_file": "docs/orunmila.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_resumechatstream", - "target": "controller_prometheus_controller_verifysessionownsership" + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_api_endpoints" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L118", + "source_file": "docs/orunmila.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_verifysessionownsership", - "target": "controller_prometheus_controller_chat" + "source": "docs_orunmila_orunmila", + "target": "docs_orunmila_license" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L68", + "source_file": "docs/orunmila.md", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_updatesessiontitle", - "target": "controller_prometheus_controller_verify_session_ownership" + "source": "docs_orunmila_usage", + "target": "docs_orunmila_codeblock_1" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L88", + "source_file": "docs/orunmila.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_gethistory", - "target": "controller_prometheus_controller_chat" + "source": "docs_orunmila_usage", + "target": "docs_orunmila_codeblock_2" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L82", + "source_file": "docs/orunmila.md", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_gethistory", - "target": "controller_prometheus_controller_verify_session_ownership" + "source": "docs_orunmila_workflow", + "target": "docs_orunmila_codeblock_3" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L128", + "source_file": "docs/scraper_b3.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_chat_stream", - "target": "controller_prometheus_controller_forward" + "source": "docs_scraper_b3_md", + "target": "docs_scraper_b3_b3_market_scraper" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L138", + "source_file": "docs/scraper_b3.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_createsession", - "target": "controller_prometheus_controller_chat_stream" + "source": "docs_scraper_b3_md", + "target": "docs_scraper_b3_brazilian_stocks_market_scraper" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/prometheus_controller.py", - "source_location": "L142", + "source_file": "docs/scraper_b3.md", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_prometheus_controller_resumechatstream", - "target": "controller_prometheus_controller_forward" + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_sources_6" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L2", + "source_file": "docs/scraper_b3.md", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "fastapi" + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L16", + "source_file": "docs/scraper_b3.md", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_health" + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_xango_score_main_app_scraper_b3_xango_py" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L25", + "source_file": "docs/scraper_b3.md", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_scraper_b3_b3_market_scraper", + "target": "docs_scraper_b3_outputs" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L24", + "source_file": "docs/scraper_b3.md", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36", + "target": "docs_scraper_b3_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L35", + "source_file": "docs/scraper_b3.md", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_scraper_b3_usage", + "target": "docs_scraper_b3_codeblock_1" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L49", + "source_file": "docs/stocks_api.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_stocks_api_md", + "target": "docs_stocks_api_brazilian_stocks_market_api" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L60", + "source_file": "docs/stocks_api.md", + "source_location": "L7", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_usage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L23", + "source_file": "docs/stocks_api.md", + "source_location": "L22", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_jsonbytesresponse" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_auth" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L46", + "source_file": "docs/stocks_api.md", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_generatekey" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_api_endpoints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L63", + "source_file": "docs/stocks_api.md", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_getrealtimecotation" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_response_format" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L20", + "source_file": "docs/stocks_api.md", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_stocksapi_controller_py", - "target": "controller_stocksapi_controller_apikeytest" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_architecture" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L39", + "source_file": "docs/stocks_api.md", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_39", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_brazilian_stocks_market_api", + "target": "docs_stocks_api_license" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L47", + "source_file": "docs/stocks_api.md", + "source_location": "L9", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_47", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_usage", + "target": "docs_stocks_api_codeblock_1" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L36", + "source_file": "docs/stocks_api.md", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_36", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_health_check" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", + "source_file": "docs/stocks_api.md", "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_40", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_field_discovery" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L48", + "source_file": "docs/stocks_api.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_48", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_historical_data" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L49", + "source_file": "docs/stocks_api.md", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_49", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_fundamental_data" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L30", + "source_file": "docs/stocks_api.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_30", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_cotations_10_year_daily_history" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L66", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L87", "weight": 1.0, - "source": "controller_stocksapi_controller_listfields", - "target": "stocks_api_compressor_getnest" + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_live_price" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L98", + "weight": 1.0, + "confidence_score": 1.0, + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_mcp_ai_agent_tools" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L27", + "source_file": "docs/stocks_api.md", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_27", - "target": "controller_stocksapi_controller_listfields" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_api_key_verification" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L26", + "source_file": "docs/stocks_api.md", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_listfields", - "target": "controller_stocksapi_controller_rationale_26" + "source": "docs_stocks_api_api_endpoints", + "target": "docs_stocks_api_key_management" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L95", + "source_file": "docs/stocks_api.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_95", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_health_check", + "target": "docs_stocks_api_codeblock_2" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L103", + "source_file": "docs/stocks_api.md", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_103", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_field_discovery", + "target": "docs_stocks_api_codeblock_3" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L92", + "source_file": "docs/stocks_api.md", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_92", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_api_key_verification", + "target": "docs_stocks_api_codeblock_3" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L96", + "source_file": "docs/stocks_api.md", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_96", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_4" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L104", + "source_file": "docs/stocks_api.md", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_104", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_5" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L105", + "source_file": "docs/stocks_api.md", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_105", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_historical_data", + "target": "docs_stocks_api_codeblock_6" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L85", + "source_file": "docs/stocks_api.md", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_85", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_key_management", + "target": "docs_stocks_api_codeblock_4" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L129", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/stocks_api.md", + "source_location": "L63", "weight": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_5" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L82", + "source_file": "docs/stocks_api.md", + "source_location": "L74", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_82", - "target": "controller_stocksapi_controller_gethistorical" + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_7" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L66", + "source_file": "docs/stocks_api.md", + "source_location": "L86", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "controller_stocksapi_controller_rationale_66" + "source": "docs_stocks_api_fundamental_data", + "target": "docs_stocks_api_codeblock_8" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L65", + "source_file": "docs/stocks_api.md", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_gethistorical", - "target": "controller_stocksapi_controller_rationale_65" + "source": "docs_stocks_api_cotations_10_year_daily_history", + "target": "docs_stocks_api_codeblock_6" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L160", + "source_file": "docs/stocks_api.md", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_160", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_stocks_api_live_price", + "target": "docs_stocks_api_codeblock_7" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L168", + "source_file": "docs/stocks_api.md", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_168", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_stocks_api_response_format", + "target": "docs_stocks_api_codeblock_8" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L157", + "source_file": "docs/stocks_api.md", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_157", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_stocks_api_response_format", + "target": "docs_stocks_api_codeblock_9" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L161", + "source_file": "docs/user.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_161", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_md", + "target": "docs_user_user_management" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L169", + "source_file": "docs/user.md", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_169", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_roles_and_permissions" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L167", + "source_file": "docs/user.md", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_167", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_api_endpoints" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L165", + "source_file": "docs/user.md", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_165", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_session_management" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L155", + "source_file": "docs/user.md", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_155", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_api_keys_stocks_api" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L196", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L123", "weight": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "docs_user_user_management", + "target": "docs_user_rate_limits_related_services" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L144", + "source_file": "docs/user.md", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_144", - "target": "controller_stocksapi_controller_getfundamental" + "source": "docs_user_user_management", + "target": "docs_user_not_implemented" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L124", + "source_file": "docs/user.md", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "controller_stocksapi_controller_rationale_124" + "source": "docs_user_user_management", + "target": "docs_user_workflow" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L123", + "source_file": "docs/user.md", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getfundamental", - "target": "controller_stocksapi_controller_rationale_123" + "source": "docs_user_user_management", + "target": "docs_user_license" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L228", + "source_file": "docs/user.md", + "source_location": "L140", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_228", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_user_management", + "target": "docs_user_permission_system" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L236", + "source_file": "docs/user.md", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_236", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_api_endpoints", + "target": "docs_user_health_check" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L225", + "source_file": "docs/user.md", + "source_location": "L25", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_225", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_api_endpoints", + "target": "docs_user_get_profile" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L229", + "source_file": "docs/user.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_229", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_api_endpoints", + "target": "docs_user_admin_access" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L237", + "source_file": "docs/user.md", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_237", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_api_endpoints", + "target": "docs_user_upgrade_to_developer_starter" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L234", + "source_file": "docs/user.md", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_234", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_api_endpoints", + "target": "docs_user_upgrade_to_developer_enterprise" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L238", + "source_file": "docs/user.md", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_238", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_health_check", + "target": "docs_user_codeblock_1" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L250", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L27", "weight": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "docs_user_get_profile", + "target": "docs_user_codeblock_2" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L209", + "source_file": "docs/user.md", + "source_location": "L31", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_209", - "target": "controller_stocksapi_controller_getcotations" + "source": "docs_user_get_profile", + "target": "docs_user_codeblock_3" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L185", + "source_file": "docs/user.md", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "controller_stocksapi_controller_rationale_185" + "source": "docs_user_admin_access", + "target": "docs_user_codeblock_3" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L184", + "source_file": "docs/user.md", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getcotations", - "target": "controller_stocksapi_controller_rationale_184" + "source": "docs_user_admin_access", + "target": "docs_user_codeblock_6" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L282", + "source_file": "docs/user.md", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_282", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_session_management", + "target": "docs_user_list_all_sessions" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L290", + "source_file": "docs/user.md", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_290", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_session_management", + "target": "docs_user_get_current_session" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L279", + "source_file": "docs/user.md", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_279", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_session_management", + "target": "docs_user_revoke_a_session" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L283", + "source_file": "docs/user.md", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_283", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_session_management", + "target": "docs_user_revoke_all_sessions" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L291", + "source_file": "docs/user.md", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_291", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_4" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L288", + "source_file": "docs/user.md", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_288", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_5" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L296", + "source_file": "docs/user.md", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_296", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_7" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L286", + "source_file": "docs/user.md", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_286", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_list_all_sessions", + "target": "docs_user_codeblock_8" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L293", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/user.md", + "source_location": "L43", "weight": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "stocks_api_compressor_compressresponse" + "confidence_score": 1.0, + "source": "docs_user_upgrade_to_developer_starter", + "target": "docs_user_codeblock_4" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L261", + "source_file": "docs/user.md", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_rationale_261", - "target": "controller_stocksapi_controller_getlivecotation" + "source": "docs_user_upgrade_to_developer_enterprise", + "target": "docs_user_codeblock_5" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L233", + "source_file": "docs/user.md", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "controller_stocksapi_controller_rationale_233" + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_6" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/stocksapi_controller.py", - "source_location": "L232", + "source_file": "docs/user.md", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_stocksapi_controller_getlivecotation", - "target": "controller_stocksapi_controller_rationale_232" + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_9" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L7", + "source_file": "docs/user.md", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "fastapi" + "source": "docs_user_get_current_session", + "target": "docs_user_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L16", + "source_file": "docs/user.md", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_sessiontodict" + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L15", + "source_file": "docs/user.md", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_health" + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L19", + "source_file": "docs/user.md", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_getme" + "source": "docs_user_revoke_a_session", + "target": "docs_user_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L45", + "source_file": "docs/user.md", + "source_location": "L101", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_testadminaccess" + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L52", + "source_file": "docs/user.md", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_getsessions" + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L94", + "source_file": "docs/user.md", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_getcurrentsession" + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L115", + "source_file": "docs/user.md", + "source_location": "L133", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_revokesession" + "source": "docs_user_revoke_all_sessions", + "target": "docs_user_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L135", + "source_file": "docs/user.md", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_revokeallsessions" + "source": "docs_user_workflow", + "target": "docs_user_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L23", + "source_file": "docs/user.md", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_upgradetodeveloperstarter" + "source": "docs_user_workflow", + "target": "docs_user_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L34", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_controller_user_controller_py", - "target": "controller_user_controller_upgradetodeveloperenterprise" + "source": "docs_superpowers_plans_2026_08_09_sse_resume_md", + "target": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L67", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_user_controller_getsessions", - "target": "controller_user_controller_sessiontodict" + "source": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan", + "target": "plans_2026_08_09_sse_resume_global_constraints" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/controller/user_controller.py", - "source_location": "L87", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "controller_user_controller_getcurrentsession", - "target": "controller_user_controller_sessiontodict" + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L242", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_memory_py", - "target": "models_memory_prometheusmemory" + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L412", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_memory_py", - "target": "models_memory_usermemory" + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L576", "weight": 1.0, "confidence_score": 1.0, - "source": "models_memory_prometheusmemory", - "target": "base" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/memory.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "models_types_vectortype" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/memory.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "models_user_user" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L13", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "service_prometheus_service_prometheusservice" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testexactsamekeyupdates" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testsimilarkeymerges" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testdifferentkeysnomerge" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testmergeboostsscore" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testmergeincrementsaccess" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_dedup.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_dedup_testthresholdboundary" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testdecay" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testarchive" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L14", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_maintenance_testemptydatabase" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testgetmemorylimit" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testupsertmemory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testcountmemories" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testgetusermemories" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testdeletememory" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_memory_manager_testsearchfulltext" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_memory_prometheusmemory", - "target": "tests_test_type_aware_decay_testtypeawaredecay" + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/prometheus.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L863", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_prometheus_prometheussession" + "source": "plans_2026_08_09_sse_resume_global_constraints", + "target": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/sandbox.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_sandbox_prometheussandbox" + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_1" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_stocksapi_key_stocksapikey" + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_2" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_user_user" + "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", + "target": "plans_2026_08_09_sse_resume_codeblock_3" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L257", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_user_session_usersession" + "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", + "target": "plans_2026_08_09_sse_resume_codeblock_4" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L329", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_memory_usermemory" + "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", + "target": "plans_2026_08_09_sse_resume_codeblock_5" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/harness.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L405", "weight": 1.0, "confidence_score": 1.0, - "source": "base", - "target": "models_harness_loopevent" + "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", + "target": "plans_2026_08_09_sse_resume_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/prometheus.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L426", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_prometheus_py", - "target": "models_prometheus_prometheussession" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/prometheus.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "models_user_user" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_testusermodel" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_teststocksapikeymodel" + "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", + "target": "plans_2026_08_09_sse_resume_codeblock_7" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_testprometheussessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L498", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", + "target": "plans_2026_08_09_sse_resume_codeblock_8" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L168", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L569", "weight": 1.0, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_testprometheussessionmodel_test_create_session" + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", + "target": "plans_2026_08_09_sse_resume_codeblock_9" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L177", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L590", "weight": 1.0, - "source": "models_prometheus_prometheussession", - "target": "tests_test_models_testprometheussessionmodel_test_default_history" + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_10" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L13", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "prometheus_generation_prometheusgenerator" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L659", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_11" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/app/prometheus/generation.py", - "source_location": "L13", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_prometheus_prometheussession", - "target": "prometheus_generation_sessionproxy" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L681", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/sandbox.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L768", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_sandbox_py", - "target": "models_sandbox_prometheussandbox" + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_13" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L835", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_14" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testsandboxpersistence" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L856", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", + "target": "plans_2026_08_09_sse_resume_codeblock_15" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L7", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", + "source_location": "L889", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_create_sandbox_mapping" + "confidence_score": 1.0, + "source": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off", + "target": "plans_2026_08_09_sse_resume_codeblock_16" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L19", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L1", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_sandbox_has_timestamps" + "confidence_score": 1.0, + "source": "docs_superpowers_plans_2026_08_15_stocks_api_perf_md", + "target": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L31", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L13", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_one_sandbox_per_user" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", + "target": "plans_2026_08_15_stocks_api_perf_global_constraints" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L77", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L23", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_test_get_or_create_reuses_existing" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", + "target": "plans_2026_08_15_stocks_api_perf_file_structure" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L92", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L633", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_test_get_or_create_respawns_when_dead" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", + "target": "plans_2026_08_15_stocks_api_perf_self_review" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_testsandboxcleanup" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L148", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L251", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_test_cleanup_removes_dead_mappings" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sandbox_persistence.py", - "source_location": "L168", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L392", "weight": 1.0, - "source": "models_sandbox_prometheussandbox", - "target": "tests_test_sandbox_persistence_test_cleanup_keeps_alive_sandboxes" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L7", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L468", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_stocksapi_key_py", - "target": "models_stocksapi_key_stocksapikey" + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_user_user" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L613", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_file_structure", + "target": "plans_2026_08_15_stocks_api_perf_task_5_full_verification_graphify_update" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/key.py", - "source_location": "L58", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L49", "weight": 1.0, - "source": "stocks_api_key_createkey", - "target": "models_stocksapi_key_stocksapikey" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_1" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L15", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L88", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_2" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L15", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L118", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_3" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_testusermodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L131", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_4" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L177", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_5" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_testprometheussessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L228", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_6" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L43", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L244", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_normal_quota_check_works" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_7" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L70", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L263", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_atomic_increment_prevents_overuse" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_8" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L111", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L315", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_concurrent_requests_serialized_at_db_level" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_9" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L145", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L349", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_request_at_exact_quota_limit" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_10" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L181", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L405", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_multiple_keys_independent_quotas" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_11" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L216", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L461", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testatomicquotaincrement_test_increment_from_zero" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_12" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L240", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L482", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_success" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_13" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_api_key_quota_atomic.py", - "source_location": "L255", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L512", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_api_key_quota_atomic_testverifyapikeyintegration_test_verify_api_key_quota_exceeded" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_14" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L92", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L519", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_create_api_key" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_15" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L101", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L539", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_true" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_16" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L107", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L548", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_is_quota_exceeded_false" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_17" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L113", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", + "source_location": "L606", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_no_last_reset" + "confidence_score": 1.0, + "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", + "target": "plans_2026_08_15_stocks_api_perf_codeblock_18" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L118", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L1", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_true_expired" + "confidence_score": 1.0, + "source": "docs_superpowers_plans_2026_08_15_workspace_endpoints_md", + "target": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L124", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L16", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_needs_reset_false_recent" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", + "target": "plans_2026_08_15_workspace_endpoints_global_constraints" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L130", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L632", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_reset_quota" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", + "target": "plans_2026_08_15_workspace_endpoints_self_review" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L138", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L29", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_increment_usage" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L144", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L152", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L150", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L198", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_get_remaining_quota_exceeded" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L156", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L465", "weight": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "tests_test_models_teststocksapikeymodel_test_toDict" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L611", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_isquotaexceeded" + "source": "plans_2026_08_15_workspace_endpoints_global_constraints", + "target": "plans_2026_08_15_workspace_endpoints_task_5_full_verification" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L24", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_needsreset" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_1" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L32", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_resetquota" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_2" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L36", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_incrementusage" + "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_3" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L39", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_getremainingquota" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_4" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L42", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L172", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_todict" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_5" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/stocksapi_key.py", - "source_location": "L18", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L180", "weight": 1.0, "confidence_score": 1.0, - "source": "models_stocksapi_key_stocksapikey", - "target": "models_stocksapi_key_stocksapikey_repr" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_types_py", - "target": "models_types_vectortype" + "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_7" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L212", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "typedecorator" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_8" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L368", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "models_types_vectortype_init" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_9" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L375", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "models_types_vectortype_process_bind_param" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_10" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/types.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L381", "weight": 1.0, "confidence_score": 1.0, - "source": "models_types_vectortype", - "target": "models_types_vectortype_process_result_value" + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_11" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_types.py", - "source_location": "L3", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L458", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_12" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L9", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L479", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_roundtrip" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_13" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L19", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L560", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_none_roundtrip" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_14" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L25", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L566", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_wrong_dims_raises" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_15" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L31", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L593", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_preserves_negative_values" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_16" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_types.py", - "source_location": "L39", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L604", "weight": 1.0, - "source": "models_types_vectortype", - "target": "tests_test_memory_types_testvectortype_test_large_random_vector" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_17" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/memory.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_types_vectortype", - "target": "models_memory_usermemory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", + "source_location": "L626", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_endpoints_task_5_full_verification", + "target": "plans_2026_08_15_workspace_endpoints_codeblock_18" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/memory_types.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "typedecorator", - "target": "models_memory_types_vectortype" + "source": "docs_superpowers_plans_2026_08_15_workspace_frontend_md", + "target": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_user_py", - "target": "models_user_user" + "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", + "target": "plans_2026_08_15_workspace_frontend_backend_contract_source_of_truth_for_api_js" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/models/user_session.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_session_usersession", - "target": "models_user_user" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", + "target": "plans_2026_08_15_workspace_frontend_global_constraints" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_user", - "target": "tests_test_models_testusermodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_user", - "target": "tests_test_models_teststocksapikeymodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L176", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_models.py", - "source_location": "L2", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_user", - "target": "tests_test_models_testprometheussessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L294", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L9", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L403", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_create_user" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_global_constraints", + "target": "plans_2026_08_15_workspace_frontend_task_4_docker_restart_e2e_of_prometheus_chat_stream_performed_by_controller_not_a_subagent" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L19", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L61", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_get_roles_list_default" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", + "target": "plans_2026_08_15_workspace_frontend_codeblock_1" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L24", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L122", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_get_roles_list_single_role" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", + "target": "plans_2026_08_15_workspace_frontend_codeblock_2" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L29", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L169", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_get_roles_list_multiple_roles" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", + "target": "plans_2026_08_15_workspace_frontend_codeblock_3" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L37", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L191", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_add_role_new" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_4" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L43", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L246", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_add_role_existing" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_5" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L63", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L272", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_has_role_true" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_6" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L68", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L287", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_has_role_false" + "confidence_score": 1.0, + "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", + "target": "plans_2026_08_15_workspace_frontend_codeblock_7" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L75", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L308", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_has_role_with_enum" + "confidence_score": 1.0, + "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_8" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L80", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L372", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_toDict" + "confidence_score": 1.0, + "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_9" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", + "source_location": "L396", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_getroleslist" + "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": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L27", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_addrole" + "source": "docs_superpowers_plans_2026_08_17_openui_migration_md", + "target": "plans_2026_08_17_openui_migration_openui_migration_plan" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L43", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_hasrole" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_global_constraints" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L48", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_todict" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_file_structure" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L19", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_repr" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user.py", - "source_location": "L35", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_user", - "target": "models_user_user_removerole" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L50", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L385", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_remove_role_existing" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_models.py", - "source_location": "L57", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L455", "weight": 1.0, - "source": "models_user_user", - "target": "tests_test_models_testusermodel_test_remove_role_last_role" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L610", "weight": 1.0, "confidence_score": 1.0, - "source": "main_models_user_session_py", - "target": "models_user_session_usersession" + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_task_5_integration_test" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/user_service.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_session_usersession", - "target": "service_user_service_userservice" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L640", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_openui_migration_plan", + "target": "plans_2026_08_17_openui_migration_verification_checklist" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sessions.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L32", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_file_structure", + "target": "plans_2026_08_17_openui_migration_frontend_local_only_never_committed" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_sessions.py", - "source_location": "L8", - "weight": 0.8, - "confidence_score": 0.5, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L43", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_file_structure", + "target": "plans_2026_08_17_openui_migration_backend_commit" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L56", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L58", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_browser_and_os" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_1" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L69", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L66", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_with_fingerprint_only" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_2" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L81", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L72", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_fallback" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", + "target": "plans_2026_08_17_openui_migration_codeblock_3" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L94", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L86", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_getdevicename_empty_strings" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library", + "target": "plans_2026_08_17_openui_migration_component_mapping" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L108", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L101", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_isactive_default" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_4" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L112", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L339", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_isactive_can_be_false" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_component_mapping", + "target": "plans_2026_08_17_openui_migration_codeblock_5" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L156", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L396", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_session_can_expire" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_6" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L175", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L428", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_session_still_valid_within_expiry" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_7" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L193", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L435", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_session_exactly_at_boundary" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_8" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L210", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L442", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testsessionexpiration_test_created_at_future_date" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_9" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L38", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L449", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_session_usersession", - "target": "models_user_session_usersession_getdevicename" + "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", + "target": "plans_2026_08_17_openui_migration_codeblock_10" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L467", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_session_usersession", - "target": "models_user_session_usersession_repr" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_11" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/models/user_session.py", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L486", "weight": 1.0, "confidence_score": 1.0, - "source": "models_user_session_usersession", - "target": "models_user_session_usersession_todict" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_12" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L12", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L501", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_repr" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_13" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L17", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L542", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_toDict_basic" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_14" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L34", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L555", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_toDict_with_sensitive" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_15" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L45", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L572", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_toDict_hides_useragent" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_16" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L118", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L577", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_todict_with_timestamps" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_17" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sessions.py", - "source_location": "L132", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L590", "weight": 1.0, - "source": "models_user_session_usersession", - "target": "tests_test_sessions_testusersessionmodel_test_todict_without_timestamps" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/authentication_service.py", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L596", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_authentication_service_py", - "target": "service_authentication_service_authenticationservice" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_19" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/authentication_service.py", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L602", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_authentication_service_py", - "target": "service_authentication_service_initialize" + "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", + "target": "plans_2026_08_17_openui_migration_codeblock_20" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/authentication_service.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_authentication_service_authenticationservice", - "target": "utils_service_manager_servicemanager" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L614", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_5_integration_test", + "target": "plans_2026_08_17_openui_migration_codeblock_21" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/authentication_service.py", - "source_location": "L12", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", + "source_location": "L620", "weight": 1.0, - "source": "service_authentication_service_initialize", - "target": "utils_service_manager_getapp" + "confidence_score": 1.0, + "source": "plans_2026_08_17_openui_migration_task_5_integration_test", + "target": "plans_2026_08_17_openui_migration_codeblock_22" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L23", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_prometheus_service_py", - "target": "service_prometheus_service_memorymaintenance" + "source": "docs_superpowers_plans_2026_09_03_followup_hardening_md", + "target": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L4", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_prometheus_service_py", - "target": "service_prometheus_service_prometheusservice" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L6", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_prometheus_service_py", - "target": "service_prometheus_service_initialize" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_file_map" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L60", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L814", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_prometheus_service_py", - "target": "service_prometheus_service_registermemorymaintenancejob" + "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", + "target": "plans_2026_09_03_followup_hardening_self_review" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L52", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L44", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "prometheus_matrix_cache_invalidateuser" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L49", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L127", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_active_memory_decays" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L56", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L240", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_zero_access_count_still_decays" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L62", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L337", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_high_score_decays_proportionally" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L69", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L415", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_very_low_score_stays_above_zero" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L76", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L509", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecay_test_multiple_users_all_decayed" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L87", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L562", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L94", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L623", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L101", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L712", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_zero_access_but_high_score_not_archived" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_file_map", + "target": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L108", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L61", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_1" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L117", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L80", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_2" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L125", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L96", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testarchive_test_multiple_users_independent_archive" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_3" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L137", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L120", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_decay_then_archive_check" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", + "target": "plans_2026_09_03_followup_hardening_codeblock_4" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L145", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L143", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_above_threshold_after_decay_not_archived" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_5" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L151", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L185", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_just_below_threshold_archived" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_6" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L158", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L198", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_below_threshold_not_archived" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_7" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L164", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L204", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_above_threshold_archived" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_8" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_maintenance.py", - "source_location": "L171", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L233", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", + "target": "plans_2026_09_03_followup_hardening_codeblock_9" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L32", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L256", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_decays_slowly" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_10" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L38", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L284", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_context_decays_fast" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_11" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L44", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L298", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_analysis_decays_normally" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_12" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L50", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L330", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_feedback_decays_medium" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", + "target": "plans_2026_09_03_followup_hardening_codeblock_13" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L56", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L351", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_unknown_type_uses_default" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", + "target": "plans_2026_09_03_followup_hardening_codeblock_14" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L66", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L390", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_mixed_types_all_correct" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", + "target": "plans_2026_09_03_followup_hardening_codeblock_15" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_type_aware_decay.py", - "source_location": "L82", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L408", "weight": 1.0, - "source": "service_prometheus_service_memorymaintenance", - "target": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_survives_longer" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", + "target": "plans_2026_09_03_followup_hardening_codeblock_16" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_prometheus_service_prometheusservice", - "target": "utils_service_manager_servicemanager" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L429", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", + "target": "plans_2026_09_03_followup_hardening_codeblock_17" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L13", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_prometheus_service_prometheusservice", - "target": "models_memory_usermemory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L451", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", + "target": "plans_2026_09_03_followup_hardening_codeblock_18" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L64", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L502", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "utils_service_manager_getapp" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", + "target": "plans_2026_09_03_followup_hardening_codeblock_19" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L12", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L525", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "models_loader_getembeddingmodel" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", + "target": "plans_2026_09_03_followup_hardening_codeblock_20" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L70", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L541", "weight": 1.0, - "source": "service_prometheus_service_initialize", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", + "target": "plans_2026_09_03_followup_hardening_codeblock_21" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/prometheus_service.py", - "source_location": "L87", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L555", "weight": 1.0, "confidence_score": 1.0, - "source": "service_prometheus_service_initialize", - "target": "service_prometheus_service_registermemorymaintenancejob" + "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", + "target": "plans_2026_09_03_followup_hardening_codeblock_22" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L14", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L577", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_runscraper" + "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", + "target": "plans_2026_09_03_followup_hardening_codeblock_23" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L598", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_registerscraperjobs" + "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", + "target": "plans_2026_09_03_followup_hardening_codeblock_24" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L616", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_scraperservice" + "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", + "target": "plans_2026_09_03_followup_hardening_codeblock_25" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L27", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L640", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_scraper_service_py", - "target": "service_scraper_service_initialize" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_26" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L60", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L668", "weight": 1.0, "confidence_score": 1.0, - "source": "service_scraper_service_initialize", - "target": "service_scraper_service_registerscraperjobs" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_27" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/scraper_service.py", - "source_location": "L42", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L676", "weight": 1.0, - "source": "service_scraper_service_registerscraperjobs", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_28" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/scraper_service.py", - "source_location": "L23", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L705", "weight": 1.0, "confidence_score": 1.0, - "source": "service_scraper_service_rationale_23", - "target": "service_scraper_service_registerscraperjobs" + "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", + "target": "plans_2026_09_03_followup_hardening_codeblock_29" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L10", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L731", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_stocksapi_service_py", - "target": "service_stocksapi_service_mcpdetectmiddleware" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_30" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L6", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L753", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_stocksapi_service_py", - "target": "service_stocksapi_service_stocksapiservice" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_31" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L8", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L769", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_stocksapi_service_py", - "target": "service_stocksapi_service_initialize" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_32" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L11", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L780", "weight": 1.0, "confidence_score": 1.0, - "source": "service_stocksapi_service_mcpdetectmiddleware", - "target": "service_stocksapi_service_mcpdetectmiddleware_init" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_33" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L14", + "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", + "source_location": "L807", "weight": 1.0, "confidence_score": 1.0, - "source": "service_stocksapi_service_mcpdetectmiddleware", - "target": "service_stocksapi_service_mcpdetectmiddleware_call" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/stocksapi_service.py", - "source_location": "L4", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_stocksapi_service_mcpdetectmiddleware", - "target": "utils_service_manager_servicemanager" + "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", + "target": "plans_2026_09_03_followup_hardening_codeblock_34" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/stocksapi_service.py", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_stocksapi_service_stocksapiservice", - "target": "utils_service_manager_servicemanager" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/stocksapi_service.py", - "source_location": "L29", "weight": 1.0, - "source": "service_stocksapi_service_initialize", - "target": "utils_service_manager_getapp" + "confidence_score": 1.0, + "source": "docs_superpowers_plans_2026_09_04_wallet_management_md", + "target": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L16", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_removeinactivesessions" + "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", + "target": "plans_2026_09_04_wallet_management_global_constraints" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L4", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_userservice" + "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", + "target": "plans_2026_09_04_wallet_management_file_structure" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L6", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_initialize" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L46", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_registersessioncleanupjobs" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L33", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L269", "weight": 1.0, "confidence_score": 1.0, - "source": "main_service_user_service_py", - "target": "service_user_service_inactivesessionsscheduler" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/service/user_service.py", - "source_location": "L1", - "weight": 0.8, - "confidence_score": 0.5, - "source": "service_user_service_userservice", - "target": "utils_service_manager_servicemanager" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/user_service.py", - "source_location": "L42", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L391", "weight": 1.0, - "source": "service_user_service_initialize", - "target": "utils_service_manager_getapp" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/user_service.py", - "source_location": "L48", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L567", "weight": 1.0, - "source": "service_user_service_initialize", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/service/user_service.py", - "source_location": "L72", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L720", "weight": 1.0, "confidence_score": 1.0, - "source": "service_user_service_initialize", - "target": "service_user_service_registersessioncleanupjobs" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L869", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checkdatabaseconnection" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/connectivity.py", - "source_location": "L51", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1000", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checkserviceconnection" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1115", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checkmysqlconnection" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/connectivity.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1224", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_connectivity_py", - "target": "utils_connectivity_checksingledb" + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L112", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1325", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_service_not_found" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L124", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1482", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_stocks_api_health_ok" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L139", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1618", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_non_stocks_prefix" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_file_structure", + "target": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L154", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L73", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_non_200_status" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_1" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L164", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L101", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_connection_error" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_2" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L174", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L138", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_timeout" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_3" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L184", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L144", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_request_exception" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_4" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_connectivity_coverage.py", - "source_location": "L194", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L159", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "tests_test_connectivity_coverage_test_generic_exception" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", + "target": "plans_2026_09_04_wallet_management_codeblock_5" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/utils/connectivity.py", - "source_location": "L66", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L189", "weight": 1.0, - "source": "utils_connectivity_checkserviceconnection", - "target": "utils_http_session_get_session" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", + "target": "plans_2026_09_04_wallet_management_codeblock_6" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L5", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L248", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "fastapi" + "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", + "target": "plans_2026_09_04_wallet_management_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L13", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L262", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_errorresponse" + "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", + "target": "plans_2026_09_04_wallet_management_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L21", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_requestcontextfilter" + "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", + "target": "plans_2026_09_04_wallet_management_codeblock_9" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L27", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L325", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_builderrorresponse" + "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", + "target": "plans_2026_09_04_wallet_management_codeblock_10" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L37", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L384", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_httpexceptionhandler" + "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", + "target": "plans_2026_09_04_wallet_management_codeblock_11" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L44", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L404", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_validationexceptionhandler" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_12" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L56", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L471", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_genericexceptionhandler" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_13" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L65", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L524", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_registererrorhandlers" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_14" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L29", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L560", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_build_error_response" + "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", + "target": "plans_2026_09_04_wallet_management_codeblock_15" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L38", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L580", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_http_exception_handler" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_16" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L45", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L649", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_validation_exception_handler" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_17" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L57", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L659", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_generic_exception_handler" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_18" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L66", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L693", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_errors_py", - "target": "utils_errors_register_error_handlers" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_19" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L28", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L713", "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" + "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", + "target": "plans_2026_09_04_wallet_management_codeblock_20" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L56", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L732", "weight": 1.0, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_structure" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", + "target": "plans_2026_09_04_wallet_management_codeblock_21" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L65", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L804", "weight": 1.0, - "source": "utils_errors_errorresponse", - "target": "tests_test_error_handlers_testerrorresponsemodel_test_error_response_with_detail_and_request_id" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", + "target": "plans_2026_09_04_wallet_management_codeblock_22" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L30", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L862", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_errorresponse", - "target": "utils_errors_build_error_response" + "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", + "target": "plans_2026_09_04_wallet_management_codeblock_23" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L24", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L882", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "utils_errors_requestcontextfilter_filter" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "main/utils/logging_config.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "utils_logging_config_discordhandler" + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_24" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/utils/logging_config.py", - "source_location": "L20", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L944", "weight": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "utils_logging_config_setuplogging" - }, - { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "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_requestcontextfilter", - "target": "tests_test_error_handlers_testerrorresponsemodel" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_25" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testrequestcontextfilter" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L972", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_26" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testhttpexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L993", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", + "target": "plans_2026_09_04_wallet_management_codeblock_27" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testvalidationexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1013", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_28" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testgenericexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1062", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_29" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L12", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testsuccesspassthrough" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1095", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_30" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L78", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1108", "weight": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testrequestcontextfilter_test_injects_request_id_from_contextvar" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", + "target": "plans_2026_09_04_wallet_management_codeblock_31" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L87", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1143", "weight": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "tests_test_error_handlers_testrequestcontextfilter_test_empty_request_id_default" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_32" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1157", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_requestcontextfilter", - "target": "utils_errors_rationale_22" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_33" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L40", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1165", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_builderrorresponse", - "target": "utils_errors_httpexceptionhandler" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_34" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L52", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1192", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_builderrorresponse", - "target": "utils_errors_validationexceptionhandler" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_35" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/errors.py", - "source_location": "L61", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1217", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_errors_builderrorresponse", - "target": "utils_errors_genericexceptionhandler" + "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", + "target": "plans_2026_09_04_wallet_management_codeblock_36" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/conftest.py", - "source_location": "L84", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1237", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_conftest_stocks_http_client" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_37" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/conftest.py", - "source_location": "L93", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1276", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_conftest_client" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_38" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L31", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1299", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_auth_client" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_39" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L46", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1318", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_user_client" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", + "target": "plans_2026_09_04_wallet_management_codeblock_40" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L66", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1341", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_prometheus_client" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_41" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L87", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1397", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_make_stocksapi_client" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_42" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L685", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1419", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgetsessions_test_get_sessions" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_43" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L731", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1452", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_found" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_44" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L754", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1475", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgetcurrentsession_test_get_current_session_not_found" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", + "target": "plans_2026_09_04_wallet_management_codeblock_45" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L784", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1496", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_success" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_46" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L807", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1512", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_not_found" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_47" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L832", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1528", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokesession_test_revoke_session_failure" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_48" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L858", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1546", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testrevokeallsessions_test_revoke_all_sessions" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_49" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L975", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1582", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_found" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_50" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1011", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1613", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheusgethistory_test_get_history_not_found" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_51" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1090", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1635", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_verified" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_52" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L1132", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1661", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_53" + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1686", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testprometheuschat_test_chat_existing_session_not_owner" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_54" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_error_handlers.py", - "source_location": "L28", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", + "source_location": "L1727", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_error_handlers_app" + "confidence_score": 1.0, + "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", + "target": "plans_2026_09_04_wallet_management_codeblock_55" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_oauth_cookie_security.py", - "source_location": "L28", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L1", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_oauth_cookie_security_make_callback_client" + "confidence_score": 1.0, + "source": "docs_superpowers_plans_2026_09_12_artifact_removal_cache_verdict_md", + "target": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_sso_state_cookie.py", - "source_location": "L32", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L3", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_sso_state_cookie_build_app" + "confidence_score": 1.0, + "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", + "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_1_deletions_safe_no_live_referrers" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_controller.py", - "source_location": "L38", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", + "source_location": "L25", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_unauthenticated" + "confidence_score": 1.0, + "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", + "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_2_cache_verdict_keep_the_dict_skip_cashews" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_memory_controller.py", - "source_location": "L57", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L1", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_memory_controller_testmemorycontrollerroutes_test_get_memories_rejects_basic_user" + "confidence_score": 1.0, + "source": "docs_superpowers_plans_2026_09_14_memory_postgres_pgvector_plan_md", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1165", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L13", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_http_route" + "confidence_score": 1.0, + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1353", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L24", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_returns_200" + "confidence_score": 1.0, + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1377", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L79", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_http_route_search_required" + "confidence_score": 1.0, + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1466", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L139", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerylivecotation_test_cotations_search_required" + "confidence_score": 1.0, + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_stocks_api_coverage.py", - "source_location": "L1298", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L171", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_stocks_api_coverage_testquerycotations_test_cotations_search_required" + "confidence_score": 1.0, + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_4_full_test_sweep_18_suites_postgres_ci_parity" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L156", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L185", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testregisterendpoint_make_register_client" + "confidence_score": 1.0, + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L236", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L35", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testloginendpoint_make_login_client" + "confidence_score": 1.0, + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_1" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L289", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L65", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testlogoutendpoint_make_logout_client" + "confidence_score": 1.0, + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_2" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L433", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L74", "weight": 1.0, - "source": "utils_errors_registererrorhandlers", - "target": "tests_test_controllers_coverage_testgooglecallback_make_callback_client" + "confidence_score": 1.0, + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_3" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/http_session.py", - "source_location": "L9", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L97", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_http_session_py", - "target": "utils_http_session_getsession" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_4" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/http_session.py", - "source_location": "L22", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_http_session_py", - "target": "utils_http_session_cleanup" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_5" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/http_session.py", - "source_location": "L8", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_http_session_py", - "target": "utils_http_session_get_session" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_6" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L12", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_logging_config_py", - "target": "utils_logging_config_setuplogging" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_7" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L24", + "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_logging_config_py", - "target": "utils_logging_config_discordhandler" + "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close", + "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_8" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L49", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_logging_config_py", - "target": "utils_logging_config_setupdiscordhandler" + "source": "docs_superpowers_plans_2026_09_15_adopt_libs_md", + "target": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L37", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "utils_logging_config_discordhandler_init" + "source": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan", + "target": "plans_2026_09_15_adopt_libs_global_constraints" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L25", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "utils_logging_config_discordhandler_emit" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries" }, { - "relation": "calls", - "context": "call", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/logging_config.py", - "source_location": "L51", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L56", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "utils_logging_config_setupdiscordhandler" + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_logging_config_coverage_testdiscordhandleremit" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L76", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L9", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_logging_config_coverage_testsetuplogging" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L102", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_4_sse_starlette_replaces_hand_sse_bus" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testgetsession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L117", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_5_rapidfuzz_memory_key_dedup" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testdiscordhandlerthreadpool" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L132", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_6_cachetools_bounds_token_cache" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testconcurrentgetsession" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L143", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_7_user_agents_fills_device_fields_optional" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L10", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L154", "weight": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_logging_config_coverage_testdiscordhandleremit_make_handler" + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_global_constraints", + "target": "plans_2026_09_15_adopt_libs_task_8_pytest_plugin_set" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_thread_safety.py", - "source_location": "L110", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L38", "weight": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_emit_submits_to_executor" + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", + "target": "plans_2026_09_15_adopt_libs_codeblock_1" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_thread_safety.py", - "source_location": "L140", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L51", "weight": 1.0, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testdiscordhandlerthreadpool_test_concurrent_emits_do_not_spawn_unbounded_threads" + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", + "target": "plans_2026_09_15_adopt_libs_codeblock_2" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_thread_safety.py", - "source_location": "L138", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_logging_config_discordhandler", - "target": "tests_test_thread_safety_testconcurrenthttpproxy" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L72", + "weight": 1.0, + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first", + "target": "plans_2026_09_15_adopt_libs_codeblock_3" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L107", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_location": "L88", "weight": 1.0, - "source": "utils_logging_config_setupdiscordhandler", - "target": "tests_test_logging_config_coverage_test_setup_discord_handler_enabled" + "confidence_score": 1.0, + "source": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json", + "target": "plans_2026_09_15_adopt_libs_codeblock_4" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_logging_config_coverage.py", - "source_location": "L113", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L1", "weight": 1.0, - "source": "utils_logging_config_setupdiscordhandler", - "target": "tests_test_logging_config_coverage_test_setup_discord_handler_disabled" + "confidence_score": 1.0, + "source": "docs_superpowers_specs_2026_09_04_wallet_design_md", + "target": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/migrator.py", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_migrator_py", - "target": "utils_migrator_runmigrations" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_1_context" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/request_id.py", - "source_location": "L13", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_request_id_py", - "target": "utils_request_id_requestidmiddleware" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time" }, { - "relation": "inherits", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/request_id.py", - "source_location": "L13", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_request_id_requestidmiddleware", - "target": "basehttpmiddleware" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_3_data_model_user_db_alembic" }, { - "relation": "method", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/request_id.py", - "source_location": "L14", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_request_id_requestidmiddleware", - "target": "utils_request_id_requestidmiddleware_dispatch" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_4_derivations_all_at_read_time_date_order" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_samplebody" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L175", + "weight": 1.0, + "confidence_score": 1.0, + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_5_endpoints_wallet_on_the_user_port_via_walletservice_getcurrentuser_gate_inline_body_query" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testerrorresponsemodel" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L203", + "weight": 1.0, + "confidence_score": 1.0, + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_6_live_prices_endpoint_only_isolation" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testrequestcontextfilter" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L235", + "weight": 1.0, + "confidence_score": 1.0, + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_7_validation_422_naming_the_rule_503_for_price_outages" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testhttpexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L266", + "weight": 1.0, + "confidence_score": 1.0, + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_8_testing_quality_gates_precedents_to_honor" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testvalidationexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L287", + "weight": 1.0, + "confidence_score": 1.0, + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_9_scope" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testgenericexceptionhandler" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L302", + "weight": 1.0, + "confidence_score": 1.0, + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_10_splits_served_prices_are_raw_by_default_verified_verdict_encode_as_is" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_error_handlers.py", - "source_location": "L17", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_error_handlers_testsuccesspassthrough" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L326", + "weight": 1.0, + "confidence_score": 1.0, + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_11_dividends_no_dedicated_endpoint_verified_verdict_encode_as_is" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_request_id.py", - "source_location": "L10", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_request_id_requestidmiddleware", - "target": "tests_test_request_id_testrequestidmiddleware" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L364", + "weight": 1.0, + "confidence_score": 1.0, + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_12_corporate_actions_splits_and_grupamentos_via_one_read_time_mechanism" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L2", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L403", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "fastapi" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_13_dividend_methodology_ex_date_smoothing_check_both_branches_test_decides" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L4", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L422", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_permission" + "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", + "target": "specs_2026_09_04_wallet_design_spec_self_review" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L28", + "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_all" + "source": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time", + "target": "specs_2026_09_04_wallet_design_approaches_considered" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L32", + "source_file": "main/controller/authentication_controller.py", + "source_location": "L280", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_roles" + "source": "controller_authentication_controller_verifyservicekey", + "target": "controller_authentication_controller_requireservicetoken" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "main/utils/roles.py", - "source_location": "L51", + "source_location": "L111", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_checkaccess" + "source": "utils_roles_introspectuser", + "target": "utils_roles_servicetoken" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "main/utils/roles.py", - "source_location": "L64", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_roles_py", - "target": "utils_roles_requirepermission" + "source": "utils_roles_introspectuser", + "target": "utils_roles_introspecturl" }, { - "relation": "inherits", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", "source_file": "main/utils/roles.py", - "source_location": "L4", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_roles_permission", - "target": "intflag" + "source": "utils_roles_introspectuser", + "target": "utils_roles_extractcredential" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_testpermission" + "relation": "inherits", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L79", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_basemansasettings", + "target": "server_config_prometheussettings" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_testroles" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "config.py", + "source_location": "L86", + "weight": 1.0, + "confidence_score": 1.0, + "source": "server_config_prometheussettings", + "target": "server_config_prometheussettings_getitem" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", + "source_file": "tests/test_config.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testcheckaccess" + "source": "server_config_prometheussettings", + "target": "tests_test_config_testconfig" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testrequirepermission" + "confidence_score": 0.8, + "source_file": "tests/test_config.py", + "source_location": "L13", + "weight": 1.0, + "source": "server_config_prometheussettings", + "target": "tests_test_config_testconfig_test_prometheus_getitem" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", + "source_file": "tests/test_config_sandbox.py", + "source_location": "L2", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testpermissionall" + "source": "server_config_prometheussettings", + "target": "tests_test_config_sandbox_testsandboxconfig" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L5", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_roles_coverage_testroleshierarchy" + "confidence_score": 0.8, + "source_file": "tests/test_config_sandbox.py", + "source_location": "L7", + "weight": 1.0, + "source": "server_config_prometheussettings", + "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_defaults" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L7", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "prometheus_memory_memorymanager" + "confidence_score": 0.8, + "source_file": "tests/test_config_sandbox.py", + "source_location": "L14", + "weight": 1.0, + "source": "server_config_prometheussettings", + "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_fields_exist" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testgetmemorylimit" + "confidence_score": 0.8, + "source_file": "tests/test_config_sandbox.py", + "source_location": "L22", + "weight": 1.0, + "source": "server_config_prometheussettings", + "target": "tests_test_config_sandbox_testsandboxconfig_test_sandbox_types" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testupsertmemory" + "relation": "contains", + "confidence": "EXTRACTED", + "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" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testcountmemories" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L31", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_persistevent" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testgetusermemories" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L58", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_getclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testdeletememory" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L134", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_prometheus" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_memory_manager.py", - "source_location": "L6", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_memory_manager_testsearchfulltext" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L139", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_buildsystemprompt" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testissecurescheme" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_safe_filter" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testhealthendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_onextractiondone" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testregisterendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L35", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_spawnextraction" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testloginendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L58", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_get_client" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testlogoutendpoint" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L161", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_openmcpclients" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgooglelogin" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L90", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_executememorytool" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgooglecallback" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L27", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_build_system_prompt" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testuserhealth" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L57", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_get_memory_tools" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetme" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L92", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_execute_memory_tool" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testupgradeendpoints" + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L47", + "weight": 1.0, + "confidence_score": 1.0, + "source": "main_app_prometheus_agent_py", + "target": "prometheus_agent_chatsession" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testadminaccess" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L344", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_persistevent" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetsessions" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L223", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_init", + "target": "prometheus_agent_getclient" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetcurrentsession" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L135", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_init" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testrevokesession" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L169", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_makechat" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testrevokeallsessions" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L178", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_streammessage" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L13", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheushealth" + "source": "prometheus_agent_prometheus", + "target": "models_prometheus_prometheussession" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L11", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusgetsessions" + "source": "prometheus_agent_prometheus", + "target": "models_memory_prometheusmemory" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L12", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheuscreatesession" + "source": "prometheus_agent_prometheus", + "target": "prometheus_chat_prometheuschatmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L18", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + "source": "prometheus_agent_prometheus", + "target": "prometheus_compact_prometheuscompactor" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusgethistory" + "source": "prometheus_agent_prometheus", + "target": "prometheus_sandbox_sandboxmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L16", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheusdeletesession" + "source": "prometheus_agent_prometheus", + "target": "prometheus_events_looplogger" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L15", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testprometheuschat" + "source": "prometheus_agent_prometheus", + "target": "prometheus_compact_fieldregistry" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L16", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapihealth" + "source": "prometheus_agent_prometheus", + "target": "prometheus_mcp_mcpclientpool" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapikeytest" + "source": "prometheus_agent_prometheus", + "target": "prometheus_state_harnessstate" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L17", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapihistorical" + "source": "prometheus_agent_prometheus", + "target": "prometheus_summarizer_prometheussummarizer" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapifundamental" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_state_integration_testbuildsystempromptstate" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_teststocksapigeneratekey" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_state_integration_testsendmessagestateintegration" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testaddroletouser" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_state_integration_teststreammessagestateintegration" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_state_integration.py", + "source_location": "L192", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testgetcurrentuser" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_state_integration_testsystempromptstateinstructions" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L90", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testhashpasswordempty" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testmemorytoolfunctions" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L90", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testverifyaccesstoken" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testtoolregistry" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L58", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testmakechatincludesmemorytools" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L58", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_permission", - "target": "tests_test_controllers_coverage_testmanagerinit" - }, - { - "relation": "inherits", - "confidence": "EXTRACTED", - "source_file": "main/utils/roles.py", - "source_location": "L32", - "weight": 1.0, - "confidence_score": 1.0, - "source": "intflag", - "target": "utils_roles_roles" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compress.py", - "source_location": "L84", - "weight": 1.0, - "source": "stocks_api_compress_tocolumnar", - "target": "utils_roles_all" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/app/stocks_api/compressor.py", - "source_location": "L91", - "weight": 1.0, - "source": "stocks_api_compressor_tocolumnar", - "target": "utils_roles_all" - }, - { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "tests/test_vector_utils.py", - "source_location": "L112", - "weight": 1.0, - "source": "utils_roles_all", - "target": "tests_test_vector_utils_testcontenthash_test_hex_format" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testdispatchroutesmemorytools" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_testpermission" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testprometheusinit" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles.py", - "source_location": "L7", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_testroles" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L65", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_coverage_testcheckaccess" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L65", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_coverage_testrequirepermission" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L65", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_coverage_testpermissionall" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testsessionmanager" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_roles_coverage.py", - "source_location": "L65", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L159", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_roles_coverage_testroleshierarchy" + "source": "prometheus_agent_prometheus", + "target": "tests_test_prometheus_auth_coverage_testsso" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "main/app/prometheus/memory.py", - "source_location": "L7", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "prometheus_memory_memorymanager" + "source": "prometheus_agent_prometheus", + "target": "tests_test_streammessage_no_chatsession_fakechunk" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_streammessage_no_chatsession.py", + "source_location": "L14", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testissecurescheme" + "source": "prometheus_agent_prometheus", + "target": "tests_test_streammessage_no_chatsession_teststreammessagenochatsession" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", + "source_file": "tests/test_agent_sandbox_integration.py", "source_location": "L61", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testhealthendpoint" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L31", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testregisterendpoint" + "source": "prometheus_agent_prometheus", + "target": "models_memory_usermemory" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testloginendpoint" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L34", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_sendmessage" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L4", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testlogoutendpoint" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_sandbox_integration_testagentsandboxintegration" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L3", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgooglelogin" + "source": "prometheus_agent_prometheus", + "target": "tests_test_agent_sandbox_integration_testpremiumcheck" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L15", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgooglecallback" + "source": "prometheus_agent_prometheus", + "target": "prometheus_cache_resultcache" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L58", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testuserhealth" + "source": "prometheus_agent_prometheus", + "target": "tests_test_memory_tools_wiring_testmemorytoolsdefinition" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetme" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L102", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_executetoolcall" }, { "relation": "uses", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L94", "weight": 0.8, "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testupgradeendpoints" + "source": "prometheus_agent_prometheus", + "target": "prometheus_memory_memorymanager" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testadminaccess" + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L21", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus", + "target": "prometheus_agent_prometheus_updatedates" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetsessions" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L224", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_init", + "target": "prometheus_agent_get_client" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetcurrentsession" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L19", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_init", + "target": "prometheus_agent_prometheus_updatedates" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testrevokesession" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L182", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_buildsystemprompt" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testrevokeallsessions" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L213", + "weight": 1.0, + "source": "prometheus_agent_buildsystemprompt", + "target": "prometheus_compact_prometheuscompactor" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheushealth" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L163", + "weight": 1.0, + "source": "prometheus_agent_buildsystemprompt", + "target": "prometheus_summarizer_prometheussummarizer" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusgetsessions" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L261", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_buildsystemprompt", + "target": "prometheus_agent_prometheus_sendmessage" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheuscreatesession" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L186", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_prometheus_makechat" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusupdatesessiontitle" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L160", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_makechat", + "target": "prometheus_agent_prometheus_sendmessage" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusgethistory" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L212", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_makechat", + "target": "prometheus_agent_get_memory_tools" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheusdeletesession" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L251", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testprometheuschat" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L262", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_memory_newtokencache" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapihealth" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L256", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_compact_prometheuscompactor" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapikeytest" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L252", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_memory_extract" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapihistorical" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L231", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_tools_dispatchtoolcall" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapifundamental" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L272", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_spawnextraction" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_teststocksapigeneratekey" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L202", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_events_looplogger" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testaddroletouser" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L239", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_mcp_mcpclientpool" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testgetcurrentuser" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L242", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_compact_fieldregistry" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testhashpasswordempty" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L182", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_state_harnessstate" }, { - "relation": "uses", - "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testverifyaccesstoken" + "relation": "calls", + "context": "call", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L185", + "weight": 1.0, + "confidence_score": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_openmcpclients" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testextracttokenpayloadreraise" + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L293", + "weight": 1.0, + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_summarizer_prometheussummarizer" }, { - "relation": "uses", + "relation": "calls", + "context": "call", "confidence": "INFERRED", - "source_file": "tests/test_controllers_coverage.py", - "source_location": "L61", - "weight": 0.8, - "confidence_score": 0.5, - "source": "utils_roles_roles", - "target": "tests_test_controllers_coverage_testmanagerinit" - }, - { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L32", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/agent.py", + "source_location": "L203", "weight": 1.0, - "confidence_score": 1.0, - "source": "main_utils_scheduler_py", - "target": "utils_scheduler_getsharedscheduler" + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_cache_resultcache" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L42", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_scheduler_py", - "target": "utils_scheduler_registerjob" + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_prometheus_executetoolcall" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L1", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_1", - "target": "main_utils_scheduler_py" + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_build_system_prompt" }, { "relation": "calls", "context": "call", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L50", + "source_file": "main/app/prometheus/agent.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_registerjob", - "target": "utils_scheduler_getsharedscheduler" + "source": "prometheus_agent_prometheus_streammessage", + "target": "prometheus_agent_chatsession" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", - "source_location": "L33", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_33", - "target": "utils_scheduler_getsharedscheduler" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_prometheuschatmanager" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/user_service.py", - "source_location": "L55", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L17", "weight": 1.0, - "source": "service_user_service_registersessioncleanupjobs", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_getusersessions" }, { - "relation": "calls", - "context": "call", - "confidence": "INFERRED", - "confidence_score": 0.8, - "source_file": "main/service/prometheus_service.py", - "source_location": "L69", + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L35", "weight": 1.0, - "source": "service_prometheus_service_registermemorymaintenancejob", - "target": "utils_scheduler_registerjob" + "confidence_score": 1.0, + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_createsession" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/scheduler.py", + "source_file": "main/app/prometheus/chat.py", "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "utils_scheduler_rationale_43", - "target": "utils_scheduler_registerjob" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_updatesessiontitle" }, { - "relation": "imports_from", - "context": "import", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L8", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "fastapi" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_appendhistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L21", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_getapp" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_gethistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L48", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_runall" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_deletesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/service_manager.py", - "source_location": "L16", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_service_manager_py", - "target": "utils_service_manager_servicemanager" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_verifysessionownership" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L12", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_getembeddingmodel" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_savemessage" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L21", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L76", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_embed" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_saveloopevent" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L11", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L98", "weight": 1.0, "confidence_score": 1.0, - "source": "main_utils_models_loader_py", - "target": "models_loader_downloadmodel" + "source": "main_app_prometheus_chat_py", + "target": "prometheus_chat_updatesummary" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "models_prometheus_prometheussession" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L26", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "prometheus_chat_prometheuschatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L319", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "prometheus_chat_prometheuschatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L383", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusinit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L383", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheussendmessage" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testauthenticationmanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testsessionmanager" }, { - "relation": "calls", - "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L22", - "weight": 1.0, - "confidence_score": 1.0, - "source": "models_loader_getembeddingmodel", - "target": "models_loader_embed" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testsso" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "main/utils/models/loader.py", - "source_location": "L21", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L446", "weight": 1.0, - "confidence_score": 1.0, - "source": "models_loader_getembeddingmodel", - "target": "models_loader_downloadmodel" + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheuschatmanager_test_init" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L25", - "weight": 1.0, - "confidence_score": 1.0, - "source": "migrations_env_py", - "target": "migrations_env_getdatabaseurl" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorinit" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L28", - "weight": 1.0, - "confidence_score": 1.0, - "source": "migrations_env_py", - "target": "migrations_env_runmigrationsoffline" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_prometheus_auth_coverage.py", + "source_location": "L650", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "tests_test_prometheus_auth_coverage_testprometheusgeneratorexecuteworkflow" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L39", - "weight": 1.0, - "confidence_score": 1.0, - "source": "migrations_env_py", - "target": "migrations_env_runmigrationsonline" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "prometheus_generation_prometheusgenerator" }, { - "relation": "calls", - "context": "call", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "migrations/env.py", - "source_location": "L30", + "source_file": "main/app/prometheus/chat.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_env_getdatabaseurl", - "target": "migrations_env_runmigrationsoffline" + "source": "prometheus_chat_prometheuschatmanager", + "target": "prometheus_chat_prometheuschatmanager_init" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_chat_prometheuschatmanager", + "target": "prometheus_generation_sessionproxy" }, { "relation": "calls", "context": "call", - "confidence": "EXTRACTED", - "source_file": "migrations/env.py", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/chat.py", "source_location": "L41", "weight": 1.0, - "confidence_score": 1.0, - "source": "migrations_env_getdatabaseurl", - "target": "migrations_env_runmigrationsonline" + "source": "prometheus_chat_createsession", + "target": "models_prometheus_prometheussession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L21", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_upgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_gettokenizer" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L61", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_downgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_counttokens" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/25af7ad931e7_initial_migration.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_25af7ad931e7_initial_migration_py", - "target": "versions_25af7ad931e7_initial_migration_rationale_1" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_getstocksfieldsurl" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L20", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_upgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_istransientfieldserror" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L47", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_downgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_fetchfieldspayload" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/4a2f1c9e3b5d_user_sessions.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L93", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_4a2f1c9e3b5d_user_sessions_py", - "target": "versions_4a2f1c9e3b5d_user_sessions_rationale_1" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_loadfielddata" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L43", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L133", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_upgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_getmetricregex" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L50", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_downgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_dedup" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_9f3b339dde20_drop_unused_user_sessions_columns_py", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_1" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extracttickers" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L44", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_9f3b339dde20_drop_unused_user_sessions_columns_upgrade", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_44" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extractmetrics" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/9f3b339dde20_drop_unused_user_sessions_columns.py", - "source_location": "L51", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_9f3b339dde20_drop_unused_user_sessions_columns_downgrade", - "target": "versions_9f3b339dde20_drop_unused_user_sessions_columns_rationale_51" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extractdecisions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L21", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L137", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_upgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extractsnapshots" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L54", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L150", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_downgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_extracttoolcalls" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L166", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_add_access_token_hash_py", - "target": "versions_add_access_token_hash_rationale_1" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_buildsummary" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_add_access_token_hash_upgrade", - "target": "versions_add_access_token_hash_rationale_22" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_prometheuscompactor" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/add_access_token_hash.py", - "source_location": "L55", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L119", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_add_access_token_hash_downgrade", - "target": "versions_add_access_token_hash_rationale_55" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_gethistoricalfields" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_upgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_getfundamentalcolumns" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L50", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_downgrade" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_invalidatefielddata" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L60", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_fix_partial" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_fieldregistry" }, { - "relation": "rationale_for", + "relation": "contains", "confidence": "EXTRACTED", - "source_file": "migrations/versions/b1c2d3e4f5a6_create_prometheus_memories.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_b1c2d3e4f5a6_create_prometheus_memories_py", - "target": "versions_b1c2d3e4f5a6_create_prometheus_memories_rationale_1" + "source": "main_app_prometheus_compact_py", + "target": "prometheus_compact_charcount" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", - "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_upgrade" + "source": "prometheus_compact_counttokens", + "target": "prometheus_compact_gettokenizer" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L27", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L228", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", - "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_downgrade" + "source": "prometheus_compact_prometheuscompactor_shouldcompact", + "target": "prometheus_compact_counttokens" }, { - "relation": "rationale_for", - "confidence": "EXTRACTED", - "source_file": "migrations/versions/c2e4f6a8b0c1_drop_embedding_model_version.py", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L191", "weight": 1.0, - "confidence_score": 1.0, - "source": "migrations_versions_c2e4f6a8b0c1_drop_embedding_model_version_py", - "target": "versions_c2e4f6a8b0c1_drop_embedding_model_version_rationale_1" + "source": "prometheus_memory_sumtokens", + "target": "prometheus_compact_counttokens" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", - "source_location": "L17", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L347", "weight": 1.0, - "confidence_score": 1.0, - "source": "migrations_versions_d3df3fc5ca72_rename_memory_base_score_py", - "target": "versions_d3df3fc5ca72_rename_memory_base_score_upgrade" + "source": "prometheus_memory_counttokenscached", + "target": "prometheus_compact_counttokens" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3df3fc5ca72_rename_memory_base_score.py", - "source_location": "L21", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L340", "weight": 1.0, - "confidence_score": 1.0, - "source": "migrations_versions_d3df3fc5ca72_rename_memory_base_score_py", - "target": "versions_d3df3fc5ca72_rename_memory_base_score_downgrade" + "source": "prometheus_memory_extract", + "target": "prometheus_compact_counttokens" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_upgrade" + "source": "prometheus_compact_charcount", + "target": "prometheus_compact_counttokens" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L36", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_downgrade" + "source": "prometheus_compact_fetchfieldspayload", + "target": "prometheus_compact_getstocksfieldsurl" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/d3e4f5a6b7c8_add_prometheus_sandboxes.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L108", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_d3e4f5a6b7c8_add_prometheus_sandboxes_py", - "target": "versions_d3e4f5a6b7c8_add_prometheus_sandboxes_rationale_1" + "source": "prometheus_compact_loadfielddata", + "target": "prometheus_compact_getstocksfieldsurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L21", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py", - "target": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_upgrade" + "source": "prometheus_compact_loadfielddata", + "target": "prometheus_compact_fetchfieldspayload" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L45", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py", - "target": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_downgrade" + "source": "prometheus_compact_getmetricregex", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L120", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_rationale_1", - "target": "migrations_versions_e4f5a6b7c8d9_fix_fulltext_index_prometheus_memories_py" + "source": "prometheus_compact_gethistoricalfields", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L22", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py", - "target": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_upgrade" + "source": "prometheus_compact_getfundamentalcolumns", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L26", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L97", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py", - "target": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_downgrade" + "source": "prometheus_compact_rationale_97", + "target": "prometheus_compact_loadfielddata" }, { "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "migrations/versions/e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_rationale_1", - "target": "migrations_versions_e5f6a7b8c9d0_drop_workspace_path_prometheus_sandboxes_py" + "source": "prometheus_compact_rationale_95", + "target": "prometheus_compact_loadfielddata" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L26", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L151", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", - "target": "versions_f1a2b3c4d5e6_session_gc_index_upgrade" + "source": "prometheus_compact_extractmetrics", + "target": "prometheus_compact_getmetricregex" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L34", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py", - "target": "versions_f1a2b3c4d5e6_session_gc_index_downgrade" + "source": "prometheus_compact_extracttickers", + "target": "prometheus_compact_dedup" }, { - "relation": "rationale_for", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "migrations/versions/f1a2b3c4d5e6_session_gc_index.py", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "versions_f1a2b3c4d5e6_session_gc_index_rationale_1", - "target": "migrations_versions_f1a2b3c4d5e6_session_gc_index_py" + "source": "prometheus_compact_extractmetrics", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_project_overview" + "source": "prometheus_compact_extractdecisions", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L4", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_dev_commands" + "source": "prometheus_compact_extractsnapshots", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L23", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_architecture" + "source": "prometheus_compact_extracttoolcalls", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L34", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L236", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_testing" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L38", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L265", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_graphify" + "source": "prometheus_compact_prometheuscompactor_consolidate", + "target": "prometheus_compact_dedup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L60", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L212", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_swarm_delegation_default" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extracttickers" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L47", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L213", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_stocks_api_pandas_first_pattern" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extractmetrics" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L54", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_scraper_b3_xango_batch_data_pipeline" + "source": "prometheus_compact_extractmetrics", + "target": "prometheus_compact_fieldregistry_getmetricregex" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L60", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L214", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_auth_users_dual_layer_session_security" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extractdecisions" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L28", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L215", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_key_quirks" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extractsnapshots" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L57", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L216", "weight": 1.0, "confidence_score": 1.0, - "source": "agents_md", - "target": "server_agents_prometheus_ai_chat_strengths_gaps" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_extracttoolcalls" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L5", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L218", "weight": 1.0, "confidence_score": 1.0, - "source": "server_agents_dev_commands", - "target": "server_agents_codeblock_1" + "source": "prometheus_compact_prometheuscompactor_extractepisode", + "target": "prometheus_compact_buildsummary" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "AGENTS.md", - "source_location": "L31", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L190", "weight": 1.0, "confidence_score": 1.0, - "source": "server_agents_dev_commands", - "target": "server_agents_ci_pipeline_order" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_shouldcompact" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L1", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L196", "weight": 1.0, "confidence_score": 1.0, - "source": "readme_md", - "target": "server_readme_mansa_server" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_getcompactablechunk" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L7", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L205", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_run_with_docker" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_extractepisode" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L20", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_environment_setup" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_consolidate" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L85", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L254", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_health_check" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_compact" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L91", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L293", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_mansa_server", - "target": "server_readme_license" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_getepisodes" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L9", - "weight": 1.0, - "confidence_score": 1.0, - "source": "server_readme_run_with_docker", - "target": "server_readme_codeblock_1" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_compact_prometheuscompactor", + "target": "models_prometheus_prometheussession" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L24", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_environment_setup", - "target": "server_readme_codeblock_2" + "source": "prometheus_compact_prometheuscompactor", + "target": "prometheus_compact_prometheuscompactor_init" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "README.md", - "source_location": "L87", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L265", "weight": 1.0, "confidence_score": 1.0, - "source": "server_readme_health_check", - "target": "server_readme_codeblock_3" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_shouldcompact" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L25", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L193", "weight": 1.0, "confidence_score": 1.0, - "source": "todo_md", - "target": "server_todo_user_structure_defined_by_string_roles" + "source": "prometheus_compact_prometheuscompactor_shouldcompact", + "target": "prometheus_compact_charcount" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L34", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L263", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_user" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_getcompactablechunk" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L37", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L268", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_premium" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_extractepisode" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L40", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_developer" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_consolidate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L67", + "source_file": "main/app/prometheus/compact.py", + "source_location": "L262", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_stocks_api" + "source": "prometheus_compact_prometheuscompactor_compact", + "target": "prometheus_compact_prometheuscompactor_getepisodes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "TODO.md", - "source_location": "L70", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "server_todo_user_structure_defined_by_string_roles", - "target": "server_todo_prometheus" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_buildclient" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L1", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_md", - "target": "docs_authentication_authentication_management" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_connect" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L5", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_token_session_lifetime" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_mcpclientpool" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L11", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_token_extraction_order" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_ensurefastmcp" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L21", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_cookie_handling_conditional_secure" + "source": "main_app_prometheus_mcp_py", + "target": "prometheus_mcp_parseservers" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", + "source_file": "main/app/prometheus/mcp.py", "source_location": "L30", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_session_data_model_family_only" + "source": "prometheus_mcp_connect", + "target": "prometheus_mcp_buildclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L39", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_roles_and_permissions" + "source": "prometheus_mcp_mcpclientpool_initialize", + "target": "prometheus_mcp_buildclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L61", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_rate_limits" + "source": "prometheus_mcp_mcpclientpool_reconnect", + "target": "prometheus_mcp_buildclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L49", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_api_endpoints" + "source": "prometheus_mcp_buildclient", + "target": "prometheus_mcp_ensurefastmcp" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L117", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_security_features" + "source": "prometheus_mcp_mcpclientpool_initialize", + "target": "prometheus_mcp_connect" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L138", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_not_implemented" + "source": "prometheus_mcp_mcpclientpool_reconnect", + "target": "prometheus_mcp_connect" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L154", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_workflow" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L187", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L26", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_license" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_initialize" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L9", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_usage" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_getclients" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L130", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_device_detection" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_healthcheck" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L144", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_authentication_management", - "target": "docs_authentication_session_management" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_reconnect" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L51", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_health_check" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_close" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L57", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_user_registration" + "source": "prometheus_mcp_mcpclientpool", + "target": "prometheus_mcp_mcpclientpool_new" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L65", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_user_login" + "source": "prometheus_mcp_mcpclientpool_getclients", + "target": "prometheus_mcp_mcpclientpool_initialize" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L84", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_logout" + "source": "prometheus_mcp_mcpclientpool_initialize", + "target": "prometheus_mcp_parseservers" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L94", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L45", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_oauth2_login" + "source": "prometheus_mcp_mcpclientpool_getclients", + "target": "prometheus_mcp_mcpclientpool_healthcheck" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L120", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L58", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_callback_cookie_only" + "source": "prometheus_mcp_mcpclientpool_healthcheck", + "target": "prometheus_mcp_mcpclientpool_reconnect" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L77", + "source_file": "main/app/prometheus/mcp.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_profile_me" + "source": "prometheus_mcp_mcpclientpool_reconnect", + "target": "prometheus_mcp_parseservers" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L108", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L53", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_api_endpoints", - "target": "docs_authentication_google_callback" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getmatrix" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L76", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_health_check", - "target": "docs_authentication_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_invalidateuser" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L52", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_health_check", - "target": "docs_authentication_codeblock_2" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_clearall" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L11", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_usage", - "target": "docs_authentication_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_memorycandidate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L84", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_registration", - "target": "docs_authentication_codeblock_2" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_newtokencache" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L59", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_registration", - "target": "docs_authentication_codeblock_3" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getclient" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L94", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_login", - "target": "docs_authentication_codeblock_3" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_minmax" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L67", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_user_login", - "target": "docs_authentication_codeblock_4" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_normalizekey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L104", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_logout", - "target": "docs_authentication_codeblock_4" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_findsimilarkey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L86", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_logout", - "target": "docs_authentication_codeblock_6" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_scorerow" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L113", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_5" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_scorerecency" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L98", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_7" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_scorecandidates" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L104", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L187", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_google_oauth2_login", - "target": "docs_authentication_codeblock_8" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_sumtokens" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L79", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_profile_me", - "target": "docs_authentication_codeblock_5" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_prometheusmemory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L144", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_workflow", - "target": "docs_authentication_codeblock_6" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getmemorylimit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/authentication.md", - "source_location": "L156", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_authentication_workflow", - "target": "docs_authentication_codeblock_9" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_countmemories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L194", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_md", - "target": "docs_orunmila_orunmila" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_touch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L7", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_usage" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_upsertmemory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L53", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L89", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_workflow" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_search" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L65", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_api_endpoints" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_fulltextsearch" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L72", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L163", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_orunmila", - "target": "docs_orunmila_license" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getusermemories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L9", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_usage", - "target": "docs_orunmila_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_deletememory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L49", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L318", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_usage", - "target": "docs_orunmila_codeblock_2" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_extract" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/orunmila.md", - "source_location": "L55", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_orunmila_workflow", - "target": "docs_orunmila_codeblock_3" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_matrixkey" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L48", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_md", - "target": "docs_scraper_b3_b3_market_scraper" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_matrixusertag" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L342", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_md", - "target": "docs_scraper_b3_brazilian_stocks_market_scraper" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_counttokenscached" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L5", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_sources_6" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_getmatrixasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L19", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_invalidateuserasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L31", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_xango_score_main_app_scraper_b3_xango_py" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_clearallasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L41", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L244", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_b3_market_scraper", - "target": "docs_scraper_b3_outputs" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_upsertmemoryasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L21", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L333", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_scheduling_config_config_py_77_81_scraper_service_py_23_36", - "target": "docs_scraper_b3_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_searchasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/scraper_b3.md", - "source_location": "L8", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L483", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_scraper_b3_usage", - "target": "docs_scraper_b3_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_deletememoryasync" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_md", - "target": "docs_stocks_api_brazilian_stocks_market_api" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_applyupdate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L7", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_usage" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_normalize_key" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L22", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L216", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_auth" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_archivedead" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L32", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_api_endpoints" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_now" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L90", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L203", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_response_format" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_decayscores" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L119", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_architecture" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_memorymanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L113", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_brazilian_stocks_market_api", - "target": "docs_stocks_api_license" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_get_memory_limit" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L9", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_usage", - "target": "docs_stocks_api_codeblock_1" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_count_memories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", + "source_file": "main/app/prometheus/memory.py", "source_location": "L34", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_health_check" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_upsert_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L40", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_field_discovery" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_fulltext_search" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L53", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L168", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_historical_data" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_get_user_memories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L72", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L195", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_fundamental_data" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_delete_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L74", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L209", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_cotations_10_year_daily_history" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_decay_scores" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L87", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L223", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_live_price" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_archive_dead" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L98", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L3", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_mcp_ai_agent_tools" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_save_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L40", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_api_key_verification" + "source": "main_app_prometheus_memory_py", + "target": "prometheus_memory_search_memory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L45", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L290", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_endpoints", - "target": "docs_stocks_api_key_management" + "source": "prometheus_memory_search", + "target": "prometheus_memory_getmatrix" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L35", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_health_check", - "target": "docs_stocks_api_codeblock_2" + "source": "prometheus_memory_getmatrix", + "target": "prometheus_memory_matrixkey" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L42", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_field_discovery", - "target": "docs_stocks_api_codeblock_3" + "source": "prometheus_memory_getmatrix", + "target": "prometheus_memory_matrixusertag" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L41", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L64", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_api_key_verification", - "target": "docs_stocks_api_codeblock_3" + "source": "prometheus_memory_getmatrix", + "target": "prometheus_memory_getmatrixasync" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L50", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_4" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_invalidateuser" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L55", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L422", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_5" + "source": "prometheus_memory_deletememory", + "target": "prometheus_memory_invalidateuser" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L52", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "prometheus_memory_invalidateuser" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", + "source_file": "main/app/prometheus/memory.py", "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_historical_data", - "target": "docs_stocks_api_codeblock_6" + "source": "prometheus_memory_invalidateuser", + "target": "prometheus_memory_invalidateuserasync" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L47", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L72", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_key_management", - "target": "docs_stocks_api_codeblock_4" + "source": "prometheus_memory_clearall", + "target": "prometheus_memory_clearallasync" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L22", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_memorycandidate", + "target": "models_memory_prometheusmemory" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L63", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L354", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_5" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L74", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L241", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_7" + "source": "prometheus_memory_search", + "target": "prometheus_memory_minmax" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L86", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L385", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_fundamental_data", - "target": "docs_stocks_api_codeblock_8" + "source": "prometheus_memory_searchasync", + "target": "prometheus_memory_minmax" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L76", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_cotations_10_year_daily_history", - "target": "docs_stocks_api_codeblock_6" + "source": "prometheus_memory_normalizekey", + "target": "prometheus_memory_findsimilarkey" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L30", + "weight": 1.0, + "source": "prometheus_memory_normalizekey", + "target": "stocks_api_response_cache_responsecache_set" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L21", + "weight": 1.0, + "source": "prometheus_memory_normalizekey", + "target": "prometheus_state_harnessstate_set" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L89", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_live_price", - "target": "docs_stocks_api_codeblock_7" + "source": "prometheus_memory_findsimilarkey", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L106", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L281", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_response_format", - "target": "docs_stocks_api_codeblock_8" + "source": "prometheus_memory_upsertmemoryasync", + "target": "prometheus_memory_findsimilarkey" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/stocks_api.md", - "source_location": "L94", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_stocks_api_response_format", - "target": "docs_stocks_api_codeblock_9" + "source": "prometheus_memory_findsimilarkey", + "target": "prometheus_memory_normalize_key" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L1", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L140", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_md", - "target": "docs_user_user_management" + "source": "prometheus_memory_scorerecency", + "target": "prometheus_memory_scorerow" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L5", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_roles_and_permissions" + "source": "prometheus_memory_scorecandidates", + "target": "prometheus_memory_scorerow" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L17", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L314", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_api_endpoints" + "source": "prometheus_memory_search", + "target": "prometheus_memory_scorerecency" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L149", + "weight": 1.0, + "source": "prometheus_memory_scorerecency", + "target": "prometheus_vector_getrelevancescore" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L59", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L361", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_session_management" + "source": "prometheus_memory_searchasync", + "target": "prometheus_memory_scorerecency" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L112", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L342", "weight": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_api_keys_stocks_api", - "confidence_score": 1.0 + "confidence_score": 1.0, + "source": "prometheus_memory_search", + "target": "prometheus_memory_scorecandidates" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L123", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L169", "weight": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_rate_limits_related_services", - "confidence_score": 1.0 + "source": "prometheus_memory_scorecandidates", + "target": "prometheus_vector_getrelevancescore" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L135", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L389", "weight": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_not_implemented", - "confidence_score": 1.0 + "confidence_score": 1.0, + "source": "prometheus_memory_searchasync", + "target": "prometheus_memory_scorecandidates" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L156", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L461", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_workflow" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_sumtokens" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L177", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L502", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_license" + "source": "prometheus_memory_counttokenscached", + "target": "prometheus_memory_sumtokens" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L10", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "models_memory_prometheusmemory" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L140", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L117", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_user_management", - "target": "docs_user_permission_system" + "source": "prometheus_memory_prometheusmemory", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L8", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "models_memory_usermemory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testexactsamekeyupdates" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testsimilarkeymerges" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testdifferentkeysnomerge" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testmergeboostsscore" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testmergeincrementsaccess" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testthresholdboundary" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testdecay" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testarchive" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testemptydatabase" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testgetmemorylimit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testupsertmemory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testcountmemories" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testgetusermemories" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testdeletememory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_memory_prometheusmemory", + "target": "tests_test_memory_manager_testsearchfulltext" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L19", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_health_check" + "source": "prometheus_memory_getmemorylimit", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L25", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L347", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_get_profile" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_getmemorylimit" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L53", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L299", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_admin_access" + "source": "prometheus_memory_upsertmemoryasync", + "target": "prometheus_memory_getmemorylimit" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L41", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_upgrade_to_developer_starter" + "source": "prometheus_memory_countmemories", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L47", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L347", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_api_endpoints", - "target": "docs_user_upgrade_to_developer_enterprise" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_countmemories" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L20", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L300", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_health_check", - "target": "docs_user_codeblock_1" + "source": "prometheus_memory_upsertmemoryasync", + "target": "prometheus_memory_countmemories" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L27", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_profile", - "target": "docs_user_codeblock_2" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_touch" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L31", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L368", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_profile", - "target": "docs_user_codeblock_3" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_upsertmemory" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L39", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L47", "weight": 1.0, - "source": "docs_user_admin_access", - "target": "docs_user_codeblock_3", - "confidence_score": 1.0 + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_vector_contenthash" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L55", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L231", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_admin_access", - "target": "docs_user_codeblock_6" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_upsertmemoryasync" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L63", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L138", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_list_all_sessions" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_matrix_cache_invalidateuser" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L92", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L100", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_get_current_session" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_applyupdate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L71", + "weight": 1.0, + "source": "prometheus_memory_upsertmemory", + "target": "models_memory_usermemory" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L50", + "weight": 1.0, + "source": "prometheus_memory_upsertmemory", + "target": "utils_vector_contenthash" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L114", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L63", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_revoke_a_session" + "source": "prometheus_memory_upsertmemory", + "target": "prometheus_memory_now" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L127", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_session_management", - "target": "docs_user_revoke_all_sessions" + "source": "prometheus_memory_search", + "target": "prometheus_memory_fulltextsearch" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L55", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L104", "weight": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_4", - "confidence_score": 1.0 + "source": "prometheus_memory_search", + "target": "prometheus_vector_embed" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L59", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L109", "weight": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_5", - "confidence_score": 1.0 + "source": "prometheus_memory_search", + "target": "prometheus_vector_batchcosinesimilarity" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L65", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L330", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_7" + "source": "prometheus_memory_search", + "target": "prometheus_memory_searchasync" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L69", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L120", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_user_list_all_sessions", - "target": "docs_user_codeblock_8" + "source": "prometheus_memory_search", + "target": "prometheus_vector_getrelevancescore" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L43", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L242", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_user_upgrade_to_developer_starter", - "target": "docs_user_codeblock_4" + "source": "prometheus_memory_search", + "target": "prometheus_matrix_cache_getmatrix" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L49", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L162", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_user_upgrade_to_developer_enterprise", - "target": "docs_user_codeblock_5" + "source": "prometheus_memory_search", + "target": "prometheus_vector_decodeembeddings" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L83", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L113", "weight": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_6", - "confidence_score": 1.0 + "source": "prometheus_memory_search", + "target": "utils_vector_batchcosinesimilarity" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L125", + "weight": 1.0, + "source": "prometheus_memory_search", + "target": "utils_vector_getrelevancescore" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L94", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L106", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_9" + "source": "prometheus_memory_search", + "target": "prometheus_memory_now" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L98", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_get_current_session", - "target": "docs_user_codeblock_10" + "source": "prometheus_memory_search", + "target": "prometheus_memory_fulltext_search" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L91", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L117", "weight": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_7", - "confidence_score": 1.0 + "source": "prometheus_memory_search", + "target": "utils_vector_batch_cosine_similarity" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L116", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L386", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_11" + "source": "prometheus_memory_searchasync", + "target": "prometheus_memory_fulltextsearch" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L120", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_a_session", - "target": "docs_user_codeblock_12" + "source": "prometheus_memory_fulltextsearch", + "target": "prometheus_memory_now" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L101", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L180", "weight": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_8", - "confidence_score": 1.0 + "source": "prometheus_memory_getusermemories", + "target": "prometheus_vector_getrelevancescore" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L105", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L185", "weight": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_9", - "confidence_score": 1.0 + "source": "prometheus_memory_getusermemories", + "target": "utils_vector_getrelevancescore" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L129", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L178", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_13" + "source": "prometheus_memory_getusermemories", + "target": "prometheus_memory_now" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L133", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L480", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_revoke_all_sessions", - "target": "docs_user_codeblock_14" + "source": "prometheus_memory_deletememory", + "target": "prometheus_memory_deletememoryasync" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L141", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L369", "weight": 1.0, - "source": "docs_user_workflow", - "target": "docs_user_codeblock_10", - "confidence_score": 1.0 + "source": "prometheus_memory_deletememory", + "target": "prometheus_matrix_cache_invalidateuser" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/user.md", - "source_location": "L158", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L191", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_user_workflow", - "target": "docs_user_codeblock_16" + "source": "prometheus_memory_deletememory", + "target": "prometheus_memory_now" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L367", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_09_sse_resume_md", - "target": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan" + "source": "prometheus_memory_extract", + "target": "prometheus_vector_embed" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L11", + "source_file": "main/app/prometheus/memory.py", + "source_location": "L386", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_sse_resume_implementation_plan", - "target": "plans_2026_08_09_sse_resume_global_constraints" + "source": "prometheus_memory_extract", + "target": "prometheus_memory_counttokenscached" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L26", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_lockfor" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L242", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_getclient" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L412", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_hostpath" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L576", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_sandboxpath" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L863", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L47", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_global_constraints", - "target": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_sandboxmanager" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L41", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", - "target": "plans_2026_08_09_sse_resume_codeblock_1" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_create" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L130", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L65", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", - "target": "plans_2026_08_09_sse_resume_codeblock_2" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_destroy" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L235", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L77", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_1_streambus_module_with_unit_tests", - "target": "plans_2026_08_09_sse_resume_codeblock_3" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_getorcreate" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L257", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", - "target": "plans_2026_08_09_sse_resume_codeblock_4" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_execute" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L329", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L189", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", - "target": "plans_2026_08_09_sse_resume_codeblock_5" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_read_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L405", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L196", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_2_background_run_get_resume_route_in_prometheus_controller", - "target": "plans_2026_08_09_sse_resume_codeblock_6" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_write_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L426", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L207", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", - "target": "plans_2026_08_09_sse_resume_codeblock_7" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_list_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L498", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L197", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", - "target": "plans_2026_08_09_sse_resume_codeblock_8" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_delete_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L569", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L215", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_3_frontend_api_js_shared_sse_parser_resumechat_cursor_tracking", - "target": "plans_2026_08_09_sse_resume_codeblock_9" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_synctosandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L590", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L234", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_10" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_syncfromsandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L659", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_11" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_write_bytes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L681", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_12" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_executewithworkspace" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L768", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_13" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_syncworkspace" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L835", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L148", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_14" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_restoreworkspace" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L856", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_4_frontend_app_jsx_resume_lifecycle_boot_resume", - "target": "plans_2026_08_09_sse_resume_codeblock_15" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_savebackup" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-09-sse-resume.md", - "source_location": "L889", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L168", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_09_sse_resume_task_5_full_verification_todo_check_off", - "target": "plans_2026_08_09_sse_resume_codeblock_16" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_loadbackup" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L1", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_15_stocks_api_perf_md", - "target": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_baseurl" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L13", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", - "target": "plans_2026_08_15_stocks_api_perf_global_constraints" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_checkpoint" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L23", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L70", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", - "target": "plans_2026_08_15_stocks_api_perf_file_structure" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_restore" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L633", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L79", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_stocks_api_performance_pre_materialized_cache_sync_handlers_implementation_plan", - "target": "plans_2026_08_15_stocks_api_perf_self_review" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_upload_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L35", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L251", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L1", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries" + "source": "main_app_prometheus_sandbox_py", + "target": "prometheus_sandbox_rationale_1" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L392", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def" + "source": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_lockfor" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L468", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L160", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path" + "source": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_lockfor" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L613", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_file_structure", - "target": "plans_2026_08_15_stocks_api_perf_task_5_full_verification_graphify_update" + "source": "prometheus_sandbox_create", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L49", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_1" + "source": "prometheus_sandbox_destroy", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L88", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_2" + "source": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L118", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L124", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_3" + "source": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L131", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L220", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_4" + "source": "prometheus_sandbox_synctosandbox", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L177", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L235", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_5" + "source": "prometheus_sandbox_syncfromsandbox", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L228", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L168", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_6" + "source": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_getclient" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L244", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/sandbox_cleanup.py", + "source_location": "L23", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_1_tickerpayloadcache_pre_materialize_per_ticker_payloads_at_refresh", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_7" + "source": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_cleanup_cleanup_expired_sandboxes" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L263", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L57", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_8" + "source": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_read_file" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L315", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L66", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_9" + "source": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_write_file" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L349", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L78", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_2_fast_paths_in_stocksquerymanager_for_default_shaped_queries", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_10" + "source": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_list_files" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L405", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L136", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_11" + "source": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_syncworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L461", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L150", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_3_convert_query_handlers_to_sync_def", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_12" + "source": "prometheus_sandbox_getclient", + "target": "prometheus_sandbox_restoreworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L482", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L190", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_13" + "source": "prometheus_sandbox_read_file", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L512", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L198", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_14" + "source": "prometheus_sandbox_write_file", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L519", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L208", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_15" + "source": "prometheus_sandbox_list_files", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L539", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L199", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_16" + "source": "prometheus_sandbox_delete_file", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L548", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L243", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_17" + "source": "prometheus_sandbox_syncfromsandbox", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-stocks-api-perf.md", - "source_location": "L606", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/tools.py", + "source_location": "L156", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_stocks_api_perf_task_4_pre_parsed_cotation_date_index_replace_filtercotationcolumn_hot_path", - "target": "plans_2026_08_15_stocks_api_perf_codeblock_18" + "source": "prometheus_tools_serve_file", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L189", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_15_workspace_endpoints_md", - "target": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan" + "source": "controller_prometheus_controller_downloadworkspacefile", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L16", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L188", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", - "target": "plans_2026_08_15_workspace_endpoints_global_constraints" + "source": "prometheus_sandbox_write_bytes", + "target": "prometheus_sandbox_hostpath" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L632", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L211", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_workspace_file_endpoints_agent_serve_file_tool_implementation_plan", - "target": "plans_2026_08_15_workspace_endpoints_self_review" + "source": "prometheus_sandbox_list_files", + "target": "prometheus_sandbox_sandboxpath" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L29", - "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L9", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "models_sandbox_prometheussandbox" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L152", - "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_agent_sandbox_integration.py", + "source_location": "L7", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_agent_sandbox_integration_testpersistentsandboxlifecycle" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L198", - "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L3", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxmanager" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L465", - "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L611", - "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_global_constraints", - "target": "plans_2026_08_15_workspace_endpoints_task_5_full_verification" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_persistence_testsandboxpersistence" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L43", - "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_1" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_persistence_testsandboxcleanup" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L108", - "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_2" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_fakeclient" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L145", - "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_1_sandbox_delete_file_binary_write", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_3" + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxcreate" }, { - "relation": "contains", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxexecute" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxcheckpoint" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxrestore" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxuploadfile" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxreadfile" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "tests_test_sandbox_testsandboxdestroy" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/context.py", + "source_location": "L16", + "weight": 0.8, + "confidence_score": 0.5, + "source": "prometheus_sandbox_sandboxmanager", + "target": "prometheus_context_toolcontext" + }, + { + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L166", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_4" + "source": "prometheus_sandbox_sandboxmanager", + "target": "prometheus_sandbox_rationale_24" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L172", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_5" + "source": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_create" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L180", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L162", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_6" + "source": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_create" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L191", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_2_dependency_config_setting", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_7" + "source": "prometheus_sandbox_create", + "target": "prometheus_sandbox_baseurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L212", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L33", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_8" + "source": "prometheus_sandbox_create", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L368", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L186", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_9" + "source": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_destroy" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L375", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_10" + "source": "prometheus_sandbox_destroy", + "target": "prometheus_sandbox_baseurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L381", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L99", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_11" + "source": "prometheus_sandbox_destroy", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L458", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L116", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_3_controller_endpoints", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_12" + "source": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_synctosandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L479", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L153", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_13" + "source": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_getorcreate" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L560", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L75", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_14" + "source": "prometheus_sandbox_getorcreate", + "target": "models_sandbox_prometheussandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L566", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L69", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_15" + "source": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_loadbackup" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L593", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L71", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_16" + "source": "prometheus_sandbox_getorcreate", + "target": "prometheus_sandbox_restoreworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L604", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_4_serve_file_agent_tool", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_17" + "source": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_synctosandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-endpoints.md", - "source_location": "L626", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L139", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_endpoints_task_5_full_verification", - "target": "plans_2026_08_15_workspace_endpoints_codeblock_18" + "source": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_syncfromsandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L1", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L37", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_15_workspace_frontend_md", - "target": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan" + "source": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_baseurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L13", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L51", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", - "target": "plans_2026_08_15_workspace_frontend_backend_contract_source_of_truth_for_api_js" + "source": "prometheus_sandbox_execute", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L32", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L242", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_workspace_files_ui_promptbox_upload_implementation_plan", - "target": "plans_2026_08_15_workspace_frontend_global_constraints" + "source": "prometheus_sandbox_syncfromsandbox", + "target": "prometheus_sandbox_read_file" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L43", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js" + "source": "prometheus_sandbox_read_file", + "target": "prometheus_sandbox_syncworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L176", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L73", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar" + "source": "prometheus_sandbox_read_file", + "target": "prometheus_sandbox_baseurl" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L294", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_3_drag_drop_file_upload_in_the_promptbox_inputbar_jsx" + "source": "prometheus_sandbox_read_file", + "target": "prometheus_sandbox_base_url" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L403", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L227", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_global_constraints", - "target": "plans_2026_08_15_workspace_frontend_task_4_docker_restart_e2e_of_prometheus_chat_stream_performed_by_controller_not_a_subagent" + "source": "prometheus_sandbox_synctosandbox", + "target": "prometheus_sandbox_write_file" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L61", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", - "target": "plans_2026_08_15_workspace_frontend_codeblock_1" + "source": "prometheus_sandbox_write_file", + "target": "prometheus_sandbox_restoreworkspace" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L122", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L164", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", - "target": "plans_2026_08_15_workspace_frontend_codeblock_2" + "source": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_synctosandbox" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L169", + "source_file": "main/app/prometheus/sandbox.py", + "source_location": "L180", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_1_api_layer_workspace_functions_in_src_api_js", - "target": "plans_2026_08_15_workspace_frontend_codeblock_3" + "source": "prometheus_sandbox_executewithworkspace", + "target": "prometheus_sandbox_syncfromsandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L191", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_4" + "source": "main_app_prometheus_stream_bus_py", + "target": "prometheus_stream_bus_streamchannel" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L246", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_5" + "source": "main_app_prometheus_stream_bus_py", + "target": "prometheus_stream_bus_streambus" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L272", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L11", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_6" + "source": "prometheus_stream_bus_streamchannel", + "target": "prometheus_stream_bus_streamchannel_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L287", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_15_workspace_frontend_task_2_settings_menu_workspace_files_grid_in_sessionsidebar", - "target": "plans_2026_08_15_workspace_frontend_codeblock_7" + "source": "prometheus_stream_bus_streamchannel", + "target": "prometheus_stream_bus_streamchannel_publish" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L308", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "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_8" + "source": "prometheus_stream_bus_streambus_getorcreate", + "target": "prometheus_stream_bus_streamchannel" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L372", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "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_9" + "source": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_init" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-15-workspace-frontend.md", - "source_location": "L396", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L32", "weight": 1.0, "confidence_score": 1.0, - "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" + "source": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_getorcreate" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L1", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_08_17_openui_migration_md", - "target": "plans_2026_08_17_openui_migration_openui_migration_plan" + "source": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_publish" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L20", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_global_constraints" + "source": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_subscribe" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L30", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_file_structure" + "source": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_unsubscribe" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L52", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 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" + "source": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_startrun" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L80", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L86", "weight": 1.0, "confidence_score": 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" + "source": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_eventgenerator" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L385", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer" + "source": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_streamresponse" }, { - "relation": "contains", + "relation": "method", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L455", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L83", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt" + "source": "prometheus_stream_bus_streambus", + "target": "prometheus_stream_bus_streambus_forward" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L610", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L40", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_task_5_integration_test" + "source": "prometheus_stream_bus_streambus_publish", + "target": "prometheus_stream_bus_streambus_getorcreate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L640", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L61", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_openui_migration_plan", - "target": "plans_2026_08_17_openui_migration_verification_checklist" + "source": "prometheus_stream_bus_streambus_startrun", + "target": "prometheus_stream_bus_streambus_getorcreate" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L32", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_file_structure", - "target": "plans_2026_08_17_openui_migration_frontend_local_only_never_committed" + "source": "prometheus_stream_bus_streambus_eventgenerator", + "target": "prometheus_stream_bus_streambus_subscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L43", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L84", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_file_structure", - "target": "plans_2026_08_17_openui_migration_backend_commit" + "source": "prometheus_stream_bus_streambus_forward", + "target": "prometheus_stream_bus_streambus_subscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L58", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L107", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", - "target": "plans_2026_08_17_openui_migration_codeblock_1" + "source": "prometheus_stream_bus_streambus_eventgenerator", + "target": "prometheus_stream_bus_streambus_unsubscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L66", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L105", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", - "target": "plans_2026_08_17_openui_migration_codeblock_2" + "source": "prometheus_stream_bus_streambus_forward", + "target": "prometheus_stream_bus_streambus_unsubscribe" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L72", + "source_file": "main/app/prometheus/stream_bus.py", + "source_location": "L110", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_1_install_openui_remove_mdocui", - "target": "plans_2026_08_17_openui_migration_codeblock_3" + "source": "prometheus_stream_bus_streambus_streamresponse", + "target": "prometheus_stream_bus_streambus_eventgenerator" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L86", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_2_define_prometheus_component_library", - "target": "plans_2026_08_17_openui_migration_component_mapping" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_search_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L101", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L43", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_component_mapping", - "target": "plans_2026_08_17_openui_migration_codeblock_4" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_save_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L339", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_component_mapping", - "target": "plans_2026_08_17_openui_migration_codeblock_5" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_execute_code" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L396", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L134", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_6" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_read_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L428", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_7" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_write_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L435", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_8" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_list_files" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L442", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_9" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_serve_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L449", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L180", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_3_create_openui_renderer", - "target": "plans_2026_08_17_openui_migration_codeblock_10" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_dispatchtoolcall" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L467", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_11" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_getdb" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L486", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L80", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_12" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_get_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L501", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L95", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_13" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_set_state" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L542", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_14" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_read_sandbox_file" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L555", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L151", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_15" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_upload_to_sandbox" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L572", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L153", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_16" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_check_cache" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L577", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L104", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_17" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_executestatetool" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L590", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L46", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_18" + "source": "main_app_prometheus_tools_py", + "target": "prometheus_tools_executememorytool" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L596", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_19" + "source": "prometheus_tools_rationale_21", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L602", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_4_backend_system_prompt", - "target": "plans_2026_08_17_openui_migration_codeblock_20" + "source": "prometheus_tools_rationale_20", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L614", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_5_integration_test", - "target": "plans_2026_08_17_openui_migration_codeblock_21" + "source": "prometheus_tools_rationale_19", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-08-17-openui-migration.md", - "source_location": "L620", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_08_17_openui_migration_task_5_integration_test", - "target": "plans_2026_08_17_openui_migration_codeblock_22" + "source": "prometheus_tools_search_memory", + "target": "prometheus_tools_getdb" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L1", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L27", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_03_followup_hardening_md", - "target": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan" + "source": "prometheus_tools_rationale_27", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L13", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L18", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", - "target": "plans_2026_09_03_followup_hardening_global_constraints" + "source": "prometheus_tools_rationale_18", + "target": "prometheus_tools_search_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L26", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L16", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", - "target": "plans_2026_09_03_followup_hardening_file_map" + "source": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_16" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L814", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L15", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_follow_up_hardening_implementation_plan", - "target": "plans_2026_09_03_followup_hardening_self_review" + "source": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_15" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L44", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L17", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision" + "source": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_17" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L127", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L13", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache" + "source": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_13" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L240", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L12", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration" + "source": "prometheus_tools_search_memory", + "target": "prometheus_tools_rationale_12" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L337", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L52", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard" + "source": "prometheus_tools_rationale_52", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L415", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/tools.py", + "source_location": "L52", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only" + "source": "prometheus_tools_save_memory", + "target": "prometheus_vector_embed" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L509", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable" + "source": "prometheus_tools_rationale_50", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L562", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L49", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint" + "source": "prometheus_tools_rationale_49", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L623", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures" + "source": "prometheus_tools_save_memory", + "target": "prometheus_tools_getdb" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L712", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L54", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_file_map", - "target": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up" + "source": "prometheus_tools_rationale_54", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L61", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L44", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", - "target": "plans_2026_09_03_followup_hardening_codeblock_1" + "source": "prometheus_tools_rationale_44", + "target": "prometheus_tools_save_memory" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L80", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L42", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", - "target": "plans_2026_09_03_followup_hardening_codeblock_2" + "source": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_42" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L96", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L41", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", - "target": "plans_2026_09_03_followup_hardening_codeblock_3" + "source": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_41" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L120", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L39", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_1_thoth_maat_permission_decision", - "target": "plans_2026_09_03_followup_hardening_codeblock_4" + "source": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_39" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L143", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L38", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_5" + "source": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_38" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L185", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L29", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_6" + "source": "prometheus_tools_save_memory", + "target": "prometheus_tools_rationale_29" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L198", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_7" + "source": "prometheus_tools_rationale_94", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L204", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L91", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_8" + "source": "prometheus_tools_rationale_91", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L233", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L90", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_2_p6_redis_cashews_insertion_behind_existing_sync_cache", - "target": "plans_2026_09_03_followup_hardening_codeblock_9" + "source": "prometheus_tools_rationale_90", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L256", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L92", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", - "target": "plans_2026_09_03_followup_hardening_codeblock_10" + "source": "prometheus_tools_rationale_92", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L284", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L123", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", - "target": "plans_2026_09_03_followup_hardening_codeblock_11" + "source": "prometheus_tools_rationale_123", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L298", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L114", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", - "target": "plans_2026_09_03_followup_hardening_codeblock_12" + "source": "prometheus_tools_rationale_114", + "target": "prometheus_tools_execute_code" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L330", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_3_zstd_hot_path_rework_via_feather_to_dict_zstd_migration", - "target": "plans_2026_09_03_followup_hardening_codeblock_13" + "source": "prometheus_tools_execute_code", + "target": "prometheus_tools_rationale_112" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L351", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L111", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", - "target": "plans_2026_09_03_followup_hardening_codeblock_14" + "source": "prometheus_tools_execute_code", + "target": "prometheus_tools_rationale_111" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L390", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L109", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", - "target": "plans_2026_09_03_followup_hardening_codeblock_15" + "source": "prometheus_tools_execute_code", + "target": "prometheus_tools_rationale_109" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L408", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L115", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_4_queryhistorical_queryfundamental_presort_invariant_guard", - "target": "plans_2026_09_03_followup_hardening_codeblock_16" + "source": "prometheus_tools_rationale_115", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L429", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L112", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", - "target": "plans_2026_09_03_followup_hardening_codeblock_17" + "source": "prometheus_tools_rationale_112", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L451", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L111", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", - "target": "plans_2026_09_03_followup_hardening_codeblock_18" + "source": "prometheus_tools_rationale_111", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L502", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L113", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_5_history_backfill_dedup_indices_as_logging_only", - "target": "plans_2026_09_03_followup_hardening_codeblock_19" + "source": "prometheus_tools_rationale_113", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L525", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", - "target": "plans_2026_09_03_followup_hardening_codeblock_20" + "source": "prometheus_tools_rationale_144", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L541", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", - "target": "plans_2026_09_03_followup_hardening_codeblock_21" + "source": "prometheus_tools_rationale_135", + "target": "prometheus_tools_read_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L555", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L147", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_6_stocks_api_limiter_design_design_only_do_not_enable", - "target": "plans_2026_09_03_followup_hardening_codeblock_22" + "source": "prometheus_tools_read_file", + "target": "prometheus_tools_rationale_147" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L577", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L131", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", - "target": "plans_2026_09_03_followup_hardening_codeblock_23" + "source": "prometheus_tools_read_file", + "target": "prometheus_tools_rationale_131" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L598", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", - "target": "plans_2026_09_03_followup_hardening_codeblock_24" + "source": "prometheus_tools_read_file", + "target": "prometheus_tools_rationale_130" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L616", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_7_remove_temporary_run_py_scraper_debug_endpoint", - "target": "plans_2026_09_03_followup_hardening_codeblock_25" + "source": "prometheus_tools_rationale_129", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L640", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L126", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", - "target": "plans_2026_09_03_followup_hardening_codeblock_26" + "source": "prometheus_tools_rationale_126", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L668", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L125", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", - "target": "plans_2026_09_03_followup_hardening_codeblock_27" + "source": "prometheus_tools_rationale_125", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L676", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L127", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", - "target": "plans_2026_09_03_followup_hardening_codeblock_28" + "source": "prometheus_tools_rationale_127", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L705", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L122", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_8_fix_20_pre_existing_environmental_failures", - "target": "plans_2026_09_03_followup_hardening_codeblock_29" + "source": "prometheus_tools_rationale_122", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L731", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_30" + "source": "prometheus_tools_rationale_155", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L753", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L146", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_31" + "source": "prometheus_tools_rationale_146", + "target": "prometheus_tools_write_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L769", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_32" + "source": "prometheus_tools_write_file", + "target": "prometheus_tools_rationale_158" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L780", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L144", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_33" + "source": "prometheus_tools_write_file", + "target": "prometheus_tools_rationale_144" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-03-followup-hardening.md", - "source_location": "L807", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L143", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_03_followup_hardening_task_9_session_refresh_token_rotation_follow_up", - "target": "plans_2026_09_03_followup_hardening_codeblock_34" + "source": "prometheus_tools_write_file", + "target": "prometheus_tools_rationale_143" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_04_wallet_management_md", - "target": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan" + "source": "prometheus_tools_rationale_145", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L13", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", - "target": "plans_2026_09_04_wallet_management_global_constraints" + "source": "prometheus_tools_rationale_142", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L35", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_wallet_management_thoth_iyagba_implementation_plan", - "target": "plans_2026_09_04_wallet_management_file_structure" + "source": "prometheus_tools_rationale_141", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L60", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L143", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship" + "source": "prometheus_tools_rationale_143", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L166", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L135", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables" + "source": "prometheus_tools_rationale_135", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L269", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L168", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math" + "source": "prometheus_tools_rationale_168", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L391", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L159", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight" + "source": "prometheus_tools_rationale_159", + "target": "prometheus_tools_list_files" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L567", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L171", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots" + "source": "prometheus_tools_list_files", + "target": "prometheus_tools_rationale_171" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L720", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot" + "source": "prometheus_tools_list_files", + "target": "prometheus_tools_rationale_158" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L869", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L158", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices" + "source": "prometheus_tools_rationale_158", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1000", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L155", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain" + "source": "prometheus_tools_rationale_155", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1115", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L154", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage" + "source": "prometheus_tools_rationale_154", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1224", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L156", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix" + "source": "prometheus_tools_rationale_156", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1325", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints" + "source": "prometheus_tools_rationale_145", + "target": "prometheus_tools_serve_file" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1482", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L125", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_search_memory_routed_via_registry" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1618", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L140", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_file_structure", - "target": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_save_memory_routed_via_registry" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L73", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L158", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_1" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_non_registry_tool_not_routed" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L101", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L33", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_2" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_execute_code" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L138", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L85", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_3" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_execute_code_no_sandbox" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L144", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L52", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_4" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_read_file" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L159", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L62", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_1_wallet_models_and_user_relationship", - "target": "plans_2026_09_04_wallet_management_codeblock_5" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_write_file" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L189", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L72", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "target": "plans_2026_09_04_wallet_management_codeblock_6" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_list_files" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L248", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L80", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "target": "plans_2026_09_04_wallet_management_codeblock_7" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_read_file_no_sandbox" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L262", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_state_tools.py", + "source_location": "L108", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_2_alembic_migration_for_wallet_tables", - "target": "plans_2026_09_04_wallet_management_codeblock_8" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_state_tools_test_dispatch_get_state" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L281", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_state_tools.py", + "source_location": "L117", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", - "target": "plans_2026_09_04_wallet_management_codeblock_9" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_state_tools_test_dispatch_set_state" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L325", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_tools.py", + "source_location": "L68", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", - "target": "plans_2026_09_04_wallet_management_codeblock_10" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_sandbox_tools_test_dispatch_execute_code_routes_to_registry" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L384", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L129", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_3_pure_derivation_math", - "target": "plans_2026_09_04_wallet_management_codeblock_11" + "source": "prometheus_tools_dispatchtoolcall", + "target": "prometheus_tools_executestatetool" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L404", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L85", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", - "target": "plans_2026_09_04_wallet_management_codeblock_12" + "source": "prometheus_tools_dispatchtoolcall", + "target": "prometheus_tools_executememorytool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L471", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L86", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", - "target": "plans_2026_09_04_wallet_management_codeblock_13" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_search_memory_routed_to_executememorytool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L524", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L99", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", - "target": "plans_2026_09_04_wallet_management_codeblock_14" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_save_memory_routed_to_executememorytool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L560", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L114", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_4_holding_endpoints_create_holding_and_retarget_weight", - "target": "plans_2026_09_04_wallet_management_codeblock_15" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_memory_tool_skipped_without_user" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L580", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_tools_wiring.py", + "source_location": "L127", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_16" + "source": "prometheus_tools_dispatchtoolcall", + "target": "tests_test_memory_tools_wiring_test_non_memory_tool_not_routed_to_executememorytool" }, { - "relation": "contains", + "relation": "rationale_for", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L649", + "source_file": "main/app/prometheus/tools.py", + "source_location": "L94", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_17" + "source": "prometheus_tools_set_state", + "target": "prometheus_tools_rationale_94" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L659", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_18" + "source": "main_app_prometheus_vector_py", + "target": "prometheus_vector_normalizerows" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L693", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L10", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_19" + "source": "main_app_prometheus_vector_py", + "target": "prometheus_vector_embed" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L713", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L14", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_5_lot_endpoint_append_immutable_buy_sell_lots", - "target": "plans_2026_09_04_wallet_management_codeblock_20" + "source": "main_app_prometheus_vector_py", + "target": "prometheus_vector_decodeembeddings" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L732", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", - "target": "plans_2026_09_04_wallet_management_codeblock_21" + "source": "main_app_prometheus_vector_py", + "target": "prometheus_vector_batchcosinesimilarity" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L804", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L20", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", - "target": "plans_2026_09_04_wallet_management_codeblock_22" + "source": "main_app_prometheus_vector_py", + "target": "prometheus_vector_contenthash" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L862", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L55", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_6_price_client_one_batched_stocks_api_fetch_per_snapshot", - "target": "plans_2026_09_04_wallet_management_codeblock_23" + "source": "main_app_prometheus_vector_py", + "target": "prometheus_vector_tovectorstring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L882", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L59", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_24" + "source": "main_app_prometheus_vector_py", + "target": "prometheus_vector_fromvectorstring" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L944", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L24", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_25" + "source": "main_app_prometheus_vector_py", + "target": "prometheus_vector_getrelevancescore" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L972", + "source_file": "main/app/prometheus/vector.py", + "source_location": "L35", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_26" + "source": "prometheus_vector_batchcosinesimilarity", + "target": "prometheus_vector_normalizerows" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L993", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L379", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_7_snapshot_endpoint_derived_portfolio_read_with_live_prices", - "target": "plans_2026_09_04_wallet_management_codeblock_27" + "source": "prometheus_memory_searchasync", + "target": "prometheus_vector_embed" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1013", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "bench/bench_memory_vector.py", + "source_location": "L32", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_28" + "source": "bench_bench_memory_vector_benchonce", + "target": "prometheus_vector_embed" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1062", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/tools.py", + "source_location": "L63", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_29" + "source": "prometheus_vector_embed", + "target": "prometheus_tools_executememorytool" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1095", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "bench/bench_memory_vector.py", + "source_location": "L22", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_30" + "source": "bench_bench_memory_vector_benchonce", + "target": "prometheus_vector_decodeembeddings" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1108", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L380", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_8_history_endpoint_paginated_lots_with_per_sell_realized_gain", - "target": "plans_2026_09_04_wallet_management_codeblock_31" + "source": "prometheus_memory_searchasync", + "target": "prometheus_vector_batchcosinesimilarity" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1143", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "bench/bench_memory_vector.py", + "source_location": "L25", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_32" + "source": "bench_bench_memory_vector_benchonce", + "target": "prometheus_vector_batchcosinesimilarity" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1157", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L8", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_33" + "source": "prometheus_vector_batchcosinesimilarity", + "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_empty_matrix" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1165", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L14", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_34" + "source": "prometheus_vector_batchcosinesimilarity", + "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_single_row" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1192", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L27", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_35" + "source": "prometheus_vector_batchcosinesimilarity", + "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_multiple_rows" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1217", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L34", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_9_walletservice_wiring_quality_gate_full_suite_ruff_mypy_coverage", - "target": "plans_2026_09_04_wallet_management_codeblock_36" + "source": "prometheus_vector_batchcosinesimilarity", + "target": "tests_test_vector_utils_testbatchcosinesimilarity_test_zero_query" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1237", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L262", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_37" + "source": "prometheus_memory_upsertmemoryasync", + "target": "prometheus_vector_contenthash" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1276", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/app/prometheus/memory.py", + "source_location": "L54", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_38" + "source": "prometheus_memory_applyupdate", + "target": "prometheus_vector_contenthash" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1299", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L40", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_39" + "source": "prometheus_vector_contenthash", + "target": "tests_test_vector_utils_testcontenthash_test_deterministic" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1318", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L43", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_10_first_party_get_stocks_dividends_adjusted_docstring_fix", - "target": "plans_2026_09_04_wallet_management_codeblock_40" + "source": "prometheus_vector_contenthash", + "target": "tests_test_vector_utils_testcontenthash_test_different_inputs" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1341", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_vector_utils.py", + "source_location": "L46", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_41" + "source": "prometheus_vector_contenthash", + "target": "tests_test_vector_utils_testcontenthash_test_hex_format" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1397", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L21", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_42" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_just_accessed_has_full_score" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1419", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L26", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_43" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_one_day_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1452", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L31", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_44" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_seven_days_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1475", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L36", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_11_wallet_receipt_ledger_wallet_dividends_table_receipt_suggestion_endpoints", - "target": "plans_2026_09_04_wallet_management_codeblock_45" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_thirty_days_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1496", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L41", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_46" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_ninety_days_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1512", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L46", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_47" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_one_year_old" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1528", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L52", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_48" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testtimedecay_test_score_always_positive" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1546", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L61", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_49" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_high_base_beats_low_base_same_age" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1582", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L69", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_50" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_frequently_used_survives_longer" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1613", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L75", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_12_split_cliff_regression_test_snapshot_history_dividend_extension_final_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_51" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_rare_old_loses_to_popular_new" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1635", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L79", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_52" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_score_capped_at_one" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1661", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L87", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_53" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testbasescoreimpact_test_equal_age_higher_base_wins" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1686", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L95", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_54" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testdecaymonotonicity_test_older_always_lower_score" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-04-wallet-management.md", - "source_location": "L1727", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L102", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_04_wallet_management_task_13_corporate_actions_table_read_time_scaling_sobras_rule_definitive_full_gate", - "target": "plans_2026_09_04_wallet_management_codeblock_55" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testdecaymonotonicity_test_never_accessed_uses_full_base" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L1", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L110", "weight": 1.0, - "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_12_artifact_removal_cache_verdict_md", - "target": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testnocronneeded_test_same_memory_same_time_same_score" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L3", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_relevance_score.py", + "source_location": "L117", "weight": 1.0, - "confidence_score": 1.0, - "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", - "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_1_deletions_safe_no_live_referrers" + "source": "prometheus_vector_getrelevancescore", + "target": "tests_test_relevance_score_testnocronneeded_test_different_times_different_scores" }, { - "relation": "contains", + "relation": "imports_from", + "context": "import", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-12-artifact-removal-cache-verdict.md", - "source_location": "L25", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L8", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_12_artifact_removal_cache_verdict_artifact_removal_matrix_cache_verdict_plan", - "target": "plans_2026_09_12_artifact_removal_cache_verdict_part_2_cache_verdict_keep_the_dict_skip_cashews" + "source": "main_controller_prometheus_controller_py", + "target": "fastapi" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L1", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_14_memory_postgres_pgvector_plan_md", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_verifysessionownsership" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L13", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L19", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_memory_postgres_pgvector_migration_implementation_plan", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_health" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L24", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_getsessions" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L79", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L36", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_updatesessiontitle" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L139", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L50", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_gethistory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L171", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_4_full_test_sweep_18_suites_postgres_ci_parity" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_deletesession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L185", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L130", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_global_constraints", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_chat_stream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L35", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L132", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_1" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_resumechatstream" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L65", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L170", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_2" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_deleteworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L74", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L183", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_1_pgvector_migration_backfill", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_3" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_downloadworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L97", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L199", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_4" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_listworkspacefiles" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L134", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L145", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_2_delete_vector_py_rewrite_search", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_5" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_forward" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L148", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L147", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_6" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_uploadworkspacefile" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L166", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L28", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_3_update_the_test_files", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_7" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_createsession" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-14-memory-postgres-pgvector-plan.md", - "source_location": "L189", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L75", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_14_memory_postgres_pgvector_plan_task_5_docs_close", - "target": "plans_2026_09_14_memory_postgres_pgvector_plan_codeblock_8" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_chat" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L1", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L163", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_plans_2026_09_15_adopt_libs_md", - "target": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_getmemories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L13", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_adopt_libs_implementation_plan", - "target": "plans_2026_09_15_adopt_libs_global_constraints" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_creatememory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L24", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L201", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_deletememory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L56", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L163", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_get_memories" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L76", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L177", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_create_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L102", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L201", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_4_sse_starlette_replaces_hand_sse_bus" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_delete_memory" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L117", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L21", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_5_rapidfuzz_memory_key_dedup" + "source": "main_controller_prometheus_controller_py", + "target": "controller_prometheus_controller_verify_session_ownership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L132", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L67", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_6_cachetools_bounds_token_cache" + "source": "controller_prometheus_controller_verifysessionownsership", + "target": "controller_prometheus_controller_updatesessiontitle" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L143", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L81", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_7_user_agents_fills_device_fields_optional" + "source": "controller_prometheus_controller_verifysessionownsership", + "target": "controller_prometheus_controller_gethistory" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L154", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L140", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_global_constraints", - "target": "plans_2026_09_15_adopt_libs_task_8_pytest_plugin_set" + "source": "controller_prometheus_controller_verifysessionownsership", + "target": "controller_prometheus_controller_chat_stream" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L38", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L141", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", - "target": "plans_2026_09_15_adopt_libs_codeblock_1" + "source": "controller_prometheus_controller_resumechatstream", + "target": "controller_prometheus_controller_verifysessionownsership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L51", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L118", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_task_1_tenacity_replaces_bespoke_retries", - "target": "plans_2026_09_15_adopt_libs_codeblock_2" + "source": "controller_prometheus_controller_verifysessionownsership", + "target": "controller_prometheus_controller_chat" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", - "source_location": "L72", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L68", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_task_2_cashews_native_probe_first", - "target": "plans_2026_09_15_adopt_libs_codeblock_3" + "source": "controller_prometheus_controller_updatesessiontitle", + "target": "controller_prometheus_controller_verify_session_ownership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/plans/2026-09-15-adopt-libs.md", + "source_file": "main/controller/prometheus_controller.py", "source_location": "L88", "weight": 1.0, "confidence_score": 1.0, - "source": "plans_2026_09_15_adopt_libs_task_3_pydantic_validates_llm_extraction_json", - "target": "plans_2026_09_15_adopt_libs_codeblock_4" + "source": "controller_prometheus_controller_gethistory", + "target": "controller_prometheus_controller_chat" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L1", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L82", "weight": 1.0, "confidence_score": 1.0, - "source": "docs_superpowers_specs_2026_09_04_wallet_design_md", - "target": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec" + "source": "controller_prometheus_controller_gethistory", + "target": "controller_prometheus_controller_verify_session_ownership" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L8", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L128", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_1_context" + "source": "controller_prometheus_controller_chat_stream", + "target": "controller_prometheus_controller_forward" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L46", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L138", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time" + "source": "controller_prometheus_controller_createsession", + "target": "controller_prometheus_controller_chat_stream" }, { - "relation": "contains", + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L68", + "source_file": "main/controller/prometheus_controller.py", + "source_location": "L142", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_3_data_model_user_db_alembic" + "source": "controller_prometheus_controller_resumechatstream", + "target": "controller_prometheus_controller_forward" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/prometheus_service.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "service_prometheus_service_prometheusservice" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testexactsamekeyupdates" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testsimilarkeymerges" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testdifferentkeysnomerge" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testmergeboostsscore" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testmergeincrementsaccess" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_dedup.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_dedup_testthresholdboundary" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testdecay" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testarchive" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L14", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_maintenance_testemptydatabase" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testgetmemorylimit" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testupsertmemory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testcountmemories" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testgetusermemories" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testdeletememory" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_memory_manager.py", + "source_location": "L5", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_memory_manager_testsearchfulltext" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L6", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_memory_prometheusmemory", + "target": "tests_test_type_aware_decay_testtypeawaredecay" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L131", + "source_file": "main/models/prometheus.py", + "source_location": "L5", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_4_derivations_all_at_read_time_date_order" + "source": "main_models_prometheus_py", + "target": "models_prometheus_prometheussession" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L175", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "tests_test_models_testusermodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "tests_test_models_teststocksapikeymodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_models.py", + "source_location": "L4", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "tests_test_models_testprometheussessionmodel" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L168", "weight": 1.0, - "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_5_endpoints_wallet_on_the_user_port_via_walletservice_getcurrentuser_gate_inline_body_query" + "source": "models_prometheus_prometheussession", + "target": "tests_test_models_testprometheussessionmodel_test_create_session" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L203", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_models.py", + "source_location": "L177", "weight": 1.0, - "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_6_live_prices_endpoint_only_isolation" + "source": "models_prometheus_prometheussession", + "target": "tests_test_models_testprometheussessionmodel_test_default_history" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L235", + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "prometheus_generation_prometheusgenerator" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/app/prometheus/generation.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_prometheus_prometheussession", + "target": "prometheus_generation_sessionproxy" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L2", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L3", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testsandboxpersistence" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L7", "weight": 1.0, - "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_7_validation_422_naming_the_rule_503_for_price_outages" + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_create_sandbox_mapping" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L266", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L19", "weight": 1.0, - "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_8_testing_quality_gates_precedents_to_honor" + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_sandbox_has_timestamps" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L287", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L31", "weight": 1.0, - "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_9_scope" + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testprometheussandboxmodel_test_one_sandbox_per_user" }, { - "relation": "contains", - "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L302", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L77", "weight": 1.0, - "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_10_splits_served_prices_are_raw_by_default_verified_verdict_encode_as_is" + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_test_get_or_create_reuses_existing" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L92", + "weight": 1.0, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_test_get_or_create_respawns_when_dead" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L3", + "weight": 0.8, + "confidence_score": 0.5, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_testsandboxcleanup" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L148", + "weight": 1.0, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_test_cleanup_removes_dead_mappings" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_sandbox_persistence.py", + "source_location": "L168", + "weight": 1.0, + "source": "models_sandbox_prometheussandbox", + "target": "tests_test_sandbox_persistence_test_cleanup_keeps_alive_sandboxes" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L326", + "source_file": "main/service/prometheus_service.py", + "source_location": "L23", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_11_dividends_no_dedicated_endpoint_verified_verdict_encode_as_is" + "source": "main_service_prometheus_service_py", + "target": "service_prometheus_service_memorymaintenance" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L364", + "source_file": "main/service/prometheus_service.py", + "source_location": "L4", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_12_corporate_actions_splits_and_grupamentos_via_one_read_time_mechanism" + "source": "main_service_prometheus_service_py", + "target": "service_prometheus_service_prometheusservice" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L403", + "source_file": "main/service/prometheus_service.py", + "source_location": "L6", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_13_dividend_methodology_ex_date_smoothing_check_both_branches_test_decides" + "source": "main_service_prometheus_service_py", + "target": "service_prometheus_service_initialize" }, { "relation": "contains", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L422", + "source_file": "main/service/prometheus_service.py", + "source_location": "L60", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_thoth_iyagba_wallet_management_design_spec", - "target": "specs_2026_09_04_wallet_design_spec_self_review" + "source": "main_service_prometheus_service_py", + "target": "service_prometheus_service_registermemorymaintenancejob" }, { - "relation": "contains", + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "main/service/prometheus_service.py", + "source_location": "L52", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "prometheus_matrix_cache_invalidateuser" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L49", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_active_memory_decays" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L56", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_zero_access_count_still_decays" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L62", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_high_score_decays_proportionally" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L69", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_very_low_score_stays_above_zero" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L76", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecay_test_multiple_users_all_decayed" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L87", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_dead_memory_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L94", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_low_score_but_recent_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L101", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_zero_access_but_high_score_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L108", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_accessed_memory_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L117", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_already_archived_not_double_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L125", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testarchive_test_multiple_users_independent_archive" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L137", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_decay_then_archive_check" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L145", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_above_threshold_after_decay_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L151", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_score_just_below_threshold_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L158", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_below_threshold_not_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L164", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testdecayandarchivetogether_test_days_just_above_threshold_archived" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_memory_maintenance.py", + "source_location": "L171", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_memory_maintenance_testemptydatabase_test_no_memories_does_not_crash" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L32", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_decays_slowly" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L38", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_context_decays_fast" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L44", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_analysis_decays_normally" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L50", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_feedback_decays_medium" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L56", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_unknown_type_uses_default" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L66", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_mixed_types_all_correct" + }, + { + "relation": "calls", + "context": "call", + "confidence": "INFERRED", + "confidence_score": 0.8, + "source_file": "tests/test_type_aware_decay.py", + "source_location": "L82", + "weight": 1.0, + "source": "service_prometheus_service_memorymaintenance", + "target": "tests_test_type_aware_decay_testtypeawaredecay_test_preference_survives_longer" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/prometheus_service.py", + "source_location": "L1", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_prometheus_service_prometheusservice", + "target": "utils_service_manager_servicemanager" + }, + { + "relation": "uses", + "confidence": "INFERRED", + "source_file": "main/service/prometheus_service.py", + "source_location": "L13", + "weight": 0.8, + "confidence_score": 0.5, + "source": "service_prometheus_service_prometheusservice", + "target": "models_memory_usermemory" + }, + { + "relation": "calls", + "context": "call", "confidence": "EXTRACTED", - "source_file": "docs/superpowers/specs/2026-09-04-wallet-design.md", - "source_location": "L53", + "source_file": "main/service/prometheus_service.py", + "source_location": "L87", "weight": 1.0, "confidence_score": 1.0, - "source": "specs_2026_09_04_wallet_design_2_decision_design_a_pure_event_log_derive_at_read_time", - "target": "specs_2026_09_04_wallet_design_approaches_considered" + "source": "service_prometheus_service_initialize", + "target": "service_prometheus_service_registermemorymaintenancejob" }, { "relation": "contains", @@ -138566,5 +143721,5 @@ "label": "User Authentication & Authorization" } ], - "built_at_commit": "1e23e042a1d9f77378b2a7b41af794104d4cb397" + "built_at_commit": "09a2310802f2d3b4d7f5f50af8e789acdcd23abf" } \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json index 2089ec27..be162447 100644 --- a/graphify-out/manifest.json +++ b/graphify-out/manifest.json @@ -10,13 +10,13 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\config.py": { - "mtime": 1789425836.284395, - "ast_hash": "ef2c8d0823152252266ff44bf4214a4f", + "mtime": 1790707412.4639857, + "ast_hash": "0431e47774260b291eafe77a2f44dd99", "semantic_hash": "" }, "D:\\Repositories\\server\\run.py": { - "mtime": 1789433601.1342905, - "ast_hash": "77fcee1422b1ff8f4ce46a5e2e356246", + "mtime": 1789626195.3671405, + "ast_hash": "92577acca4f2a3bbf0ca57a9a27abdcc", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\components.json": { @@ -35,13 +35,13 @@ "semantic_hash": "c471ffc33ba3a03ab85e430121d628aa" }, "D:\\Repositories\\server\\frontend\\vite.config.js": { - "mtime": 1788637388.7357066, - "ast_hash": "1cfd7dbe10c0d84e0c2592781cdaeb5a", + "mtime": 1789626570.5228856, + "ast_hash": "cd569733362cd7dd8135267de3157f2f", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\api.js": { - "mtime": 1788657707.1779685, - "ast_hash": "6bd39ec198869a8b3c107105d9da61e4", + "mtime": 1789626557.8735044, + "ast_hash": "16d7cc4a490ac3eed97fe073800109f4", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\App.jsx": { @@ -85,8 +85,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\components\\SettingsDialog.jsx": { - "mtime": 1786820946.0218458, - "ast_hash": "3f7f8fe1c78422e051c31e0b77833db5", + "mtime": 1789626563.6772199, + "ast_hash": "dfd4222e9bcababe89ce731176062491", "semantic_hash": "" }, "D:\\Repositories\\server\\frontend\\src\\components\\portfolio\\AddDividendDialog.jsx": { @@ -205,18 +205,23 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\authentication.py": { - "mtime": 1789266824.5949514, - "ast_hash": "e747d01f0db15e4322833ed9dc067348", + "mtime": 1790710502.8264444, + "ast_hash": "904e735c17019459ed5f622346d87973", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\constants.py": { - "mtime": 1789266824.5959513, - "ast_hash": "6ecf8e66be1de1ff26dca48638218fc4", + "mtime": 1790709776.48945, + "ast_hash": "4bb8670e27e85761d9f342841808978d", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\main\\app\\authentication\\introspect.py": { + "mtime": 1790709776.485443, + "ast_hash": "c21d1ed541c25ba0e171b41535cf7926", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\session.py": { - "mtime": 1789434849.6886837, - "ast_hash": "e2c239692412e44bd7ff4d4f6a9f8988", + "mtime": 1790709786.5642009, + "ast_hash": "20dc91ffbcc1a68f55a3c9039afaf6dd", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\authentication\\sso.py": { @@ -229,54 +234,54 @@ "ast_hash": "b797eff10d6300739b550248fe003dbf", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\agent.py": { - "mtime": 1789438984.8569534, - "ast_hash": "19fb4e9e6da3a76551e55a3436460ed1", + "D:\\Repositories\\server\\main\\app\\orunmila\\agent.py": { + "mtime": 1789627530.252448, + "ast_hash": "ec11759056ad9ffe2abb1b57faf9ab88", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\chat.py": { - "mtime": 1789266824.60047, - "ast_hash": "8795017b4ff81f81d5e107f6aa6082a4", + "D:\\Repositories\\server\\main\\app\\orunmila\\chat.py": { + "mtime": 1789627519.913642, + "ast_hash": "2c4bccbe66499695aae4ee9fdadbb9d0", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\compact.py": { - "mtime": 1789438984.938393, - "ast_hash": "64939e1ae6d23e9f4ca37ac7a492d857", + "D:\\Repositories\\server\\main\\app\\orunmila\\compact.py": { + "mtime": 1789627519.9146512, + "ast_hash": "e4a139fe61873463ebb0ea3eeab13303", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\mcp.py": { - "mtime": 1789364804.2356262, - "ast_hash": "0fc31aca590f7a823892d76570edfc98", + "D:\\Repositories\\server\\main\\app\\orunmila\\mcp.py": { + "mtime": 1789627530.2504516, + "ast_hash": "cafca412f1612f2532bb4a3b1555c5f1", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\memory.py": { - "mtime": 1789439255.3807392, - "ast_hash": "f4c2b9d14c7f7c1349638230c674a32c", + "D:\\Repositories\\server\\main\\app\\orunmila\\memory.py": { + "mtime": 1789627737.6011822, + "ast_hash": "f6c09dbf219fcbc5d68b0110200893b2", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\sandbox.py": { - "mtime": 1789428092.156934, - "ast_hash": "fec4dd60a0b6aa65557b0a96d7eece4f", + "D:\\Repositories\\server\\main\\app\\orunmila\\sandbox.py": { + "mtime": 1789627530.2504516, + "ast_hash": "03f167a9a7cdc73dcd238b7f4809a332", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\stream_bus.py": { + "D:\\Repositories\\server\\main\\app\\orunmila\\stream_bus.py": { "mtime": 1789439356.61903, "ast_hash": "18123062622096d1ed80c8d6c41b0169", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\tools.py": { - "mtime": 1789282460.734141, - "ast_hash": "d54cd35bb02513bca16bc806f1ab4c6a", + "D:\\Repositories\\server\\main\\app\\orunmila\\tools.py": { + "mtime": 1789627519.916649, + "ast_hash": "b45895bba6e8c7b6bfee5dd7c1cfa2c1", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\app\\prometheus\\vector.py": { + "D:\\Repositories\\server\\main\\app\\orunmila\\vector.py": { "mtime": 1789266824.606479, "ast_hash": "dd0df7ede0dd28d74c307a7aea6ba04b", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\scraper.py": { - "mtime": 1789282003.1280055, - "ast_hash": "1d4b74cf65d7cc8f304a53f12110a77e", + "mtime": 1790711328.3358188, + "ast_hash": "59c7a34a305a6e90f5e7b4daa8e295eb", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\scraper_b3\\xango.py": { @@ -295,8 +300,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\key.py": { - "mtime": 1789266824.6110003, - "ast_hash": "41e13069c81260e08594fd9e35557e2c", + "mtime": 1790709776.4884515, + "ast_hash": "241906aeb4d9f2f1e013ffa469c3ae9c", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\stocks_api\\query.py": { @@ -315,18 +320,18 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\app\\user\\user.py": { - "mtime": 1789428228.2499757, - "ast_hash": "f10c1e3f5391986c8b725dfe76af4597", + "mtime": 1790709776.4904485, + "ast_hash": "a2cf805d0df8ca36122f887ae54c9280", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\authentication_controller.py": { - "mtime": 1789365987.4456894, - "ast_hash": "b061f08825c0c4245d98f2b2c78a3bc3", + "mtime": 1790712038.5117102, + "ast_hash": "b2b09061a10fe244011b26ecd589f50e", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\controller\\prometheus_controller.py": { - "mtime": 1789434877.2972302, - "ast_hash": "f21a938f6fb14fb7773cf4986c6bcd56", + "D:\\Repositories\\server\\main\\controller\\orunmila_controller.py": { + "mtime": 1789626004.4603558, + "ast_hash": "e83c7e788f9b6a0a5c63a0e9d4d62c6e", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\controller\\stocksapi_controller.py": { @@ -345,18 +350,18 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\models\\memory.py": { - "mtime": 1789266824.6205156, - "ast_hash": "c76f29fef1fab50d579d6dd8f82b9c60", + "mtime": 1789627519.9261706, + "ast_hash": "2998ce69c0463f8e9c56e818adb7fceb", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\models\\prometheus.py": { - "mtime": 1789266824.6215203, - "ast_hash": "68de0cc1a6d9707a26241e318130c41f", + "D:\\Repositories\\server\\main\\models\\orunmila.py": { + "mtime": 1789627519.9146512, + "ast_hash": "9df7147d9c46f6634a64c72112fc1cf8", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\models\\sandbox.py": { - "mtime": 1789266824.6225207, - "ast_hash": "812b7c0da8ae615fd35f8c5b9c107b14", + "mtime": 1789627519.9261706, + "ast_hash": "c746db6d6a1152ea46a8aec78783b226", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\models\\stocksapi_key.py": { @@ -380,13 +385,13 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\authentication_service.py": { - "mtime": 1789439255.3787396, - "ast_hash": "68127fe1d44a44242ce3a5ed2bf4d464", + "mtime": 1790712063.0129516, + "ast_hash": "2075ec61d0ef5be9a76db801df245f84", "semantic_hash": "" }, - "D:\\Repositories\\server\\main\\service\\prometheus_service.py": { - "mtime": 1789266824.626519, - "ast_hash": "3e14105613ccb9deb1c43d6e0e8502ff", + "D:\\Repositories\\server\\main\\service\\orunmila_service.py": { + "mtime": 1789626114.6482823, + "ast_hash": "ec0e8d56b52bcce61bdca987aa7669de", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\scraper_service.py": { @@ -395,7 +400,7 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\service\\stocksapi_service.py": { - "mtime": 1789267774.0200655, + "mtime": 1790707412.4710135, "ast_hash": "83d9740ec96a60fc7c671db7a850f86e", "semantic_hash": "" }, @@ -435,8 +440,8 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\main\\utils\\roles.py": { - "mtime": 1789266824.6370509, - "ast_hash": "4cd3b8e35737d786f10bfb7f46d3444a", + "mtime": 1790707412.4730222, + "ast_hash": "82063fac45e0e82ef3efa1be9248b9ca", "semantic_hash": "" }, "D:\\Repositories\\server\\main\\utils\\scheduler.py": { @@ -460,8 +465,8 @@ "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" }, "D:\\Repositories\\server\\migrations\\env.py": { - "mtime": 1789266824.639558, - "ast_hash": "345111c3a60677e141468fe7d6af0cd3", + "mtime": 1789626224.6520696, + "ast_hash": "269f35fa57eecf274cb3a87d613ac006", "semantic_hash": "" }, "D:\\Repositories\\server\\migrations\\versions\\25af7ad931e7_initial_migration.py": { @@ -519,14 +524,19 @@ "ast_hash": "f3a0b7e1b13ba540d0727d9a33da9a87", "semantic_hash": "" }, + "D:\\Repositories\\server\\migrations\\versions\\f7a8b9c0d1e2_rename_prometheus_to_orunmila.py": { + "mtime": 1789627420.3861797, + "ast_hash": "39dc14c39e2e8bbd9196712b6372f8ac", + "semantic_hash": "" + }, "D:\\Repositories\\server\\AGENTS.md": { - "mtime": 1789433940.4116547, - "ast_hash": "bf791e7f0c47c9789225de4efea91a83", + "mtime": 1789627715.7268107, + "ast_hash": "ef6021079152d1189a4168e43670caa3", "semantic_hash": "" }, "D:\\Repositories\\server\\docker-compose.yml": { - "mtime": 1789363976.6625137, - "ast_hash": "6120b56e7d0d79dd57b0eb9b1cb452ef", + "mtime": 1789627348.435654, + "ast_hash": "1dcc2f80acdae8be67131c6f2965d6a0", "semantic_hash": "" }, "D:\\Repositories\\server\\forgevm.yaml": { @@ -535,28 +545,38 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\README.md": { - "mtime": 1789266824.5528724, - "ast_hash": "eefffc81bc23e76d2429b5d93525910e", + "mtime": 1789627715.7268107, + "ast_hash": "10c5689284ae6fc5ee634a3561ed5daa", "semantic_hash": "" }, "D:\\Repositories\\server\\requirements.txt": { - "mtime": 1789439006.260999, - "ast_hash": "05a6b048172c8140804c4283af13f038", + "mtime": 1790707412.4750223, + "ast_hash": "e380f5a072adcb50daae1142b9d2985f", "semantic_hash": "" }, "D:\\Repositories\\server\\TODO.md": { - "mtime": 1789491365.7767086, - "ast_hash": "6dfb9e567bc2159601d0999f9dcfd48c", + "mtime": 1789627348.434652, + "ast_hash": "d055f0d64aaf60f16c5d9601fe41743b", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\authentication.md": { - "mtime": 1789492087.5691185, - "ast_hash": "9febbdf27720d811a9bf0ea416811aba", + "mtime": 1789627715.725813, + "ast_hash": "418f5a3a5d92e6afdd9a8867235bfa38", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\docs\\investidor10-wallet-research.md": { + "mtime": 1790608792.5175328, + "ast_hash": "35046b81330a196719f10192cfd18245", + "semantic_hash": "" + }, + "D:\\Repositories\\server\\docs\\investidor10-wallet-spec.md": { + "mtime": 1790609352.4477687, + "ast_hash": "2245af87ca983eb3d0fec11daf0c3a87", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\orunmila.md": { - "mtime": 1789492096.4916055, - "ast_hash": "3e1e793d2afb4de361ef54cd848bd807", + "mtime": 1789627746.0334775, + "ast_hash": "c92e378440f8ec322185c6c647fd7580", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\scraper_b3.md": { @@ -565,13 +585,13 @@ "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\stocks_api.md": { - "mtime": 1789492079.7291944, - "ast_hash": "c3312ead4cfa7087999bb95884aa57ca", + "mtime": 1789627715.725813, + "ast_hash": "95776a22d8b1b9ad1d5a848a4c47c4be", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\user.md": { - "mtime": 1789492113.860849, - "ast_hash": "5ba8841be468b3fc608791e2f2ad6145", + "mtime": 1789627715.7248125, + "ast_hash": "1441362ec9c24f3e04abfd6c913b8efe", "semantic_hash": "" }, "D:\\Repositories\\server\\docs\\superpowers\\plans\\2026-08-09-sse-resume.md": { diff --git a/main/app/authentication/authentication.py b/main/app/authentication/authentication.py index 5930e015..593a448d 100644 --- a/main/app/authentication/authentication.py +++ b/main/app/authentication/authentication.py @@ -36,7 +36,7 @@ def createUserAccount(db: Session, username, email, password=None, googleId=None db.add(newUser) db.commit() - logger.info(f"User created: {username} ({email})") + logger.info(f"User created: {username}") return True except HTTPException: @@ -74,3 +74,17 @@ def authenticateUser(db: Session, username, password): except Exception as e: logger.debug(f"Error authenticating user: {str(e)}", exc_info=True) return None + + @staticmethod + def resolveUniqueUsername(db: Session, baseUsername: str, maxAttempts: int = 100) -> str: + base = (baseUsername or "").strip() or "user" + candidate = base[:255] + suffix = 0 + for _ in range(maxAttempts): + exists = db.query(User).filter(User.username == candidate).first() + if not exists: + return candidate + suffix += 1 + tail = f"-{suffix}" + candidate = f"{base[: 255 - len(tail)]}{tail}" + raise HTTPException(status_code=409, detail="Could not resolve unique username") diff --git a/main/app/authentication/constants.py b/main/app/authentication/constants.py index cbb91078..f04d16cb 100644 --- a/main/app/authentication/constants.py +++ b/main/app/authentication/constants.py @@ -1,7 +1,8 @@ from typing import Literal -SESSION_EXPIRY_DAYS = 30 +SESSION_EXPIRY_DAYS = 7 TOKEN_EXPIRY_HOURS = SESSION_EXPIRY_DAYS * 24 +SESSION_IDLE_TIMEOUT_HOURS = 24 COOKIE_NAME = "mansa_token" COOKIE_PATH = "/" diff --git a/main/app/authentication/introspect.py b/main/app/authentication/introspect.py new file mode 100644 index 00000000..d5991fbd --- /dev/null +++ b/main/app/authentication/introspect.py @@ -0,0 +1,42 @@ +import logging + +from fastapi import HTTPException +from sqlalchemy.orm import Session + +from main.app.authentication.session import SessionManager +from main.app.authentication.util import verifyAccessToken +from main.app.user.user import UserManager +from main.models.user import User + +logger = logging.getLogger(__name__) + +GENERIC_DETAIL = "Unauthorized" + + +def introspectToken(db: Session, token: str | None) -> dict: + try: + raw = (token or "").strip().removeprefix("Bearer ").strip() + if not raw: + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + + payload = verifyAccessToken(raw) + + try: + userId = int(payload["userId"]) + except (KeyError, TypeError, ValueError): + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + + sessionId = payload.get("sessionId") + if not sessionId or not SessionManager.validateSession(db, str(sessionId), userId): + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + + user = db.query(User).filter(User.userId == userId).first() + if not user: + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + + return {"userId": user.userId, "username": user.username, "roles": UserManager.getRolesList(user)} + except HTTPException: + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) + except Exception as e: + logger.warning(f"Token introspection failed: {e}") + raise HTTPException(status_code=401, detail=GENERIC_DETAIL) diff --git a/main/app/authentication/session.py b/main/app/authentication/session.py index 76f61e0e..afe92ef7 100644 --- a/main/app/authentication/session.py +++ b/main/app/authentication/session.py @@ -5,7 +5,7 @@ from sqlalchemy.orm import Session from user_agents import parse as parseUserAgent from main.models.user_session import UserSession -from main.app.authentication.constants import SESSION_EXPIRY_DAYS +from main.app.authentication.constants import SESSION_EXPIRY_DAYS, SESSION_IDLE_TIMEOUT_HOURS logger = logging.getLogger(__name__) @@ -90,15 +90,20 @@ def getCurrentSession(db: Session, userId: int) -> UserSession | None: @staticmethod def revokeSession(db: Session, sessionId: str, userId: int) -> bool: - session = SessionManager.getSessionById(db, sessionId, userId) - if not session: - return False - - session.isActive = False # type: ignore[assignment] + count = ( + db.query(UserSession) + .filter( + UserSession.sessionId == str(sessionId), + UserSession.userId == userId, + UserSession.isActive.is_(True), + ) + .update({UserSession.isActive: False}, synchronize_session=False) + ) db.commit() - - logger.info(f"Revoked session {sessionId} for user {userId}") - return True + if count: + logger.info(f"Revoked session {sessionId} for user {userId}") + return True + return False @staticmethod def revokeAllSessions(db: Session, userId: int) -> int: @@ -113,6 +118,16 @@ def revokeAllSessions(db: Session, userId: int) -> int: logger.info(f"Revoked {count} sessions for user {userId}") return count + @staticmethod + def revokeAllExcept(db: Session, user_id: int, keep_session_id: str) -> None: + db.query(UserSession).filter( + UserSession.userId == user_id, + UserSession.sessionId != str(keep_session_id), + UserSession.isActive.is_(True), + ).update({UserSession.isActive: False}, synchronize_session=False) + db.commit() + logger.info(f"Revoked all sessions for user {user_id} except {keep_session_id}") + @staticmethod def updateLastActive(db: Session, sessionId: str) -> bool: session = db.query(UserSession).filter(UserSession.sessionId == sessionId).first() @@ -141,4 +156,16 @@ def validateSession(db: Session, sessionId: str, userId: int) -> bool: db.commit() return False + now = datetime.now(timezone.utc) + lastActive = session.lastActivityAt + if isinstance(lastActive, datetime): + if lastActive.tzinfo is None: + lastActive = lastActive.replace(tzinfo=timezone.utc) + if now - lastActive > timedelta(hours=SESSION_IDLE_TIMEOUT_HOURS): + session.isActive = False # type: ignore[assignment] + db.commit() + return False + + session.lastActivityAt = now # type: ignore[assignment] + db.commit() return True diff --git a/main/app/orunmila/chat.py b/main/app/orunmila/chat.py index 3c37c1c4..7355defa 100644 --- a/main/app/orunmila/chat.py +++ b/main/app/orunmila/chat.py @@ -13,7 +13,8 @@ class OrunmilaChatManager: @classmethod def getUserSessions(cls, db: Session, userId: int): - sessions = ( + # Row type is uninferable for a multi-entity Query (legacy Column() models, no Mapped[]). + sessions: list = ( db.query(OrunmilaSession.sessionId, OrunmilaSession.title, OrunmilaSession.lastActivity) .filter(OrunmilaSession.userId == userId) .order_by(OrunmilaSession.lastActivity.desc()) diff --git a/main/app/scraper_b3/scraper.py b/main/app/scraper_b3/scraper.py index 7962d340..b5d4d2ab 100644 --- a/main/app/scraper_b3/scraper.py +++ b/main/app/scraper_b3/scraper.py @@ -12,7 +12,7 @@ import numpy as np import cloudscraper import requests -from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_not_exception_type +from tenacity import retry, stop_after_attempt, wait_exponential from concurrent.futures import ThreadPoolExecutor, as_completed from sqlalchemy import text @@ -138,7 +138,7 @@ def historicalDividends(self, TICKER): dfYearly = pd.json_normalize(df, record_path="assetEarningsYearlyModels", sep="") dfHistory = pd.json_normalize(df, record_path="assetEarningsModels", sep="") - dfHistory = dfHistory.drop(columns={"sv", "etd", "sov", "y", "m", "d"}) + dfHistory = dfHistory.drop(columns={"sv", "etd", "sov", "y", "m", "d"}, errors="ignore") dfHistory = dfHistory.rename( columns={ "ed": "DATA COM", @@ -149,6 +149,8 @@ def historicalDividends(self, TICKER): "adj": "FATOR AJUSTE", } ) + if "VALOR ORIGINAL" not in dfHistory.columns: + dfHistory["VALOR ORIGINAL"] = float("nan") for col in ["DATA COM", "DATA PAGAMENTO"]: if col in dfHistory.columns: @@ -157,7 +159,7 @@ def historicalDividends(self, TICKER): newDF = { "TICKER": TICKER, **{f"DIVIDENDOS {row.rank}": row.value for row in dfYearly.itertuples() if len(str(row.rank)) >= 4}, - "HISTORICO DIVIDENDOS": dfHistory.toDict(orient="records"), + "HISTORICO DIVIDENDOS": dfHistory.to_dict(orient="records"), } return pd.DataFrame([newDF]).set_index("TICKER") @@ -275,11 +277,7 @@ def tagAlong(self, TICKER): return pd.DataFrame([{"TICKER": TICKER, "TAG ALONG": tagAlong}]).set_index("TICKER") - @retry( - stop=stop_after_attempt(3), - wait=wait_exponential(multiplier=1, min=1, max=3), - retry=retry_if_not_exception_type(ImportError), - ) + @retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=1, max=3)) def stockNews(self, TICKER): df = pd.read_xml( StringIO(self.requests.get(f"https://news.google.com/rss/search?q={TICKER}&hl=pt-BR").text), xpath=".//item" @@ -289,7 +287,7 @@ def stockNews(self, TICKER): df = df.rename(columns={"title": "TITULO", "link": "LINK", "pubDate": "DATE", "source": "SOURCE"}) - newDF = {"TICKER": TICKER, "NOTICIAS": df.toDict(orient="records")} + newDF = {"TICKER": TICKER, "NOTICIAS": df.to_dict(orient="records")} return pd.DataFrame([newDF]).set_index("TICKER") diff --git a/main/app/stocks_api/cache.py b/main/app/stocks_api/cache.py index f0e35989..07fa62b4 100644 --- a/main/app/stocks_api/cache.py +++ b/main/app/stocks_api/cache.py @@ -7,6 +7,7 @@ import pandas as pd import numpy as np import pyarrow as pa +import pyarrow.feather as feather from sqlalchemy.engine import Engine from sqlalchemy.exc import OperationalError @@ -35,6 +36,7 @@ CACHE_NESTED_PATH = Path("/app/cache/stocks_nested.feather") STALE_AFTER_SECONDS = 6 * 3600 CACHE_LOAD_LOCK = threading.Lock() +PRESORTED_FLAG_KEY = b"b3_presorted" def optimizeDtypes(df: pd.DataFrame) -> pd.DataFrame: @@ -96,7 +98,7 @@ def buildFeatherCache(engine: Engine | None = None): except Exception: colTypes = {} stream = conn.execution_options(stream_results=True) - result = stream.exec_driver_sql("SELECT * FROM b3_stocks") + result = stream.exec_driver_sql("SELECT * FROM b3_stocks ORDER BY TICKER ASC, TIME DESC") try: columns = list(result.keys()) while True: @@ -130,10 +132,10 @@ def buildFeatherCache(engine: Engine | None = None): fields.append(pa.field(n, arrowTypeFor(colTypes.get(n, "varchar")))) else: fields.append(pa.field(n, t)) - schema = pa.schema(fields) + schema = pa.schema(fields).with_metadata({PRESORTED_FLAG_KEY: b"1"}) sink = pa.OSFile(str(tmpMain), "wb") writer = pa.ipc.new_file(sink, schema) - assert writer is not None + assert writer is not None # nosec: B101 mypy narrowing, writer assigned just above table = pa.Table.from_pandas(chunk, schema=schema, preserve_index=False) writer.write_table(table) total += len(chunk) @@ -148,7 +150,7 @@ def buildFeatherCache(engine: Engine | None = None): try: resolvedEngine.dispose() except Exception: - pass + pass # nosec: B110 dispose is best-effort, original error re-raised below raise finally: if writer is not None: @@ -201,6 +203,13 @@ def buildTickerIndex(df: pd.DataFrame) -> dict: return index +def readFeatherDataFrame(path: Path) -> tuple[pd.DataFrame, bool]: + table = feather.read_table(path, memory_map=True) + presorted = (table.schema.metadata or {}).get(PRESORTED_FLAG_KEY) == b"1" + df = table.to_pandas(split_blocks=True, types_mapper=pd.ArrowDtype) + return df, presorted + + class StocksCacheManager: def __init__(self, db: Engine, cacheLock: threading.Lock): self.db = db @@ -226,10 +235,11 @@ def cacheScheduler(self): ) def loadFromFeather(self): - df = pd.read_feather(CACHE_FEATHER_PATH) + df, presorted = readFeatherDataFrame(CACHE_FEATHER_PATH) nestedSample = pd.read_feather(CACHE_NESTED_PATH) if CACHE_NESTED_PATH.exists() else None - df = sortCacheFrame(df) + if not presorted: + df = sortCacheFrame(df) newTickerIndex = buildTickerIndex(df) with self.cacheLock: diff --git a/main/app/stocks_api/key.py b/main/app/stocks_api/key.py index 01ff0ba9..6c4c5d56 100644 --- a/main/app/stocks_api/key.py +++ b/main/app/stocks_api/key.py @@ -1,9 +1,11 @@ -from config import Config, getSession - -from typing import cast import hashlib +import hmac +import secrets +from typing import cast + +from config import Config, getStocksSession -from fastapi import HTTPException, Depends +from fastapi import Depends, HTTPException from fastapi.security import APIKeyHeader from sqlalchemy import update from sqlalchemy.engine import CursorResult @@ -13,37 +15,76 @@ apiKeyHeader = APIKeyHeader(name="X-API-Key", auto_error=False) +UNAUTHORIZED_DETAIL = "Unauthorized" +QUOTA_DETAIL = "Too many requests" + +SALT_BYTES = 16 +_STORED_SEP = "$" + + +def hashApiKey(rawKey: str, saltHex: str) -> str: + return hashlib.sha256((saltHex + rawKey).encode()).hexdigest() + -async def verifyAPIKey(apiKey: str = Depends(apiKeyHeader), db: Session = Depends(getSession)): +def createStoredApiKey(rawKey: str | None = None) -> tuple[str, str]: + raw = rawKey or secrets.token_urlsafe(32) + saltHex = secrets.token_hex(SALT_BYTES) + return raw, f"{saltHex}{_STORED_SEP}{hashApiKey(raw, saltHex)}" + + +def isValidStoredKey(providedKey: str, storedKey: str | None) -> bool: + try: + if not providedKey or not storedKey or _STORED_SEP not in storedKey: + return False + saltHex, digest = storedKey.split(_STORED_SEP, 1) + if not saltHex or not digest: + return False + candidate = hashlib.sha256((saltHex + providedKey).encode()).hexdigest() + return hmac.compare_digest(candidate, digest) + except (TypeError, ValueError): + return False + + +async def verifyAPIKey(apiKey: str = Depends(apiKeyHeader), db: Session = Depends(getStocksSession)): if not Config.STOCKS_API.KEY_SYSTEM: return None if not apiKey: - raise HTTPException(status_code=401, detail="Missing API key") - - hashedKey = hashlib.sha256(apiKey.encode()).hexdigest() + raise HTTPException(status_code=401, detail=UNAUTHORIZED_DETAIL) try: + # ponytail: full-table scan, move to server-side salted lookup if keys table grows large + rows = db.query(StocksAPIKey).all() + matchedPk = None + exhaustedMatch = False + for row in rows: + if isValidStoredKey(apiKey, row.apiKey): + if row.currentUsage < row.requestLimit: + matchedPk = row.apiKey + break + exhaustedMatch = True + + if matchedPk is None: + if exhaustedMatch: + raise HTTPException(status_code=429, detail=QUOTA_DETAIL) + raise HTTPException(status_code=401, detail=UNAUTHORIZED_DETAIL) + result = db.execute( update(StocksAPIKey) - .where(StocksAPIKey.apiKey == hashedKey) + .where(StocksAPIKey.apiKey == matchedPk) .where(StocksAPIKey.currentUsage < StocksAPIKey.requestLimit) .values(currentUsage=StocksAPIKey.currentUsage + 1) ) db.commit() if cast(CursorResult, result).rowcount == 0: - stocksKey = db.query(StocksAPIKey).filter(StocksAPIKey.apiKey == hashedKey).first() - if not stocksKey: - raise HTTPException(status_code=401, detail="Invalid API key") - else: - raise HTTPException(status_code=429, detail="quota exceeded") + raise HTTPException(status_code=429, detail=QUOTA_DETAIL) return apiKey except HTTPException: db.rollback() raise - except Exception as e: + except Exception: db.rollback() raise HTTPException(status_code=500, detail="API key verification failed") diff --git a/main/app/stocks_api/query.py b/main/app/stocks_api/query.py index 28a65002..f351dbdd 100644 --- a/main/app/stocks_api/query.py +++ b/main/app/stocks_api/query.py @@ -138,7 +138,10 @@ def parseJSON(x, decompressor): decompressor = zstd.ZstdDecompressor() for col in df.columns: - if col in JSON_COLUMNS and (df[col].dtype == "object" or pd.api.types.is_string_dtype(df[col])): + dtype = df[col].dtype + if col in JSON_COLUMNS and ( + dtype == "object" or pd.api.types.is_string_dtype(dtype) or isinstance(dtype, pd.ArrowDtype) + ): df[col] = df[col].apply( lambda x: ( sanitizeNanValues(parseJSON(x, decompressor)) diff --git a/main/app/user/user.py b/main/app/user/user.py index aea4b560..6ff1c90e 100644 --- a/main/app/user/user.py +++ b/main/app/user/user.py @@ -28,11 +28,14 @@ def getCurrentUser( userId = payload.get("userId") sessionId = payload.get("sessionId") - if sessionId and userId is not None: - isValid = SessionManager.validateSession(db, sessionId, int(userId)) - if not isValid: - logger.info(f"Session {sessionId} revoked, logging out user {userId}") - raise HTTPException(status_code=401, detail="Session revoked") + if not sessionId or userId is None: + logger.info("Missing sessionId in token, rejecting") + raise HTTPException(status_code=401, detail="Session required") + + isValid = SessionManager.validateSession(db, sessionId, int(userId)) + if not isValid: + logger.info(f"Session {sessionId} revoked, logging out user {userId}") + raise HTTPException(status_code=401, detail="Session revoked") user = db.query(User).filter(User.userId == userId).first() @@ -44,11 +47,9 @@ def getCurrentUser( "username": user.username, "email": user.email, "roles": UserManager.getRolesList(user), + "sessionId": sessionId, } - if sessionId: - result["sessionId"] = sessionId - return result except HTTPException: diff --git a/main/controller/authentication_controller.py b/main/controller/authentication_controller.py index 58620411..77665452 100644 --- a/main/controller/authentication_controller.py +++ b/main/controller/authentication_controller.py @@ -1,5 +1,7 @@ +import hashlib +import hmac import logging -from config import getSession, LOCALHOST_ADDRESSES +from config import Config, getSession, LOCALHOST_ADDRESSES from datetime import datetime, timedelta, timezone from main.utils.logging_config import limiter @@ -10,6 +12,7 @@ from sqlalchemy.orm import Session from main.app.authentication.authentication import AuthenticationManager +from main.app.authentication.introspect import introspectToken from main.app.authentication.util import createAccessToken, verifyAccessToken from main.app.authentication.sso import getGoogleSSO from main.app.authentication.constants import ( @@ -19,6 +22,7 @@ TOKEN_EXPIRY_HOURS, ) from main.app.authentication.session import SessionManager +from main.models.user import User logger = logging.getLogger(__name__) @@ -26,14 +30,6 @@ def isSecureScheme(request: Request) -> bool: - try: - forwardedRaw = request.headers.get("X-Forwarded-Proto", "") - except Exception: - forwardedRaw = "" - if isinstance(forwardedRaw, str): - proto = forwardedRaw.split(",")[0].strip().lower() - if proto in ("http", "https"): - return proto == "https" return request.url.scheme == "https" @@ -42,7 +38,7 @@ def resolveCookieDomain(request: Request) -> str: return "localhost" if hostname in ("localhost", "127.0.0.1") else hostname -def issueSessionCookie(response, request, db, user) -> str: +def issueSessionCookie(response, request, db, user) -> tuple[str, str]: userAgent = request.headers.get("User-Agent", "") expiresAt = datetime.now(timezone.utc) + timedelta(hours=TOKEN_EXPIRY_HOURS) session = SessionManager.createSession(db, user["userId"], userAgent, expiresAt) @@ -59,7 +55,7 @@ def issueSessionCookie(response, request, db, user) -> str: path=COOKIE_PATH, domain=cookieDomain, ) - return accessToken + return accessToken, str(session.sessionId) @router.get("/health") @@ -84,10 +80,12 @@ def register( if not user: raise HTTPException(status_code=401, detail="Auto-login failed after registration") - accessToken = issueSessionCookie(response, request, db, user) + accessToken, _ = issueSessionCookie(response, request, db, user) return {"message": "success", "accessToken": accessToken, "tokenType": "bearer", "user": user} - except HTTPException: + except HTTPException as e: + if e.status_code == 400: + raise HTTPException(status_code=400, detail="Registration failed.") raise except ValueError as e: logger.error(f"Registration validation error: {str(e)}", exc_info=True) @@ -110,7 +108,8 @@ def login( if not user: raise HTTPException(status_code=401, detail="Invalid credentials") - accessToken = issueSessionCookie(response, request, db, user) + accessToken, sessionId = issueSessionCookie(response, request, db, user) + SessionManager.revokeAllExcept(db, user["userId"], sessionId) return {"accessToken": accessToken, "tokenType": "bearer", "user": user} @@ -150,17 +149,41 @@ def logout(request: Request, response: Response, db: Session = Depends(getSessio return {"message": "Successfully logged out"} +@router.post("/introspect") +@limiter.limit("30/minute") +def introspect( + request: Request, + db: Session = Depends(getSession), + token: str | None = Body(default=None, embed=True), +): + # Derived, never the raw signing key: a leaked service token must not reveal it. + expected = hmac.new(Config.USER.JWT_SECRET_KEY.encode("utf-8"), b"auth-introspect", hashlib.sha256).hexdigest() + if not expected or not hmac.compare_digest(request.headers.get("X-Service-Token", ""), expected): + raise HTTPException(status_code=401, detail="Unauthorized") + auth = request.headers.get("Authorization", "") + raw = ( + token + or request.headers.get("X-Access-Token") + or (auth.split(" ")[1] if auth.startswith("Bearer ") else None) + or request.cookies.get(COOKIE_NAME) + ) + if not raw: + raise HTTPException(status_code=401, detail="Unauthorized") + try: + return introspectToken(db, raw) + except HTTPException: + raise HTTPException(status_code=401, detail="Unauthorized") + + @router.get("/google") @limiter.limit("5/minute") async def googleLogin(request: Request): - logger.info("Google Login") + logger.info("Google login initiated") redirectUrl = request.query_params.get("redirect_url", "") if not redirectUrl: redirectUrl = request.headers.get("referer", "") - logger.info(f"Redirect URL: {redirectUrl}") - googleSSO = getGoogleSSO() async with googleSSO: googleRedirect = await googleSSO.get_login_redirect(state=redirectUrl or None) @@ -174,10 +197,6 @@ async def googleCallback(request: Request, response: Response, db: Session = Dep logger.info("--- Google Callback Start ---") state_param = request.query_params.get("state", "") - if state_param: - _ = request.cookies - request._cookies["sso_state"] = state_param - logger.debug(f"Patched sso_state cookie: {state_param[:8]}...") googleSSO = getGoogleSSO() @@ -194,13 +213,27 @@ async def googleCallback(request: Request, response: Response, db: Session = Dep if not googleId or not email: raise HTTPException(status_code=400, detail="Incomplete user info from Google") - logger.info(f"User identified: {email}") + logger.info("Google user identified") user = AuthenticationManager.authenticateGoogleUser(db, googleId) if not user: logger.info("New user detected, creating account...") - username = email.split("@")[0] - AuthenticationManager.createUserAccount(db, username=username, email=email, googleId=googleId) + baseUsername = email.split("@")[0] + username = baseUsername + suffix = 0 + for _ in range(100): + try: + AuthenticationManager.createUserAccount(db, username=username, email=email, googleId=googleId) + break + except HTTPException as e: + if e.status_code != 400: + raise + if db.query(User).filter(User.username == username).first() is None: + raise + suffix += 1 + username = f"{baseUsername}{suffix}" + else: + raise HTTPException(status_code=400, detail="Registration failed.") user = AuthenticationManager.authenticateGoogleUser(db, googleId) redirectUrl = "" @@ -214,18 +247,20 @@ async def googleCallback(request: Request, response: Response, db: Session = Dep if redirectUrl: redirectResponse = RedirectResponse(url=redirectUrl) - issueSessionCookie(redirectResponse, request, db, user) + _, sessionId = issueSessionCookie(redirectResponse, request, db, user) + SessionManager.revokeAllExcept(db, user["userId"], sessionId) return redirectResponse - accessToken = issueSessionCookie(response, request, db, user) + accessToken, sessionId = issueSessionCookie(response, request, db, user) + SessionManager.revokeAllExcept(db, user["userId"], sessionId) logger.info("--- Google Callback End ---") return {"accessToken": accessToken, "tokenType": "bearer", "user": user} except HTTPException: raise - except SSOLoginError as e: - logger.warning(f"SSO state validation failed: {e}") - raise HTTPException(status_code=401, detail=f"SSO login failed: {e}") - except Exception as e: - logger.error(f"Critical error in Google callback: {str(e)}", exc_info=True) + except SSOLoginError: + logger.warning("SSO state validation failed", exc_info=True) + raise HTTPException(status_code=401, detail="SSO login failed.") + except Exception: + logger.error("Critical error in Google callback", exc_info=True) raise HTTPException(status_code=500, detail="Internal server error during Google login") diff --git a/main/service/authentication_service.py b/main/service/authentication_service.py index 340c0530..02060580 100644 --- a/main/service/authentication_service.py +++ b/main/service/authentication_service.py @@ -1,7 +1,3 @@ -from config import Config - -from starlette.middleware.sessions import SessionMiddleware - from main.utils.service_manager import getApp from main.controller.authentication_controller import router as authenticationRouter @@ -11,7 +7,4 @@ class AuthenticationService: def initialize(port: int): service = getApp(port) - service.add_middleware( - SessionMiddleware, secret_key=Config.USER.SESSION_SECRET_KEY, same_site="lax", https_only=False - ) service.include_router(authenticationRouter) diff --git a/tests/conftest.py b/tests/conftest.py index 67450b89..c2911859 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -29,12 +29,11 @@ def pytest_configure(config): """Set required env vars before test collection. config.py eagerly instantiates UserSettings() at import time, which - requires JWT_SECRET_KEY and SESSION_SECRET_KEY. These env vars + requires JWT_SECRET_KEY. That env var don't exist in CI, so every test that touches config blows up during collection. This hook runs before collection begins. """ os.environ.setdefault("JWT_SECRET_KEY", "test-jwt-secret-key-not-for-production") - os.environ.setdefault("SESSION_SECRET_KEY", "test-session-secret-key-not-for-production") @pytest.fixture(autouse=True) diff --git a/tests/test_api_key_quota_atomic.py b/tests/test_api_key_quota_atomic.py index e11f354b..67b9d636 100644 --- a/tests/test_api_key_quota_atomic.py +++ b/tests/test_api_key_quota_atomic.py @@ -152,65 +152,106 @@ def test_increment_from_zero(self, dbSession, sampleKeyData): assert key.currentUsage == 1 -class TestVerifyAPIKeyIntegration: - """Integration tests for the verifyAPIKey function.""" +class TestSaltedKeyHash: + def test_same_raw_produces_unique_stored_values(self): + from main.app.stocks_api.key import createStoredApiKey, isValidStoredKey - async def test_verify_api_key_success(self, dbSession, sampleKeyData): - """Test successful API key verification.""" - key = StocksAPIKey(**sampleKeyData) - dbSession.add(key) - dbSession.commit() + _, stored1 = createStoredApiKey("same_raw") + _, stored2 = createStoredApiKey("same_raw") + assert stored1 != stored2 + assert isValidStoredKey("same_raw", stored1) + assert isValidStoredKey("same_raw", stored2) - with patch("main.app.stocks_api.key.Config") as mock_config: - mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + def test_wrong_and_tampered_keys_rejected(self): + from main.app.stocks_api.key import createStoredApiKey, isValidStoredKey - result = await verifyAPIKey(apiKey="test_key_12345", db=dbSession) + _, stored = createStoredApiKey("correct") + assert not isValidStoredKey("wrong", stored) + assert not isValidStoredKey("correct", stored[:-1] + ("0" if stored[-1] != "0" else "1")) + assert not isValidStoredKey("correct", "barehexwithnosalt") + assert not isValidStoredKey("", stored) - assert result == "test_key_12345" - dbSession.refresh(key) - assert key.currentUsage == 1 + def test_constant_time_compare_used(self): + from unittest.mock import patch as mock_patch + from main.app.stocks_api.key import createStoredApiKey, isValidStoredKey - async def test_verify_api_key_quota_exceeded(self, dbSession, sampleKeyData): - """Test API key verification when quota is exceeded.""" - key = StocksAPIKey(**{**sampleKeyData, "currentUsage": 100, "requestLimit": 100}) + raw, stored = createStoredApiKey("k") + with mock_patch("main.app.stocks_api.key.hmac.compare_digest", return_value=False) as m: + assert isValidStoredKey(raw, stored) is False + m.assert_called_once() + + +class TestVerifyAPIKeyIntegration: + def makeStoredKey(self, dbSession, raw="test_key_12345", **overrides): + from main.app.stocks_api.key import createStoredApiKey + + _, stored = createStoredApiKey(raw) + params = {"apiKey": stored, "userId": 1, "requestLimit": 100, "currentUsage": 0} + params.update(overrides) + key = StocksAPIKey(**params) dbSession.add(key) dbSession.commit() + return key + async def test_verify_api_key_success(self, dbSession): + key = self.makeStoredKey(dbSession) with patch("main.app.stocks_api.key.Config") as mock_config: mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + assert await verifyAPIKey(apiKey="test_key_12345", db=dbSession) == "test_key_12345" + dbSession.refresh(key) + assert key.currentUsage == 1 - with pytest.raises(HTTPException) as exc_info: + async def test_verify_api_key_quota_exceeded(self, dbSession): + self.makeStoredKey(dbSession, currentUsage=100, requestLimit=100) + with patch("main.app.stocks_api.key.Config") as mock_config: + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey="test_key_12345", db=dbSession) - - assert exc_info.value.status_code == 429 - assert "quota exceeded" in exc_info.value.detail + assert (e.value.status_code, e.value.detail) == (429, "Too many requests") async def test_verify_api_key_invalid(self, dbSession): - """Test API key verification with invalid key.""" + self.makeStoredKey(dbSession) with patch("main.app.stocks_api.key.Config") as mock_config: mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - - with pytest.raises(HTTPException) as exc_info: + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey="invalid_key", db=dbSession) - - assert exc_info.value.status_code == 401 - assert "Invalid API key" in exc_info.value.detail + assert (e.value.status_code, e.value.detail) == (401, "Unauthorized") async def test_verify_api_key_missing(self, dbSession): - """Test API key verification with missing key.""" with patch("main.app.stocks_api.key.Config") as mock_config: mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - - with pytest.raises(HTTPException) as exc_info: + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey=None, db=dbSession) - - assert exc_info.value.status_code == 401 - assert "Missing API key" in exc_info.value.detail + assert (e.value.status_code, e.value.detail) == (401, "Unauthorized") async def test_verify_api_key_disabled(self, dbSession): - """Test that API key system can be disabled.""" with patch("main.app.stocks_api.key.Config") as mock_config: mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=False) + assert await verifyAPIKey(apiKey="any_key", db=dbSession) is None + + async def test_legacy_unsalted_row_fails_closed(self, dbSession): + dbSession.add(StocksAPIKey(apiKey=TEST_KEY_HASH, userId=1, requestLimit=100, currentUsage=0)) + dbSession.commit() + with patch("main.app.stocks_api.key.Config") as mock_config: + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="test_key_12345", db=dbSession) + assert e.value.status_code == 401 + + async def test_db_error_fails_closed_500(self, dbSession): + self.makeStoredKey(dbSession) + broken = MagicMock() + broken.query.side_effect = RuntimeError("DB down") + with patch("main.app.stocks_api.key.Config") as mock_config: + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="test_key_12345", db=broken) + assert e.value.status_code == 500 + broken.rollback.assert_called() + + def test_verify_uses_stocks_session(self): + import inspect + from config import getStocksSession + from main.app.stocks_api.key import verifyAPIKey as v - result = await verifyAPIKey(apiKey="any_key", db=dbSession) - assert result is None + assert inspect.signature(v).parameters["db"].default.dependency is getStocksSession diff --git a/tests/test_auth_audit_fb.py b/tests/test_auth_audit_fb.py new file mode 100644 index 00000000..2166fa77 --- /dev/null +++ b/tests/test_auth_audit_fb.py @@ -0,0 +1,124 @@ +"""F-B audit tests: fail-closed sessionId, atomic revoke, 7d expiry + idle, unique SSO usernames.""" + +import inspect +import os +import sys +from datetime import datetime, timedelta, timezone +from unittest.mock import MagicMock, patch + +import pytest +from fastapi import HTTPException + +sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) + +from main.app.authentication import constants as authConstants +from main.app.authentication.authentication import AuthenticationManager +from main.app.authentication.session import SessionManager +from main.app.user.user import UserManager +from main.models.user import User + + +def makeUser(dbSession, username="fb_user"): + user = User(username=username, email=f"{username}@example.com", passwordHash="hashed", roles="USER") + dbSession.add(user) + dbSession.commit() + dbSession.refresh(user) + return user + + +class TestFailClosed: + def test_missing_session_id_rejected(self): + db = MagicMock() + with patch.object(SessionManager, "validateSession") as mv: + with pytest.raises(HTTPException) as e: + UserManager.getCurrentUser(payload={"userId": 1}, db=db) + assert e.value.status_code == 401 + assert e.value.detail == "Session required" + mv.assert_not_called() + + def test_missing_user_id_rejected(self): + db = MagicMock() + with pytest.raises(HTTPException) as e: + UserManager.getCurrentUser(payload={"sessionId": "abc"}, db=db) + assert e.value.status_code == 401 + + +class TestRevokeAllExcept: + def test_signature_and_behavior(self): + assert list(inspect.signature(SessionManager.revokeAllExcept).parameters) == [ + "db", + "user_id", + "keep_session_id", + ] + db = MagicMock() + assert SessionManager.revokeAllExcept(db, 7, "keep-1") is None + db.commit.assert_called_once() + query = db.query.return_value + query.filter.assert_called_once() + query.filter.return_value.update.assert_called_once() + filterArgs = query.filter.call_args[0] + sessionArg = next(a for a in filterArgs if getattr(getattr(a, "left", None), "key", "") == "sessionId") + assert sessionArg.right.value == "keep-1" + + +class TestAtomicRevoke: + def _mockDb(self, count): + db = MagicMock() + db.query.return_value.filter.return_value.update.return_value = count + return db + + def test_revoke_found(self): + db = self._mockDb(1) + assert SessionManager.revokeSession(db, "s", 1) is True + db.commit.assert_called_once() + + def test_revoke_not_found(self): + db = self._mockDb(0) + assert SessionManager.revokeSession(db, "s", 1) is False + + def test_no_select_before_update(self): + db = self._mockDb(1) + SessionManager.revokeSession(db, "s", 1) + db.query.return_value.filter.return_value.first.assert_not_called() + + +class TestExpiryIdle: + def test_constants(self): + assert authConstants.SESSION_EXPIRY_DAYS == 7 + assert authConstants.TOKEN_EXPIRY_HOURS == 7 * 24 + assert authConstants.SESSION_IDLE_TIMEOUT_HOURS == 24 + + def test_fresh_session_valid_and_touched(self, dbSession): + user = makeUser(dbSession) + session = SessionManager.createSession(dbSession, user.userId, "pytest") + before = session.lastActivityAt + assert SessionManager.validateSession(dbSession, session.sessionId, user.userId) is True + dbSession.refresh(session) + assert session.lastActivityAt >= before + + def test_idle_session_revoked(self, dbSession): + user = makeUser(dbSession, username="fb_idle") + session = SessionManager.createSession(dbSession, user.userId, "pytest") + session.lastActivityAt = datetime.now(timezone.utc) - timedelta(days=2) + dbSession.commit() + assert SessionManager.validateSession(dbSession, session.sessionId, user.userId) is False + dbSession.refresh(session) + assert session.isActive is False + + +class TestUniqueUsername: + def _mockDb(self, side_effect): + db = MagicMock() + db.query.return_value.filter.return_value.first.side_effect = side_effect + return db + + def test_free_base_returned(self): + assert AuthenticationManager.resolveUniqueUsername(self._mockDb([None]), "base") == "base" + + def test_taken_base_gets_suffix(self): + assert AuthenticationManager.resolveUniqueUsername(self._mockDb([MagicMock(), None]), "base") == "base-1" + + def test_always_taken_raises_409(self): + with pytest.raises(HTTPException) as e: + AuthenticationManager.resolveUniqueUsername(self._mockDb(MagicMock()), "base") + assert e.value.status_code == 409 diff --git a/tests/test_auth_audit_fixes.py b/tests/test_auth_audit_fixes.py new file mode 100644 index 00000000..2901061c --- /dev/null +++ b/tests/test_auth_audit_fixes.py @@ -0,0 +1,287 @@ +"""F-A audit tests: controller fixes — CSRF patch removal, SSO suffix-unique, generic 400s, login eviction, introspect gate, PII scrub.""" + +import hashlib +import hmac +import os +import sys +from unittest.mock import AsyncMock, MagicMock, patch + +import pytest +from fastapi import FastAPI +from fastapi.testclient import TestClient + +sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) + +from config import Config, getSession +from main.app.authentication.authentication import AuthenticationManager +from main.app.authentication.session import SessionManager +from main.controller.authentication_controller import router as authRouter +from main.models.user import User +from main.utils.errors import registerErrorHandlers + +SERVICE_HEADERS = { + "X-Service-Token": hmac.new( + Config.USER.JWT_SECRET_KEY.encode("utf-8"), b"auth-introspect", hashlib.sha256 + ).hexdigest() +} + + +@pytest.fixture +def authDbClient(dbSession): + app = FastAPI() + app.include_router(authRouter) + registerErrorHandlers(app) + app.dependency_overrides[getSession] = lambda: dbSession + with TestClient(app, raise_server_exceptions=False) as c: + yield c + + +def makeAccount(dbSession, username, email=None, password="secret123", googleId=None): + AuthenticationManager.createUserAccount( + dbSession, username=username, email=email or f"{username}@example.com", password=password, googleId=googleId + ) + return AuthenticationManager.authenticateUser(dbSession, username, password) if password else None + + +def mockSSO(userId="google-new-1", email="newuser@gmail.com"): + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + info = MagicMock() + info.id = userId + info.email = email + sso.verify_and_process = AsyncMock(return_value=info) + return sso + + +class TestCallbackNoCookiePatch: + def test_callback_without_sso_state_cookie(self, dbSession, authDbClient): + seen = {} + + async def fake_verify(request): + seen.update(request.cookies) + return mockSSO().verify_and_process.return_value + + info = MagicMock() + info.id = "google-nocookie-1" + info.email = "nocookie@gmail.com" + + async def fake_verify2(request): + seen.update(request.cookies) + return info + + with patch("main.controller.authentication_controller.getGoogleSSO") as g: + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + sso.verify_and_process = fake_verify2 + g.return_value = sso + resp = authDbClient.get("/auth/callback?state=x&code=c", follow_redirects=False) + assert resp.status_code == 200 + assert "sso_state" not in seen + + +class TestSSOSuffixUnique: + def _sso(self, googleId, email): + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + info = MagicMock() + info.id = googleId + info.email = email + sso.verify_and_process = AsyncMock(return_value=info) + return sso + + def _callback(self, authDbClient, email, googleId): + with patch("main.controller.authentication_controller.getGoogleSSO", return_value=self._sso(googleId, email)): + return authDbClient.get("/auth/callback?state=not-a-url&code=c", follow_redirects=False) + + def test_first_collision_gets_suffix_1(self, dbSession, authDbClient): + dbSession.add(User(username="alice", email="alice@other.com", passwordHash="h", roles="USER")) + dbSession.commit() + resp = self._callback(authDbClient, "alice@gmail.com", "google-alice-1") + assert resp.status_code == 200 + assert resp.json()["user"]["username"] == "alice1" + + def test_second_collision_gets_suffix_2(self, dbSession, authDbClient): + dbSession.add(User(username="alice", email="alice@other.com", passwordHash="h", roles="USER")) + dbSession.add(User(username="alice1", email="alice1@other.com", passwordHash="h", roles="USER")) + dbSession.commit() + resp = self._callback(authDbClient, "alice@gmail.com", "google-alice-2") + assert resp.status_code == 200 + assert resp.json()["user"]["username"] == "alice2" + + +class TestRegisterGeneric400: + def test_colliding_username(self, dbSession, authDbClient): + makeAccount(dbSession, "bob", "bob@example.com") + resp = authDbClient.post( + "/auth/register", json={"username": "bob", "email": "other@example.com", "password": "secret123"} + ) + assert resp.status_code == 400 + text = resp.text.lower() + assert "registration failed." in text + assert "already" not in text + + def test_colliding_email(self, dbSession, authDbClient): + makeAccount(dbSession, "bob2", "bob2@example.com") + resp = authDbClient.post( + "/auth/register", json={"username": "someone", "email": "bob2@example.com", "password": "secret123"} + ) + assert resp.status_code == 400 + text = resp.text.lower() + assert "registration failed." in text + assert "already" not in text + + +class TestLoginRevokesOthers: + def test_old_session_deactivated(self, dbSession, authDbClient, monkeypatch): + makeAccount(dbSession, "carol", "carol@example.com") + user = AuthenticationManager.authenticateUser(dbSession, "carol", "secret123") + old = SessionManager.createSession(dbSession, user["userId"], "pytest") + + calls = {} + real = SessionManager.revokeAllExcept + + def recording(db, user_id, keep_session_id): + calls["args"] = (user_id, keep_session_id) + return real(db, user_id, keep_session_id) + + monkeypatch.setattr(SessionManager, "revokeAllExcept", recording) + resp = authDbClient.post("/auth/login", json={"username": "carol", "password": "secret123"}) + assert resp.status_code == 200 + assert calls["args"][0] == user["userId"] + assert calls["args"][1] != old.sessionId + dbSession.refresh(old) + assert old.isActive is False + kept = SessionManager.getSessionById(dbSession, calls["args"][1], user["userId"]) + assert kept is not None and kept.isActive is True + + +class TestIntrospectGate: + def _token(self, dbSession): + makeAccount(dbSession, "dave", "dave@example.com") + user = AuthenticationManager.authenticateUser(dbSession, "dave", "secret123") + session = SessionManager.createSession(dbSession, user["userId"], "pytest") + from main.app.authentication.util import createAccessToken + + return createAccessToken({"userId": str(user["userId"]), "sessionId": session.sessionId}) + + def test_no_header_401(self, authDbClient): + resp = authDbClient.post("/auth/introspect", json={"token": "x"}) + assert resp.status_code == 401 + + def test_wrong_header_401(self, authDbClient): + resp = authDbClient.post("/auth/introspect", json={"token": "x"}, headers={"X-Service-Token": "wrong"}) + assert resp.status_code == 401 + + def test_valid_token_with_header_200(self, dbSession, authDbClient): + token = self._token(dbSession) + resp = authDbClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS) + assert resp.status_code == 200 + + def test_invalid_token_generic_401(self, authDbClient): + resp = authDbClient.post("/auth/introspect", json={"token": "bad"}, headers=SERVICE_HEADERS) + body = resp.json() + assert resp.status_code == 401 + assert "Unauthorized" in body.get("error", "") + for leaked in ("expired", "Invalid token", "revoked"): + assert leaked not in resp.text + + +class TestSSORevokesOthers: + def _sso(self, googleId, email): + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + info = MagicMock() + info.id = googleId + info.email = email + sso.verify_and_process = AsyncMock(return_value=info) + return sso + + def test_attacker_session_killed_new_survives(self, dbSession, authDbClient): + AuthenticationManager.createUserAccount( + dbSession, username="ssouser", email="ssouser@gmail.com", googleId="google-victim-1" + ) + user = AuthenticationManager.authenticateGoogleUser(dbSession, "google-victim-1") + attacker = SessionManager.createSession(dbSession, user["userId"], "attacker-agent") + + with patch( + "main.controller.authentication_controller.getGoogleSSO", + return_value=self._sso("google-victim-1", "ssouser@gmail.com"), + ): + resp = authDbClient.get("/auth/callback?state=not-a-url&code=c", follow_redirects=False) + + assert resp.status_code == 200 + dbSession.refresh(attacker) + assert attacker.isActive is False + from main.app.authentication.util import verifyAccessToken + + payload = verifyAccessToken(resp.json()["accessToken"]) + kept = SessionManager.getSessionById(dbSession, payload["sessionId"], user["userId"]) + assert kept is not None and kept.isActive is True + assert kept.sessionId != attacker.sessionId + + +class TestSecureFlagNotSpoofable: + def test_spoofed_forwarded_proto_http_keeps_secure(self, dbSession): + # Secure auth cookies mean the http TestClient cannot round-trip them, + # so assert on the Set-Cookie header instead. + app = FastAPI() + app.include_router(authRouter) + registerErrorHandlers(app) + app.dependency_overrides[getSession] = lambda: dbSession + makeAccount(dbSession, "secureguy", "secureguy@example.com") + with TestClient(app, base_url="https://testserver", raise_server_exceptions=False) as httpsClient: + resp = httpsClient.post( + "/auth/login", + json={"username": "secureguy", "password": "secret123"}, + headers={"X-Forwarded-Proto": "http"}, + ) + assert resp.status_code == 200 + assert "secure" in resp.headers.get("set-cookie", "").lower() + + @staticmethod + def appLogs(caplog): + # App must not log PII itself; httpx client-side request lines (test-only + # artifact; in prod this is access-log territory) are out of scope. + return "\n".join(r.getMessage() for r in caplog.records if r.name.startswith("main.")) + + def test_register_logs_no_email(self, dbSession, authDbClient, caplog): + with caplog.at_level("INFO"): + authDbClient.post( + "/auth/register", + json={"username": "erin", "email": "erin-private@example.com", "password": "secret123"}, + ) + assert "erin-private@example.com" not in self.appLogs(caplog) + + def test_google_logs_no_secret(self, authDbClient, caplog): + secret = "http://localhost:3000/secret-path-xyz" + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + from starlette.responses import RedirectResponse + + sso.get_login_redirect = AsyncMock( + return_value=RedirectResponse("https://accounts.google.com/x", status_code=303) + ) + with caplog.at_level("INFO"): + with patch("main.controller.authentication_controller.getGoogleSSO", return_value=sso): + authDbClient.get(f"/auth/google?redirect_url={secret}", follow_redirects=False) + assert "secret-path-xyz" not in self.appLogs(caplog) + + def test_callback_logs_no_email_or_state(self, dbSession, authDbClient, caplog): + secret_state = "http://localhost:3000/state-secret-abc" + sso = AsyncMock() + sso.__aenter__ = AsyncMock(return_value=sso) + sso.__aexit__ = AsyncMock(return_value=False) + info = MagicMock() + info.id = "google-log-1" + info.email = "logsecret@gmail.com" + sso.verify_and_process = AsyncMock(return_value=info) + with caplog.at_level("INFO"): + with patch("main.controller.authentication_controller.getGoogleSSO", return_value=sso): + authDbClient.get(f"/auth/callback?state={secret_state}&code=c", follow_redirects=False) + assert "logsecret@gmail.com" not in self.appLogs(caplog) + assert "state-secret-abc" not in self.appLogs(caplog) diff --git a/tests/test_auth_introspect.py b/tests/test_auth_introspect.py new file mode 100644 index 00000000..9017fb97 --- /dev/null +++ b/tests/test_auth_introspect.py @@ -0,0 +1,144 @@ +import hashlib +import hmac +import os +import sys +from datetime import datetime, timedelta, timezone + +import pytest + +from unittest.mock import patch + +sys.path.insert(0, os.path.dirname(os.path.dirname(__file__))) + +from fastapi import FastAPI +from fastapi.testclient import TestClient + +from config import Config, getSession +from main.app.authentication.session import SessionManager +from main.app.authentication.util import createAccessToken +from main.controller.authentication_controller import router as authRouter +from main.models.user import User +from main.utils.errors import registerErrorHandlers + + +@pytest.fixture +def authClient(dbSession): + app = FastAPI() + app.include_router(authRouter) + registerErrorHandlers(app) + app.dependency_overrides[getSession] = lambda: dbSession + with TestClient(app, raise_server_exceptions=False) as c: + yield c + + +def makeUserToken(dbSession, username="intro_user"): + user = User(username=username, email=f"{username}@example.com", passwordHash="hashed", roles="USER") + dbSession.add(user) + dbSession.commit() + dbSession.refresh(user) + session = SessionManager.createSession(dbSession, user.userId, "pytest") + token = createAccessToken({"userId": str(user.userId), "sessionId": session.sessionId}) + return user, session, token + + +SERVICE_HEADERS = { + "X-Service-Token": hmac.new( + Config.USER.JWT_SECRET_KEY.encode("utf-8"), b"auth-introspect", hashlib.sha256 + ).hexdigest() +} + + +class TestAuthIntrospect: + def test_valid_token_returns_user_payload(self, dbSession, authClient): + user, _, token = makeUserToken(dbSession) + resp = authClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS) + assert resp.status_code == 200 + assert resp.json() == {"userId": user.userId, "username": user.username, "roles": ["USER"]} + + def test_bearer_prefixed_body_token(self, dbSession, authClient): + _, _, token = makeUserToken(dbSession) + resp = authClient.post("/auth/introspect", json={"token": f"Bearer {token}"}, headers=SERVICE_HEADERS) + assert resp.status_code == 200 + + def test_header_fallback(self, dbSession, authClient): + _, _, token = makeUserToken(dbSession) + resp = authClient.post("/auth/introspect", headers={"X-Access-Token": token, **SERVICE_HEADERS}) + assert resp.status_code == 200 + + def test_expired_token_401(self, dbSession, authClient): + user, session, _ = makeUserToken(dbSession) + token = createAccessToken( + {"userId": str(user.userId), "sessionId": session.sessionId}, + expiresDelta=timedelta(seconds=-1), + ) + assert authClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS).status_code == 401 + + def test_invalid_token_401(self, dbSession, authClient): + assert ( + authClient.post("/auth/introspect", json={"token": "not.a.real.token"}, headers=SERVICE_HEADERS).status_code + == 401 + ) + + def test_revoked_session_401(self, dbSession, authClient): + user, session, token = makeUserToken(dbSession) + SessionManager.revokeSession(dbSession, session.sessionId, user.userId) + assert authClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS).status_code == 401 + + def test_expired_session_401(self, dbSession, authClient): + user = User(username="exp_user", email="exp_user@example.com", passwordHash="h", roles="USER") + dbSession.add(user) + dbSession.commit() + dbSession.refresh(user) + past = datetime.now(timezone.utc) - timedelta(days=1) + session = SessionManager.createSession(dbSession, user.userId, "pytest", expiresAt=past) + token = createAccessToken({"userId": str(user.userId), "sessionId": session.sessionId}) + assert authClient.post("/auth/introspect", json={"token": token}, headers=SERVICE_HEADERS).status_code == 401 + + def test_missing_token_401(self, authClient): + assert authClient.post("/auth/introspect", json={}, headers=SERVICE_HEADERS).status_code == 401 + + +class TestAuthIntrospectGenericDetail: + def test_all_failure_paths_share_single_401_detail(self, dbSession, authClient): + user, session, token = makeUserToken(dbSession, username="generic_user") + expired = createAccessToken( + {"userId": str(user.userId), "sessionId": session.sessionId}, + expiresDelta=timedelta(seconds=-1), + ) + SessionManager.revokeSession(dbSession, session.sessionId, user.userId) + bodies = [{}, {"token": "not.a.real.token"}, {"token": expired}, {"token": token}] + errors = set() + for body in bodies: + resp = authClient.post("/auth/introspect", json=body, headers=SERVICE_HEADERS) + assert resp.status_code == 401 + errors.add(resp.json()["error"]) + assert errors == {"Unauthorized"} + + def test_unknown_user_returns_generic_401(self, dbSession): + from unittest.mock import MagicMock + from fastapi import HTTPException + from main.app.authentication.introspect import introspectToken + + _, _, token = makeUserToken(dbSession, username="ghost_user") + mockDb = MagicMock() + mockDb.query.return_value.filter.return_value.first.return_value = None + with patch("main.app.authentication.introspect.SessionManager.validateSession", return_value=True): + with pytest.raises(HTTPException) as exc_info: + introspectToken(mockDb, token) + assert exc_info.value.status_code == 401 + assert exc_info.value.detail == "Unauthorized" + + +class TestServiceTokenDerivation: + def test_env_var_no_longer_authenticates(self, authClient, monkeypatch): + monkeypatch.setenv("INTROSPECT_SERVICE_TOKEN", "test-service-token") + resp = authClient.post( + "/auth/introspect", json={"token": "x"}, headers={"X-Service-Token": "test-service-token"} + ) + assert resp.status_code == 401 + + def test_raw_signing_key_is_not_accepted(self, authClient): + resp = authClient.post( + "/auth/introspect", json={"token": "x"}, headers={"X-Service-Token": Config.USER.JWT_SECRET_KEY} + ) + assert resp.status_code == 401 diff --git a/tests/test_auth_util.py b/tests/test_auth_util.py index 50f7ae25..c6200830 100644 --- a/tests/test_auth_util.py +++ b/tests/test_auth_util.py @@ -68,15 +68,15 @@ def test_create_access_token_contains_data(self): class TestSessionExpiryConfig: - def test_session_expiry_days_is_30(self): - assert SESSION_EXPIRY_DAYS == 30 + def test_session_expiry_days_is_7(self): + assert SESSION_EXPIRY_DAYS == 7 def test_session_expiry_hours_calculation(self): from main.app.authentication.constants import TOKEN_EXPIRY_HOURS assert TOKEN_EXPIRY_HOURS == SESSION_EXPIRY_DAYS * 24 - def test_default_token_expiry_equals_30_days(self): + def test_default_token_expiry_equals_7_days(self): token = createAccessToken({"userId": "123"}) decoded = jwt.decode(token, options={"verify_signature": False}) @@ -84,7 +84,7 @@ def test_default_token_expiry_equals_30_days(self): now = datetime.now() daysDiff = (expTime - now).days - assert 29 <= daysDiff <= 30 + assert 6 <= daysDiff <= 7 class TestAuthUtilEdgeCases: diff --git a/tests/test_controllers_coverage.py b/tests/test_controllers_coverage.py index 222a6672..2040b059 100644 --- a/tests/test_controllers_coverage.py +++ b/tests/test_controllers_coverage.py @@ -1146,24 +1146,18 @@ def test_get_current_user_generic_exception(self): assert "Could not validate credentials" in exc_info.value.detail def test_get_current_user_no_session_id(self): - """Covers lines 37-38, 46, 51, 58 (sessionId is None): skips session validation.""" + """Fail-closed: payload without sessionId raises 401 Session required.""" mock_db = MagicMock() - mock_user = MagicMock() - mock_user.userId = 1 - mock_user.username = "alice" - mock_user.email = "alice@test.com" - mock_user.getRolesList.return_value = ["USER"] - - mock_db.query.return_value.filter.return_value.first.return_value = mock_user mock_payload = {"userId": 1} from main.app.user.user import UserManager - result = UserManager.getCurrentUser(payload=mock_payload, db=mock_db) + with pytest.raises(Exception) as exc_info: + UserManager.getCurrentUser(payload=mock_payload, db=mock_db) - assert result["userId"] == 1 - assert "sessionId" not in result + assert exc_info.value.status_code == 401 + assert "Session required" in exc_info.value.detail # ========================================================================= diff --git a/tests/test_scraper_dividends.py b/tests/test_scraper_dividends.py new file mode 100644 index 00000000..dd481731 --- /dev/null +++ b/tests/test_scraper_dividends.py @@ -0,0 +1,71 @@ +"""Regression: historicalDividends() backfills VALOR ORIGINAL when "ov" is absent. + +SI ships "ov" whenever a factor exists (adj=True rows); when absent, a NaN +placeholder keeps the column present (downstream tolerates NaN). +""" + +import sys +from unittest.mock import MagicMock + +import pandas as pd + +# Stub research-repo `xango` module (main/app/scraper_b3/scraper.py:20 +# `from xango import calculateInvestingScore` — absent here). +if "xango" not in sys.modules: + _xango_stub = MagicMock() + _xango_stub.calculateInvestingScore = MagicMock(return_value={}) + sys.modules["xango"] = _xango_stub + +from main.app.scraper_b3.scraper import B3Scraper + + +def _payload(records): + return {"assetEarningsYearlyModels": [], "assetEarningsModels": records} + + +class _FakeResp: + def __init__(self, payload): + self._payload = payload + + def raise_for_status(self): + pass + + def json(self): + return self._payload + + +def _scraper(payload): + # Bypass __init__ (hits network: cloudscraper + SELIC fetch). + s = B3Scraper.__new__(B3Scraper) + s.requests = MagicMock() + s.requests.get.return_value = _FakeResp(payload) + return s + + +def _rec(ed="21/08/2026", pd="21/12/2026", v=1.0, adj=0.5): + return { + "y": 0, + "m": 0, + "d": 0, + "ed": ed, + "pd": pd, + "et": "JCP", + "etd": "Juros Sobre Capital Proprio", + "v": v, + "sv": str(v), + "sov": "-", + "adj": adj, + } + + +class TestHistoricalDividendsOvDrift: + def test_missing_ov_yields_nan(self): + df = _scraper(_payload([_rec(v=0.20250435, adj=False)])).historicalDividends("PETR4") + recs = df["HISTORICO DIVIDENDOS"].iloc[0] + assert pd.isna(recs[0]["VALOR ORIGINAL"]) + + def test_ov_present_is_kept(self): + rec = {**_rec(v=0.01765, adj=True), "ov": 0.015} + df = _scraper(_payload([rec])).historicalDividends("PETR4") + recs = df["HISTORICO DIVIDENDOS"].iloc[0] + assert recs[0]["VALOR ORIGINAL"] == 0.015 diff --git a/tests/test_scraper_news.py b/tests/test_scraper_news.py new file mode 100644 index 00000000..39d0944b --- /dev/null +++ b/tests/test_scraper_news.py @@ -0,0 +1,47 @@ +"""Regression: stockNews() parses Google News RSS into NOTICIAS records.""" + +import sys +from unittest.mock import MagicMock + +# Stub research-repo `xango` module (main/app/scraper_b3/scraper.py:20 +# `from xango import calculateInvestingScore` — absent here). +if "xango" not in sys.modules: + _xango_stub = MagicMock() + _xango_stub.calculateInvestingScore = MagicMock(return_value={}) + sys.modules["xango"] = _xango_stub + +from main.app.scraper_b3.scraper import B3Scraper + +RSS = ( + '' + 'test - Google News' + "N1https://ax1" + "Tue, 29 Sep 2026 12:00:00 GMTd1" + 'suno.com.br' + "N2https://bx2" + "Wed, 30 Sep 2026 13:00:00 GMTd2" + 'info.com' + "" +) + + +class _FakeResp: + def __init__(self, text): + self.text = text + + +def _scraper(text): + # Bypass __init__ (hits network: cloudscraper + SELIC fetch). + s = B3Scraper.__new__(B3Scraper) + s.requests = MagicMock() + s.requests.get.return_value = _FakeResp(text) + return s + + +class TestStockNews: + def test_parses_news_records(self): + df = _scraper(RSS).stockNews("PETR4") + recs = df["NOTICIAS"].iloc[0] + assert [r["TITULO"] for r in recs] == ["N1", "N2"] + assert recs[0]["SOURCE"] == "suno.com.br" + assert "guid" not in recs[0] and "description" not in recs[0] diff --git a/tests/test_sessions.py b/tests/test_sessions.py index 861287d3..f591885c 100644 --- a/tests/test_sessions.py +++ b/tests/test_sessions.py @@ -25,8 +25,8 @@ def test_isActive_can_be_false(self): class TestSessionExpiration: - def test_session_expiry_days_is_30(self): - assert SESSION_EXPIRY_DAYS == 30 + def test_session_expiry_days_is_7(self): + assert SESSION_EXPIRY_DAYS == 7 def test_session_can_expire(self): now = datetime.now() @@ -182,19 +182,17 @@ def test_revoke_session_found(self): from main.app.authentication.session import SessionManager mock_db = MagicMock() - mock_session = MagicMock() - mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = mock_session + mock_db.query.return_value.filter.return_value.update.return_value = 1 result = SessionManager.revokeSession(mock_db, "sess-123", userId=1) assert result is True - assert mock_session.isActive is False mock_db.commit.assert_called_once() def test_revoke_session_not_found(self): from main.app.authentication.session import SessionManager mock_db = MagicMock() - mock_db.query.return_value.filter.return_value.filter.return_value.first.return_value = None + mock_db.query.return_value.filter.return_value.update.return_value = 0 result = SessionManager.revokeSession(mock_db, "nonexistent", userId=1) assert result is False diff --git a/tests/test_stocks_api_coverage.py b/tests/test_stocks_api_coverage.py index d0550694..b915c7c8 100644 --- a/tests/test_stocks_api_coverage.py +++ b/tests/test_stocks_api_coverage.py @@ -91,7 +91,7 @@ def test_getCachedStocks_no_columns(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A", "B"], "NOME": ["X", "Y"], "TIME": ["t1", "t2"]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -105,7 +105,7 @@ def test_getCachedStocks_with_valid_columns(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A"], "NOME": ["X"], "TIME": ["t1"], "PRECO": [10.0]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df) as mock_read, + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)) as mock_read, patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -116,7 +116,7 @@ def test_getCachedStocks_replaces_nan_inf(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A"], "VAL": [np.nan]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -129,7 +129,7 @@ def test_getCachedStocks_builds_ticker_index(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["PETR4", "VALE3"], "NOME": ["Petrobras", "Vale"]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -140,7 +140,7 @@ def test_getCachedStocks_exception_logged(self): mgr = self.make_manager() # Should not raise, just log with ( - patch("main.app.stocks_api.cache.pd.read_feather", side_effect=Exception("feather error")), + patch("main.app.stocks_api.cache.readFeatherDataFrame", side_effect=Exception("feather error")), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -150,7 +150,7 @@ def test_getCachedStocks_replaces_inf(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A"], "VAL": [np.inf]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -161,7 +161,7 @@ def test_getCachedStocks_replaces_neg_inf(self): mgr = self.make_manager() df = pd.DataFrame({"TICKER": ["A"], "VAL": [-np.inf]}) with ( - patch("main.app.stocks_api.cache.pd.read_feather", return_value=df), + patch("main.app.stocks_api.cache.readFeatherDataFrame", return_value=(df, False)), patch("main.app.stocks_api.cache.subprocess.run", return_value=None), ): mgr.getCachedStocks(force_refresh=True) @@ -173,115 +173,108 @@ def test_getCachedStocks_replaces_neg_inf(self): # Tests for key.py – verifyAPIKey # =========================================================================== class TestVerifyAPIKey: - """Tests covering key.py lines 15-40. - Native async tests via pytest-asyncio asyncio_mode=auto.""" + def makeDb(self, rows, rowcount=1, error=None): + mock_db = MagicMock() + mock_db.query.return_value.all.return_value = rows + if error is not None: + mock_db.execute.side_effect = error + else: + mock_db.execute.return_value.rowcount = rowcount + return mock_db + + def makeRow(self, raw, usage=0, limit=100): + from types import SimpleNamespace + from main.app.stocks_api.key import createStoredApiKey + + _, stored = createStoredApiKey(raw) + return SimpleNamespace(apiKey=stored, currentUsage=usage, requestLimit=limit) @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_disabled_returns_none(self, mock_config): - """When KEY.SYSTEM is falsy, return None (line 16).""" from main.app.stocks_api.key import verifyAPIKey mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=False) - mock_db = MagicMock() - - result = await verifyAPIKey(apiKey=None, db=mock_db) - assert result is None + assert await verifyAPIKey(apiKey=None, db=MagicMock()) is None @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_missing_raises_401(self, mock_config): - """When key is required but not provided (line 19).""" from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - - with pytest.raises(HTTPException) as exc_info: + mock_db = self.makeDb([]) + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey=None, db=mock_db) - assert exc_info.value.status_code == 401 + assert (e.value.status_code, e.value.detail) == (401, "Unauthorized") + mock_db.query.assert_not_called() + + @patch("main.app.stocks_api.key.Config") + async def test_verify_api_key_success(self, mock_config): + from main.app.stocks_api.key import verifyAPIKey + + mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) + mock_db = self.makeDb([self.makeRow("valid_key")]) + assert await verifyAPIKey(apiKey="valid_key", db=mock_db) == "valid_key" + mock_db.commit.assert_called_once() @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_invalid_key_raises_401(self, mock_config): - """When atomic UPDATE returns 0 rows and query finds no key -> 401.""" from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - # Atomic UPDATE returns 0 rows (key not found or quota exceeded) - mock_db.execute.return_value.rowcount = 0 - # Follow-up query confirms key doesn't exist - mock_db.query.return_value.filter.return_value.first.return_value = None - - with pytest.raises(HTTPException) as exc_info: + mock_db = self.makeDb([self.makeRow("other_key")]) + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey="bad_key", db=mock_db) - assert exc_info.value.status_code == 401 + assert (e.value.status_code, e.value.detail) == (401, "Unauthorized") @patch("main.app.stocks_api.key.Config") async def test_verify_api_key_quota_exceeded(self, mock_config): - """When atomic UPDATE returns 0 rows and query finds key at limit -> 429.""" from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - # Atomic UPDATE returns 0 rows (quota exceeded) - mock_db.execute.return_value.rowcount = 0 - # Follow-up query confirms key exists (at quota limit) - mock_key_obj = MagicMock() - mock_db.query.return_value.filter.return_value.first.return_value = mock_key_obj - - with pytest.raises(HTTPException) as exc_info: + mock_db = self.makeDb([self.makeRow("valid_key", usage=100, limit=100)]) + with pytest.raises(HTTPException) as e: await verifyAPIKey(apiKey="valid_key", db=mock_db) - assert exc_info.value.status_code == 429 + assert (e.value.status_code, e.value.detail) == (429, "Too many requests") + mock_db.execute.assert_not_called() @patch("main.app.stocks_api.key.Config") - async def test_verify_api_key_success(self, mock_config): - """Happy path: atomic UPDATE succeeds, returns key (lines 22-33).""" + async def test_verify_api_key_lost_race_returns_429(self, mock_config): from main.app.stocks_api.key import verifyAPIKey + from fastapi import HTTPException mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - # Atomic UPDATE returns 1 row (success) - mock_db.execute.return_value.rowcount = 1 - - result = await verifyAPIKey(apiKey="valid_key", db=mock_db) - assert result == "valid_key" - mock_db.commit.assert_called_once() + mock_db = self.makeDb([self.makeRow("k")], rowcount=0) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="k", db=mock_db) + assert e.value.status_code == 429 + mock_db.rollback.assert_called_once() @patch("main.app.stocks_api.key.Config") - async def test_verify_api_key_http_exception_rollback(self, mock_config): - """HTTPException should cause rollback then re-raise (lines 35-37).""" + async def test_verify_api_key_generic_exception_rollback(self, mock_config): from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - # Atomic UPDATE returns 0 rows (quota exceeded) - mock_db.execute.return_value.rowcount = 0 - # Follow-up query confirms key exists (at quota limit) - mock_key_obj = MagicMock() - mock_db.query.return_value.filter.return_value.first.return_value = mock_key_obj - - with pytest.raises(HTTPException) as exc_info: - await verifyAPIKey(apiKey="key", db=mock_db) - assert exc_info.value.status_code == 429 + mock_db = self.makeDb([self.makeRow("k")], error=Exception("DB down")) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="k", db=mock_db) + assert e.value.status_code == 500 mock_db.rollback.assert_called_once() @patch("main.app.stocks_api.key.Config") - async def test_verify_api_key_generic_exception_rollback(self, mock_config): - """Generic DB exception should rollback and raise 500 (lines 38-40).""" + async def test_verify_api_key_legacy_row_rejected(self, mock_config): + from types import SimpleNamespace from main.app.stocks_api.key import verifyAPIKey from fastapi import HTTPException mock_config.STOCKS_API = MagicMock(KEY_SYSTEM=True) - mock_db = MagicMock() - mock_db.execute.side_effect = Exception("DB connection lost") - - with pytest.raises(HTTPException) as exc_info: - await verifyAPIKey(apiKey="key", db=mock_db) - assert exc_info.value.status_code == 500 - mock_db.rollback.assert_called_once() + legacy = SimpleNamespace(apiKey="a" * 64, currentUsage=0, requestLimit=100) + with pytest.raises(HTTPException) as e: + await verifyAPIKey(apiKey="x", db=self.makeDb([legacy])) + assert e.value.status_code == 401 # =========================================================================== diff --git a/tests/test_stocks_cache_feather.py b/tests/test_stocks_cache_feather.py index 3cef32ca..755b9aa9 100644 --- a/tests/test_stocks_cache_feather.py +++ b/tests/test_stocks_cache_feather.py @@ -3,6 +3,8 @@ from datetime import datetime, timedelta, timezone import pandas as pd +import pyarrow as pa +from pyarrow import feather from main.app.stocks_api.cache import StocksCacheManager, optimizeDtypes @@ -29,7 +31,7 @@ def test_missing_feather_runs_loader_then_swaps(monkeypatch, tmp_path): calls = [] monkeypatch.setattr(cache_mod.os.path, "exists", lambda p: False) monkeypatch.setattr(cache_mod.subprocess, "run", lambda *a, **k: calls.append("run") or None) - monkeypatch.setattr(cache_mod.pd, "read_feather", lambda p: fake_df) + monkeypatch.setattr(cache_mod, "readFeatherDataFrame", lambda p: (fake_df, False)) manager = cache_mod.StocksCacheManager(None, threading.Lock()) manager.STOCKS_CACHE = None manager.getCachedStocks() @@ -49,7 +51,7 @@ def test_stale_feather_serves_snapshot_and_spawns_refresh(monkeypatch, tmp_path) monkeypatch.setattr(cache_mod.subprocess, "run", lambda *a, **k: None) # never hit the real loader monkeypatch.setattr(cache_mod.os.path, "getmtime", lambda p: 0.0) # 1970 -> definitely stale monkeypatch.setattr(cache_mod.time, "time", lambda: 10.0 * 3600) # 10h later - monkeypatch.setattr(cache_mod.pd, "read_feather", lambda p: fake_df) + monkeypatch.setattr(cache_mod, "readFeatherDataFrame", lambda p: (fake_df, False)) spawned = [] monkeypatch.setattr( cache_mod.threading.Thread, @@ -73,7 +75,7 @@ def test_fresh_feather_serves_snapshot_without_refresh(monkeypatch, tmp_path): monkeypatch.setattr(cache_mod.subprocess, "run", lambda *a, **k: None) monkeypatch.setattr(cache_mod.os.path, "getmtime", lambda p: 10.0 * 3600 - 60) # fresh monkeypatch.setattr(cache_mod.time, "time", lambda: 10.0 * 3600) - monkeypatch.setattr(cache_mod.pd, "read_feather", lambda p: fake_df) + monkeypatch.setattr(cache_mod, "readFeatherDataFrame", lambda p: (fake_df, False)) spawned = [] monkeypatch.setattr( cache_mod.threading.Thread, @@ -84,3 +86,39 @@ def test_fresh_feather_serves_snapshot_without_refresh(monkeypatch, tmp_path): manager.getCachedStocks() assert manager.STOCKS_CACHE is fake_df assert spawned == [] + + +def test_read_feather_dataframe_uses_arrow_backed_columns(tmp_path): + import main.app.stocks_api.cache as cache_mod + + path = tmp_path / "cache.feather" + feather.write_feather( + pd.DataFrame({"TICKER": ["PETR4"], "NOME": ["PETROBRAS"], "PRECO": [1.5], "BLOB": [b"xy"]}), path + ) + + df, presorted = cache_mod.readFeatherDataFrame(path) + + assert presorted is False + # pandas 3 defaults str columns to large_string[pyarrow] (PDEP-14); pandas 2 to string[pyarrow]. + # The property under test is "arrow-backed", not the arrow string width. + assert isinstance(df["TICKER"].dtype, pd.ArrowDtype) + assert pd.api.types.is_string_dtype(df["TICKER"].dtype) + assert str(df["BLOB"].dtype) == "binary[pyarrow]" + assert df["TICKER"].iloc[0] == "PETR4" + assert df["BLOB"].iloc[0] == b"xy" + + +def test_read_feather_dataframe_detects_presorted_marker(tmp_path): + import main.app.stocks_api.cache as cache_mod + + path = tmp_path / "cache.feather" + table = pa.Table.from_pandas( + pd.DataFrame({"TICKER": ["PETR4"], "TIME": [pd.Timestamp("2024-01-01")]}), preserve_index=False + ).replace_schema_metadata({cache_mod.PRESORTED_FLAG_KEY: b"1"}) + with pa.OSFile(str(path), "wb") as sink, pa.ipc.new_file(sink, table.schema) as writer: + writer.write_table(table) + + df, presorted = cache_mod.readFeatherDataFrame(path) + + assert presorted is True + assert df["TICKER"].iloc[0] == "PETR4" diff --git a/tests/test_stocks_cache_zstd.py b/tests/test_stocks_cache_zstd.py index e02954c5..156f79b5 100644 --- a/tests/test_stocks_cache_zstd.py +++ b/tests/test_stocks_cache_zstd.py @@ -1,8 +1,11 @@ import threading import zstandard as zstd +from unittest.mock import MagicMock import pytest import pandas as pd +import pyarrow as pa +from pyarrow import feather import main.app.stocks_api.cache as cache_mod from main.app.stocks_api.cache import StocksCacheManager @@ -143,7 +146,7 @@ def test_get_cached_stocks_compresses_jsoncolumns(monkeypatch, tmp_path): assert isinstance(df["COTACAO 10Y PADRAO"].iloc[0], bytes) assert zstd.ZstdDecompressor().decompress(df["COTACAO 10Y PADRAO"].iloc[0]).decode("utf-8").startswith("[{") assert isinstance(df["NOTICIAS"].iloc[0], bytes) - assert df["NOTICIAS"].iloc[1] is None # NaN/None cells stay None + assert pd.isna(df["NOTICIAS"].iloc[1]) # ArrowDtype null cells are pd.NA def test_get_cached_stocks_keeps_raw_nested_sample(monkeypatch, tmp_path): @@ -278,6 +281,17 @@ def test_deserialize_jsoncolumns_decompresses_bytes(): assert out["COTACAO 10Y PADRAO"].iloc[0] == [{"DATA": "01-01-2024", "PRECO": 10.0}] +def test_deserialize_jsoncolumns_handles_arrowdtype_binary(): + payload = zstd.ZstdCompressor(level=3).compress(b'[{"DATA": "01-01-2024", "PRECO": 10.5}]') + df = pd.DataFrame( + {"TICKER": ["PETR4"], "COTACAO 10Y PADRAO": pd.array([payload], dtype=pd.ArrowDtype(pa.binary()))} + ) + + out = deserializeJsonColumns(df) + + assert out["COTACAO 10Y PADRAO"].iloc[0] == [{"DATA": "01-01-2024", "PRECO": 10.5}] + + def test_get_nest_keeps_compressed_column_subfields(monkeypatch, tmp_path): df = pd.DataFrame( { @@ -304,3 +318,79 @@ def test_get_nest_keeps_compressed_column_subfields(monkeypatch, tmp_path): nest = getNest() assert "COTACAO 10Y PADRAO" in nest assert set(nest["COTACAO 10Y PADRAO"]["subfields"]) >= {"DATA", "PRECO"} + + +def test_build_requests_presorted_rows(monkeypatch, tmp_path): + seenSql = [] + + def connect(): + conn = FakeConn([makeDf()]) + realExec = conn.exec_driver_sql + + def exec_driver_sql(sql): + seenSql.append(sql) + return realExec(sql) + + monkeypatch.setattr(conn, "exec_driver_sql", exec_driver_sql) + return conn + + monkeypatch.setattr(cache_mod.stocksEngine, "connect", connect) + monkeypatch.setattr(cache_mod, "CACHE_FEATHER_PATH", tmp_path / "cache.feather") + monkeypatch.setattr(cache_mod, "CACHE_NESTED_PATH", tmp_path / "nested.feather") + + cache_mod.buildFeatherCache() + + assert any("ORDER BY TICKER ASC, TIME DESC" in sql for sql in seenSql) + + +def test_build_stamps_presorted_marker(monkeypatch, tmp_path): + monkeypatch.setattr(cache_mod.stocksEngine, "connect", lambda: FakeConn([makeDf()])) + monkeypatch.setattr(cache_mod, "CACHE_FEATHER_PATH", tmp_path / "cache.feather") + monkeypatch.setattr(cache_mod, "CACHE_NESTED_PATH", tmp_path / "nested.feather") + + cache_mod.buildFeatherCache() + + table = feather.read_table(cache_mod.CACHE_FEATHER_PATH) + assert (table.schema.metadata or {}).get(cache_mod.PRESORTED_FLAG_KEY) == b"1" + + +def _writeFeather(rows, path): + feather.write_feather(pd.DataFrame(rows), path) + + +def _loadManager(path, monkeypatch, tmp_path): + manager = cache_mod.StocksCacheManager(MagicMock(), threading.Lock()) + monkeypatch.setattr(cache_mod, "CACHE_FEATHER_PATH", path) + monkeypatch.setattr(cache_mod, "CACHE_NESTED_PATH", tmp_path / "nested.feather") + return manager + + +def test_load_skips_sort_for_presorted_files(monkeypatch, tmp_path): + path = tmp_path / "cache.feather" + table = pa.Table.from_pandas( + pd.DataFrame({"TICKER": ["VALE3", "PETR4"], "TIME": [pd.Timestamp("2024-01-01")] * 2}), preserve_index=False + ).replace_schema_metadata({cache_mod.PRESORTED_FLAG_KEY: b"1"}) + with pa.OSFile(str(path), "wb") as sink, pa.ipc.new_file(sink, table.schema) as writer: + writer.write_table(table) + + def boom(df): + raise AssertionError("sort must not run for presorted files") + + monkeypatch.setattr(cache_mod, "sortCacheFrame", boom) + manager = _loadManager(path, monkeypatch, tmp_path) + + manager.loadFromFeather() + + assert list(manager.STOCKS_CACHE["TICKER"]) == ["VALE3", "PETR4"] + + +def test_load_sorts_legacy_files_without_marker(monkeypatch, tmp_path): + path = tmp_path / "cache.feather" + _writeFeather( + {"TICKER": ["VALE3", "PETR4"], "TIME": [pd.Timestamp("2024-01-01"), pd.Timestamp("2023-01-01")]}, path + ) + manager = _loadManager(path, monkeypatch, tmp_path) + + manager.loadFromFeather() + + assert list(manager.STOCKS_CACHE["TICKER"]) == ["PETR4", "VALE3"]