diff --git a/.gitignore b/.gitignore index 894db26..2c520f3 100644 --- a/.gitignore +++ b/.gitignore @@ -236,3 +236,7 @@ playwright-report/ # Claude Code .claude/ +# graphify (cache only — outputs are committed) +graphify-out/cache/ +graphify-out/cost.json + diff --git a/.graphifyignore b/.graphifyignore new file mode 100644 index 0000000..04b4291 --- /dev/null +++ b/.graphifyignore @@ -0,0 +1,13 @@ +# Build & generated +graphify-out/ +.tanstack/ + +# Test artifacts +test-results/ +playwright-report/ +e2e/test.db +e2e/pgdata/ + +# Uploaded user content +uploads/ + diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md new file mode 100644 index 0000000..8661c6f --- /dev/null +++ b/graphify-out/GRAPH_REPORT.md @@ -0,0 +1,423 @@ +# Graph Report - . (2026-04-08) + +## Corpus Check +- 189 files · ~104,440 words +- Verdict: corpus is large enough that graph structure adds value. + +## Summary +- 538 nodes · 664 edges · 71 communities detected +- Extraction: 91% EXTRACTED · 9% INFERRED · 0% AMBIGUOUS · INFERRED: 61 edges (avg confidence: 0.68) +- Token cost: 0 input · 0 output + +## God Nodes (most connected - your core abstractions) +1. `MCP Server Documentation` - 14 edges +2. `Authentication Documentation` - 11 edges +3. `GearBox REST API Reference` - 8 edges +4. `handleResponse()` - 7 edges +5. `Codebase Improvements Implementation Plan` - 7 edges +6. `GearBox Architecture Overview` - 6 edges +7. `Testing Improvements Implementation Plan` - 5 edges +8. `Catalog-Driven Gear Flow Design Spec` - 5 edges +9. `Codebase Improvements Design Spec` - 5 edges +10. `MCP OAuth 2.1 Server Design Spec` - 5 edges + +## Surprising Connections (you probably didn't know these) +- `Logto OIDC Authentication` --semantically_similar_to--> `Authentication Documentation` [INFERRED] [semantically similar] + README.md → docs/authentication.md +- `Auth Model (Public Read, Authenticated Write)` --semantically_similar_to--> `Authentication Documentation` [INFERRED] [semantically similar] + CLAUDE.md → docs/authentication.md +- `Garage S3-Compatible Storage` --semantically_similar_to--> `imageSourceUrl Schema Column Design` [INFERRED] [semantically similar] + README.md → docs/superpowers/specs/2026-04-03-image-url-fetching-design.md +- `MCP Research Thread Workflow` --semantically_similar_to--> `Thread Resolution Pattern` [INFERRED] [semantically similar] + docs/mcp-server.md → CLAUDE.md +- `MCP Server Overview (19 Tools)` --semantically_similar_to--> `MCP Server Documentation` [INFERRED] [semantically similar] + CLAUDE.md → docs/mcp-server.md + +## Hyperedges (group relationships) +- **Dual Auth Mode: API Key + OAuth Bearer for MCP** — auth_api_keys, spec_mcp_oauth_flow, mcp_server_doc, claude_oauth_endpoints [EXTRACTED 0.90] +- **Research Thread Workflow: create→add→compare→resolve** — mcp_research_workflow, api_thread_resolve, claude_thread_resolution, mcp_tools_threads [INFERRED 0.88] +- **Server Hardening: DB Middleware + Params + Error Handler + Rate Limit** — plan_codebase_db_middleware, plan_codebase_params, plan_codebase_error_handler, plan_codebase_rate_limit [EXTRACTED 0.92] + +## Communities + +### Community 0 - "Candidate Card UI" +Cohesion: 0.05 +Nodes (4): handleSave(), validate(), LucideIcon(), toPascalCase() + +### Community 1 - "Collection Forms & Pickers" +Cohesion: 0.06 +Nodes (8): handleSubmit(), validate(), handleConfirmCreate(), handleKeyDown(), handleSelect(), handleStartCreate(), handleSubmit(), validate() + +### Community 2 - "Thread Modal Workflows" +Cohesion: 0.06 +Nodes (11): handleAddToExistingThread(), handleCreateThreadAndAdd(), handleSubmit(), apiDelete(), ApiError, apiGet(), apiPatch(), apiPost() (+3 more) + +### Community 3 - "Auth Documentation" +Cohesion: 0.07 +Nodes (33): API Key Auth (X-API-Key header), Argon2 Password Hashing (Bun.password), Cookie Session Auth (gearbox_session), Authentication Documentation, First-Time Setup Flow, Auth Frontend Behavior (read-only for anon), Auth Middleware Behavior (5-step rule), MCP Implementation Structure (src/server/mcp/) (+25 more) + +### Community 4 - "Auth Services & Middleware" +Cohesion: 0.08 +Nodes (7): deleteCategory(), getOrCreateUncategorized(), createTestDb(), getOrCreateDb(), exchangeCode(), generateTokens(), refreshAccessToken() + +### Community 5 - "Architecture Overview (CLAUDE.md)" +Cohesion: 0.08 +Nodes (26): GearBox Architecture Overview, Auth Model (Public Read, Authenticated Write), Client Layer (React 19 + TanStack), Database Schema (Drizzle ORM), MCP Server Overview (19 Tools), MCP OAuth 2.1 Endpoints, Server Layer (Hono + Drizzle), Shared Layer (Zod Schemas + Types) (+18 more) + +### Community 6 - "Formatters & Icon Picker" +Cohesion: 0.1 +Nodes (2): useOnboardingComplete(), useSetting() + +### Community 7 - "Dialogs & FAB Menu" +Cohesion: 0.1 +Nodes (0): + +### Community 8 - "MCP Category & Item Tools" +Cohesion: 0.1 +Nodes (0): + +### Community 9 - "REST API Endpoints" +Cohesion: 0.1 +Nodes (20): Candidate Reorder Endpoint (PATCH /api/threads/:id/candidates/reorder), Categories API Endpoints, GearBox REST API Reference, Images API Endpoints, Items API Endpoints, Settings API Endpoints, Setup Items Atomic Replace (PUT /api/setups/:id/items), Setups API Endpoints (+12 more) + +### Community 10 - "Image Service & MCP Tools" +Cohesion: 0.16 +Nodes (2): getImageUrl(), withImageUrl() + +### Community 11 - "Codebase Improvement Plans" +Cohesion: 0.23 +Nodes (12): Codebase Improvements Implementation Plan, Explicit DB Context Middleware Plan, Client Error Boundary Plan (TanStack Router), Centralized Error Handler Plan, Route Parameter Validation Plan (parseId), Rate Limiting on Auth Endpoints Plan, Split Collection Route into Tab Components Plan, Explicit DB Context Middleware Design (+4 more) + +### Community 12 - "Thread Service Layer" +Cohesion: 0.18 +Nodes (0): + +### Community 13 - "Thread Creation UI" +Cohesion: 0.2 +Nodes (2): handleClose(), resetForm() + +### Community 14 - "Testing & Component Plans" +Cohesion: 0.18 +Nodes (11): Reusable UI Components Policy, Testing Improvements Implementation Plan, E2E Database Seed Plan (e2e/seed.ts), parseId Unit Tests Plan, Playwright E2E Test Setup Plan, Rate Limiter Unit Tests Plan, Code Quality Round 2 Design Spec, Test Helper Drizzle Migration Design (replace hand-written SQL) (+3 more) + +### Community 15 - "Setup Service Layer" +Cohesion: 0.22 +Nodes (0): + +### Community 16 - "Rate Limiting" +Cohesion: 0.32 +Nodes (3): cleanup(), getClientIp(), rateLimit() + +### Community 17 - "Item Service Layer" +Cohesion: 0.29 +Nodes (0): + +### Community 18 - "CSV Import/Export" +Cohesion: 0.38 +Nodes (3): importItemsCsv(), parseCsv(), parseCsvLine() + +### Community 19 - "DB Schema & Seeding" +Cohesion: 0.33 +Nodes (0): + +### Community 20 - "SQLite→Postgres Migration" +Cohesion: 0.47 +Nodes (3): main(), migrateTable(), resetSequences() + +### Community 21 - "Global Item Service Tests" +Cohesion: 0.4 +Nodes (0): + +### Community 22 - "v1.4 Feature Specs" +Cohesion: 0.4 +Nodes (5): v1.4 Collection Tools Design Spec, CSV Import/Export Feature Design, Item Duplication Feature Design, Item Quantity Feature Design, Setup Impact Preview Feature Design + +### Community 23 - "Public Profile Service" +Cohesion: 0.5 +Nodes (0): + +### Community 24 - "OAuth Flow" +Cohesion: 0.67 +Nodes (2): escapeHtml(), renderConsentForm() + +### Community 25 - "Global Items Route Tests" +Cohesion: 0.5 +Nodes (0): + +### Community 26 - "Thread Route Tests" +Cohesion: 0.5 +Nodes (0): + +### Community 27 - "Setup Route Tests" +Cohesion: 0.5 +Nodes (0): + +### Community 28 - "Global Item Search" +Cohesion: 0.67 +Nodes (0): + +### Community 29 - "Totals Aggregation" +Cohesion: 0.67 +Nodes (0): + +### Community 30 - "Global Item Seeding" +Cohesion: 1.0 +Nodes (2): seedGlobalItems(), seedTags() + +### Community 31 - "Profile Route Tests" +Cohesion: 0.67 +Nodes (0): + +### Community 32 - "OAuth Route Tests" +Cohesion: 0.67 +Nodes (0): + +### Community 33 - "Tag Service" +Cohesion: 1.0 +Nodes (0): + +### Community 34 - "Collection Summary" +Cohesion: 1.0 +Nodes (0): + +### Community 35 - "Dev Seed Display Names" +Cohesion: 1.0 +Nodes (0): + +### Community 36 - "Dev Seed Runner" +Cohesion: 1.0 +Nodes (0): + +### Community 37 - "Thread Tab Navigation" +Cohesion: 1.0 +Nodes (0): + +### Community 38 - "Item Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 39 - "Image Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 40 - "Thread Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 41 - "Storage Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 42 - "OAuth Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 43 - "MCP Tools Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 44 - "Item Route Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 45 - "Tag Route Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 46 - "Category Route Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 47 - "Vite Config" +Cohesion: 1.0 +Nodes (0): + +### Community 48 - "Drizzle Config" +Cohesion: 1.0 +Nodes (0): + +### Community 49 - "Playwright Config" +Cohesion: 1.0 +Nodes (0): + +### Community 50 - "Drizzle PG Config" +Cohesion: 1.0 +Nodes (0): + +### Community 51 - "Totals Route" +Cohesion: 1.0 +Nodes (0): + +### Community 52 - "Tags Route" +Cohesion: 1.0 +Nodes (0): + +### Community 53 - "Global Items Route" +Cohesion: 1.0 +Nodes (0): + +### Community 54 - "Profiles Route" +Cohesion: 1.0 +Nodes (0): + +### Community 55 - "Zod Schemas" +Cohesion: 1.0 +Nodes (0): + +### Community 56 - "Migration Runner" +Cohesion: 1.0 +Nodes (0): + +### Community 57 - "Category Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 58 - "Auth Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 59 - "CSV Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 60 - "Tag Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 61 - "Setup Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 62 - "Totals Route Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 63 - "Profile Service Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 64 - "Images Route Tests" +Cohesion: 1.0 +Nodes (0): + +### Community 65 - "Error Handling E2E" +Cohesion: 1.0 +Nodes (0): + +### Community 66 - "Dashboard E2E" +Cohesion: 1.0 +Nodes (0): + +### Community 67 - "Auth E2E" +Cohesion: 1.0 +Nodes (0): + +### Community 68 - "Collection E2E" +Cohesion: 1.0 +Nodes (0): + +### Community 69 - "Threads E2E" +Cohesion: 1.0 +Nodes (0): + +### Community 70 - "Release Process" +Cohesion: 1.0 +Nodes (1): Release Process (Gitea Actions) + +## Knowledge Gaps +- **50 isolated node(s):** `GearBox Tech Stack`, `Client Layer (React 19 + TanStack)`, `Server Layer (Hono + Drizzle)`, `Shared Layer (Zod Schemas + Types)`, `Setup Item Sync Pattern (Atomic Replace)` (+45 more) + These have ≤1 connection - possible missing edges or undocumented components. +- **Thin community `Tag Service`** (2 nodes): `tag.service.ts`, `getAllTags()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Collection Summary`** (2 nodes): `collection.ts`, `getCollectionSummary()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Dev Seed Display Names`** (2 nodes): `dev-seed-data.ts`, `categoryDisplayName()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Dev Seed Runner`** (2 nodes): `dev-seed.ts`, `seedDevData()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Thread Tab Navigation`** (2 nodes): `ThreadTabs.tsx`, `CollectionTabs()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Item Service Tests`** (2 nodes): `item.service.test.ts`, `insertGlobalItem()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Image Service Tests`** (2 nodes): `image.service.test.ts`, `fetch()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Thread Service Tests`** (2 nodes): `thread.service.test.ts`, `insertGlobalItem()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Storage Service Tests`** (2 nodes): `storage.service.test.ts`, `constructor()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `OAuth Service Tests`** (2 nodes): `oauth.service.test.ts`, `generatePkce()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `MCP Tools Tests`** (2 nodes): `tools.test.ts`, `parseResult()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Item Route Tests`** (2 nodes): `items.test.ts`, `createTestApp()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Tag Route Tests`** (2 nodes): `tags.test.ts`, `createTestApp()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Category Route Tests`** (2 nodes): `categories.test.ts`, `createTestApp()` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Vite Config`** (1 nodes): `vite.config.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Drizzle Config`** (1 nodes): `drizzle.config.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Playwright Config`** (1 nodes): `playwright.config.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Drizzle PG Config`** (1 nodes): `drizzle-pg.config.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Totals Route`** (1 nodes): `totals.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Tags Route`** (1 nodes): `tags.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Global Items Route`** (1 nodes): `global-items.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Profiles Route`** (1 nodes): `profiles.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Zod Schemas`** (1 nodes): `schemas.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Migration Runner`** (1 nodes): `migrate.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Category Service Tests`** (1 nodes): `category.service.test.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Auth Service Tests`** (1 nodes): `auth.service.test.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `CSV Service Tests`** (1 nodes): `csv.service.test.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Tag Service Tests`** (1 nodes): `tag.service.test.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Setup Service Tests`** (1 nodes): `setup.service.test.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Totals Route Tests`** (1 nodes): `totals.test.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Profile Service Tests`** (1 nodes): `profile.service.test.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Images Route Tests`** (1 nodes): `images.test.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Error Handling E2E`** (1 nodes): `error-handling.spec.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Dashboard E2E`** (1 nodes): `dashboard.spec.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Auth E2E`** (1 nodes): `auth.spec.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Collection E2E`** (1 nodes): `collection.spec.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Threads E2E`** (1 nodes): `threads.spec.ts` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. +- **Thin community `Release Process`** (1 nodes): `Release Process (Gitea Actions)` + Too small to be a meaningful cluster - may be noise or needs more connections extracted. + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **Why does `Authentication Documentation` connect `Auth Documentation` to `REST API Endpoints`, `Architecture Overview (CLAUDE.md)`?** + _High betweenness centrality (0.013) - this node is a cross-community bridge._ +- **Why does `MCP Server Documentation` connect `Auth Documentation` to `Architecture Overview (CLAUDE.md)`?** + _High betweenness centrality (0.010) - this node is a cross-community bridge._ +- **Why does `GearBox REST API Reference` connect `REST API Endpoints` to `Auth Documentation`?** + _High betweenness centrality (0.007) - this node is a cross-community bridge._ +- **Are the 3 inferred relationships involving `MCP Server Documentation` (e.g. with `MCP Server Overview (19 Tools)` and `MCP Server Design Spec`) actually correct?** + _`MCP Server Documentation` has 3 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 3 inferred relationships involving `Authentication Documentation` (e.g. with `Auth Model (Public Read, Authenticated Write)` and `Authentication Design Spec`) actually correct?** + _`Authentication Documentation` has 3 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 6 inferred relationships involving `handleResponse()` (e.g. with `apiGet()` and `apiPost()`) actually correct?** + _`handleResponse()` has 6 INFERRED edges - model-reasoned connections that need verification._ +- **What connects `GearBox Tech Stack`, `Client Layer (React 19 + TanStack)`, `Server Layer (Hono + Drizzle)` to the rest of the system?** + _50 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html new file mode 100644 index 0000000..0394173 --- /dev/null +++ b/graphify-out/graph.html @@ -0,0 +1,242 @@ + + + + +graphify - graphify-out/graph.html + + + + +
+ + + + + \ No newline at end of file diff --git a/graphify-out/graph.json b/graphify-out/graph.json new file mode 100644 index 0000000..f673e65 --- /dev/null +++ b/graphify-out/graph.json @@ -0,0 +1,12802 @@ +{ + "directed": false, + "multigraph": false, + "graph": { + "hyperedges": [ + { + "id": "auth_dual_mode", + "label": "Dual Auth Mode: API Key + OAuth Bearer for MCP", + "nodes": [ + "auth_api_keys", + "spec_mcp_oauth_flow", + "mcp_server_doc", + "claude_oauth_endpoints" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.9, + "source_file": "CLAUDE.md" + }, + { + "id": "research_thread_workflow", + "label": "Research Thread Workflow: create\u2192add\u2192compare\u2192resolve", + "nodes": [ + "mcp_research_workflow", + "api_thread_resolve", + "claude_thread_resolution", + "mcp_tools_threads" + ], + "relation": "implement", + "confidence": "INFERRED", + "confidence_score": 0.88, + "source_file": "docs/mcp-server.md" + }, + { + "id": "server_hardening_bundle", + "label": "Server Hardening: DB Middleware + Params + Error Handler + Rate Limit", + "nodes": [ + "plan_codebase_db_middleware", + "plan_codebase_params", + "plan_codebase_error_handler", + "plan_codebase_rate_limit" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.92, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md" + } + ] + }, + "nodes": [ + { + "label": "vite.config.ts", + "file_type": "code", + "source_file": "vite.config.ts", + "source_location": "L1", + "id": "vite_config", + "community": 47 + }, + { + "label": "drizzle.config.ts", + "file_type": "code", + "source_file": "drizzle.config.ts", + "source_location": "L1", + "id": "drizzle_config", + "community": 48 + }, + { + "label": "playwright.config.ts", + "file_type": "code", + "source_file": "playwright.config.ts", + "source_location": "L1", + "id": "playwright_config", + "community": 49 + }, + { + "label": "drizzle-pg.config.ts", + "file_type": "code", + "source_file": "drizzle-pg.config.ts", + "source_location": "L1", + "id": "drizzle_pg_config", + "community": 50 + }, + { + "label": "index.tsx", + "file_type": "code", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L1", + "id": "index", + "community": 0 + }, + { + "label": "params.ts", + "file_type": "code", + "source_file": "src/server/lib/params.ts", + "source_location": "L1", + "id": "params", + "community": 8 + }, + { + "label": "parseId()", + "file_type": "code", + "source_file": "src/server/lib/params.ts", + "source_location": "L5", + "id": "params_parseid", + "community": 8 + }, + { + "label": "storage.service.ts", + "file_type": "code", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L1", + "id": "storage_service", + "community": 10 + }, + { + "label": "uploadImage()", + "file_type": "code", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L27", + "id": "storage_service_uploadimage", + "community": 10 + }, + { + "label": "deleteImage()", + "file_type": "code", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L42", + "id": "storage_service_deleteimage", + "community": 10 + }, + { + "label": "getImageUrl()", + "file_type": "code", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L51", + "id": "storage_service_getimageurl", + "community": 10 + }, + { + "label": "withImageUrl()", + "file_type": "code", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L63", + "id": "storage_service_withimageurl", + "community": 10 + }, + { + "label": "withImageUrls()", + "file_type": "code", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L77", + "id": "storage_service_withimageurls", + "community": 10 + }, + { + "label": "item.service.ts", + "file_type": "code", + "source_file": "src/server/services/item.service.ts", + "source_location": "L1", + "id": "item_service", + "community": 17 + }, + { + "label": "getAllItems()", + "file_type": "code", + "source_file": "src/server/services/item.service.ts", + "source_location": "L8", + "id": "item_service_getallitems", + "community": 17 + }, + { + "label": "getItemById()", + "file_type": "code", + "source_file": "src/server/services/item.service.ts", + "source_location": "L52", + "id": "item_service_getitembyid", + "community": 17 + }, + { + "label": "createItem()", + "file_type": "code", + "source_file": "src/server/services/item.service.ts", + "source_location": "L98", + "id": "item_service_createitem", + "community": 17 + }, + { + "label": "updateItem()", + "file_type": "code", + "source_file": "src/server/services/item.service.ts", + "source_location": "L140", + "id": "item_service_updateitem", + "community": 17 + }, + { + "label": "duplicateItem()", + "file_type": "code", + "source_file": "src/server/services/item.service.ts", + "source_location": "L176", + "id": "item_service_duplicateitem", + "community": 17 + }, + { + "label": "deleteItem()", + "file_type": "code", + "source_file": "src/server/services/item.service.ts", + "source_location": "L205", + "id": "item_service_deleteitem", + "community": 17 + }, + { + "label": "global-item.service.ts", + "file_type": "code", + "source_file": "src/server/services/global-item.service.ts", + "source_location": "L1", + "id": "global_item_service", + "community": 28 + }, + { + "label": "searchGlobalItems()", + "file_type": "code", + "source_file": "src/server/services/global-item.service.ts", + "source_location": "L14", + "id": "global_item_service_searchglobalitems", + "community": 28 + }, + { + "label": "getGlobalItemWithOwnerCount()", + "file_type": "code", + "source_file": "src/server/services/global-item.service.ts", + "source_location": "L59", + "id": "global_item_service_getglobalitemwithownercount", + "community": 28 + }, + { + "label": "oauth.service.ts", + "file_type": "code", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L1", + "id": "oauth_service", + "community": 4 + }, + { + "label": "registerClient()", + "file_type": "code", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L10", + "id": "oauth_service_registerclient", + "community": 4 + }, + { + "label": "getClient()", + "file_type": "code", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L25", + "id": "oauth_service_getclient", + "community": 4 + }, + { + "label": "createAuthorizationCode()", + "file_type": "code", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L36", + "id": "oauth_service_createauthorizationcode", + "community": 4 + }, + { + "label": "exchangeCode()", + "file_type": "code", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L60", + "id": "oauth_service_exchangecode", + "community": 4 + }, + { + "label": "generateTokens()", + "file_type": "code", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L97", + "id": "oauth_service_generatetokens", + "community": 4 + }, + { + "label": "verifyAccessToken()", + "file_type": "code", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L127", + "id": "oauth_service_verifyaccesstoken", + "community": 4 + }, + { + "label": "refreshAccessToken()", + "file_type": "code", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L144", + "id": "oauth_service_refreshaccesstoken", + "community": 4 + }, + { + "label": "cleanExpiredOAuthData()", + "file_type": "code", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L176", + "id": "oauth_service_cleanexpiredoauthdata", + "community": 4 + }, + { + "label": "totals.service.ts", + "file_type": "code", + "source_file": "src/server/services/totals.service.ts", + "source_location": "L1", + "id": "totals_service", + "community": 29 + }, + { + "label": "getCategoryTotals()", + "file_type": "code", + "source_file": "src/server/services/totals.service.ts", + "source_location": "L7", + "id": "totals_service_getcategorytotals", + "community": 29 + }, + { + "label": "getGlobalTotals()", + "file_type": "code", + "source_file": "src/server/services/totals.service.ts", + "source_location": "L34", + "id": "totals_service_getglobaltotals", + "community": 29 + }, + { + "label": "auth.service.ts", + "file_type": "code", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L1", + "id": "auth_service", + "community": 4 + }, + { + "label": "getOrCreateUser()", + "file_type": "code", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L10", + "id": "auth_service_getorcreateuser", + "community": 4 + }, + { + "label": "createApiKey()", + "file_type": "code", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L27", + "id": "auth_service_createapikey", + "community": 4 + }, + { + "label": "verifyApiKey()", + "file_type": "code", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L40", + "id": "auth_service_verifyapikey", + "community": 4 + }, + { + "label": "listApiKeys()", + "file_type": "code", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L58", + "id": "auth_service_listapikeys", + "community": 4 + }, + { + "label": "deleteApiKey()", + "file_type": "code", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L70", + "id": "auth_service_deleteapikey", + "community": 4 + }, + { + "label": "thread.service.ts", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L1", + "id": "thread_service", + "community": 12 + }, + { + "label": "createThread()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L19", + "id": "thread_service_createthread", + "community": 12 + }, + { + "label": "getAllThreads()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L28", + "id": "thread_service_getallthreads", + "community": 12 + }, + { + "label": "getThreadWithCandidates()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L68", + "id": "thread_service_getthreadwithcandidates", + "community": 12 + }, + { + "label": "updateThread()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L124", + "id": "thread_service_updatethread", + "community": 12 + }, + { + "label": "deleteThread()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L145", + "id": "thread_service_deletethread", + "community": 12 + }, + { + "label": "createCandidate()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L170", + "id": "thread_service_createcandidate", + "community": 12 + }, + { + "label": "updateCandidate()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L218", + "id": "thread_service_updatecandidate", + "community": 12 + }, + { + "label": "deleteCandidate()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L261", + "id": "thread_service_deletecandidate", + "community": 12 + }, + { + "label": "reorderCandidates()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L283", + "id": "thread_service_reordercandidates", + "community": 12 + }, + { + "label": "resolveThread()", + "file_type": "code", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L312", + "id": "thread_service_resolvethread", + "community": 12 + }, + { + "label": "category.service.ts", + "file_type": "code", + "source_file": "src/server/services/category.service.ts", + "source_location": "L1", + "id": "category_service", + "community": 4 + }, + { + "label": "getOrCreateUncategorized()", + "file_type": "code", + "source_file": "src/server/services/category.service.ts", + "source_location": "L7", + "id": "category_service_getorcreateuncategorized", + "community": 4 + }, + { + "label": "getAllCategories()", + "file_type": "code", + "source_file": "src/server/services/category.service.ts", + "source_location": "L23", + "id": "category_service_getallcategories", + "community": 4 + }, + { + "label": "createCategory()", + "file_type": "code", + "source_file": "src/server/services/category.service.ts", + "source_location": "L31", + "id": "category_service_createcategory", + "community": 4 + }, + { + "label": "updateCategory()", + "file_type": "code", + "source_file": "src/server/services/category.service.ts", + "source_location": "L47", + "id": "category_service_updatecategory", + "community": 4 + }, + { + "label": "deleteCategory()", + "file_type": "code", + "source_file": "src/server/services/category.service.ts", + "source_location": "L68", + "id": "category_service_deletecategory", + "community": 4 + }, + { + "label": "setup.service.ts", + "file_type": "code", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L1", + "id": "setup_service", + "community": 15 + }, + { + "label": "createSetup()", + "file_type": "code", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L14", + "id": "setup_service_createsetup", + "community": 15 + }, + { + "label": "getAllSetups()", + "file_type": "code", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L23", + "id": "setup_service_getallsetups", + "community": 15 + }, + { + "label": "getSetupWithItems()", + "file_type": "code", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L62", + "id": "setup_service_getsetupwithitems", + "community": 15 + }, + { + "label": "updateSetup()", + "file_type": "code", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L116", + "id": "setup_service_updatesetup", + "community": 15 + }, + { + "label": "deleteSetup()", + "file_type": "code", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L145", + "id": "setup_service_deletesetup", + "community": 15 + }, + { + "label": "syncSetupItems()", + "file_type": "code", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L158", + "id": "setup_service_syncsetupitems", + "community": 15 + }, + { + "label": "updateItemClassification()", + "file_type": "code", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L211", + "id": "setup_service_updateitemclassification", + "community": 15 + }, + { + "label": "removeSetupItem()", + "file_type": "code", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L231", + "id": "setup_service_removesetupitem", + "community": 15 + }, + { + "label": "csv.service.ts", + "file_type": "code", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L1", + "id": "csv_service", + "community": 18 + }, + { + "label": "escapeField()", + "file_type": "code", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L10", + "id": "csv_service_escapefield", + "community": 18 + }, + { + "label": "buildCsvRow()", + "file_type": "code", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L25", + "id": "csv_service_buildcsvrow", + "community": 18 + }, + { + "label": "parseCsvLine()", + "file_type": "code", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L31", + "id": "csv_service_parsecsvline", + "community": 18 + }, + { + "label": "parseCsv()", + "file_type": "code", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L77", + "id": "csv_service_parsecsv", + "community": 18 + }, + { + "label": "exportItemsCsv()", + "file_type": "code", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L88", + "id": "csv_service_exportitemscsv", + "community": 18 + }, + { + "label": "importItemsCsv()", + "file_type": "code", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L141", + "id": "csv_service_importitemscsv", + "community": 18 + }, + { + "label": "profile.service.ts", + "file_type": "code", + "source_file": "src/server/services/profile.service.ts", + "source_location": "L1", + "id": "profile_service", + "community": 23 + }, + { + "label": "updateProfile()", + "file_type": "code", + "source_file": "src/server/services/profile.service.ts", + "source_location": "L15", + "id": "profile_service_updateprofile", + "community": 23 + }, + { + "label": "getPublicProfile()", + "file_type": "code", + "source_file": "src/server/services/profile.service.ts", + "source_location": "L36", + "id": "profile_service_getpublicprofile", + "community": 23 + }, + { + "label": "getPublicSetupWithItems()", + "file_type": "code", + "source_file": "src/server/services/profile.service.ts", + "source_location": "L87", + "id": "profile_service_getpublicsetupwithitems", + "community": 23 + }, + { + "label": "image.service.ts", + "file_type": "code", + "source_file": "src/server/services/image.service.ts", + "source_location": "L1", + "id": "image_service", + "community": 10 + }, + { + "label": "fetchImageFromUrl()", + "file_type": "code", + "source_file": "src/server/services/image.service.ts", + "source_location": "L13", + "id": "image_service_fetchimagefromurl", + "community": 10 + }, + { + "label": "tag.service.ts", + "file_type": "code", + "source_file": "src/server/services/tag.service.ts", + "source_location": "L1", + "id": "tag_service", + "community": 33 + }, + { + "label": "getAllTags()", + "file_type": "code", + "source_file": "src/server/services/tag.service.ts", + "source_location": "L7", + "id": "tag_service_getalltags", + "community": 33 + }, + { + "label": "createMcpServer()", + "file_type": "code", + "source_file": "src/server/mcp/index.ts", + "source_location": "L20", + "id": "index_createmcpserver", + "community": 0 + }, + { + "label": "collection.ts", + "file_type": "code", + "source_file": "src/server/mcp/resources/collection.ts", + "source_location": "L1", + "id": "collection", + "community": 34 + }, + { + "label": "getCollectionSummary()", + "file_type": "code", + "source_file": "src/server/mcp/resources/collection.ts", + "source_location": "L10", + "id": "collection_getcollectionsummary", + "community": 34 + }, + { + "label": "images.ts", + "file_type": "code", + "source_file": "src/server/routes/images.ts", + "source_location": "L1", + "id": "images", + "community": 10 + }, + { + "label": "textResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/images.ts", + "source_location": "L8", + "id": "images_textresult", + "community": 10 + }, + { + "label": "errorResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/images.ts", + "source_location": "L12", + "id": "images_errorresult", + "community": 10 + }, + { + "label": "registerImageTools()", + "file_type": "code", + "source_file": "src/server/mcp/tools/images.ts", + "source_location": "L31", + "id": "images_registerimagetools", + "community": 10 + }, + { + "label": "threads.ts", + "file_type": "code", + "source_file": "src/server/routes/threads.ts", + "source_location": "L1", + "id": "threads", + "community": 8 + }, + { + "label": "textResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/threads.ts", + "source_location": "L20", + "id": "threads_textresult", + "community": 8 + }, + { + "label": "errorResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/threads.ts", + "source_location": "L24", + "id": "threads_errorresult", + "community": 8 + }, + { + "label": "registerThreadTools()", + "file_type": "code", + "source_file": "src/server/mcp/tools/threads.ts", + "source_location": "L117", + "id": "threads_registerthreadtools", + "community": 8 + }, + { + "label": "setups.ts", + "file_type": "code", + "source_file": "src/server/routes/setups.ts", + "source_location": "L1", + "id": "setups", + "community": 8 + }, + { + "label": "textResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/setups.ts", + "source_location": "L17", + "id": "setups_textresult", + "community": 8 + }, + { + "label": "errorResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/setups.ts", + "source_location": "L21", + "id": "setups_errorresult", + "community": 8 + }, + { + "label": "registerSetupTools()", + "file_type": "code", + "source_file": "src/server/mcp/tools/setups.ts", + "source_location": "L63", + "id": "setups_registersetuptools", + "community": 8 + }, + { + "label": "categories.ts", + "file_type": "code", + "source_file": "src/server/routes/categories.ts", + "source_location": "L1", + "id": "categories", + "community": 8 + }, + { + "label": "textResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/categories.ts", + "source_location": "L14", + "id": "categories_textresult", + "community": 8 + }, + { + "label": "errorResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/categories.ts", + "source_location": "L18", + "id": "categories_errorresult", + "community": 8 + }, + { + "label": "registerCategoryTools()", + "file_type": "code", + "source_file": "src/server/mcp/tools/categories.ts", + "source_location": "L40", + "id": "categories_registercategorytools", + "community": 8 + }, + { + "label": "items.ts", + "file_type": "code", + "source_file": "src/server/routes/items.ts", + "source_location": "L1", + "id": "items", + "community": 8 + }, + { + "label": "textResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/items.ts", + "source_location": "L18", + "id": "items_textresult", + "community": 8 + }, + { + "label": "errorResult()", + "file_type": "code", + "source_file": "src/server/mcp/tools/items.ts", + "source_location": "L22", + "id": "items_errorresult", + "community": 8 + }, + { + "label": "registerItemTools()", + "file_type": "code", + "source_file": "src/server/mcp/tools/items.ts", + "source_location": "L95", + "id": "items_registeritemtools", + "community": 8 + }, + { + "label": "totals.ts", + "file_type": "code", + "source_file": "src/server/routes/totals.ts", + "source_location": "L1", + "id": "totals", + "community": 51 + }, + { + "label": "tags.ts", + "file_type": "code", + "source_file": "src/server/routes/tags.ts", + "source_location": "L1", + "id": "tags", + "community": 52 + }, + { + "label": "oauth.ts", + "file_type": "code", + "source_file": "src/server/routes/oauth.ts", + "source_location": "L1", + "id": "oauth", + "community": 24 + }, + { + "label": "escapeHtml()", + "file_type": "code", + "source_file": "src/server/routes/oauth.ts", + "source_location": "L15", + "id": "oauth_escapehtml", + "community": 24 + }, + { + "label": "getBaseUrl()", + "file_type": "code", + "source_file": "src/server/routes/oauth.ts", + "source_location": "L24", + "id": "oauth_getbaseurl", + "community": 24 + }, + { + "label": "renderConsentForm()", + "file_type": "code", + "source_file": "src/server/routes/oauth.ts", + "source_location": "L30", + "id": "oauth_renderconsentform", + "community": 24 + }, + { + "label": "auth.ts", + "file_type": "code", + "source_file": "src/server/middleware/auth.ts", + "source_location": "L1", + "id": "auth", + "community": 4 + }, + { + "label": "global-items.ts", + "file_type": "code", + "source_file": "src/server/routes/global-items.ts", + "source_location": "L1", + "id": "global_items", + "community": 53 + }, + { + "label": "profiles.ts", + "file_type": "code", + "source_file": "src/server/routes/profiles.ts", + "source_location": "L1", + "id": "profiles", + "community": 54 + }, + { + "label": "settings.tsx", + "file_type": "code", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L1", + "id": "settings", + "community": 6 + }, + { + "label": "rateLimit.ts", + "file_type": "code", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L1", + "id": "ratelimit", + "community": 16 + }, + { + "label": "getClientIp()", + "file_type": "code", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L13", + "id": "ratelimit_getclientip", + "community": 16 + }, + { + "label": "cleanup()", + "file_type": "code", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L17", + "id": "ratelimit_cleanup", + "community": 16 + }, + { + "label": "rateLimit()", + "file_type": "code", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L26", + "id": "ratelimit_ratelimit", + "community": 16 + }, + { + "label": "_resetForTesting()", + "file_type": "code", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L51", + "id": "ratelimit_resetfortesting", + "community": 16 + }, + { + "label": "requireAuth()", + "file_type": "code", + "source_file": "src/server/middleware/auth.ts", + "source_location": "L6", + "id": "auth_requireauth", + "community": 4 + }, + { + "label": "schemas.ts", + "file_type": "code", + "source_file": "src/shared/schemas.ts", + "source_location": "L1", + "id": "schemas", + "community": 55 + }, + { + "label": "types.ts", + "file_type": "code", + "source_file": "src/shared/types.ts", + "source_location": "L1", + "id": "types", + "community": 1 + }, + { + "label": "dev-seed-data.ts", + "file_type": "code", + "source_file": "src/db/dev-seed-data.ts", + "source_location": "L1", + "id": "dev_seed_data", + "community": 35 + }, + { + "label": "categoryDisplayName()", + "file_type": "code", + "source_file": "src/db/dev-seed-data.ts", + "source_location": "L419", + "id": "dev_seed_data_categorydisplayname", + "community": 35 + }, + { + "label": "seed.ts", + "file_type": "code", + "source_file": "e2e/seed.ts", + "source_location": "L1", + "id": "seed", + "community": 19 + }, + { + "label": "seedDefaults()", + "file_type": "code", + "source_file": "src/db/seed.ts", + "source_location": "L1", + "id": "seed_seeddefaults", + "community": 19 + }, + { + "label": "schema.ts", + "file_type": "code", + "source_file": "src/db/schema.ts", + "source_location": "L1", + "id": "schema", + "community": 19 + }, + { + "label": "seed-global-items.ts", + "file_type": "code", + "source_file": "src/db/seed-global-items.ts", + "source_location": "L1", + "id": "seed_global_items", + "community": 30 + }, + { + "label": "seedTags()", + "file_type": "code", + "source_file": "src/db/seed-global-items.ts", + "source_location": "L63", + "id": "seed_global_items_seedtags", + "community": 30 + }, + { + "label": "seedGlobalItems()", + "file_type": "code", + "source_file": "src/db/seed-global-items.ts", + "source_location": "L76", + "id": "seed_global_items_seedglobalitems", + "community": 30 + }, + { + "label": "migrate.ts", + "file_type": "code", + "source_file": "src/db/migrate.ts", + "source_location": "L1", + "id": "migrate", + "community": 56 + }, + { + "label": "dev-seed.ts", + "file_type": "code", + "source_file": "src/db/dev-seed.ts", + "source_location": "L1", + "id": "dev_seed", + "community": 36 + }, + { + "label": "seedDevData()", + "file_type": "code", + "source_file": "src/db/dev-seed.ts", + "source_location": "L21", + "id": "dev_seed_seeddevdata", + "community": 36 + }, + { + "label": "main.tsx", + "file_type": "code", + "source_file": "src/client/main.tsx", + "source_location": "L1", + "id": "main", + "community": 0 + }, + { + "label": "routeTree.gen.ts", + "file_type": "code", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L1", + "id": "routetree_gen", + "community": 0 + }, + { + "label": "iconData.tsx", + "file_type": "code", + "source_file": "src/client/lib/iconData.tsx", + "source_location": "L1", + "id": "icondata", + "community": 0 + }, + { + "label": "toPascalCase()", + "file_type": "code", + "source_file": "src/client/lib/iconData.tsx", + "source_location": "L225", + "id": "icondata_topascalcase", + "community": 0 + }, + { + "label": "LucideIcon()", + "file_type": "code", + "source_file": "src/client/lib/iconData.tsx", + "source_location": "L240", + "id": "icondata_lucideicon", + "community": 0 + }, + { + "label": "impactDeltas.ts", + "file_type": "code", + "source_file": "src/client/lib/impactDeltas.ts", + "source_location": "L1", + "id": "impactdeltas", + "community": 0 + }, + { + "label": "computeImpactDeltas()", + "file_type": "code", + "source_file": "src/client/lib/impactDeltas.ts", + "source_location": "L29", + "id": "impactdeltas_computeimpactdeltas", + "community": 0 + }, + { + "label": "formatters.ts", + "file_type": "code", + "source_file": "src/client/lib/formatters.ts", + "source_location": "L1", + "id": "formatters", + "community": 6 + }, + { + "label": "formatWeight()", + "file_type": "code", + "source_file": "src/client/lib/formatters.ts", + "source_location": "L7", + "id": "formatters_formatweight", + "community": 6 + }, + { + "label": "formatPrice()", + "file_type": "code", + "source_file": "src/client/lib/formatters.ts", + "source_location": "L35", + "id": "formatters_formatprice", + "community": 6 + }, + { + "label": "api.ts", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L1", + "id": "api", + "community": 2 + }, + { + "label": "ApiError", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L1", + "id": "api_apierror", + "community": 2 + }, + { + "label": ".constructor()", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L2", + "id": "api_apierror_constructor", + "community": 2 + }, + { + "label": "handleResponse()", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L11", + "id": "api_handleresponse", + "community": 2 + }, + { + "label": "apiGet()", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L25", + "id": "api_apiget", + "community": 2 + }, + { + "label": "apiPost()", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L30", + "id": "api_apipost", + "community": 2 + }, + { + "label": "apiPut()", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L39", + "id": "api_apiput", + "community": 2 + }, + { + "label": "apiPatch()", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L48", + "id": "api_apipatch", + "community": 2 + }, + { + "label": "apiDelete()", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L57", + "id": "api_apidelete", + "community": 2 + }, + { + "label": "apiUpload()", + "file_type": "code", + "source_file": "src/client/lib/api.ts", + "source_location": "L62", + "id": "api_apiupload", + "community": 2 + }, + { + "label": "useItems.ts", + "file_type": "code", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L1", + "id": "useitems", + "community": 1 + }, + { + "label": "useItems()", + "file_type": "code", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L45", + "id": "useitems_useitems", + "community": 1 + }, + { + "label": "useItem()", + "file_type": "code", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L52", + "id": "useitems_useitem", + "community": 1 + }, + { + "label": "useCreateItem()", + "file_type": "code", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L62", + "id": "useitems_usecreateitem", + "community": 1 + }, + { + "label": "useUpdateItem()", + "file_type": "code", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L74", + "id": "useitems_useupdateitem", + "community": 1 + }, + { + "label": "useDeleteItem()", + "file_type": "code", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L87", + "id": "useitems_usedeleteitem", + "community": 1 + }, + { + "label": "useDuplicateItem()", + "file_type": "code", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L100", + "id": "useitems_useduplicateitem", + "community": 1 + }, + { + "label": "useExportItems()", + "file_type": "code", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L111", + "id": "useitems_useexportitems", + "community": 1 + }, + { + "label": "useImportItems()", + "file_type": "code", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L123", + "id": "useitems_useimportitems", + "community": 1 + }, + { + "label": "useCandidates.ts", + "file_type": "code", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L1", + "id": "usecandidates", + "community": 1 + }, + { + "label": "useCreateCandidate()", + "file_type": "code", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L22", + "id": "usecandidates_usecreatecandidate", + "community": 1 + }, + { + "label": "useUpdateCandidate()", + "file_type": "code", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L34", + "id": "usecandidates_useupdatecandidate", + "community": 1 + }, + { + "label": "useDeleteCandidate()", + "file_type": "code", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L52", + "id": "usecandidates_usedeletecandidate", + "community": 1 + }, + { + "label": "useReorderCandidates()", + "file_type": "code", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L66", + "id": "usecandidates_usereordercandidates", + "community": 1 + }, + { + "label": "useAuth.ts", + "file_type": "code", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L1", + "id": "useauth", + "community": 7 + }, + { + "label": "useAuth()", + "file_type": "code", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L9", + "id": "useauth_useauth", + "community": 7 + }, + { + "label": "useLogout()", + "file_type": "code", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L18", + "id": "useauth_uselogout", + "community": 7 + }, + { + "label": "useApiKeys()", + "file_type": "code", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L39", + "id": "useauth_useapikeys", + "community": 7 + }, + { + "label": "useCreateApiKey()", + "file_type": "code", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L46", + "id": "useauth_usecreateapikey", + "community": 7 + }, + { + "label": "useDeleteApiKey()", + "file_type": "code", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L57", + "id": "useauth_usedeleteapikey", + "community": 7 + }, + { + "label": "useProfile.ts", + "file_type": "code", + "source_file": "src/client/hooks/useProfile.ts", + "source_location": "L1", + "id": "useprofile", + "community": 2 + }, + { + "label": "usePublicProfile()", + "file_type": "code", + "source_file": "src/client/hooks/useProfile.ts", + "source_location": "L25", + "id": "useprofile_usepublicprofile", + "community": 2 + }, + { + "label": "useUpdateProfile()", + "file_type": "code", + "source_file": "src/client/hooks/useProfile.ts", + "source_location": "L33", + "id": "useprofile_useupdateprofile", + "community": 2 + }, + { + "label": "useTotals.ts", + "file_type": "code", + "source_file": "src/client/hooks/useTotals.ts", + "source_location": "L1", + "id": "usetotals", + "community": 0 + }, + { + "label": "useTotals()", + "file_type": "code", + "source_file": "src/client/hooks/useTotals.ts", + "source_location": "L26", + "id": "usetotals_usetotals", + "community": 0 + }, + { + "label": "useSetups.ts", + "file_type": "code", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L1", + "id": "usesetups", + "community": 0 + }, + { + "label": "useSetups()", + "file_type": "code", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L50", + "id": "usesetups_usesetups", + "community": 0 + }, + { + "label": "useSetup()", + "file_type": "code", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L57", + "id": "usesetups_usesetup", + "community": 0 + }, + { + "label": "useCreateSetup()", + "file_type": "code", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L67", + "id": "usesetups_usecreatesetup", + "community": 0 + }, + { + "label": "useUpdateSetup()", + "file_type": "code", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L78", + "id": "usesetups_useupdatesetup", + "community": 0 + }, + { + "label": "useDeleteSetup()", + "file_type": "code", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L89", + "id": "usesetups_usedeletesetup", + "community": 0 + }, + { + "label": "useSyncSetupItems()", + "file_type": "code", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L100", + "id": "usesetups_usesyncsetupitems", + "community": 0 + }, + { + "label": "useRemoveSetupItem()", + "file_type": "code", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L111", + "id": "usesetups_useremovesetupitem", + "community": 0 + }, + { + "label": "useUpdateItemClassification()", + "file_type": "code", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L122", + "id": "usesetups_useupdateitemclassification", + "community": 0 + }, + { + "label": "useFormatters.ts", + "file_type": "code", + "source_file": "src/client/hooks/useFormatters.ts", + "source_location": "L1", + "id": "useformatters", + "community": 0 + }, + { + "label": "useFormatters()", + "file_type": "code", + "source_file": "src/client/hooks/useFormatters.ts", + "source_location": "L5", + "id": "useformatters_useformatters", + "community": 0 + }, + { + "label": "useImpactDeltas.ts", + "file_type": "code", + "source_file": "src/client/hooks/useImpactDeltas.ts", + "source_location": "L1", + "id": "useimpactdeltas", + "community": 0 + }, + { + "label": "useImpactDeltas()", + "file_type": "code", + "source_file": "src/client/hooks/useImpactDeltas.ts", + "source_location": "L13", + "id": "useimpactdeltas_useimpactdeltas", + "community": 0 + }, + { + "label": "useSettings.ts", + "file_type": "code", + "source_file": "src/client/hooks/useSettings.ts", + "source_location": "L1", + "id": "usesettings", + "community": 6 + }, + { + "label": "useSetting()", + "file_type": "code", + "source_file": "src/client/hooks/useSettings.ts", + "source_location": "L9", + "id": "usesettings_usesetting", + "community": 6 + }, + { + "label": "useUpdateSetting()", + "file_type": "code", + "source_file": "src/client/hooks/useSettings.ts", + "source_location": "L24", + "id": "usesettings_useupdatesetting", + "community": 6 + }, + { + "label": "useOnboardingComplete()", + "file_type": "code", + "source_file": "src/client/hooks/useSettings.ts", + "source_location": "L35", + "id": "usesettings_useonboardingcomplete", + "community": 6 + }, + { + "label": "useWeightUnit.ts", + "file_type": "code", + "source_file": "src/client/hooks/useWeightUnit.ts", + "source_location": "L1", + "id": "useweightunit", + "community": 6 + }, + { + "label": "useWeightUnit()", + "file_type": "code", + "source_file": "src/client/hooks/useWeightUnit.ts", + "source_location": "L6", + "id": "useweightunit_useweightunit", + "community": 6 + }, + { + "label": "useCategories.ts", + "file_type": "code", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L1", + "id": "usecategories", + "community": 1 + }, + { + "label": "useCategories()", + "file_type": "code", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L5", + "id": "usecategories_usecategories", + "community": 1 + }, + { + "label": "useCreateCategory()", + "file_type": "code", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L12", + "id": "usecategories_usecreatecategory", + "community": 1 + }, + { + "label": "useUpdateCategory()", + "file_type": "code", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L23", + "id": "usecategories_useupdatecategory", + "community": 1 + }, + { + "label": "useDeleteCategory()", + "file_type": "code", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L42", + "id": "usecategories_usedeletecategory", + "community": 1 + }, + { + "label": "useCurrency.ts", + "file_type": "code", + "source_file": "src/client/hooks/useCurrency.ts", + "source_location": "L1", + "id": "usecurrency", + "community": 6 + }, + { + "label": "useCurrency()", + "file_type": "code", + "source_file": "src/client/hooks/useCurrency.ts", + "source_location": "L6", + "id": "usecurrency_usecurrency", + "community": 6 + }, + { + "label": "useThreads.ts", + "file_type": "code", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L1", + "id": "usethreads", + "community": 13 + }, + { + "label": "useThreads()", + "file_type": "code", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L49", + "id": "usethreads_usethreads", + "community": 13 + }, + { + "label": "useThread()", + "file_type": "code", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L59", + "id": "usethreads_usethread", + "community": 13 + }, + { + "label": "useCreateThread()", + "file_type": "code", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L69", + "id": "usethreads_usecreatethread", + "community": 13 + }, + { + "label": "useUpdateThread()", + "file_type": "code", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L80", + "id": "usethreads_useupdatethread", + "community": 13 + }, + { + "label": "useDeleteThread()", + "file_type": "code", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L91", + "id": "usethreads_usedeletethread", + "community": 13 + }, + { + "label": "useResolveThread()", + "file_type": "code", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L102", + "id": "usethreads_useresolvethread", + "community": 13 + }, + { + "label": "useTags.ts", + "file_type": "code", + "source_file": "src/client/hooks/useTags.ts", + "source_location": "L1", + "id": "usetags", + "community": 2 + }, + { + "label": "useTags()", + "file_type": "code", + "source_file": "src/client/hooks/useTags.ts", + "source_location": "L9", + "id": "usetags_usetags", + "community": 2 + }, + { + "label": "useGlobalItems.ts", + "file_type": "code", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L1", + "id": "useglobalitems", + "community": 2 + }, + { + "label": "useGlobalItems()", + "file_type": "code", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L26", + "id": "useglobalitems_useglobalitems", + "community": 2 + }, + { + "label": "useGlobalItem()", + "file_type": "code", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L39", + "id": "useglobalitems_useglobalitem", + "community": 2 + }, + { + "label": "useLinkItem()", + "file_type": "code", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L49", + "id": "useglobalitems_uselinkitem", + "community": 2 + }, + { + "label": "useUnlinkItem()", + "file_type": "code", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L67", + "id": "useglobalitems_useunlinkitem", + "community": 2 + }, + { + "label": "uiStore.ts", + "file_type": "code", + "source_file": "src/client/stores/uiStore.ts", + "source_location": "L1", + "id": "uistore", + "community": 0 + }, + { + "label": "ApiKeySection()", + "file_type": "code", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L30", + "id": "settings_apikeysection", + "community": 6 + }, + { + "label": "handleFileChange()", + "file_type": "code", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L126", + "id": "settings_handlefilechange", + "community": 6 + }, + { + "label": "__root.tsx", + "file_type": "code", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L1", + "id": "root", + "community": 7 + }, + { + "label": "RootErrorBoundary()", + "file_type": "code", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L32", + "id": "root_rooterrorboundary", + "community": 7 + }, + { + "label": "handleDelete()", + "file_type": "code", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L223", + "id": "root_handledelete", + "community": 7 + }, + { + "label": "handleResolve()", + "file_type": "code", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L285", + "id": "root_handleresolve", + "community": 7 + }, + { + "label": "login.tsx", + "file_type": "code", + "source_file": "src/client/routes/login.tsx", + "source_location": "L1", + "id": "login", + "community": 7 + }, + { + "label": "LoginPage()", + "file_type": "code", + "source_file": "src/client/routes/login.tsx", + "source_location": "L9", + "id": "login_loginpage", + "community": 7 + }, + { + "label": "$globalItemId.tsx", + "file_type": "code", + "source_file": "src/client/routes/global-items/$globalItemId.tsx", + "source_location": "L1", + "id": "globalitemid", + "community": 0 + }, + { + "label": "$setupId.tsx", + "file_type": "code", + "source_file": "src/client/routes/setups/$setupId.tsx", + "source_location": "L1", + "id": "setupid", + "community": 0 + }, + { + "label": "$itemId.tsx", + "file_type": "code", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L1", + "id": "itemid", + "community": 1 + }, + { + "label": "enterEditMode()", + "file_type": "code", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L59", + "id": "itemid_entereditmode", + "community": 1 + }, + { + "label": "cancelEdit()", + "file_type": "code", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L76", + "id": "itemid_canceledit", + "community": 1 + }, + { + "label": "handleSave()", + "file_type": "code", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L80", + "id": "itemid_handlesave", + "community": 1 + }, + { + "label": "handleDuplicate()", + "file_type": "code", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L119", + "id": "itemid_handleduplicate", + "community": 1 + }, + { + "label": "handleDelete()", + "file_type": "code", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L131", + "id": "itemid_handledelete", + "community": 1 + }, + { + "label": "$candidateId.tsx", + "file_type": "code", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L1", + "id": "candidateid", + "community": 0 + }, + { + "label": "enterEditMode()", + "file_type": "code", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L60", + "id": "candidateid_entereditmode", + "community": 0 + }, + { + "label": "cancelEdit()", + "file_type": "code", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L81", + "id": "candidateid_canceledit", + "community": 0 + }, + { + "label": "validate()", + "file_type": "code", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L86", + "id": "candidateid_validate", + "community": 0 + }, + { + "label": "handleSave()", + "file_type": "code", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L114", + "id": "candidateid_handlesave", + "community": 0 + }, + { + "label": "$userId.tsx", + "file_type": "code", + "source_file": "src/client/routes/users/$userId.tsx", + "source_location": "L1", + "id": "userid", + "community": 2 + }, + { + "label": "LinkToGlobalItem.tsx", + "file_type": "code", + "source_file": "src/client/components/LinkToGlobalItem.tsx", + "source_location": "L1", + "id": "linktoglobalitem", + "community": 2 + }, + { + "label": "LinkToGlobalItem()", + "file_type": "code", + "source_file": "src/client/components/LinkToGlobalItem.tsx", + "source_location": "L15", + "id": "linktoglobalitem_linktoglobalitem", + "community": 2 + }, + { + "label": "ItemForm.tsx", + "file_type": "code", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L1", + "id": "itemform", + "community": 1 + }, + { + "label": "validate()", + "file_type": "code", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L66", + "id": "itemform_validate", + "community": 1 + }, + { + "label": "handleSubmit()", + "file_type": "code", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L94", + "id": "itemform_handlesubmit", + "community": 1 + }, + { + "label": "ItemCard.tsx", + "file_type": "code", + "source_file": "src/client/components/ItemCard.tsx", + "source_location": "L1", + "id": "itemcard", + "community": 0 + }, + { + "label": "IconPicker.tsx", + "file_type": "code", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L1", + "id": "iconpicker", + "community": 6 + }, + { + "label": "stopProp()", + "file_type": "code", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L47", + "id": "iconpicker_stopprop", + "community": 6 + }, + { + "label": "handleClickOutside()", + "file_type": "code", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L57", + "id": "iconpicker_handleclickoutside", + "community": 6 + }, + { + "label": "handleKeyDown()", + "file_type": "code", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L75", + "id": "iconpicker_handlekeydown", + "community": 6 + }, + { + "label": "handleSelect()", + "file_type": "code", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L110", + "id": "iconpicker_handleselect", + "community": 6 + }, + { + "label": "CatalogSearchOverlay.tsx", + "file_type": "code", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L1", + "id": "catalogsearchoverlay", + "community": 2 + }, + { + "label": "toggleTag()", + "file_type": "code", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L97", + "id": "catalogsearchoverlay_toggletag", + "community": 2 + }, + { + "label": "removeTag()", + "file_type": "code", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L105", + "id": "catalogsearchoverlay_removetag", + "community": 2 + }, + { + "label": "handleEnterManualMode()", + "file_type": "code", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L109", + "id": "catalogsearchoverlay_handleentermanualmode", + "community": 2 + }, + { + "label": "handleManualSuccess()", + "file_type": "code", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L113", + "id": "catalogsearchoverlay_handlemanualsuccess", + "community": 2 + }, + { + "label": "handleAddAnother()", + "file_type": "code", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L117", + "id": "catalogsearchoverlay_handleaddanother", + "community": 2 + }, + { + "label": "handleCardClick()", + "file_type": "code", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L125", + "id": "catalogsearchoverlay_handlecardclick", + "community": 2 + }, + { + "label": "handleAddStub()", + "file_type": "code", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L133", + "id": "catalogsearchoverlay_handleaddstub", + "community": 2 + }, + { + "label": "CategoryPicker.tsx", + "file_type": "code", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L1", + "id": "categorypicker", + "community": 1 + }, + { + "label": "handleClickOutside()", + "file_type": "code", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L39", + "id": "categorypicker_handleclickoutside", + "community": 1 + }, + { + "label": "handleSelect()", + "file_type": "code", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L59", + "id": "categorypicker_handleselect", + "community": 1 + }, + { + "label": "handleStartCreate()", + "file_type": "code", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L66", + "id": "categorypicker_handlestartcreate", + "community": 1 + }, + { + "label": "handleConfirmCreate()", + "file_type": "code", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L70", + "id": "categorypicker_handleconfirmcreate", + "community": 1 + }, + { + "label": "handleKeyDown()", + "file_type": "code", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L85", + "id": "categorypicker_handlekeydown", + "community": 1 + }, + { + "label": "AddToCollectionModal.tsx", + "file_type": "code", + "source_file": "src/client/components/AddToCollectionModal.tsx", + "source_location": "L1", + "id": "addtocollectionmodal", + "community": 1 + }, + { + "label": "AddToCollectionModal()", + "file_type": "code", + "source_file": "src/client/components/AddToCollectionModal.tsx", + "source_location": "L8", + "id": "addtocollectionmodal_addtocollectionmodal", + "community": 1 + }, + { + "label": "SlideOutPanel.tsx", + "file_type": "code", + "source_file": "src/client/components/SlideOutPanel.tsx", + "source_location": "L1", + "id": "slideoutpanel", + "community": 0 + }, + { + "label": "handleKeyDown()", + "file_type": "code", + "source_file": "src/client/components/SlideOutPanel.tsx", + "source_location": "L18", + "id": "slideoutpanel_handlekeydown", + "community": 0 + }, + { + "label": "ThreadCard.tsx", + "file_type": "code", + "source_file": "src/client/components/ThreadCard.tsx", + "source_location": "L1", + "id": "threadcard", + "community": 0 + }, + { + "label": "formatDate()", + "file_type": "code", + "source_file": "src/client/components/ThreadCard.tsx", + "source_location": "L17", + "id": "threadcard_formatdate", + "community": 0 + }, + { + "label": "formatPriceRange()", + "file_type": "code", + "source_file": "src/client/components/ThreadCard.tsx", + "source_location": "L36", + "id": "threadcard_formatpricerange", + "community": 0 + }, + { + "label": "AddToThreadModal.tsx", + "file_type": "code", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L1", + "id": "addtothreadmodal", + "community": 2 + }, + { + "label": "handleClose()", + "file_type": "code", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L84", + "id": "addtothreadmodal_handleclose", + "community": 2 + }, + { + "label": "handleSelectChange()", + "file_type": "code", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L88", + "id": "addtothreadmodal_handleselectchange", + "community": 2 + }, + { + "label": "handleAddToExistingThread()", + "file_type": "code", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L96", + "id": "addtothreadmodal_handleaddtoexistingthread", + "community": 2 + }, + { + "label": "handleCreateThreadAndAdd()", + "file_type": "code", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L123", + "id": "addtothreadmodal_handlecreatethreadandadd", + "community": 2 + }, + { + "label": "handleSubmit()", + "file_type": "code", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L151", + "id": "addtothreadmodal_handlesubmit", + "community": 2 + }, + { + "label": "CandidateCard.tsx", + "file_type": "code", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L1", + "id": "candidatecard", + "community": 0 + }, + { + "label": "if()", + "file_type": "code", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L98", + "id": "candidatecard_if", + "community": 0 + }, + { + "label": "ExternalLinkDialog.tsx", + "file_type": "code", + "source_file": "src/client/components/ExternalLinkDialog.tsx", + "source_location": "L1", + "id": "externallinkdialog", + "community": 7 + }, + { + "label": "handleKeyDown()", + "file_type": "code", + "source_file": "src/client/components/ExternalLinkDialog.tsx", + "source_location": "L9", + "id": "externallinkdialog_handlekeydown", + "community": 7 + }, + { + "label": "handleContinue()", + "file_type": "code", + "source_file": "src/client/components/ExternalLinkDialog.tsx", + "source_location": "L20", + "id": "externallinkdialog_handlecontinue", + "community": 7 + }, + { + "label": "DashboardCard.tsx", + "file_type": "code", + "source_file": "src/client/components/DashboardCard.tsx", + "source_location": "L1", + "id": "dashboardcard", + "community": 0 + }, + { + "label": "DashboardCard()", + "file_type": "code", + "source_file": "src/client/components/DashboardCard.tsx", + "source_location": "L13", + "id": "dashboardcard_dashboardcard", + "community": 0 + }, + { + "label": "SetupsView.tsx", + "file_type": "code", + "source_file": "src/client/components/SetupsView.tsx", + "source_location": "L1", + "id": "setupsview", + "community": 0 + }, + { + "label": "handleCreateSetup()", + "file_type": "code", + "source_file": "src/client/components/SetupsView.tsx", + "source_location": "L10", + "id": "setupsview_handlecreatesetup", + "community": 0 + }, + { + "label": "ItemPicker.tsx", + "file_type": "code", + "source_file": "src/client/components/ItemPicker.tsx", + "source_location": "L1", + "id": "itempicker", + "community": 0 + }, + { + "label": "ItemPicker()", + "file_type": "code", + "source_file": "src/client/components/ItemPicker.tsx", + "source_location": "L15", + "id": "itempicker_itempicker", + "community": 0 + }, + { + "label": "StatusBadge.tsx", + "file_type": "code", + "source_file": "src/client/components/StatusBadge.tsx", + "source_location": "L1", + "id": "statusbadge", + "community": 0 + }, + { + "label": "handleClickOutside()", + "file_type": "code", + "source_file": "src/client/components/StatusBadge.tsx", + "source_location": "L26", + "id": "statusbadge_handleclickoutside", + "community": 0 + }, + { + "label": "handleEscape()", + "file_type": "code", + "source_file": "src/client/components/StatusBadge.tsx", + "source_location": "L35", + "id": "statusbadge_handleescape", + "community": 0 + }, + { + "label": "ManualEntryForm.tsx", + "file_type": "code", + "source_file": "src/client/components/ManualEntryForm.tsx", + "source_location": "L1", + "id": "manualentryform", + "community": 1 + }, + { + "label": "ManualEntryForm()", + "file_type": "code", + "source_file": "src/client/components/ManualEntryForm.tsx", + "source_location": "L12", + "id": "manualentryform_manualentryform", + "community": 1 + }, + { + "label": "CategoryFilterDropdown.tsx", + "file_type": "code", + "source_file": "src/client/components/CategoryFilterDropdown.tsx", + "source_location": "L1", + "id": "categoryfilterdropdown", + "community": 0 + }, + { + "label": "handleClickOutside()", + "file_type": "code", + "source_file": "src/client/components/CategoryFilterDropdown.tsx", + "source_location": "L28", + "id": "categoryfilterdropdown_handleclickoutside", + "community": 0 + }, + { + "label": "handleKeyDown()", + "file_type": "code", + "source_file": "src/client/components/CategoryFilterDropdown.tsx", + "source_location": "L43", + "id": "categoryfilterdropdown_handlekeydown", + "community": 0 + }, + { + "label": "handleSelect()", + "file_type": "code", + "source_file": "src/client/components/CategoryFilterDropdown.tsx", + "source_location": "L60", + "id": "categoryfilterdropdown_handleselect", + "community": 0 + }, + { + "label": "ComparisonTable.tsx", + "file_type": "code", + "source_file": "src/client/components/ComparisonTable.tsx", + "source_location": "L1", + "id": "comparisontable", + "community": 0 + }, + { + "label": "OnboardingWizard.tsx", + "file_type": "code", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L1", + "id": "onboardingwizard", + "community": 6 + }, + { + "label": "handleSkip()", + "file_type": "code", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L33", + "id": "onboardingwizard_handleskip", + "community": 6 + }, + { + "label": "handleCreateCategory()", + "file_type": "code", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L40", + "id": "onboardingwizard_handlecreatecategory", + "community": 6 + }, + { + "label": "handleCreateItem()", + "file_type": "code", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L61", + "id": "onboardingwizard_handlecreateitem", + "community": 6 + }, + { + "label": "handleDone()", + "file_type": "code", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L85", + "id": "onboardingwizard_handledone", + "community": 6 + }, + { + "label": "CategoryHeader.tsx", + "file_type": "code", + "source_file": "src/client/components/CategoryHeader.tsx", + "source_location": "L1", + "id": "categoryheader", + "community": 0 + }, + { + "label": "handleSave()", + "file_type": "code", + "source_file": "src/client/components/CategoryHeader.tsx", + "source_location": "L33", + "id": "categoryheader_handlesave", + "community": 0 + }, + { + "label": "handleDelete()", + "file_type": "code", + "source_file": "src/client/components/CategoryHeader.tsx", + "source_location": "L41", + "id": "categoryheader_handledelete", + "community": 0 + }, + { + "label": "ThreadTabs.tsx", + "file_type": "code", + "source_file": "src/client/components/ThreadTabs.tsx", + "source_location": "L1", + "id": "threadtabs", + "community": 37 + }, + { + "label": "CollectionTabs()", + "file_type": "code", + "source_file": "src/client/components/ThreadTabs.tsx", + "source_location": "L14", + "id": "threadtabs_collectiontabs", + "community": 37 + }, + { + "label": "SetupCard.tsx", + "file_type": "code", + "source_file": "src/client/components/SetupCard.tsx", + "source_location": "L1", + "id": "setupcard", + "community": 0 + }, + { + "label": "SetupCard()", + "file_type": "code", + "source_file": "src/client/components/SetupCard.tsx", + "source_location": "L13", + "id": "setupcard_setupcard", + "community": 0 + }, + { + "label": "ClassificationBadge.tsx", + "file_type": "code", + "source_file": "src/client/components/ClassificationBadge.tsx", + "source_location": "L1", + "id": "classificationbadge", + "community": 0 + }, + { + "label": "ClassificationBadge()", + "file_type": "code", + "source_file": "src/client/components/ClassificationBadge.tsx", + "source_location": "L12", + "id": "classificationbadge_classificationbadge", + "community": 0 + }, + { + "label": "CreateThreadModal.tsx", + "file_type": "code", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L1", + "id": "createthreadmodal", + "community": 13 + }, + { + "label": "resetForm()", + "file_type": "code", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L26", + "id": "createthreadmodal_resetform", + "community": 13 + }, + { + "label": "handleClose()", + "file_type": "code", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L32", + "id": "createthreadmodal_handleclose", + "community": 13 + }, + { + "label": "handleSubmit()", + "file_type": "code", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L37", + "id": "createthreadmodal_handlesubmit", + "community": 13 + }, + { + "label": "CandidateForm.tsx", + "file_type": "code", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L1", + "id": "candidateform", + "community": 1 + }, + { + "label": "validate()", + "file_type": "code", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L77", + "id": "candidateform_validate", + "community": 1 + }, + { + "label": "handleSubmit()", + "file_type": "code", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L105", + "id": "candidateform_handlesubmit", + "community": 1 + }, + { + "label": "PlanningView.tsx", + "file_type": "code", + "source_file": "src/client/components/PlanningView.tsx", + "source_location": "L1", + "id": "planningview", + "community": 0 + }, + { + "label": "ConfirmDialog.tsx", + "file_type": "code", + "source_file": "src/client/components/ConfirmDialog.tsx", + "source_location": "L1", + "id": "confirmdialog", + "community": 7 + }, + { + "label": "handleDelete()", + "file_type": "code", + "source_file": "src/client/components/ConfirmDialog.tsx", + "source_location": "L15", + "id": "confirmdialog_handledelete", + "community": 7 + }, + { + "label": "FabMenu.tsx", + "file_type": "code", + "source_file": "src/client/components/FabMenu.tsx", + "source_location": "L1", + "id": "fabmenu", + "community": 7 + }, + { + "label": "handleFabClick()", + "file_type": "code", + "source_file": "src/client/components/FabMenu.tsx", + "source_location": "L51", + "id": "fabmenu_handlefabclick", + "community": 7 + }, + { + "label": "CollectionView.tsx", + "file_type": "code", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L1", + "id": "collectionview", + "community": 0 + }, + { + "label": "ImageUpload.tsx", + "file_type": "code", + "source_file": "src/client/components/ImageUpload.tsx", + "source_location": "L1", + "id": "imageupload", + "community": 1 + }, + { + "label": "handleFileChange()", + "file_type": "code", + "source_file": "src/client/components/ImageUpload.tsx", + "source_location": "L23", + "id": "imageupload_handlefilechange", + "community": 1 + }, + { + "label": "handleRemove()", + "file_type": "code", + "source_file": "src/client/components/ImageUpload.tsx", + "source_location": "L57", + "id": "imageupload_handleremove", + "community": 1 + }, + { + "label": "ProfileSection.tsx", + "file_type": "code", + "source_file": "src/client/components/ProfileSection.tsx", + "source_location": "L1", + "id": "profilesection", + "community": 2 + }, + { + "label": "handleSave()", + "file_type": "code", + "source_file": "src/client/components/ProfileSection.tsx", + "source_location": "L32", + "id": "profilesection_handlesave", + "community": 2 + }, + { + "label": "handleAvatarUpload()", + "file_type": "code", + "source_file": "src/client/components/ProfileSection.tsx", + "source_location": "L47", + "id": "profilesection_handleavatarupload", + "community": 2 + }, + { + "label": "PublicSetupCard.tsx", + "file_type": "code", + "source_file": "src/client/components/PublicSetupCard.tsx", + "source_location": "L1", + "id": "publicsetupcard", + "community": 2 + }, + { + "label": "PublicSetupCard()", + "file_type": "code", + "source_file": "src/client/components/PublicSetupCard.tsx", + "source_location": "L11", + "id": "publicsetupcard_publicsetupcard", + "community": 2 + }, + { + "label": "UserMenu.tsx", + "file_type": "code", + "source_file": "src/client/components/UserMenu.tsx", + "source_location": "L1", + "id": "usermenu", + "community": 7 + }, + { + "label": "handleClick()", + "file_type": "code", + "source_file": "src/client/components/UserMenu.tsx", + "source_location": "L13", + "id": "usermenu_handleclick", + "community": 7 + }, + { + "label": "CandidateListItem.tsx", + "file_type": "code", + "source_file": "src/client/components/CandidateListItem.tsx", + "source_location": "L1", + "id": "candidatelistitem", + "community": 0 + }, + { + "label": "RankBadge()", + "file_type": "code", + "source_file": "src/client/components/CandidateListItem.tsx", + "source_location": "L42", + "id": "candidatelistitem_rankbadge", + "community": 0 + }, + { + "label": "GlobalItemCard.tsx", + "file_type": "code", + "source_file": "src/client/components/GlobalItemCard.tsx", + "source_location": "L1", + "id": "globalitemcard", + "community": 0 + }, + { + "label": "GlobalItemCard()", + "file_type": "code", + "source_file": "src/client/components/GlobalItemCard.tsx", + "source_location": "L14", + "id": "globalitemcard_globalitemcard", + "community": 0 + }, + { + "label": "SetupImpactSelector.tsx", + "file_type": "code", + "source_file": "src/client/components/SetupImpactSelector.tsx", + "source_location": "L1", + "id": "setupimpactselector", + "community": 0 + }, + { + "label": "SetupImpactSelector()", + "file_type": "code", + "source_file": "src/client/components/SetupImpactSelector.tsx", + "source_location": "L8", + "id": "setupimpactselector_setupimpactselector", + "community": 0 + }, + { + "label": "TotalsBar.tsx", + "file_type": "code", + "source_file": "src/client/components/TotalsBar.tsx", + "source_location": "L1", + "id": "totalsbar", + "community": 7 + }, + { + "label": "WeightSummaryCard.tsx", + "file_type": "code", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L1", + "id": "weightsummarycard", + "community": 0 + }, + { + "label": "buildCategoryChartData()", + "file_type": "code", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L54", + "id": "weightsummarycard_buildcategorychartdata", + "community": 0 + }, + { + "label": "buildClassificationChartData()", + "file_type": "code", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L76", + "id": "weightsummarycard_buildclassificationchartdata", + "community": 0 + }, + { + "label": "CustomTooltip()", + "file_type": "code", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L99", + "id": "weightsummarycard_customtooltip", + "community": 0 + }, + { + "label": "ImpactDeltaBadge.tsx", + "file_type": "code", + "source_file": "src/client/components/ImpactDeltaBadge.tsx", + "source_location": "L1", + "id": "impactdeltabadge", + "community": 0 + }, + { + "label": "ImpactDeltaBadge()", + "file_type": "code", + "source_file": "src/client/components/ImpactDeltaBadge.tsx", + "source_location": "L9", + "id": "impactdeltabadge_impactdeltabadge", + "community": 0 + }, + { + "label": "impactDeltas.test.ts", + "file_type": "code", + "source_file": "tests/lib/impactDeltas.test.ts", + "source_location": "L1", + "id": "impactdeltas_test", + "community": 0 + }, + { + "label": "params.test.ts", + "file_type": "code", + "source_file": "tests/routes/params.test.ts", + "source_location": "L1", + "id": "params_test", + "community": 8 + }, + { + "label": "formatters.test.ts", + "file_type": "code", + "source_file": "tests/lib/formatters.test.ts", + "source_location": "L1", + "id": "formatters_test", + "community": 6 + }, + { + "label": "category.service.test.ts", + "file_type": "code", + "source_file": "tests/services/category.service.test.ts", + "source_location": "L1", + "id": "category_service_test", + "community": 57 + }, + { + "label": "item.service.test.ts", + "file_type": "code", + "source_file": "tests/services/item.service.test.ts", + "source_location": "L1", + "id": "item_service_test", + "community": 38 + }, + { + "label": "insertGlobalItem()", + "file_type": "code", + "source_file": "tests/services/item.service.test.ts", + "source_location": "L173", + "id": "item_service_test_insertglobalitem", + "community": 38 + }, + { + "label": "auth.service.test.ts", + "file_type": "code", + "source_file": "tests/services/auth.service.test.ts", + "source_location": "L1", + "id": "auth_service_test", + "community": 58 + }, + { + "label": "image.service.test.ts", + "file_type": "code", + "source_file": "tests/services/image.service.test.ts", + "source_location": "L1", + "id": "image_service_test", + "community": 39 + }, + { + "label": "fetch()", + "file_type": "code", + "source_file": "tests/services/image.service.test.ts", + "source_location": "L38", + "id": "image_service_test_fetch", + "community": 39 + }, + { + "label": "thread.service.test.ts", + "file_type": "code", + "source_file": "tests/services/thread.service.test.ts", + "source_location": "L1", + "id": "thread_service_test", + "community": 40 + }, + { + "label": "insertGlobalItem()", + "file_type": "code", + "source_file": "tests/services/thread.service.test.ts", + "source_location": "L621", + "id": "thread_service_test_insertglobalitem", + "community": 40 + }, + { + "label": "global-item.service.test.ts", + "file_type": "code", + "source_file": "tests/services/global-item.service.test.ts", + "source_location": "L1", + "id": "global_item_service_test", + "community": 21 + }, + { + "label": "insertGlobalItem()", + "file_type": "code", + "source_file": "tests/services/global-item.service.test.ts", + "source_location": "L17", + "id": "global_item_service_test_insertglobalitem", + "community": 21 + }, + { + "label": "insertItem()", + "file_type": "code", + "source_file": "tests/services/global-item.service.test.ts", + "source_location": "L40", + "id": "global_item_service_test_insertitem", + "community": 21 + }, + { + "label": "insertTag()", + "file_type": "code", + "source_file": "tests/services/global-item.service.test.ts", + "source_location": "L53", + "id": "global_item_service_test_inserttag", + "community": 21 + }, + { + "label": "tagGlobalItem()", + "file_type": "code", + "source_file": "tests/services/global-item.service.test.ts", + "source_location": "L58", + "id": "global_item_service_test_tagglobalitem", + "community": 21 + }, + { + "label": "csv.service.test.ts", + "file_type": "code", + "source_file": "tests/services/csv.service.test.ts", + "source_location": "L1", + "id": "csv_service_test", + "community": 59 + }, + { + "label": "storage.service.test.ts", + "file_type": "code", + "source_file": "tests/services/storage.service.test.ts", + "source_location": "L1", + "id": "storage_service_test", + "community": 41 + }, + { + "label": "constructor()", + "file_type": "code", + "source_file": "tests/services/storage.service.test.ts", + "source_location": "L16", + "id": "storage_service_test_constructor", + "community": 41 + }, + { + "label": "tag.service.test.ts", + "file_type": "code", + "source_file": "tests/services/tag.service.test.ts", + "source_location": "L1", + "id": "tag_service_test", + "community": 60 + }, + { + "label": "oauth.service.test.ts", + "file_type": "code", + "source_file": "tests/services/oauth.service.test.ts", + "source_location": "L1", + "id": "oauth_service_test", + "community": 42 + }, + { + "label": "generatePkce()", + "file_type": "code", + "source_file": "tests/services/oauth.service.test.ts", + "source_location": "L13", + "id": "oauth_service_test_generatepkce", + "community": 42 + }, + { + "label": "setup.service.test.ts", + "file_type": "code", + "source_file": "tests/services/setup.service.test.ts", + "source_location": "L1", + "id": "setup_service_test", + "community": 61 + }, + { + "label": "totals.test.ts", + "file_type": "code", + "source_file": "tests/services/totals.test.ts", + "source_location": "L1", + "id": "totals_test", + "community": 62 + }, + { + "label": "profile.service.test.ts", + "file_type": "code", + "source_file": "tests/services/profile.service.test.ts", + "source_location": "L1", + "id": "profile_service_test", + "community": 63 + }, + { + "label": "tools.test.ts", + "file_type": "code", + "source_file": "tests/mcp/tools.test.ts", + "source_location": "L1", + "id": "tools_test", + "community": 43 + }, + { + "label": "parseResult()", + "file_type": "code", + "source_file": "tests/mcp/tools.test.ts", + "source_location": "L9", + "id": "tools_test_parseresult", + "community": 43 + }, + { + "label": "db.ts", + "file_type": "code", + "source_file": "tests/helpers/db.ts", + "source_location": "L1", + "id": "db", + "community": 4 + }, + { + "label": "getOrCreateDb()", + "file_type": "code", + "source_file": "tests/helpers/db.ts", + "source_location": "L13", + "id": "db_getorcreatedb", + "community": 4 + }, + { + "label": "createTestDb()", + "file_type": "code", + "source_file": "tests/helpers/db.ts", + "source_location": "L40", + "id": "db_createtestdb", + "community": 4 + }, + { + "label": "createSecondTestUser()", + "file_type": "code", + "source_file": "tests/helpers/db.ts", + "source_location": "L62", + "id": "db_createsecondtestuser", + "community": 4 + }, + { + "label": "profiles.test.ts", + "file_type": "code", + "source_file": "tests/routes/profiles.test.ts", + "source_location": "L1", + "id": "profiles_test", + "community": 31 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/profiles.test.ts", + "source_location": "L18", + "id": "profiles_test_createtestapp", + "community": 31 + }, + { + "label": "createNoAuthTestApp()", + "file_type": "code", + "source_file": "tests/routes/profiles.test.ts", + "source_location": "L56", + "id": "profiles_test_createnoauthtestapp", + "community": 31 + }, + { + "label": "items.test.ts", + "file_type": "code", + "source_file": "tests/routes/items.test.ts", + "source_location": "L1", + "id": "items_test", + "community": 44 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/items.test.ts", + "source_location": "L7", + "id": "items_test_createtestapp", + "community": 44 + }, + { + "label": "global-items.test.ts", + "file_type": "code", + "source_file": "tests/routes/global-items.test.ts", + "source_location": "L1", + "id": "global_items_test", + "community": 25 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/global-items.test.ts", + "source_location": "L14", + "id": "global_items_test_createtestapp", + "community": 25 + }, + { + "label": "insertGlobalItem()", + "file_type": "code", + "source_file": "tests/routes/global-items.test.ts", + "source_location": "L28", + "id": "global_items_test_insertglobalitem", + "community": 25 + }, + { + "label": "insertItem()", + "file_type": "code", + "source_file": "tests/routes/global-items.test.ts", + "source_location": "L40", + "id": "global_items_test_insertitem", + "community": 25 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/params.test.ts", + "source_location": "L9", + "id": "params_test_createtestapp", + "community": 8 + }, + { + "label": "auth.test.ts", + "file_type": "code", + "source_file": "tests/middleware/auth.test.ts", + "source_location": "L1", + "id": "auth_test", + "community": 4 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/auth.test.ts", + "source_location": "L23", + "id": "auth_test_createtestapp", + "community": 4 + }, + { + "label": "threads.test.ts", + "file_type": "code", + "source_file": "tests/routes/threads.test.ts", + "source_location": "L1", + "id": "threads_test", + "community": 26 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/threads.test.ts", + "source_location": "L6", + "id": "threads_test_createtestapp", + "community": 26 + }, + { + "label": "createThreadViaAPI()", + "file_type": "code", + "source_file": "tests/routes/threads.test.ts", + "source_location": "L21", + "id": "threads_test_createthreadviaapi", + "community": 26 + }, + { + "label": "createCandidateViaAPI()", + "file_type": "code", + "source_file": "tests/routes/threads.test.ts", + "source_location": "L30", + "id": "threads_test_createcandidateviaapi", + "community": 26 + }, + { + "label": "tags.test.ts", + "file_type": "code", + "source_file": "tests/routes/tags.test.ts", + "source_location": "L1", + "id": "tags_test", + "community": 45 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/tags.test.ts", + "source_location": "L7", + "id": "tags_test_createtestapp", + "community": 45 + }, + { + "label": "oauth.test.ts", + "file_type": "code", + "source_file": "tests/routes/oauth.test.ts", + "source_location": "L1", + "id": "oauth_test", + "community": 32 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/oauth.test.ts", + "source_location": "L16", + "id": "oauth_test_createtestapp", + "community": 32 + }, + { + "label": "generatePkce()", + "file_type": "code", + "source_file": "tests/routes/oauth.test.ts", + "source_location": "L29", + "id": "oauth_test_generatepkce", + "community": 32 + }, + { + "label": "images.test.ts", + "file_type": "code", + "source_file": "tests/routes/images.test.ts", + "source_location": "L1", + "id": "images_test", + "community": 64 + }, + { + "label": "categories.test.ts", + "file_type": "code", + "source_file": "tests/routes/categories.test.ts", + "source_location": "L1", + "id": "categories_test", + "community": 46 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/categories.test.ts", + "source_location": "L7", + "id": "categories_test_createtestapp", + "community": 46 + }, + { + "label": "setups.test.ts", + "file_type": "code", + "source_file": "tests/routes/setups.test.ts", + "source_location": "L1", + "id": "setups_test", + "community": 27 + }, + { + "label": "createTestApp()", + "file_type": "code", + "source_file": "tests/routes/setups.test.ts", + "source_location": "L7", + "id": "setups_test_createtestapp", + "community": 27 + }, + { + "label": "createSetupViaAPI()", + "file_type": "code", + "source_file": "tests/routes/setups.test.ts", + "source_location": "L22", + "id": "setups_test_createsetupviaapi", + "community": 27 + }, + { + "label": "createItemViaAPI()", + "file_type": "code", + "source_file": "tests/routes/setups.test.ts", + "source_location": "L31", + "id": "setups_test_createitemviaapi", + "community": 27 + }, + { + "label": "createApp()", + "file_type": "code", + "source_file": "tests/middleware/auth.test.ts", + "source_location": "L35", + "id": "auth_test_createapp", + "community": 4 + }, + { + "label": "rateLimit.test.ts", + "file_type": "code", + "source_file": "tests/middleware/rateLimit.test.ts", + "source_location": "L1", + "id": "ratelimit_test", + "community": 16 + }, + { + "label": "createApp()", + "file_type": "code", + "source_file": "tests/middleware/rateLimit.test.ts", + "source_location": "L8", + "id": "ratelimit_test_createapp", + "community": 16 + }, + { + "label": "makeRequest()", + "file_type": "code", + "source_file": "tests/middleware/rateLimit.test.ts", + "source_location": "L15", + "id": "ratelimit_test_makerequest", + "community": 16 + }, + { + "label": "migrate-sqlite-to-postgres.ts", + "file_type": "code", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L1", + "id": "migrate_sqlite_to_postgres", + "community": 20 + }, + { + "label": "unixToDate()", + "file_type": "code", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L21", + "id": "migrate_sqlite_to_postgres_unixtodate", + "community": 20 + }, + { + "label": "intToBool()", + "file_type": "code", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L26", + "id": "migrate_sqlite_to_postgres_inttobool", + "community": 20 + }, + { + "label": "migrateTable()", + "file_type": "code", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L36", + "id": "migrate_sqlite_to_postgres_migratetable", + "community": 20 + }, + { + "label": "resetSequences()", + "file_type": "code", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L68", + "id": "migrate_sqlite_to_postgres_resetsequences", + "community": 20 + }, + { + "label": "main()", + "file_type": "code", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L222", + "id": "migrate_sqlite_to_postgres_main", + "community": 20 + }, + { + "label": "migrate-images-to-s3.ts", + "file_type": "code", + "source_file": "scripts/migrate-images-to-s3.ts", + "source_location": "L1", + "id": "migrate_images_to_s3", + "community": 10 + }, + { + "label": "main()", + "file_type": "code", + "source_file": "scripts/migrate-images-to-s3.ts", + "source_location": "L31", + "id": "migrate_images_to_s3_main", + "community": 10 + }, + { + "label": "error-handling.spec.ts", + "file_type": "code", + "source_file": "e2e/error-handling.spec.ts", + "source_location": "L1", + "id": "error_handling_spec", + "community": 65 + }, + { + "label": "dashboard.spec.ts", + "file_type": "code", + "source_file": "e2e/dashboard.spec.ts", + "source_location": "L1", + "id": "dashboard_spec", + "community": 66 + }, + { + "label": "seedTestDatabase()", + "file_type": "code", + "source_file": "e2e/seed.ts", + "source_location": "L11", + "id": "seed_seedtestdatabase", + "community": 19 + }, + { + "label": "auth.spec.ts", + "file_type": "code", + "source_file": "e2e/auth.spec.ts", + "source_location": "L1", + "id": "auth_spec", + "community": 67 + }, + { + "label": "collection.spec.ts", + "file_type": "code", + "source_file": "e2e/collection.spec.ts", + "source_location": "L1", + "id": "collection_spec", + "community": 68 + }, + { + "label": "threads.spec.ts", + "file_type": "code", + "source_file": "e2e/threads.spec.ts", + "source_location": "L1", + "id": "threads_spec", + "community": 69 + }, + { + "label": "global-setup.ts", + "file_type": "code", + "source_file": "e2e/global-setup.ts", + "source_location": "L1", + "id": "global_setup", + "community": 19 + }, + { + "label": "globalSetup()", + "file_type": "code", + "source_file": "e2e/global-setup.ts", + "source_location": "L3", + "id": "global_setup_globalsetup", + "community": 19 + }, + { + "label": "GearBox Application", + "file_type": "document", + "source_file": "README.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "readme_gearbox", + "community": 5 + }, + { + "label": "GearBox Tech Stack", + "file_type": "document", + "source_file": "README.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "readme_tech_stack", + "community": 5 + }, + { + "label": "GearBox Deployment (Coolify + Docker)", + "file_type": "document", + "source_file": "README.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "readme_deployment", + "community": 5 + }, + { + "label": "PostgreSQL 16 Database", + "file_type": "document", + "source_file": "README.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "readme_postgresql", + "community": 5 + }, + { + "label": "Garage S3-Compatible Storage", + "file_type": "document", + "source_file": "README.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "readme_garage_s3", + "community": 5 + }, + { + "label": "Logto OIDC Authentication", + "file_type": "document", + "source_file": "README.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "readme_logto_oidc", + "community": 5 + }, + { + "label": "GearBox Architecture Overview", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_architecture", + "community": 5 + }, + { + "label": "Client Layer (React 19 + TanStack)", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_client_layer", + "community": 5 + }, + { + "label": "Server Layer (Hono + Drizzle)", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_server_layer", + "community": 5 + }, + { + "label": "Shared Layer (Zod Schemas + Types)", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_shared_layer", + "community": 5 + }, + { + "label": "Database Schema (Drizzle ORM)", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_db_schema", + "community": 5 + }, + { + "label": "Thread Resolution Pattern", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_thread_resolution", + "community": 9 + }, + { + "label": "Setup Item Sync Pattern (Atomic Replace)", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_setup_item_sync", + "community": 9 + }, + { + "label": "Auth Model (Public Read, Authenticated Write)", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_auth_model", + "community": 5 + }, + { + "label": "MCP Server Overview (19 Tools)", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_mcp_server_overview", + "community": 5 + }, + { + "label": "MCP OAuth 2.1 Endpoints", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_oauth_endpoints", + "community": 5 + }, + { + "label": "Reusable UI Components Policy", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_reusable_components", + "community": 14 + }, + { + "label": "Release Process (Gitea Actions)", + "file_type": "document", + "source_file": "CLAUDE.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "claude_release_process", + "community": 70 + }, + { + "label": "MCP Server Documentation", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_server_doc", + "community": 3 + }, + { + "label": "Streamable HTTP Transport at /mcp", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_transport", + "community": 3 + }, + { + "label": "MCP Item Tools (list/get/create/update/delete)", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_tools_items", + "community": 3 + }, + { + "label": "MCP Category Tools", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_tools_categories", + "community": 3 + }, + { + "label": "MCP Thread Tools (create/resolve/candidates)", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_tools_threads", + "community": 3 + }, + { + "label": "MCP Setup Tools", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_tools_setups", + "community": 3 + }, + { + "label": "MCP Image Tools (upload_image_from_url)", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_tools_images", + "community": 3 + }, + { + "label": "MCP Resource: gearbox://collection/summary", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_resource_summary", + "community": 3 + }, + { + "label": "MCP Research Thread Workflow", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_research_workflow", + "community": 3 + }, + { + "label": "MCP Implementation Structure (src/server/mcp/)", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_impl_structure", + "community": 3 + }, + { + "label": "MCP Session Management (UUID + in-memory Map)", + "file_type": "document", + "source_file": "docs/mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "mcp_session_mgmt", + "community": 3 + }, + { + "label": "GearBox REST API Reference", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_doc", + "community": 9 + }, + { + "label": "Items API Endpoints", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_items_endpoints", + "community": 9 + }, + { + "label": "Categories API Endpoints", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_categories_endpoints", + "community": 9 + }, + { + "label": "Threads API Endpoints", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_threads_endpoints", + "community": 9 + }, + { + "label": "Setups API Endpoints", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_setups_endpoints", + "community": 9 + }, + { + "label": "Images API Endpoints", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_images_endpoints", + "community": 9 + }, + { + "label": "Settings API Endpoints", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_settings_endpoints", + "community": 9 + }, + { + "label": "Totals API Endpoint (computed aggregates)", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_totals_endpoint", + "community": 9 + }, + { + "label": "Thread Resolve Endpoint (POST /api/threads/:id/resolve)", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_thread_resolve", + "community": 9 + }, + { + "label": "Candidate Reorder Endpoint (PATCH /api/threads/:id/candidates/reorder)", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_candidate_reorder", + "community": 9 + }, + { + "label": "Setup Items Atomic Replace (PUT /api/setups/:id/items)", + "file_type": "document", + "source_file": "docs/api.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "api_setup_items_atomic", + "community": 9 + }, + { + "label": "Authentication Documentation", + "file_type": "document", + "source_file": "docs/authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "auth_doc", + "community": 3 + }, + { + "label": "First-Time Setup Flow", + "file_type": "document", + "source_file": "docs/authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "auth_first_setup", + "community": 3 + }, + { + "label": "Cookie Session Auth (gearbox_session)", + "file_type": "document", + "source_file": "docs/authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "auth_cookie_session", + "community": 3 + }, + { + "label": "API Key Auth (X-API-Key header)", + "file_type": "document", + "source_file": "docs/authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "auth_api_keys", + "community": 3 + }, + { + "label": "Auth Middleware Behavior (5-step rule)", + "file_type": "document", + "source_file": "docs/authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "auth_middleware_behavior", + "community": 3 + }, + { + "label": "Argon2 Password Hashing (Bun.password)", + "file_type": "document", + "source_file": "docs/authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "auth_argon2", + "community": 3 + }, + { + "label": "Auth Frontend Behavior (read-only for anon)", + "file_type": "document", + "source_file": "docs/authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "auth_frontend_behavior", + "community": 3 + }, + { + "label": "Authentication Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_auth", + "community": 3 + }, + { + "label": "Auth DB Tables Plan (users, sessions, apiKeys)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_auth_db_tables", + "community": 3 + }, + { + "label": "Auth Service Plan (auth.service.ts)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_auth_service", + "community": 3 + }, + { + "label": "Auth Middleware Plan (middleware/auth.ts)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-authentication.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_auth_middleware", + "community": 3 + }, + { + "label": "Testing Improvements Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_testing", + "community": 14 + }, + { + "label": "parseId Unit Tests Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_testing_parseid", + "community": 14 + }, + { + "label": "Rate Limiter Unit Tests Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_testing_ratelimit", + "community": 14 + }, + { + "label": "Playwright E2E Test Setup Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_testing_playwright", + "community": 14 + }, + { + "label": "E2E Database Seed Plan (e2e/seed.ts)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_testing_e2e_seed", + "community": 14 + }, + { + "label": "Image URL Fetching Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-image-url-fetching.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_image_url", + "community": 9 + }, + { + "label": "Image URL Schema Changes Plan (imageSourceUrl column)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-image-url-fetching.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_image_url_schema", + "community": 9 + }, + { + "label": "Image Fetching Service Plan (image.service.ts)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-image-url-fetching.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_image_url_service", + "community": 9 + }, + { + "label": "Image URL Route Plan (POST /api/images/from-url)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-image-url-fetching.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_image_url_route", + "community": 9 + }, + { + "label": "MCP Server Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_mcp_server", + "community": 3 + }, + { + "label": "MCP Item Tools Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-mcp-server.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_mcp_tools_items", + "community": 3 + }, + { + "label": "Codebase Improvements Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_codebase", + "community": 11 + }, + { + "label": "Explicit DB Context Middleware Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_codebase_db_middleware", + "community": 11 + }, + { + "label": "Route Parameter Validation Plan (parseId)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_codebase_params", + "community": 11 + }, + { + "label": "Centralized Error Handler Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_codebase_error_handler", + "community": 11 + }, + { + "label": "Rate Limiting on Auth Endpoints Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_codebase_rate_limit", + "community": 11 + }, + { + "label": "Client Error Boundary Plan (TanStack Router)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_codebase_error_boundary", + "community": 11 + }, + { + "label": "Split Collection Route into Tab Components Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_codebase_split_collection", + "community": 11 + }, + { + "label": "MCP OAuth 2.1 Server Implementation Plan", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-04-mcp-oauth.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_mcp_oauth", + "community": 5 + }, + { + "label": "OAuth DB Tables Plan (oauthClients, oauthCodes, oauthTokens)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-04-mcp-oauth.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_mcp_oauth_schema", + "community": 5 + }, + { + "label": "OAuth Service Plan (oauth.service.ts)", + "file_type": "document", + "source_file": "docs/superpowers/plans/2026-04-04-mcp-oauth.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "plan_mcp_oauth_service", + "community": 5 + }, + { + "label": "v1.4 Collection Tools Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_v14_collection_tools", + "community": 22 + }, + { + "label": "Item Quantity Feature Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_v14_item_quantity", + "community": 22 + }, + { + "label": "CSV Import/Export Feature Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_v14_csv_import_export", + "community": 22 + }, + { + "label": "Item Duplication Feature Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_v14_item_duplication", + "community": 22 + }, + { + "label": "Setup Impact Preview Feature Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_v14_setup_impact", + "community": 22 + }, + { + "label": "Catalog-Driven Gear Flow Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_catalog_flow", + "community": 5 + }, + { + "label": "Global Gear Catalog Concept", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_catalog_global_catalog", + "community": 5 + }, + { + "label": "Tag System (replaces rigid category hierarchies)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_catalog_tag_system", + "community": 5 + }, + { + "label": "Three Pillars: Collection, Research, Community", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_catalog_three_pillars", + "community": 5 + }, + { + "label": "Add Gear FAB Flow (Search-First)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_catalog_add_gear_flow", + "community": 5 + }, + { + "label": "Codebase Improvements Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_codebase_improvements", + "community": 11 + }, + { + "label": "Explicit DB Context Middleware Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_codebase_db_middleware", + "community": 11 + }, + { + "label": "parseId Route Param Validation Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_codebase_parseid", + "community": 11 + }, + { + "label": "Centralized Error Handler Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_codebase_error_handler", + "community": 11 + }, + { + "label": "Rate Limiter Design (in-memory Map, 5 req/15min)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_codebase_rate_limit", + "community": 11 + }, + { + "label": "User Menu Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-user-menu-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_user_menu", + "community": 3 + }, + { + "label": "UserMenu Component Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-user-menu-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_user_menu_component", + "community": 3 + }, + { + "label": "TotalsBar UserMenu Integration Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-user-menu-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_user_menu_totalsbar", + "community": 3 + }, + { + "label": "Code Quality Round 2 Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-code-quality-round2-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_code_quality_round2", + "community": 14 + }, + { + "label": "useFormatters Combined Hook Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-code-quality-round2-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_useformatters_hook", + "community": 14 + }, + { + "label": "Test Helper Drizzle Migration Design (replace hand-written SQL)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-code-quality-round2-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_test_helper_migration", + "community": 14 + }, + { + "label": "MCP OAuth 2.1 Server Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_mcp_oauth", + "community": 5 + }, + { + "label": "OAuth 2.1 + PKCE Authorization Flow", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_mcp_oauth_flow", + "community": 5 + }, + { + "label": "OAuth DB Schema Design (3 tables)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_mcp_oauth_db", + "community": 5 + }, + { + "label": "OAuth Service Design (oauth.service.ts functions)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_mcp_oauth_service_design", + "community": 5 + }, + { + "label": "Authentication Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-authentication-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_auth_design", + "community": 3 + }, + { + "label": "Auth DB Schema Design (users, sessions, apiKeys)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-authentication-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_auth_db_schema", + "community": 3 + }, + { + "label": "Auth Middleware Design (3-check rule)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-authentication-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_auth_middleware_design", + "community": 3 + }, + { + "label": "MCP Server Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-mcp-server-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_mcp_server_design", + "community": 3 + }, + { + "label": "MCP Transport Design (SSE or Streamable HTTP)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-mcp-server-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_mcp_transport_design", + "community": 3 + }, + { + "label": "MCP Tools Design (all categories)", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-mcp-server-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_mcp_tools_design", + "community": 3 + }, + { + "label": "Testing Improvements Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-testing-improvements-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_testing_design", + "community": 14 + }, + { + "label": "Playwright E2E Setup Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-testing-improvements-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_testing_e2e_design", + "community": 14 + }, + { + "label": "Image URL Fetching Design Spec", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-image-url-fetching-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_image_url_design", + "community": 9 + }, + { + "label": "POST /api/images/from-url Endpoint Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-image-url-fetching-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_image_url_endpoint", + "community": 9 + }, + { + "label": "imageSourceUrl Schema Column Design", + "file_type": "document", + "source_file": "docs/superpowers/specs/2026-04-03-image-url-fetching-design.md", + "source_location": null, + "source_url": null, + "captured_at": null, + "author": null, + "contributor": null, + "id": "spec_image_url_schema_changes", + "community": 9 + } + ], + "links": [ + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/index.ts", + "source_location": "L20", + "weight": 1.0, + "_src": "index", + "_tgt": "index_createmcpserver", + "source": "index", + "target": "index_createmcpserver", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L21", + "weight": 1.0, + "_src": "routetree_gen", + "_tgt": "index", + "source": "index", + "target": "routetree_gen", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/index.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "index", + "_tgt": "dashboardcard", + "source": "index", + "target": "dashboardcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/index.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "index", + "_tgt": "useformatters", + "source": "index", + "target": "useformatters", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L16", + "weight": 1.0, + "_src": "index", + "_tgt": "usesetups", + "source": "index", + "target": "usesetups", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L17", + "weight": 1.0, + "_src": "index", + "_tgt": "usethreads", + "source": "index", + "target": "usethreads", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/index.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "index", + "_tgt": "usetotals", + "source": "index", + "target": "usetotals", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/global-items/index.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "index", + "_tgt": "globalitemcard", + "source": "index", + "target": "globalitemcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/global-items/index.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "index", + "_tgt": "useglobalitems", + "source": "index", + "target": "useglobalitems", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/collection/index.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "index", + "_tgt": "collectionview", + "source": "index", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/collection/index.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "index", + "_tgt": "planningview", + "source": "index", + "target": "planningview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/collection/index.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "index", + "_tgt": "setupsview", + "source": "index", + "target": "setupsview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "index", + "_tgt": "candidatecard", + "source": "index", + "target": "candidatecard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "index", + "_tgt": "candidatelistitem", + "source": "index", + "target": "candidatelistitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "index", + "_tgt": "categorypicker", + "source": "index", + "target": "categorypicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "index", + "_tgt": "comparisontable", + "source": "index", + "target": "comparisontable", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "index", + "_tgt": "imageupload", + "source": "index", + "target": "imageupload", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L9", + "weight": 1.0, + "_src": "index", + "_tgt": "setupimpactselector", + "source": "index", + "target": "setupimpactselector", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L10", + "weight": 1.0, + "_src": "index", + "_tgt": "usecandidates", + "source": "index", + "target": "usecandidates", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L15", + "weight": 1.0, + "_src": "index", + "_tgt": "useimpactdeltas", + "source": "index", + "target": "useimpactdeltas", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L18", + "weight": 1.0, + "_src": "index", + "_tgt": "icondata", + "source": "index", + "target": "icondata", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/index.tsx", + "source_location": "L19", + "weight": 1.0, + "_src": "index", + "_tgt": "uistore", + "source": "index", + "target": "uistore", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/lib/params.ts", + "source_location": "L5", + "weight": 1.0, + "_src": "params", + "_tgt": "params_parseid", + "source": "params", + "target": "params_parseid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/lib/params.test.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "params_test", + "_tgt": "params", + "source": "params", + "target": "params_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L27", + "weight": 1.0, + "_src": "storage_service", + "_tgt": "storage_service_uploadimage", + "source": "storage_service", + "target": "storage_service_uploadimage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L42", + "weight": 1.0, + "_src": "storage_service", + "_tgt": "storage_service_deleteimage", + "source": "storage_service", + "target": "storage_service_deleteimage", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L51", + "weight": 1.0, + "_src": "storage_service", + "_tgt": "storage_service_getimageurl", + "source": "storage_service", + "target": "storage_service_getimageurl", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L63", + "weight": 1.0, + "_src": "storage_service", + "_tgt": "storage_service_withimageurl", + "source": "storage_service", + "target": "storage_service_withimageurl", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L77", + "weight": 1.0, + "_src": "storage_service", + "_tgt": "storage_service_withimageurls", + "source": "storage_service", + "target": "storage_service_withimageurls", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/server/services/image.service.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "image_service", + "_tgt": "storage_service", + "source": "storage_service", + "target": "image_service", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/server/routes/images.ts", + "source_location": "L6", + "weight": 1.0, + "_src": "images", + "_tgt": "storage_service", + "source": "storage_service", + "target": "images", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "scripts/migrate-images-to-s3.ts", + "source_location": "L18", + "weight": 1.0, + "_src": "migrate_images_to_s3", + "_tgt": "storage_service", + "source": "storage_service", + "target": "migrate_images_to_s3", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/server/services/storage.service.ts", + "source_location": "L69", + "weight": 0.8, + "_src": "storage_service_withimageurl", + "_tgt": "storage_service_getimageurl", + "source": "storage_service_getimageurl", + "target": "storage_service_withimageurl", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/item.service.ts", + "source_location": "L8", + "weight": 1.0, + "_src": "item_service", + "_tgt": "item_service_getallitems", + "source": "item_service", + "target": "item_service_getallitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/item.service.ts", + "source_location": "L52", + "weight": 1.0, + "_src": "item_service", + "_tgt": "item_service_getitembyid", + "source": "item_service", + "target": "item_service_getitembyid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/item.service.ts", + "source_location": "L98", + "weight": 1.0, + "_src": "item_service", + "_tgt": "item_service_createitem", + "source": "item_service", + "target": "item_service_createitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/item.service.ts", + "source_location": "L140", + "weight": 1.0, + "_src": "item_service", + "_tgt": "item_service_updateitem", + "source": "item_service", + "target": "item_service_updateitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/item.service.ts", + "source_location": "L176", + "weight": 1.0, + "_src": "item_service", + "_tgt": "item_service_duplicateitem", + "source": "item_service", + "target": "item_service_duplicateitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/item.service.ts", + "source_location": "L205", + "weight": 1.0, + "_src": "item_service", + "_tgt": "item_service_deleteitem", + "source": "item_service", + "target": "item_service_deleteitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/global-item.service.ts", + "source_location": "L14", + "weight": 1.0, + "_src": "global_item_service", + "_tgt": "global_item_service_searchglobalitems", + "source": "global_item_service", + "target": "global_item_service_searchglobalitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/global-item.service.ts", + "source_location": "L59", + "weight": 1.0, + "_src": "global_item_service", + "_tgt": "global_item_service_getglobalitemwithownercount", + "source": "global_item_service", + "target": "global_item_service_getglobalitemwithownercount", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L10", + "weight": 1.0, + "_src": "oauth_service", + "_tgt": "oauth_service_registerclient", + "source": "oauth_service", + "target": "oauth_service_registerclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L25", + "weight": 1.0, + "_src": "oauth_service", + "_tgt": "oauth_service_getclient", + "source": "oauth_service", + "target": "oauth_service_getclient", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L36", + "weight": 1.0, + "_src": "oauth_service", + "_tgt": "oauth_service_createauthorizationcode", + "source": "oauth_service", + "target": "oauth_service_createauthorizationcode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L60", + "weight": 1.0, + "_src": "oauth_service", + "_tgt": "oauth_service_exchangecode", + "source": "oauth_service", + "target": "oauth_service_exchangecode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L97", + "weight": 1.0, + "_src": "oauth_service", + "_tgt": "oauth_service_generatetokens", + "source": "oauth_service", + "target": "oauth_service_generatetokens", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L127", + "weight": 1.0, + "_src": "oauth_service", + "_tgt": "oauth_service_verifyaccesstoken", + "source": "oauth_service", + "target": "oauth_service_verifyaccesstoken", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L144", + "weight": 1.0, + "_src": "oauth_service", + "_tgt": "oauth_service_refreshaccesstoken", + "source": "oauth_service", + "target": "oauth_service_refreshaccesstoken", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L176", + "weight": 1.0, + "_src": "oauth_service", + "_tgt": "oauth_service_cleanexpiredoauthdata", + "source": "oauth_service", + "target": "oauth_service_cleanexpiredoauthdata", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/server/middleware/auth.ts", + "source_location": "L4", + "weight": 1.0, + "_src": "auth", + "_tgt": "oauth_service", + "source": "oauth_service", + "target": "auth", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L92", + "weight": 0.8, + "_src": "oauth_service_exchangecode", + "_tgt": "oauth_service_generatetokens", + "source": "oauth_service_exchangecode", + "target": "oauth_service_generatetokens", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/server/services/oauth.service.ts", + "source_location": "L171", + "weight": 0.8, + "_src": "oauth_service_refreshaccesstoken", + "_tgt": "oauth_service_generatetokens", + "source": "oauth_service_generatetokens", + "target": "oauth_service_refreshaccesstoken", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/totals.service.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "totals_service", + "_tgt": "totals_service_getcategorytotals", + "source": "totals_service", + "target": "totals_service_getcategorytotals", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/totals.service.ts", + "source_location": "L34", + "weight": 1.0, + "_src": "totals_service", + "_tgt": "totals_service_getglobaltotals", + "source": "totals_service", + "target": "totals_service_getglobaltotals", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L10", + "weight": 1.0, + "_src": "auth_service", + "_tgt": "auth_service_getorcreateuser", + "source": "auth_service", + "target": "auth_service_getorcreateuser", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L27", + "weight": 1.0, + "_src": "auth_service", + "_tgt": "auth_service_createapikey", + "source": "auth_service", + "target": "auth_service_createapikey", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L40", + "weight": 1.0, + "_src": "auth_service", + "_tgt": "auth_service_verifyapikey", + "source": "auth_service", + "target": "auth_service_verifyapikey", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L58", + "weight": 1.0, + "_src": "auth_service", + "_tgt": "auth_service_listapikeys", + "source": "auth_service", + "target": "auth_service_listapikeys", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/auth.service.ts", + "source_location": "L70", + "weight": 1.0, + "_src": "auth_service", + "_tgt": "auth_service_deleteapikey", + "source": "auth_service", + "target": "auth_service_deleteapikey", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/server/middleware/auth.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "auth", + "_tgt": "auth_service", + "source": "auth_service", + "target": "auth", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/middleware/auth.test.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "auth_test", + "_tgt": "auth_service", + "source": "auth_service", + "target": "auth_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L19", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_createthread", + "source": "thread_service", + "target": "thread_service_createthread", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L28", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_getallthreads", + "source": "thread_service", + "target": "thread_service_getallthreads", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L68", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_getthreadwithcandidates", + "source": "thread_service", + "target": "thread_service_getthreadwithcandidates", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L124", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_updatethread", + "source": "thread_service", + "target": "thread_service_updatethread", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L145", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_deletethread", + "source": "thread_service", + "target": "thread_service_deletethread", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L170", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_createcandidate", + "source": "thread_service", + "target": "thread_service_createcandidate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L218", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_updatecandidate", + "source": "thread_service", + "target": "thread_service_updatecandidate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L261", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_deletecandidate", + "source": "thread_service", + "target": "thread_service_deletecandidate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L283", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_reordercandidates", + "source": "thread_service", + "target": "thread_service_reordercandidates", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/thread.service.ts", + "source_location": "L312", + "weight": 1.0, + "_src": "thread_service", + "_tgt": "thread_service_resolvethread", + "source": "thread_service", + "target": "thread_service_resolvethread", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/category.service.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "category_service", + "_tgt": "category_service_getorcreateuncategorized", + "source": "category_service", + "target": "category_service_getorcreateuncategorized", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/category.service.ts", + "source_location": "L23", + "weight": 1.0, + "_src": "category_service", + "_tgt": "category_service_getallcategories", + "source": "category_service", + "target": "category_service_getallcategories", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/category.service.ts", + "source_location": "L31", + "weight": 1.0, + "_src": "category_service", + "_tgt": "category_service_createcategory", + "source": "category_service", + "target": "category_service_createcategory", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/category.service.ts", + "source_location": "L47", + "weight": 1.0, + "_src": "category_service", + "_tgt": "category_service_updatecategory", + "source": "category_service", + "target": "category_service_updatecategory", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/category.service.ts", + "source_location": "L68", + "weight": 1.0, + "_src": "category_service", + "_tgt": "category_service_deletecategory", + "source": "category_service", + "target": "category_service_deletecategory", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/server/middleware/auth.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "auth", + "_tgt": "category_service", + "source": "category_service", + "target": "auth", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/server/services/category.service.ts", + "source_location": "L92", + "weight": 0.8, + "_src": "category_service_deletecategory", + "_tgt": "category_service_getorcreateuncategorized", + "source": "category_service_getorcreateuncategorized", + "target": "category_service_deletecategory", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L14", + "weight": 1.0, + "_src": "setup_service", + "_tgt": "setup_service_createsetup", + "source": "setup_service", + "target": "setup_service_createsetup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L23", + "weight": 1.0, + "_src": "setup_service", + "_tgt": "setup_service_getallsetups", + "source": "setup_service", + "target": "setup_service_getallsetups", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L62", + "weight": 1.0, + "_src": "setup_service", + "_tgt": "setup_service_getsetupwithitems", + "source": "setup_service", + "target": "setup_service_getsetupwithitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L116", + "weight": 1.0, + "_src": "setup_service", + "_tgt": "setup_service_updatesetup", + "source": "setup_service", + "target": "setup_service_updatesetup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L145", + "weight": 1.0, + "_src": "setup_service", + "_tgt": "setup_service_deletesetup", + "source": "setup_service", + "target": "setup_service_deletesetup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L158", + "weight": 1.0, + "_src": "setup_service", + "_tgt": "setup_service_syncsetupitems", + "source": "setup_service", + "target": "setup_service_syncsetupitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L211", + "weight": 1.0, + "_src": "setup_service", + "_tgt": "setup_service_updateitemclassification", + "source": "setup_service", + "target": "setup_service_updateitemclassification", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/setup.service.ts", + "source_location": "L231", + "weight": 1.0, + "_src": "setup_service", + "_tgt": "setup_service_removesetupitem", + "source": "setup_service", + "target": "setup_service_removesetupitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L10", + "weight": 1.0, + "_src": "csv_service", + "_tgt": "csv_service_escapefield", + "source": "csv_service", + "target": "csv_service_escapefield", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L25", + "weight": 1.0, + "_src": "csv_service", + "_tgt": "csv_service_buildcsvrow", + "source": "csv_service", + "target": "csv_service_buildcsvrow", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L31", + "weight": 1.0, + "_src": "csv_service", + "_tgt": "csv_service_parsecsvline", + "source": "csv_service", + "target": "csv_service_parsecsvline", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L77", + "weight": 1.0, + "_src": "csv_service", + "_tgt": "csv_service_parsecsv", + "source": "csv_service", + "target": "csv_service_parsecsv", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L88", + "weight": 1.0, + "_src": "csv_service", + "_tgt": "csv_service_exportitemscsv", + "source": "csv_service", + "target": "csv_service_exportitemscsv", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L141", + "weight": 1.0, + "_src": "csv_service", + "_tgt": "csv_service_importitemscsv", + "source": "csv_service", + "target": "csv_service_importitemscsv", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L81", + "weight": 0.8, + "_src": "csv_service_parsecsv", + "_tgt": "csv_service_parsecsvline", + "source": "csv_service_parsecsvline", + "target": "csv_service_parsecsv", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/server/services/csv.service.ts", + "source_location": "L146", + "weight": 0.8, + "_src": "csv_service_importitemscsv", + "_tgt": "csv_service_parsecsv", + "source": "csv_service_parsecsv", + "target": "csv_service_importitemscsv", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/profile.service.ts", + "source_location": "L15", + "weight": 1.0, + "_src": "profile_service", + "_tgt": "profile_service_updateprofile", + "source": "profile_service", + "target": "profile_service_updateprofile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/profile.service.ts", + "source_location": "L36", + "weight": 1.0, + "_src": "profile_service", + "_tgt": "profile_service_getpublicprofile", + "source": "profile_service", + "target": "profile_service_getpublicprofile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/profile.service.ts", + "source_location": "L87", + "weight": 1.0, + "_src": "profile_service", + "_tgt": "profile_service_getpublicsetupwithitems", + "source": "profile_service", + "target": "profile_service_getpublicsetupwithitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/image.service.ts", + "source_location": "L13", + "weight": 1.0, + "_src": "image_service", + "_tgt": "image_service_fetchimagefromurl", + "source": "image_service", + "target": "image_service_fetchimagefromurl", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/server/routes/images.ts", + "source_location": "L5", + "weight": 1.0, + "_src": "images", + "_tgt": "image_service", + "source": "image_service", + "target": "images", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/services/tag.service.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "tag_service", + "_tgt": "tag_service_getalltags", + "source": "tag_service", + "target": "tag_service_getalltags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/resources/collection.ts", + "source_location": "L10", + "weight": 1.0, + "_src": "collection", + "_tgt": "collection_getcollectionsummary", + "source": "collection", + "target": "collection_getcollectionsummary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/images.ts", + "source_location": "L8", + "weight": 1.0, + "_src": "images", + "_tgt": "images_textresult", + "source": "images", + "target": "images_textresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/images.ts", + "source_location": "L12", + "weight": 1.0, + "_src": "images", + "_tgt": "images_errorresult", + "source": "images", + "target": "images_errorresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/images.ts", + "source_location": "L31", + "weight": 1.0, + "_src": "images", + "_tgt": "images_registerimagetools", + "source": "images", + "target": "images_registerimagetools", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/threads.ts", + "source_location": "L20", + "weight": 1.0, + "_src": "threads", + "_tgt": "threads_textresult", + "source": "threads", + "target": "threads_textresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/threads.ts", + "source_location": "L24", + "weight": 1.0, + "_src": "threads", + "_tgt": "threads_errorresult", + "source": "threads", + "target": "threads_errorresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/threads.ts", + "source_location": "L117", + "weight": 1.0, + "_src": "threads", + "_tgt": "threads_registerthreadtools", + "source": "threads", + "target": "threads_registerthreadtools", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/routes/params.test.ts", + "source_location": "L6", + "weight": 1.0, + "_src": "params_test", + "_tgt": "threads", + "source": "threads", + "target": "params_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/setups.ts", + "source_location": "L17", + "weight": 1.0, + "_src": "setups", + "_tgt": "setups_textresult", + "source": "setups", + "target": "setups_textresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/setups.ts", + "source_location": "L21", + "weight": 1.0, + "_src": "setups", + "_tgt": "setups_errorresult", + "source": "setups", + "target": "setups_errorresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/setups.ts", + "source_location": "L63", + "weight": 1.0, + "_src": "setups", + "_tgt": "setups_registersetuptools", + "source": "setups", + "target": "setups_registersetuptools", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/routes/params.test.ts", + "source_location": "L5", + "weight": 1.0, + "_src": "params_test", + "_tgt": "setups", + "source": "setups", + "target": "params_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/categories.ts", + "source_location": "L14", + "weight": 1.0, + "_src": "categories", + "_tgt": "categories_textresult", + "source": "categories", + "target": "categories_textresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/categories.ts", + "source_location": "L18", + "weight": 1.0, + "_src": "categories", + "_tgt": "categories_errorresult", + "source": "categories", + "target": "categories_errorresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/categories.ts", + "source_location": "L40", + "weight": 1.0, + "_src": "categories", + "_tgt": "categories_registercategorytools", + "source": "categories", + "target": "categories_registercategorytools", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/routes/params.test.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "params_test", + "_tgt": "categories", + "source": "categories", + "target": "params_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/items.ts", + "source_location": "L18", + "weight": 1.0, + "_src": "items", + "_tgt": "items_textresult", + "source": "items", + "target": "items_textresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/items.ts", + "source_location": "L22", + "weight": 1.0, + "_src": "items", + "_tgt": "items_errorresult", + "source": "items", + "target": "items_errorresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/mcp/tools/items.ts", + "source_location": "L95", + "weight": 1.0, + "_src": "items", + "_tgt": "items_registeritemtools", + "source": "items", + "target": "items_registeritemtools", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/routes/params.test.ts", + "source_location": "L4", + "weight": 1.0, + "_src": "params_test", + "_tgt": "items", + "source": "items", + "target": "params_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/routes/oauth.ts", + "source_location": "L15", + "weight": 1.0, + "_src": "oauth", + "_tgt": "oauth_escapehtml", + "source": "oauth", + "target": "oauth_escapehtml", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/routes/oauth.ts", + "source_location": "L24", + "weight": 1.0, + "_src": "oauth", + "_tgt": "oauth_getbaseurl", + "source": "oauth", + "target": "oauth_getbaseurl", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/routes/oauth.ts", + "source_location": "L30", + "weight": 1.0, + "_src": "oauth", + "_tgt": "oauth_renderconsentform", + "source": "oauth", + "target": "oauth_renderconsentform", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/server/routes/oauth.ts", + "source_location": "L57", + "weight": 0.8, + "_src": "oauth_renderconsentform", + "_tgt": "oauth_escapehtml", + "source": "oauth_escapehtml", + "target": "oauth_renderconsentform", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/middleware/auth.ts", + "source_location": "L6", + "weight": 1.0, + "_src": "auth", + "_tgt": "auth_requireauth", + "source": "auth", + "target": "auth_requireauth", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L12", + "weight": 1.0, + "_src": "routetree_gen", + "_tgt": "settings", + "source": "settings", + "target": "routetree_gen", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "settings", + "_tgt": "profilesection", + "source": "settings", + "target": "profilesection", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "settings", + "_tgt": "useauth", + "source": "settings", + "target": "useauth", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L10", + "weight": 1.0, + "_src": "settings", + "_tgt": "usecurrency", + "source": "settings", + "target": "usecurrency", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L11", + "weight": 1.0, + "_src": "settings", + "_tgt": "useitems", + "source": "settings", + "target": "useitems", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L12", + "weight": 1.0, + "_src": "settings", + "_tgt": "usesettings", + "source": "settings", + "target": "usesettings", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L13", + "weight": 1.0, + "_src": "settings", + "_tgt": "useweightunit", + "source": "settings", + "target": "useweightunit", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L14", + "weight": 1.0, + "_src": "settings", + "_tgt": "formatters", + "source": "settings", + "target": "formatters", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L30", + "weight": 1.0, + "_src": "settings", + "_tgt": "settings_apikeysection", + "source": "settings", + "target": "settings_apikeysection", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/settings.tsx", + "source_location": "L126", + "weight": 1.0, + "_src": "settings", + "_tgt": "settings_handlefilechange", + "source": "settings", + "target": "settings_handlefilechange", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L13", + "weight": 1.0, + "_src": "ratelimit", + "_tgt": "ratelimit_getclientip", + "source": "ratelimit", + "target": "ratelimit_getclientip", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L17", + "weight": 1.0, + "_src": "ratelimit", + "_tgt": "ratelimit_cleanup", + "source": "ratelimit", + "target": "ratelimit_cleanup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L26", + "weight": 1.0, + "_src": "ratelimit", + "_tgt": "ratelimit_ratelimit", + "source": "ratelimit", + "target": "ratelimit_ratelimit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L51", + "weight": 1.0, + "_src": "ratelimit", + "_tgt": "ratelimit_resetfortesting", + "source": "ratelimit", + "target": "ratelimit_resetfortesting", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/middleware/rateLimit.test.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "ratelimit_test", + "_tgt": "ratelimit", + "source": "ratelimit", + "target": "ratelimit_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L29", + "weight": 0.8, + "_src": "ratelimit_ratelimit", + "_tgt": "ratelimit_getclientip", + "source": "ratelimit_getclientip", + "target": "ratelimit_ratelimit", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/server/middleware/rateLimit.ts", + "source_location": "L27", + "weight": 0.8, + "_src": "ratelimit_ratelimit", + "_tgt": "ratelimit_cleanup", + "source": "ratelimit_cleanup", + "target": "ratelimit_ratelimit", + "confidence_score": 0.5 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "useitems", + "_tgt": "types", + "source": "types", + "target": "useitems", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "usecandidates", + "_tgt": "types", + "source": "types", + "target": "usecandidates", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "usecategories", + "_tgt": "types", + "source": "types", + "target": "usecategories", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/db/dev-seed-data.ts", + "source_location": "L419", + "weight": 1.0, + "_src": "dev_seed_data", + "_tgt": "dev_seed_data_categorydisplayname", + "source": "dev_seed_data", + "target": "dev_seed_data_categorydisplayname", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/db/seed.ts", + "source_location": "L1", + "weight": 1.0, + "_src": "seed", + "_tgt": "seed_seeddefaults", + "source": "seed", + "target": "seed_seeddefaults", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "e2e/seed.ts", + "source_location": "L5", + "weight": 1.0, + "_src": "seed", + "_tgt": "schema", + "source": "seed", + "target": "schema", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "e2e/seed.ts", + "source_location": "L11", + "weight": 1.0, + "_src": "seed", + "_tgt": "seed_seedtestdatabase", + "source": "seed", + "target": "seed_seedtestdatabase", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "e2e/global-setup.ts", + "source_location": "L1", + "weight": 1.0, + "_src": "global_setup", + "_tgt": "seed", + "source": "seed", + "target": "global_setup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/db/seed-global-items.ts", + "source_location": "L63", + "weight": 1.0, + "_src": "seed_global_items", + "_tgt": "seed_global_items_seedtags", + "source": "seed_global_items", + "target": "seed_global_items_seedtags", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/db/seed-global-items.ts", + "source_location": "L76", + "weight": 1.0, + "_src": "seed_global_items", + "_tgt": "seed_global_items_seedglobalitems", + "source": "seed_global_items", + "target": "seed_global_items_seedglobalitems", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/db/seed-global-items.ts", + "source_location": "L91", + "weight": 0.8, + "_src": "seed_global_items_seedglobalitems", + "_tgt": "seed_global_items_seedtags", + "source": "seed_global_items_seedtags", + "target": "seed_global_items_seedglobalitems", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/db/dev-seed.ts", + "source_location": "L21", + "weight": 1.0, + "_src": "dev_seed", + "_tgt": "dev_seed_seeddevdata", + "source": "dev_seed", + "target": "dev_seed_seeddevdata", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/main.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "main", + "_tgt": "routetree_gen", + "source": "main", + "target": "routetree_gen", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L11", + "weight": 1.0, + "_src": "routetree_gen", + "_tgt": "root", + "source": "routetree_gen", + "target": "root", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L13", + "weight": 1.0, + "_src": "routetree_gen", + "_tgt": "login", + "source": "routetree_gen", + "target": "login", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L17", + "weight": 1.0, + "_src": "routetree_gen", + "_tgt": "userid", + "source": "routetree_gen", + "target": "userid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L18", + "weight": 1.0, + "_src": "routetree_gen", + "_tgt": "setupid", + "source": "routetree_gen", + "target": "setupid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L19", + "weight": 1.0, + "_src": "routetree_gen", + "_tgt": "itemid", + "source": "routetree_gen", + "target": "itemid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L20", + "weight": 1.0, + "_src": "routetree_gen", + "_tgt": "globalitemid", + "source": "routetree_gen", + "target": "globalitemid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routeTree.gen.ts", + "source_location": "L22", + "weight": 1.0, + "_src": "routetree_gen", + "_tgt": "candidateid", + "source": "routetree_gen", + "target": "candidateid", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/iconData.tsx", + "source_location": "L225", + "weight": 1.0, + "_src": "icondata", + "_tgt": "icondata_topascalcase", + "source": "icondata", + "target": "icondata_topascalcase", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/iconData.tsx", + "source_location": "L240", + "weight": 1.0, + "_src": "icondata", + "_tgt": "icondata_lucideicon", + "source": "icondata", + "target": "icondata_lucideicon", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/setups/$setupId.tsx", + "source_location": "L15", + "weight": 1.0, + "_src": "setupid", + "_tgt": "icondata", + "source": "icondata", + "target": "setupid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "itemid", + "_tgt": "icondata", + "source": "icondata", + "target": "itemid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L9", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "icondata", + "source": "icondata", + "target": "candidateid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemCard.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "itemcard", + "_tgt": "icondata", + "source": "icondata", + "target": "itemcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "iconpicker", + "_tgt": "icondata", + "source": "icondata", + "target": "iconpicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "categorypicker", + "_tgt": "icondata", + "source": "icondata", + "target": "categorypicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ThreadCard.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "threadcard", + "_tgt": "icondata", + "source": "icondata", + "target": "threadcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "candidatecard", + "_tgt": "icondata", + "source": "icondata", + "target": "candidatecard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/DashboardCard.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "dashboardcard", + "_tgt": "icondata", + "source": "icondata", + "target": "dashboardcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemPicker.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "itempicker", + "_tgt": "icondata", + "source": "icondata", + "target": "itempicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/StatusBadge.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "statusbadge", + "_tgt": "icondata", + "source": "icondata", + "target": "statusbadge", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryFilterDropdown.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "categoryfilterdropdown", + "_tgt": "icondata", + "source": "icondata", + "target": "categoryfilterdropdown", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ComparisonTable.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "comparisontable", + "_tgt": "icondata", + "source": "icondata", + "target": "comparisontable", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "onboardingwizard", + "_tgt": "icondata", + "source": "icondata", + "target": "onboardingwizard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryHeader.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "categoryheader", + "_tgt": "icondata", + "source": "icondata", + "target": "categoryheader", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "collectionview", + "_tgt": "icondata", + "source": "icondata", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/UserMenu.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "usermenu", + "_tgt": "icondata", + "source": "icondata", + "target": "usermenu", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateListItem.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "candidatelistitem", + "_tgt": "icondata", + "source": "icondata", + "target": "candidatelistitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/TotalsBar.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "totalsbar", + "_tgt": "icondata", + "source": "icondata", + "target": "totalsbar", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L13", + "weight": 1.0, + "_src": "weightsummarycard", + "_tgt": "icondata", + "source": "icondata", + "target": "weightsummarycard", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/lib/iconData.tsx", + "source_location": "L246", + "weight": 0.8, + "_src": "icondata_lucideicon", + "_tgt": "icondata_topascalcase", + "source": "icondata_topascalcase", + "target": "icondata_lucideicon", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/impactDeltas.ts", + "source_location": "L29", + "weight": 1.0, + "_src": "impactdeltas", + "_tgt": "impactdeltas_computeimpactdeltas", + "source": "impactdeltas", + "target": "impactdeltas_computeimpactdeltas", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useImpactDeltas.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "useimpactdeltas", + "_tgt": "impactdeltas", + "source": "impactdeltas", + "target": "useimpactdeltas", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/lib/impactDeltas.test.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "impactdeltas_test", + "_tgt": "impactdeltas", + "source": "impactdeltas", + "target": "impactdeltas_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/formatters.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "formatters", + "_tgt": "formatters_formatweight", + "source": "formatters", + "target": "formatters_formatweight", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/formatters.ts", + "source_location": "L35", + "weight": 1.0, + "_src": "formatters", + "_tgt": "formatters_formatprice", + "source": "formatters", + "target": "formatters_formatprice", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useFormatters.ts", + "source_location": "L1", + "weight": 1.0, + "_src": "useformatters", + "_tgt": "formatters", + "source": "formatters", + "target": "useformatters", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useWeightUnit.ts", + "source_location": "L1", + "weight": 1.0, + "_src": "useweightunit", + "_tgt": "formatters", + "source": "formatters", + "target": "useweightunit", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCurrency.ts", + "source_location": "L1", + "weight": 1.0, + "_src": "usecurrency", + "_tgt": "formatters", + "source": "formatters", + "target": "usecurrency", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L12", + "weight": 1.0, + "_src": "weightsummarycard", + "_tgt": "formatters", + "source": "formatters", + "target": "weightsummarycard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/lib/formatters.test.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "formatters_test", + "_tgt": "formatters", + "source": "formatters", + "target": "formatters_test", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/api.ts", + "source_location": "L1", + "weight": 1.0, + "_src": "api", + "_tgt": "api_apierror", + "source": "api", + "target": "api_apierror", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/api.ts", + "source_location": "L11", + "weight": 1.0, + "_src": "api", + "_tgt": "api_handleresponse", + "source": "api", + "target": "api_handleresponse", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/api.ts", + "source_location": "L25", + "weight": 1.0, + "_src": "api", + "_tgt": "api_apiget", + "source": "api", + "target": "api_apiget", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/api.ts", + "source_location": "L30", + "weight": 1.0, + "_src": "api", + "_tgt": "api_apipost", + "source": "api", + "target": "api_apipost", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/api.ts", + "source_location": "L39", + "weight": 1.0, + "_src": "api", + "_tgt": "api_apiput", + "source": "api", + "target": "api_apiput", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/api.ts", + "source_location": "L48", + "weight": 1.0, + "_src": "api", + "_tgt": "api_apipatch", + "source": "api", + "target": "api_apipatch", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/api.ts", + "source_location": "L57", + "weight": 1.0, + "_src": "api", + "_tgt": "api_apidelete", + "source": "api", + "target": "api_apidelete", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/api.ts", + "source_location": "L62", + "weight": 1.0, + "_src": "api", + "_tgt": "api_apiupload", + "source": "api", + "target": "api_apiupload", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "useitems", + "_tgt": "api", + "source": "api", + "target": "useitems", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "usecandidates", + "_tgt": "api", + "source": "api", + "target": "usecandidates", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "useauth", + "_tgt": "api", + "source": "api", + "target": "useauth", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useProfile.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "useprofile", + "_tgt": "api", + "source": "api", + "target": "useprofile", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useTotals.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "usetotals", + "_tgt": "api", + "source": "api", + "target": "usetotals", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "usesetups", + "_tgt": "api", + "source": "api", + "target": "usesetups", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSettings.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "usesettings", + "_tgt": "api", + "source": "api", + "target": "usesettings", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "usecategories", + "_tgt": "api", + "source": "api", + "target": "usecategories", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "usethreads", + "_tgt": "api", + "source": "api", + "target": "usethreads", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useTags.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "usetags", + "_tgt": "api", + "source": "api", + "target": "usetags", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "useglobalitems", + "_tgt": "api", + "source": "api", + "target": "useglobalitems", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "api", + "source": "api", + "target": "addtothreadmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ImageUpload.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "imageupload", + "_tgt": "api", + "source": "api", + "target": "imageupload", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ProfileSection.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "profilesection", + "_tgt": "api", + "source": "api", + "target": "profilesection", + "confidence_score": 1.0 + }, + { + "relation": "method", + "confidence": "EXTRACTED", + "source_file": "src/client/lib/api.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "api_apierror", + "_tgt": "api_apierror_constructor", + "source": "api_apierror", + "target": "api_apierror_constructor", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/lib/api.ts", + "source_location": "L27", + "weight": 0.8, + "_src": "api_apiget", + "_tgt": "api_handleresponse", + "source": "api_handleresponse", + "target": "api_apiget", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/lib/api.ts", + "source_location": "L36", + "weight": 0.8, + "_src": "api_apipost", + "_tgt": "api_handleresponse", + "source": "api_handleresponse", + "target": "api_apipost", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/lib/api.ts", + "source_location": "L45", + "weight": 0.8, + "_src": "api_apiput", + "_tgt": "api_handleresponse", + "source": "api_handleresponse", + "target": "api_apiput", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/lib/api.ts", + "source_location": "L54", + "weight": 0.8, + "_src": "api_apipatch", + "_tgt": "api_handleresponse", + "source": "api_handleresponse", + "target": "api_apipatch", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/lib/api.ts", + "source_location": "L59", + "weight": 0.8, + "_src": "api_apidelete", + "_tgt": "api_handleresponse", + "source": "api_handleresponse", + "target": "api_apidelete", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/lib/api.ts", + "source_location": "L69", + "weight": 0.8, + "_src": "api_apiupload", + "_tgt": "api_handleresponse", + "source": "api_handleresponse", + "target": "api_apiupload", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L45", + "weight": 1.0, + "_src": "useitems", + "_tgt": "useitems_useitems", + "source": "useitems", + "target": "useitems_useitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L52", + "weight": 1.0, + "_src": "useitems", + "_tgt": "useitems_useitem", + "source": "useitems", + "target": "useitems_useitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L62", + "weight": 1.0, + "_src": "useitems", + "_tgt": "useitems_usecreateitem", + "source": "useitems", + "target": "useitems_usecreateitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L74", + "weight": 1.0, + "_src": "useitems", + "_tgt": "useitems_useupdateitem", + "source": "useitems", + "target": "useitems_useupdateitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L87", + "weight": 1.0, + "_src": "useitems", + "_tgt": "useitems_usedeleteitem", + "source": "useitems", + "target": "useitems_usedeleteitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L100", + "weight": 1.0, + "_src": "useitems", + "_tgt": "useitems_useduplicateitem", + "source": "useitems", + "target": "useitems_useduplicateitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L111", + "weight": 1.0, + "_src": "useitems", + "_tgt": "useitems_useexportitems", + "source": "useitems", + "target": "useitems_useexportitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useItems.ts", + "source_location": "L123", + "weight": 1.0, + "_src": "useitems", + "_tgt": "useitems_useimportitems", + "source": "useitems", + "target": "useitems_useimportitems", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "itemid", + "_tgt": "useitems", + "source": "useitems", + "target": "itemid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "itemform", + "_tgt": "useitems", + "source": "useitems", + "target": "itemform", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemCard.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "itemcard", + "_tgt": "useitems", + "source": "useitems", + "target": "itemcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToCollectionModal.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "addtocollectionmodal", + "_tgt": "useitems", + "source": "useitems", + "target": "addtocollectionmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemPicker.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "itempicker", + "_tgt": "useitems", + "source": "useitems", + "target": "itempicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ManualEntryForm.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "manualentryform", + "_tgt": "useitems", + "source": "useitems", + "target": "manualentryform", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "onboardingwizard", + "_tgt": "useitems", + "source": "useitems", + "target": "onboardingwizard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ConfirmDialog.tsx", + "source_location": "L1", + "weight": 1.0, + "_src": "confirmdialog", + "_tgt": "useitems", + "source": "useitems", + "target": "confirmdialog", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "collectionview", + "_tgt": "useitems", + "source": "useitems", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L22", + "weight": 1.0, + "_src": "usecandidates", + "_tgt": "usecandidates_usecreatecandidate", + "source": "usecandidates", + "target": "usecandidates_usecreatecandidate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L34", + "weight": 1.0, + "_src": "usecandidates", + "_tgt": "usecandidates_useupdatecandidate", + "source": "usecandidates", + "target": "usecandidates_useupdatecandidate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L52", + "weight": 1.0, + "_src": "usecandidates", + "_tgt": "usecandidates_usedeletecandidate", + "source": "usecandidates", + "target": "usecandidates_usedeletecandidate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCandidates.ts", + "source_location": "L66", + "weight": 1.0, + "_src": "usecandidates", + "_tgt": "usecandidates_usereordercandidates", + "source": "usecandidates", + "target": "usecandidates_usereordercandidates", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L22", + "weight": 1.0, + "_src": "root", + "_tgt": "usecandidates", + "source": "usecandidates", + "target": "root", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "usecandidates", + "source": "usecandidates", + "target": "candidateid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "candidateform", + "_tgt": "usecandidates", + "source": "usecandidates", + "target": "candidateform", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L9", + "weight": 1.0, + "_src": "useauth", + "_tgt": "useauth_useauth", + "source": "useauth", + "target": "useauth_useauth", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L18", + "weight": 1.0, + "_src": "useauth", + "_tgt": "useauth_uselogout", + "source": "useauth", + "target": "useauth_uselogout", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L39", + "weight": 1.0, + "_src": "useauth", + "_tgt": "useauth_useapikeys", + "source": "useauth", + "target": "useauth_useapikeys", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L46", + "weight": 1.0, + "_src": "useauth", + "_tgt": "useauth_usecreateapikey", + "source": "useauth", + "target": "useauth_usecreateapikey", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useAuth.ts", + "source_location": "L57", + "weight": 1.0, + "_src": "useauth", + "_tgt": "useauth_usedeleteapikey", + "source": "useauth", + "target": "useauth_usedeleteapikey", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L21", + "weight": 1.0, + "_src": "root", + "_tgt": "useauth", + "source": "useauth", + "target": "root", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/login.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "login", + "_tgt": "useauth", + "source": "useauth", + "target": "login", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ProfileSection.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "profilesection", + "_tgt": "useauth", + "source": "useauth", + "target": "profilesection", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/UserMenu.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "usermenu", + "_tgt": "useauth", + "source": "useauth", + "target": "usermenu", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/TotalsBar.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "totalsbar", + "_tgt": "useauth", + "source": "useauth", + "target": "totalsbar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useProfile.ts", + "source_location": "L25", + "weight": 1.0, + "_src": "useprofile", + "_tgt": "useprofile_usepublicprofile", + "source": "useprofile", + "target": "useprofile_usepublicprofile", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useProfile.ts", + "source_location": "L33", + "weight": 1.0, + "_src": "useprofile", + "_tgt": "useprofile_useupdateprofile", + "source": "useprofile", + "target": "useprofile_useupdateprofile", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/users/$userId.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "userid", + "_tgt": "useprofile", + "source": "useprofile", + "target": "userid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ProfileSection.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "profilesection", + "_tgt": "useprofile", + "source": "useprofile", + "target": "profilesection", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useTotals.ts", + "source_location": "L26", + "weight": 1.0, + "_src": "usetotals", + "_tgt": "usetotals_usetotals", + "source": "usetotals", + "target": "usetotals_usetotals", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "collectionview", + "_tgt": "usetotals", + "source": "usetotals", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L50", + "weight": 1.0, + "_src": "usesetups", + "_tgt": "usesetups_usesetups", + "source": "usesetups", + "target": "usesetups_usesetups", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L57", + "weight": 1.0, + "_src": "usesetups", + "_tgt": "usesetups_usesetup", + "source": "usesetups", + "target": "usesetups_usesetup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L67", + "weight": 1.0, + "_src": "usesetups", + "_tgt": "usesetups_usecreatesetup", + "source": "usesetups", + "target": "usesetups_usecreatesetup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L78", + "weight": 1.0, + "_src": "usesetups", + "_tgt": "usesetups_useupdatesetup", + "source": "usesetups", + "target": "usesetups_useupdatesetup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L89", + "weight": 1.0, + "_src": "usesetups", + "_tgt": "usesetups_usedeletesetup", + "source": "usesetups", + "target": "usesetups_usedeletesetup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L100", + "weight": 1.0, + "_src": "usesetups", + "_tgt": "usesetups_usesyncsetupitems", + "source": "usesetups", + "target": "usesetups_usesyncsetupitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L111", + "weight": 1.0, + "_src": "usesetups", + "_tgt": "usesetups_useremovesetupitem", + "source": "usesetups", + "target": "usesetups_useremovesetupitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSetups.ts", + "source_location": "L122", + "weight": 1.0, + "_src": "usesetups", + "_tgt": "usesetups_useupdateitemclassification", + "source": "usesetups", + "target": "usesetups_useupdateitemclassification", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/setups/$setupId.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "setupid", + "_tgt": "usesetups", + "source": "usesetups", + "target": "setupid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/SetupsView.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "setupsview", + "_tgt": "usesetups", + "source": "usesetups", + "target": "setupsview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemPicker.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "itempicker", + "_tgt": "usesetups", + "source": "usesetups", + "target": "itempicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/SetupImpactSelector.tsx", + "source_location": "L1", + "weight": 1.0, + "_src": "setupimpactselector", + "_tgt": "usesetups", + "source": "usesetups", + "target": "setupimpactselector", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L11", + "weight": 1.0, + "_src": "weightsummarycard", + "_tgt": "usesetups", + "source": "usesetups", + "target": "weightsummarycard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useFormatters.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "useformatters", + "_tgt": "usecurrency", + "source": "useformatters", + "target": "usecurrency", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useFormatters.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "useformatters", + "_tgt": "useweightunit", + "source": "useformatters", + "target": "useweightunit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useFormatters.ts", + "source_location": "L5", + "weight": 1.0, + "_src": "useformatters", + "_tgt": "useformatters_useformatters", + "source": "useformatters", + "target": "useformatters_useformatters", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/global-items/$globalItemId.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "globalitemid", + "_tgt": "useformatters", + "source": "useformatters", + "target": "globalitemid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/setups/$setupId.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "setupid", + "_tgt": "useformatters", + "source": "useformatters", + "target": "setupid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "itemid", + "_tgt": "useformatters", + "source": "useformatters", + "target": "itemid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "useformatters", + "source": "useformatters", + "target": "candidateid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemCard.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "itemcard", + "_tgt": "useformatters", + "source": "useformatters", + "target": "itemcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "useformatters", + "source": "useformatters", + "target": "catalogsearchoverlay", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ThreadCard.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "threadcard", + "_tgt": "useformatters", + "source": "useformatters", + "target": "threadcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "candidatecard", + "_tgt": "useformatters", + "source": "useformatters", + "target": "candidatecard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemPicker.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "itempicker", + "_tgt": "useformatters", + "source": "useformatters", + "target": "itempicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ComparisonTable.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "comparisontable", + "_tgt": "useformatters", + "source": "useformatters", + "target": "comparisontable", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryHeader.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "categoryheader", + "_tgt": "useformatters", + "source": "useformatters", + "target": "categoryheader", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/SetupCard.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "setupcard", + "_tgt": "useformatters", + "source": "useformatters", + "target": "setupcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "collectionview", + "_tgt": "useformatters", + "source": "useformatters", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateListItem.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "candidatelistitem", + "_tgt": "useformatters", + "source": "useformatters", + "target": "candidatelistitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/GlobalItemCard.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "globalitemcard", + "_tgt": "useformatters", + "source": "useformatters", + "target": "globalitemcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L10", + "weight": 1.0, + "_src": "weightsummarycard", + "_tgt": "useformatters", + "source": "useformatters", + "target": "weightsummarycard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useImpactDeltas.ts", + "source_location": "L13", + "weight": 1.0, + "_src": "useimpactdeltas", + "_tgt": "useimpactdeltas_useimpactdeltas", + "source": "useimpactdeltas", + "target": "useimpactdeltas_useimpactdeltas", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "candidatecard", + "_tgt": "useimpactdeltas", + "source": "useimpactdeltas", + "target": "candidatecard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ComparisonTable.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "comparisontable", + "_tgt": "useimpactdeltas", + "source": "useimpactdeltas", + "target": "comparisontable", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateListItem.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "candidatelistitem", + "_tgt": "useimpactdeltas", + "source": "useimpactdeltas", + "target": "candidatelistitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ImpactDeltaBadge.tsx", + "source_location": "L1", + "weight": 1.0, + "_src": "impactdeltabadge", + "_tgt": "useimpactdeltas", + "source": "useimpactdeltas", + "target": "impactdeltabadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSettings.ts", + "source_location": "L9", + "weight": 1.0, + "_src": "usesettings", + "_tgt": "usesettings_usesetting", + "source": "usesettings", + "target": "usesettings_usesetting", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSettings.ts", + "source_location": "L24", + "weight": 1.0, + "_src": "usesettings", + "_tgt": "usesettings_useupdatesetting", + "source": "usesettings", + "target": "usesettings_useupdatesetting", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useSettings.ts", + "source_location": "L35", + "weight": 1.0, + "_src": "usesettings", + "_tgt": "usesettings_useonboardingcomplete", + "source": "usesettings", + "target": "usesettings_useonboardingcomplete", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useWeightUnit.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "useweightunit", + "_tgt": "usesettings", + "source": "usesettings", + "target": "useweightunit", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCurrency.ts", + "source_location": "L2", + "weight": 1.0, + "_src": "usecurrency", + "_tgt": "usesettings", + "source": "usesettings", + "target": "usecurrency", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L23", + "weight": 1.0, + "_src": "root", + "_tgt": "usesettings", + "source": "usesettings", + "target": "root", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "onboardingwizard", + "_tgt": "usesettings", + "source": "usesettings", + "target": "onboardingwizard", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/hooks/useSettings.ts", + "source_location": "L36", + "weight": 0.8, + "_src": "usesettings_useonboardingcomplete", + "_tgt": "usesettings_usesetting", + "source": "usesettings_usesetting", + "target": "usesettings_useonboardingcomplete", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useWeightUnit.ts", + "source_location": "L6", + "weight": 1.0, + "_src": "useweightunit", + "_tgt": "useweightunit_useweightunit", + "source": "useweightunit", + "target": "useweightunit_useweightunit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L5", + "weight": 1.0, + "_src": "usecategories", + "_tgt": "usecategories_usecategories", + "source": "usecategories", + "target": "usecategories_usecategories", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L12", + "weight": 1.0, + "_src": "usecategories", + "_tgt": "usecategories_usecreatecategory", + "source": "usecategories", + "target": "usecategories_usecreatecategory", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L23", + "weight": 1.0, + "_src": "usecategories", + "_tgt": "usecategories_useupdatecategory", + "source": "usecategories", + "target": "usecategories_useupdatecategory", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCategories.ts", + "source_location": "L42", + "weight": 1.0, + "_src": "usecategories", + "_tgt": "usecategories_usedeletecategory", + "source": "usecategories", + "target": "usecategories_usedeletecategory", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "categorypicker", + "_tgt": "usecategories", + "source": "usecategories", + "target": "categorypicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToCollectionModal.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "addtocollectionmodal", + "_tgt": "usecategories", + "source": "usecategories", + "target": "addtocollectionmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "usecategories", + "source": "usecategories", + "target": "addtothreadmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ManualEntryForm.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "manualentryform", + "_tgt": "usecategories", + "source": "usecategories", + "target": "manualentryform", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "onboardingwizard", + "_tgt": "usecategories", + "source": "usecategories", + "target": "onboardingwizard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryHeader.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "categoryheader", + "_tgt": "usecategories", + "source": "usecategories", + "target": "categoryheader", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "createthreadmodal", + "_tgt": "usecategories", + "source": "usecategories", + "target": "createthreadmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/PlanningView.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "planningview", + "_tgt": "usecategories", + "source": "usecategories", + "target": "planningview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "collectionview", + "_tgt": "usecategories", + "source": "usecategories", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useCurrency.ts", + "source_location": "L6", + "weight": 1.0, + "_src": "usecurrency", + "_tgt": "usecurrency_usecurrency", + "source": "usecurrency", + "target": "usecurrency_usecurrency", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L49", + "weight": 1.0, + "_src": "usethreads", + "_tgt": "usethreads_usethreads", + "source": "usethreads", + "target": "usethreads_usethreads", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L59", + "weight": 1.0, + "_src": "usethreads", + "_tgt": "usethreads_usethread", + "source": "usethreads", + "target": "usethreads_usethread", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L69", + "weight": 1.0, + "_src": "usethreads", + "_tgt": "usethreads_usecreatethread", + "source": "usethreads", + "target": "usethreads_usecreatethread", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L80", + "weight": 1.0, + "_src": "usethreads", + "_tgt": "usethreads_useupdatethread", + "source": "usethreads", + "target": "usethreads_useupdatethread", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L91", + "weight": 1.0, + "_src": "usethreads", + "_tgt": "usethreads_usedeletethread", + "source": "usethreads", + "target": "usethreads_usedeletethread", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useThreads.ts", + "source_location": "L102", + "weight": 1.0, + "_src": "usethreads", + "_tgt": "usethreads_useresolvethread", + "source": "usethreads", + "target": "usethreads_useresolvethread", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L24", + "weight": 1.0, + "_src": "root", + "_tgt": "usethreads", + "source": "usethreads", + "target": "root", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "usethreads", + "source": "usethreads", + "target": "candidateid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "usethreads", + "source": "usethreads", + "target": "addtothreadmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "createthreadmodal", + "_tgt": "usethreads", + "source": "usethreads", + "target": "createthreadmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "candidateform", + "_tgt": "usethreads", + "source": "usethreads", + "target": "candidateform", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/PlanningView.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "planningview", + "_tgt": "usethreads", + "source": "usethreads", + "target": "planningview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useTags.ts", + "source_location": "L9", + "weight": 1.0, + "_src": "usetags", + "_tgt": "usetags_usetags", + "source": "usetags", + "target": "usetags_usetags", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "usetags", + "source": "usetags", + "target": "catalogsearchoverlay", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L26", + "weight": 1.0, + "_src": "useglobalitems", + "_tgt": "useglobalitems_useglobalitems", + "source": "useglobalitems", + "target": "useglobalitems_useglobalitems", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L39", + "weight": 1.0, + "_src": "useglobalitems", + "_tgt": "useglobalitems_useglobalitem", + "source": "useglobalitems", + "target": "useglobalitems_useglobalitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L49", + "weight": 1.0, + "_src": "useglobalitems", + "_tgt": "useglobalitems_uselinkitem", + "source": "useglobalitems", + "target": "useglobalitems_uselinkitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/hooks/useGlobalItems.ts", + "source_location": "L67", + "weight": 1.0, + "_src": "useglobalitems", + "_tgt": "useglobalitems_useunlinkitem", + "source": "useglobalitems", + "target": "useglobalitems_useunlinkitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/global-items/$globalItemId.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "globalitemid", + "_tgt": "useglobalitems", + "source": "useglobalitems", + "target": "globalitemid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/LinkToGlobalItem.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "linktoglobalitem", + "_tgt": "useglobalitems", + "source": "useglobalitems", + "target": "linktoglobalitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "useglobalitems", + "source": "useglobalitems", + "target": "catalogsearchoverlay", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "useglobalitems", + "source": "useglobalitems", + "target": "addtothreadmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L25", + "weight": 1.0, + "_src": "root", + "_tgt": "uistore", + "source": "uistore", + "target": "root", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/global-items/$globalItemId.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "globalitemid", + "_tgt": "uistore", + "source": "uistore", + "target": "globalitemid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "itemid", + "_tgt": "uistore", + "source": "uistore", + "target": "itemid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L10", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "uistore", + "source": "uistore", + "target": "candidateid", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "itemform", + "_tgt": "uistore", + "source": "uistore", + "target": "itemform", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemCard.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "itemcard", + "_tgt": "uistore", + "source": "uistore", + "target": "itemcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L9", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "uistore", + "source": "uistore", + "target": "catalogsearchoverlay", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToCollectionModal.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "addtocollectionmodal", + "_tgt": "uistore", + "source": "uistore", + "target": "addtocollectionmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "uistore", + "source": "uistore", + "target": "addtothreadmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "candidatecard", + "_tgt": "uistore", + "source": "uistore", + "target": "candidatecard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ExternalLinkDialog.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "externallinkdialog", + "_tgt": "uistore", + "source": "uistore", + "target": "externallinkdialog", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ComparisonTable.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "comparisontable", + "_tgt": "uistore", + "source": "uistore", + "target": "comparisontable", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "createthreadmodal", + "_tgt": "uistore", + "source": "uistore", + "target": "createthreadmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/PlanningView.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "planningview", + "_tgt": "uistore", + "source": "uistore", + "target": "planningview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ConfirmDialog.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "confirmdialog", + "_tgt": "uistore", + "source": "uistore", + "target": "confirmdialog", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/FabMenu.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "fabmenu", + "_tgt": "uistore", + "source": "uistore", + "target": "fabmenu", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "collectionview", + "_tgt": "uistore", + "source": "uistore", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateListItem.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "candidatelistitem", + "_tgt": "uistore", + "source": "uistore", + "target": "candidatelistitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/SetupImpactSelector.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "setupimpactselector", + "_tgt": "uistore", + "source": "uistore", + "target": "setupimpactselector", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L13", + "weight": 1.0, + "_src": "root", + "_tgt": "addtocollectionmodal", + "source": "root", + "target": "addtocollectionmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L14", + "weight": 1.0, + "_src": "root", + "_tgt": "addtothreadmodal", + "source": "root", + "target": "addtothreadmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L15", + "weight": 1.0, + "_src": "root", + "_tgt": "catalogsearchoverlay", + "source": "root", + "target": "catalogsearchoverlay", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L16", + "weight": 1.0, + "_src": "root", + "_tgt": "confirmdialog", + "source": "root", + "target": "confirmdialog", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L17", + "weight": 1.0, + "_src": "root", + "_tgt": "externallinkdialog", + "source": "root", + "target": "externallinkdialog", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L18", + "weight": 1.0, + "_src": "root", + "_tgt": "fabmenu", + "source": "root", + "target": "fabmenu", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L19", + "weight": 1.0, + "_src": "root", + "_tgt": "onboardingwizard", + "source": "root", + "target": "onboardingwizard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L20", + "weight": 1.0, + "_src": "root", + "_tgt": "totalsbar", + "source": "root", + "target": "totalsbar", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L32", + "weight": 1.0, + "_src": "root", + "_tgt": "root_rooterrorboundary", + "source": "root", + "target": "root_rooterrorboundary", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L223", + "weight": 1.0, + "_src": "root", + "_tgt": "root_handledelete", + "source": "root", + "target": "root_handledelete", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/__root.tsx", + "source_location": "L285", + "weight": 1.0, + "_src": "root", + "_tgt": "root_handleresolve", + "source": "root", + "target": "root_handleresolve", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/login.tsx", + "source_location": "L9", + "weight": 1.0, + "_src": "login", + "_tgt": "login_loginpage", + "source": "login", + "target": "login_loginpage", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/setups/$setupId.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "setupid", + "_tgt": "categoryheader", + "source": "setupid", + "target": "categoryheader", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/setups/$setupId.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "setupid", + "_tgt": "itemcard", + "source": "setupid", + "target": "itemcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/setups/$setupId.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "setupid", + "_tgt": "itempicker", + "source": "setupid", + "target": "itempicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/setups/$setupId.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "setupid", + "_tgt": "weightsummarycard", + "source": "setupid", + "target": "weightsummarycard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "itemid", + "_tgt": "categorypicker", + "source": "itemid", + "target": "categorypicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "itemid", + "_tgt": "imageupload", + "source": "itemid", + "target": "imageupload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L59", + "weight": 1.0, + "_src": "itemid", + "_tgt": "itemid_entereditmode", + "source": "itemid", + "target": "itemid_entereditmode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L76", + "weight": 1.0, + "_src": "itemid", + "_tgt": "itemid_canceledit", + "source": "itemid", + "target": "itemid_canceledit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L80", + "weight": 1.0, + "_src": "itemid", + "_tgt": "itemid_handlesave", + "source": "itemid", + "target": "itemid_handlesave", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L119", + "weight": 1.0, + "_src": "itemid", + "_tgt": "itemid_handleduplicate", + "source": "itemid", + "target": "itemid_handleduplicate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/items/$itemId.tsx", + "source_location": "L131", + "weight": 1.0, + "_src": "itemid", + "_tgt": "itemid_handledelete", + "source": "itemid", + "target": "itemid_handledelete", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "categorypicker", + "source": "candidateid", + "target": "categorypicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "imageupload", + "source": "candidateid", + "target": "imageupload", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "statusbadge", + "source": "candidateid", + "target": "statusbadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L60", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "candidateid_entereditmode", + "source": "candidateid", + "target": "candidateid_entereditmode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L81", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "candidateid_canceledit", + "source": "candidateid", + "target": "candidateid_canceledit", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L86", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "candidateid_validate", + "source": "candidateid", + "target": "candidateid_validate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L114", + "weight": 1.0, + "_src": "candidateid", + "_tgt": "candidateid_handlesave", + "source": "candidateid", + "target": "candidateid_handlesave", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/routes/threads/$threadId/candidates/$candidateId.tsx", + "source_location": "L115", + "weight": 0.8, + "_src": "candidateid_handlesave", + "_tgt": "candidateid_validate", + "source": "candidateid_validate", + "target": "candidateid_handlesave", + "confidence_score": 0.5 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/routes/users/$userId.tsx", + "source_location": "L2", + "weight": 1.0, + "_src": "userid", + "_tgt": "publicsetupcard", + "source": "userid", + "target": "publicsetupcard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/LinkToGlobalItem.tsx", + "source_location": "L15", + "weight": 1.0, + "_src": "linktoglobalitem", + "_tgt": "linktoglobalitem_linktoglobalitem", + "source": "linktoglobalitem", + "target": "linktoglobalitem_linktoglobalitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "itemform", + "_tgt": "categorypicker", + "source": "itemform", + "target": "categorypicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "itemform", + "_tgt": "imageupload", + "source": "itemform", + "target": "imageupload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L66", + "weight": 1.0, + "_src": "itemform", + "_tgt": "itemform_validate", + "source": "itemform", + "target": "itemform_validate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L94", + "weight": 1.0, + "_src": "itemform", + "_tgt": "itemform_handlesubmit", + "source": "itemform", + "target": "itemform_handlesubmit", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/components/ItemForm.tsx", + "source_location": "L96", + "weight": 0.8, + "_src": "itemform_handlesubmit", + "_tgt": "itemform_validate", + "source": "itemform_validate", + "target": "itemform_handlesubmit", + "confidence_score": 0.5 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemCard.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "itemcard", + "_tgt": "classificationbadge", + "source": "itemcard", + "target": "classificationbadge", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L10", + "weight": 1.0, + "_src": "collectionview", + "_tgt": "itemcard", + "source": "itemcard", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L47", + "weight": 1.0, + "_src": "iconpicker", + "_tgt": "iconpicker_stopprop", + "source": "iconpicker", + "target": "iconpicker_stopprop", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L57", + "weight": 1.0, + "_src": "iconpicker", + "_tgt": "iconpicker_handleclickoutside", + "source": "iconpicker", + "target": "iconpicker_handleclickoutside", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L75", + "weight": 1.0, + "_src": "iconpicker", + "_tgt": "iconpicker_handlekeydown", + "source": "iconpicker", + "target": "iconpicker_handlekeydown", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/IconPicker.tsx", + "source_location": "L110", + "weight": 1.0, + "_src": "iconpicker", + "_tgt": "iconpicker_handleselect", + "source": "iconpicker", + "target": "iconpicker_handleselect", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "categorypicker", + "_tgt": "iconpicker", + "source": "iconpicker", + "target": "categorypicker", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "onboardingwizard", + "_tgt": "iconpicker", + "source": "iconpicker", + "target": "onboardingwizard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryHeader.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "categoryheader", + "_tgt": "iconpicker", + "source": "iconpicker", + "target": "categoryheader", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L10", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "manualentryform", + "source": "catalogsearchoverlay", + "target": "manualentryform", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L97", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "catalogsearchoverlay_toggletag", + "source": "catalogsearchoverlay", + "target": "catalogsearchoverlay_toggletag", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L105", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "catalogsearchoverlay_removetag", + "source": "catalogsearchoverlay", + "target": "catalogsearchoverlay_removetag", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L109", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "catalogsearchoverlay_handleentermanualmode", + "source": "catalogsearchoverlay", + "target": "catalogsearchoverlay_handleentermanualmode", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L113", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "catalogsearchoverlay_handlemanualsuccess", + "source": "catalogsearchoverlay", + "target": "catalogsearchoverlay_handlemanualsuccess", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L117", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "catalogsearchoverlay_handleaddanother", + "source": "catalogsearchoverlay", + "target": "catalogsearchoverlay_handleaddanother", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L125", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "catalogsearchoverlay_handlecardclick", + "source": "catalogsearchoverlay", + "target": "catalogsearchoverlay_handlecardclick", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CatalogSearchOverlay.tsx", + "source_location": "L133", + "weight": 1.0, + "_src": "catalogsearchoverlay", + "_tgt": "catalogsearchoverlay_handleaddstub", + "source": "catalogsearchoverlay", + "target": "catalogsearchoverlay_handleaddstub", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L39", + "weight": 1.0, + "_src": "categorypicker", + "_tgt": "categorypicker_handleclickoutside", + "source": "categorypicker", + "target": "categorypicker_handleclickoutside", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L59", + "weight": 1.0, + "_src": "categorypicker", + "_tgt": "categorypicker_handleselect", + "source": "categorypicker", + "target": "categorypicker_handleselect", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L66", + "weight": 1.0, + "_src": "categorypicker", + "_tgt": "categorypicker_handlestartcreate", + "source": "categorypicker", + "target": "categorypicker_handlestartcreate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L70", + "weight": 1.0, + "_src": "categorypicker", + "_tgt": "categorypicker_handleconfirmcreate", + "source": "categorypicker", + "target": "categorypicker_handleconfirmcreate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L85", + "weight": 1.0, + "_src": "categorypicker", + "_tgt": "categorypicker_handlekeydown", + "source": "categorypicker", + "target": "categorypicker_handlekeydown", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToCollectionModal.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "addtocollectionmodal", + "_tgt": "categorypicker", + "source": "categorypicker", + "target": "addtocollectionmodal", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ManualEntryForm.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "manualentryform", + "_tgt": "categorypicker", + "source": "categorypicker", + "target": "manualentryform", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "candidateform", + "_tgt": "categorypicker", + "source": "categorypicker", + "target": "candidateform", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L108", + "weight": 0.8, + "_src": "categorypicker_handlekeydown", + "_tgt": "categorypicker_handleselect", + "source": "categorypicker_handleselect", + "target": "categorypicker_handlekeydown", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L110", + "weight": 0.8, + "_src": "categorypicker_handlekeydown", + "_tgt": "categorypicker_handlestartcreate", + "source": "categorypicker_handlestartcreate", + "target": "categorypicker_handlekeydown", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/components/CategoryPicker.tsx", + "source_location": "L106", + "weight": 0.8, + "_src": "categorypicker_handlekeydown", + "_tgt": "categorypicker_handleconfirmcreate", + "source": "categorypicker_handleconfirmcreate", + "target": "categorypicker_handlekeydown", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToCollectionModal.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "addtocollectionmodal", + "_tgt": "addtocollectionmodal_addtocollectionmodal", + "source": "addtocollectionmodal", + "target": "addtocollectionmodal_addtocollectionmodal", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/SlideOutPanel.tsx", + "source_location": "L18", + "weight": 1.0, + "_src": "slideoutpanel", + "_tgt": "slideoutpanel_handlekeydown", + "source": "slideoutpanel", + "target": "slideoutpanel_handlekeydown", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemPicker.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "itempicker", + "_tgt": "slideoutpanel", + "source": "slideoutpanel", + "target": "itempicker", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ThreadCard.tsx", + "source_location": "L17", + "weight": 1.0, + "_src": "threadcard", + "_tgt": "threadcard_formatdate", + "source": "threadcard", + "target": "threadcard_formatdate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ThreadCard.tsx", + "source_location": "L36", + "weight": 1.0, + "_src": "threadcard", + "_tgt": "threadcard_formatpricerange", + "source": "threadcard", + "target": "threadcard_formatpricerange", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/PlanningView.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "planningview", + "_tgt": "threadcard", + "source": "threadcard", + "target": "planningview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L84", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "addtothreadmodal_handleclose", + "source": "addtothreadmodal", + "target": "addtothreadmodal_handleclose", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L88", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "addtothreadmodal_handleselectchange", + "source": "addtothreadmodal", + "target": "addtothreadmodal_handleselectchange", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L96", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "addtothreadmodal_handleaddtoexistingthread", + "source": "addtothreadmodal", + "target": "addtothreadmodal_handleaddtoexistingthread", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L123", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "addtothreadmodal_handlecreatethreadandadd", + "source": "addtothreadmodal", + "target": "addtothreadmodal_handlecreatethreadandadd", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L151", + "weight": 1.0, + "_src": "addtothreadmodal", + "_tgt": "addtothreadmodal_handlesubmit", + "source": "addtothreadmodal", + "target": "addtothreadmodal_handlesubmit", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L154", + "weight": 0.8, + "_src": "addtothreadmodal_handlesubmit", + "_tgt": "addtothreadmodal_handleaddtoexistingthread", + "source": "addtothreadmodal_handleaddtoexistingthread", + "target": "addtothreadmodal_handlesubmit", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/components/AddToThreadModal.tsx", + "source_location": "L156", + "weight": 0.8, + "_src": "addtothreadmodal_handlesubmit", + "_tgt": "addtothreadmodal_handlecreatethreadandadd", + "source": "addtothreadmodal_handlecreatethreadandadd", + "target": "addtothreadmodal_handlesubmit", + "confidence_score": 0.5 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "candidatecard", + "_tgt": "candidatelistitem", + "source": "candidatecard", + "target": "candidatelistitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "candidatecard", + "_tgt": "impactdeltabadge", + "source": "candidatecard", + "target": "impactdeltabadge", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "candidatecard", + "_tgt": "statusbadge", + "source": "candidatecard", + "target": "statusbadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateCard.tsx", + "source_location": "L98", + "weight": 1.0, + "_src": "candidatecard", + "_tgt": "candidatecard_if", + "source": "candidatecard", + "target": "candidatecard_if", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ExternalLinkDialog.tsx", + "source_location": "L9", + "weight": 1.0, + "_src": "externallinkdialog", + "_tgt": "externallinkdialog_handlekeydown", + "source": "externallinkdialog", + "target": "externallinkdialog_handlekeydown", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ExternalLinkDialog.tsx", + "source_location": "L20", + "weight": 1.0, + "_src": "externallinkdialog", + "_tgt": "externallinkdialog_handlecontinue", + "source": "externallinkdialog", + "target": "externallinkdialog_handlecontinue", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/DashboardCard.tsx", + "source_location": "L13", + "weight": 1.0, + "_src": "dashboardcard", + "_tgt": "dashboardcard_dashboardcard", + "source": "dashboardcard", + "target": "dashboardcard_dashboardcard", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/SetupsView.tsx", + "source_location": "L3", + "weight": 1.0, + "_src": "setupsview", + "_tgt": "setupcard", + "source": "setupsview", + "target": "setupcard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/SetupsView.tsx", + "source_location": "L10", + "weight": 1.0, + "_src": "setupsview", + "_tgt": "setupsview_handlecreatesetup", + "source": "setupsview", + "target": "setupsview_handlecreatesetup", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ItemPicker.tsx", + "source_location": "L15", + "weight": 1.0, + "_src": "itempicker", + "_tgt": "itempicker_itempicker", + "source": "itempicker", + "target": "itempicker_itempicker", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/StatusBadge.tsx", + "source_location": "L26", + "weight": 1.0, + "_src": "statusbadge", + "_tgt": "statusbadge_handleclickoutside", + "source": "statusbadge", + "target": "statusbadge_handleclickoutside", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/StatusBadge.tsx", + "source_location": "L35", + "weight": 1.0, + "_src": "statusbadge", + "_tgt": "statusbadge_handleescape", + "source": "statusbadge", + "target": "statusbadge_handleescape", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateListItem.tsx", + "source_location": "L9", + "weight": 1.0, + "_src": "candidatelistitem", + "_tgt": "statusbadge", + "source": "statusbadge", + "target": "candidatelistitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ManualEntryForm.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "manualentryform", + "_tgt": "imageupload", + "source": "manualentryform", + "target": "imageupload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ManualEntryForm.tsx", + "source_location": "L12", + "weight": 1.0, + "_src": "manualentryform", + "_tgt": "manualentryform_manualentryform", + "source": "manualentryform", + "target": "manualentryform_manualentryform", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryFilterDropdown.tsx", + "source_location": "L28", + "weight": 1.0, + "_src": "categoryfilterdropdown", + "_tgt": "categoryfilterdropdown_handleclickoutside", + "source": "categoryfilterdropdown", + "target": "categoryfilterdropdown_handleclickoutside", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryFilterDropdown.tsx", + "source_location": "L43", + "weight": 1.0, + "_src": "categoryfilterdropdown", + "_tgt": "categoryfilterdropdown_handlekeydown", + "source": "categoryfilterdropdown", + "target": "categoryfilterdropdown_handlekeydown", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryFilterDropdown.tsx", + "source_location": "L60", + "weight": 1.0, + "_src": "categoryfilterdropdown", + "_tgt": "categoryfilterdropdown_handleselect", + "source": "categoryfilterdropdown", + "target": "categoryfilterdropdown_handleselect", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/PlanningView.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "planningview", + "_tgt": "categoryfilterdropdown", + "source": "categoryfilterdropdown", + "target": "planningview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "collectionview", + "_tgt": "categoryfilterdropdown", + "source": "categoryfilterdropdown", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ComparisonTable.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "comparisontable", + "_tgt": "candidatelistitem", + "source": "comparisontable", + "target": "candidatelistitem", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ComparisonTable.tsx", + "source_location": "L7", + "weight": 1.0, + "_src": "comparisontable", + "_tgt": "impactdeltabadge", + "source": "comparisontable", + "target": "impactdeltabadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L33", + "weight": 1.0, + "_src": "onboardingwizard", + "_tgt": "onboardingwizard_handleskip", + "source": "onboardingwizard", + "target": "onboardingwizard_handleskip", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L40", + "weight": 1.0, + "_src": "onboardingwizard", + "_tgt": "onboardingwizard_handlecreatecategory", + "source": "onboardingwizard", + "target": "onboardingwizard_handlecreatecategory", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L61", + "weight": 1.0, + "_src": "onboardingwizard", + "_tgt": "onboardingwizard_handlecreateitem", + "source": "onboardingwizard", + "target": "onboardingwizard_handlecreateitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/OnboardingWizard.tsx", + "source_location": "L85", + "weight": 1.0, + "_src": "onboardingwizard", + "_tgt": "onboardingwizard_handledone", + "source": "onboardingwizard", + "target": "onboardingwizard_handledone", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryHeader.tsx", + "source_location": "L33", + "weight": 1.0, + "_src": "categoryheader", + "_tgt": "categoryheader_handlesave", + "source": "categoryheader", + "target": "categoryheader_handlesave", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CategoryHeader.tsx", + "source_location": "L41", + "weight": 1.0, + "_src": "categoryheader", + "_tgt": "categoryheader_handledelete", + "source": "categoryheader", + "target": "categoryheader_handledelete", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CollectionView.tsx", + "source_location": "L9", + "weight": 1.0, + "_src": "collectionview", + "_tgt": "categoryheader", + "source": "categoryheader", + "target": "collectionview", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ThreadTabs.tsx", + "source_location": "L14", + "weight": 1.0, + "_src": "threadtabs", + "_tgt": "threadtabs_collectiontabs", + "source": "threadtabs", + "target": "threadtabs_collectiontabs", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/SetupCard.tsx", + "source_location": "L13", + "weight": 1.0, + "_src": "setupcard", + "_tgt": "setupcard_setupcard", + "source": "setupcard", + "target": "setupcard_setupcard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ClassificationBadge.tsx", + "source_location": "L12", + "weight": 1.0, + "_src": "classificationbadge", + "_tgt": "classificationbadge_classificationbadge", + "source": "classificationbadge", + "target": "classificationbadge_classificationbadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L26", + "weight": 1.0, + "_src": "createthreadmodal", + "_tgt": "createthreadmodal_resetform", + "source": "createthreadmodal", + "target": "createthreadmodal_resetform", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L32", + "weight": 1.0, + "_src": "createthreadmodal", + "_tgt": "createthreadmodal_handleclose", + "source": "createthreadmodal", + "target": "createthreadmodal_handleclose", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L37", + "weight": 1.0, + "_src": "createthreadmodal", + "_tgt": "createthreadmodal_handlesubmit", + "source": "createthreadmodal", + "target": "createthreadmodal_handlesubmit", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/PlanningView.tsx", + "source_location": "L6", + "weight": 1.0, + "_src": "planningview", + "_tgt": "createthreadmodal", + "source": "createthreadmodal", + "target": "planningview", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/components/CreateThreadModal.tsx", + "source_location": "L33", + "weight": 0.8, + "_src": "createthreadmodal_handleclose", + "_tgt": "createthreadmodal_resetform", + "source": "createthreadmodal_resetform", + "target": "createthreadmodal_handleclose", + "confidence_score": 0.5 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L5", + "weight": 1.0, + "_src": "candidateform", + "_tgt": "imageupload", + "source": "candidateform", + "target": "imageupload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L77", + "weight": 1.0, + "_src": "candidateform", + "_tgt": "candidateform_validate", + "source": "candidateform", + "target": "candidateform_validate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L105", + "weight": 1.0, + "_src": "candidateform", + "_tgt": "candidateform_handlesubmit", + "source": "candidateform", + "target": "candidateform_handlesubmit", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "src/client/components/CandidateForm.tsx", + "source_location": "L107", + "weight": 0.8, + "_src": "candidateform_handlesubmit", + "_tgt": "candidateform_validate", + "source": "candidateform_validate", + "target": "candidateform_handlesubmit", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ConfirmDialog.tsx", + "source_location": "L15", + "weight": 1.0, + "_src": "confirmdialog", + "_tgt": "confirmdialog_handledelete", + "source": "confirmdialog", + "target": "confirmdialog_handledelete", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/FabMenu.tsx", + "source_location": "L51", + "weight": 1.0, + "_src": "fabmenu", + "_tgt": "fabmenu_handlefabclick", + "source": "fabmenu", + "target": "fabmenu_handlefabclick", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ImageUpload.tsx", + "source_location": "L23", + "weight": 1.0, + "_src": "imageupload", + "_tgt": "imageupload_handlefilechange", + "source": "imageupload", + "target": "imageupload_handlefilechange", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ImageUpload.tsx", + "source_location": "L57", + "weight": 1.0, + "_src": "imageupload", + "_tgt": "imageupload_handleremove", + "source": "imageupload", + "target": "imageupload_handleremove", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ProfileSection.tsx", + "source_location": "L32", + "weight": 1.0, + "_src": "profilesection", + "_tgt": "profilesection_handlesave", + "source": "profilesection", + "target": "profilesection_handlesave", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ProfileSection.tsx", + "source_location": "L47", + "weight": 1.0, + "_src": "profilesection", + "_tgt": "profilesection_handleavatarupload", + "source": "profilesection", + "target": "profilesection_handleavatarupload", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/PublicSetupCard.tsx", + "source_location": "L11", + "weight": 1.0, + "_src": "publicsetupcard", + "_tgt": "publicsetupcard_publicsetupcard", + "source": "publicsetupcard", + "target": "publicsetupcard_publicsetupcard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/UserMenu.tsx", + "source_location": "L13", + "weight": 1.0, + "_src": "usermenu", + "_tgt": "usermenu_handleclick", + "source": "usermenu", + "target": "usermenu_handleclick", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/TotalsBar.tsx", + "source_location": "L4", + "weight": 1.0, + "_src": "totalsbar", + "_tgt": "usermenu", + "source": "usermenu", + "target": "totalsbar", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateListItem.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "candidatelistitem", + "_tgt": "impactdeltabadge", + "source": "candidatelistitem", + "target": "impactdeltabadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/CandidateListItem.tsx", + "source_location": "L42", + "weight": 1.0, + "_src": "candidatelistitem", + "_tgt": "candidatelistitem_rankbadge", + "source": "candidatelistitem", + "target": "candidatelistitem_rankbadge", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/GlobalItemCard.tsx", + "source_location": "L14", + "weight": 1.0, + "_src": "globalitemcard", + "_tgt": "globalitemcard_globalitemcard", + "source": "globalitemcard", + "target": "globalitemcard_globalitemcard", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/SetupImpactSelector.tsx", + "source_location": "L8", + "weight": 1.0, + "_src": "setupimpactselector", + "_tgt": "setupimpactselector_setupimpactselector", + "source": "setupimpactselector", + "target": "setupimpactselector_setupimpactselector", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L54", + "weight": 1.0, + "_src": "weightsummarycard", + "_tgt": "weightsummarycard_buildcategorychartdata", + "source": "weightsummarycard", + "target": "weightsummarycard_buildcategorychartdata", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L76", + "weight": 1.0, + "_src": "weightsummarycard", + "_tgt": "weightsummarycard_buildclassificationchartdata", + "source": "weightsummarycard", + "target": "weightsummarycard_buildclassificationchartdata", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/WeightSummaryCard.tsx", + "source_location": "L99", + "weight": 1.0, + "_src": "weightsummarycard", + "_tgt": "weightsummarycard_customtooltip", + "source": "weightsummarycard", + "target": "weightsummarycard_customtooltip", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "src/client/components/ImpactDeltaBadge.tsx", + "source_location": "L9", + "weight": 1.0, + "_src": "impactdeltabadge", + "_tgt": "impactdeltabadge_impactdeltabadge", + "source": "impactdeltabadge", + "target": "impactdeltabadge_impactdeltabadge", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/routes/params.test.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "params_test", + "_tgt": "db", + "source": "params_test", + "target": "db", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/params.test.ts", + "source_location": "L9", + "weight": 1.0, + "_src": "params_test", + "_tgt": "params_test_createtestapp", + "source": "params_test", + "target": "params_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/services/item.service.test.ts", + "source_location": "L173", + "weight": 1.0, + "_src": "item_service_test", + "_tgt": "item_service_test_insertglobalitem", + "source": "item_service_test", + "target": "item_service_test_insertglobalitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/services/image.service.test.ts", + "source_location": "L38", + "weight": 1.0, + "_src": "image_service_test", + "_tgt": "image_service_test_fetch", + "source": "image_service_test", + "target": "image_service_test_fetch", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/services/thread.service.test.ts", + "source_location": "L621", + "weight": 1.0, + "_src": "thread_service_test", + "_tgt": "thread_service_test_insertglobalitem", + "source": "thread_service_test", + "target": "thread_service_test_insertglobalitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/services/global-item.service.test.ts", + "source_location": "L17", + "weight": 1.0, + "_src": "global_item_service_test", + "_tgt": "global_item_service_test_insertglobalitem", + "source": "global_item_service_test", + "target": "global_item_service_test_insertglobalitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/services/global-item.service.test.ts", + "source_location": "L40", + "weight": 1.0, + "_src": "global_item_service_test", + "_tgt": "global_item_service_test_insertitem", + "source": "global_item_service_test", + "target": "global_item_service_test_insertitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/services/global-item.service.test.ts", + "source_location": "L53", + "weight": 1.0, + "_src": "global_item_service_test", + "_tgt": "global_item_service_test_inserttag", + "source": "global_item_service_test", + "target": "global_item_service_test_inserttag", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/services/global-item.service.test.ts", + "source_location": "L58", + "weight": 1.0, + "_src": "global_item_service_test", + "_tgt": "global_item_service_test_tagglobalitem", + "source": "global_item_service_test", + "target": "global_item_service_test_tagglobalitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/services/storage.service.test.ts", + "source_location": "L28", + "weight": 1.0, + "_src": "storage_service_test", + "_tgt": "storage_service_test_constructor", + "source": "storage_service_test", + "target": "storage_service_test_constructor", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/services/oauth.service.test.ts", + "source_location": "L13", + "weight": 1.0, + "_src": "oauth_service_test", + "_tgt": "oauth_service_test_generatepkce", + "source": "oauth_service_test", + "target": "oauth_service_test_generatepkce", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/mcp/tools.test.ts", + "source_location": "L9", + "weight": 1.0, + "_src": "tools_test", + "_tgt": "tools_test_parseresult", + "source": "tools_test", + "target": "tools_test_parseresult", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/helpers/db.ts", + "source_location": "L13", + "weight": 1.0, + "_src": "db", + "_tgt": "db_getorcreatedb", + "source": "db", + "target": "db_getorcreatedb", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/helpers/db.ts", + "source_location": "L40", + "weight": 1.0, + "_src": "db", + "_tgt": "db_createtestdb", + "source": "db", + "target": "db_createtestdb", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/helpers/db.ts", + "source_location": "L62", + "weight": 1.0, + "_src": "db", + "_tgt": "db_createsecondtestuser", + "source": "db", + "target": "db_createsecondtestuser", + "confidence_score": 1.0 + }, + { + "relation": "imports_from", + "confidence": "EXTRACTED", + "source_file": "tests/middleware/auth.test.ts", + "source_location": "L4", + "weight": 1.0, + "_src": "auth_test", + "_tgt": "db", + "source": "db", + "target": "auth_test", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "tests/helpers/db.ts", + "source_location": "L41", + "weight": 0.8, + "_src": "db_createtestdb", + "_tgt": "db_getorcreatedb", + "source": "db_getorcreatedb", + "target": "db_createtestdb", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/profiles.test.ts", + "source_location": "L18", + "weight": 1.0, + "_src": "profiles_test", + "_tgt": "profiles_test_createtestapp", + "source": "profiles_test", + "target": "profiles_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/profiles.test.ts", + "source_location": "L56", + "weight": 1.0, + "_src": "profiles_test", + "_tgt": "profiles_test_createnoauthtestapp", + "source": "profiles_test", + "target": "profiles_test_createnoauthtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/items.test.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "items_test", + "_tgt": "items_test_createtestapp", + "source": "items_test", + "target": "items_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/global-items.test.ts", + "source_location": "L14", + "weight": 1.0, + "_src": "global_items_test", + "_tgt": "global_items_test_createtestapp", + "source": "global_items_test", + "target": "global_items_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/global-items.test.ts", + "source_location": "L28", + "weight": 1.0, + "_src": "global_items_test", + "_tgt": "global_items_test_insertglobalitem", + "source": "global_items_test", + "target": "global_items_test_insertglobalitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/global-items.test.ts", + "source_location": "L40", + "weight": 1.0, + "_src": "global_items_test", + "_tgt": "global_items_test_insertitem", + "source": "global_items_test", + "target": "global_items_test_insertitem", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/auth.test.ts", + "source_location": "L23", + "weight": 1.0, + "_src": "auth_test", + "_tgt": "auth_test_createtestapp", + "source": "auth_test", + "target": "auth_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/middleware/auth.test.ts", + "source_location": "L35", + "weight": 1.0, + "_src": "auth_test", + "_tgt": "auth_test_createapp", + "source": "auth_test", + "target": "auth_test_createapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/threads.test.ts", + "source_location": "L6", + "weight": 1.0, + "_src": "threads_test", + "_tgt": "threads_test_createtestapp", + "source": "threads_test", + "target": "threads_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/threads.test.ts", + "source_location": "L21", + "weight": 1.0, + "_src": "threads_test", + "_tgt": "threads_test_createthreadviaapi", + "source": "threads_test", + "target": "threads_test_createthreadviaapi", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/threads.test.ts", + "source_location": "L30", + "weight": 1.0, + "_src": "threads_test", + "_tgt": "threads_test_createcandidateviaapi", + "source": "threads_test", + "target": "threads_test_createcandidateviaapi", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/tags.test.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "tags_test", + "_tgt": "tags_test_createtestapp", + "source": "tags_test", + "target": "tags_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/oauth.test.ts", + "source_location": "L16", + "weight": 1.0, + "_src": "oauth_test", + "_tgt": "oauth_test_createtestapp", + "source": "oauth_test", + "target": "oauth_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/oauth.test.ts", + "source_location": "L29", + "weight": 1.0, + "_src": "oauth_test", + "_tgt": "oauth_test_generatepkce", + "source": "oauth_test", + "target": "oauth_test_generatepkce", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/categories.test.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "categories_test", + "_tgt": "categories_test_createtestapp", + "source": "categories_test", + "target": "categories_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/setups.test.ts", + "source_location": "L7", + "weight": 1.0, + "_src": "setups_test", + "_tgt": "setups_test_createtestapp", + "source": "setups_test", + "target": "setups_test_createtestapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/setups.test.ts", + "source_location": "L22", + "weight": 1.0, + "_src": "setups_test", + "_tgt": "setups_test_createsetupviaapi", + "source": "setups_test", + "target": "setups_test_createsetupviaapi", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/routes/setups.test.ts", + "source_location": "L31", + "weight": 1.0, + "_src": "setups_test", + "_tgt": "setups_test_createitemviaapi", + "source": "setups_test", + "target": "setups_test_createitemviaapi", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/middleware/rateLimit.test.ts", + "source_location": "L8", + "weight": 1.0, + "_src": "ratelimit_test", + "_tgt": "ratelimit_test_createapp", + "source": "ratelimit_test", + "target": "ratelimit_test_createapp", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "tests/middleware/rateLimit.test.ts", + "source_location": "L15", + "weight": 1.0, + "_src": "ratelimit_test", + "_tgt": "ratelimit_test_makerequest", + "source": "ratelimit_test", + "target": "ratelimit_test_makerequest", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L21", + "weight": 1.0, + "_src": "migrate_sqlite_to_postgres", + "_tgt": "migrate_sqlite_to_postgres_unixtodate", + "source": "migrate_sqlite_to_postgres", + "target": "migrate_sqlite_to_postgres_unixtodate", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L26", + "weight": 1.0, + "_src": "migrate_sqlite_to_postgres", + "_tgt": "migrate_sqlite_to_postgres_inttobool", + "source": "migrate_sqlite_to_postgres", + "target": "migrate_sqlite_to_postgres_inttobool", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L36", + "weight": 1.0, + "_src": "migrate_sqlite_to_postgres", + "_tgt": "migrate_sqlite_to_postgres_migratetable", + "source": "migrate_sqlite_to_postgres", + "target": "migrate_sqlite_to_postgres_migratetable", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L68", + "weight": 1.0, + "_src": "migrate_sqlite_to_postgres", + "_tgt": "migrate_sqlite_to_postgres_resetsequences", + "source": "migrate_sqlite_to_postgres", + "target": "migrate_sqlite_to_postgres_resetsequences", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L222", + "weight": 1.0, + "_src": "migrate_sqlite_to_postgres", + "_tgt": "migrate_sqlite_to_postgres_main", + "source": "migrate_sqlite_to_postgres", + "target": "migrate_sqlite_to_postgres_main", + "confidence_score": 1.0 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L267", + "weight": 0.8, + "_src": "migrate_sqlite_to_postgres_main", + "_tgt": "migrate_sqlite_to_postgres_migratetable", + "source": "migrate_sqlite_to_postgres_migratetable", + "target": "migrate_sqlite_to_postgres_main", + "confidence_score": 0.5 + }, + { + "relation": "calls", + "confidence": "INFERRED", + "source_file": "scripts/migrate-sqlite-to-postgres.ts", + "source_location": "L272", + "weight": 0.8, + "_src": "migrate_sqlite_to_postgres_main", + "_tgt": "migrate_sqlite_to_postgres_resetsequences", + "source": "migrate_sqlite_to_postgres_resetsequences", + "target": "migrate_sqlite_to_postgres_main", + "confidence_score": 0.5 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "scripts/migrate-images-to-s3.ts", + "source_location": "L31", + "weight": 1.0, + "_src": "migrate_images_to_s3", + "_tgt": "migrate_images_to_s3_main", + "source": "migrate_images_to_s3", + "target": "migrate_images_to_s3_main", + "confidence_score": 1.0 + }, + { + "relation": "contains", + "confidence": "EXTRACTED", + "source_file": "e2e/global-setup.ts", + "source_location": "L3", + "weight": 1.0, + "_src": "global_setup", + "_tgt": "global_setup_globalsetup", + "source": "global_setup", + "target": "global_setup_globalsetup", + "confidence_score": 1.0 + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": null, + "weight": 1.0, + "_src": "readme_gearbox", + "_tgt": "readme_tech_stack", + "source": "readme_gearbox", + "target": "readme_tech_stack" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": null, + "weight": 1.0, + "_src": "readme_gearbox", + "_tgt": "readme_deployment", + "source": "readme_gearbox", + "target": "readme_deployment" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.72, + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "weight": 0.7, + "_src": "spec_catalog_flow", + "_tgt": "readme_gearbox", + "source": "readme_gearbox", + "target": "spec_catalog_flow" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": null, + "weight": 1.0, + "_src": "readme_deployment", + "_tgt": "readme_postgresql", + "source": "readme_deployment", + "target": "readme_postgresql" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": null, + "weight": 1.0, + "_src": "readme_deployment", + "_tgt": "readme_garage_s3", + "source": "readme_deployment", + "target": "readme_garage_s3" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": null, + "weight": 1.0, + "_src": "readme_deployment", + "_tgt": "readme_logto_oidc", + "source": "readme_deployment", + "target": "readme_logto_oidc" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.78, + "source_file": "README.md", + "source_location": null, + "weight": 0.8, + "_src": "readme_postgresql", + "_tgt": "claude_db_schema", + "source": "readme_postgresql", + "target": "claude_db_schema" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.62, + "source_file": "README.md", + "source_location": null, + "weight": 0.6, + "_src": "readme_garage_s3", + "_tgt": "spec_image_url_schema_changes", + "source": "readme_garage_s3", + "target": "spec_image_url_schema_changes" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.72, + "source_file": "README.md", + "source_location": null, + "weight": 0.7, + "_src": "readme_logto_oidc", + "_tgt": "auth_doc", + "source": "readme_logto_oidc", + "target": "auth_doc" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CLAUDE.md", + "source_location": null, + "weight": 1.0, + "_src": "claude_architecture", + "_tgt": "claude_client_layer", + "source": "claude_architecture", + "target": "claude_client_layer" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CLAUDE.md", + "source_location": null, + "weight": 1.0, + "_src": "claude_architecture", + "_tgt": "claude_server_layer", + "source": "claude_architecture", + "target": "claude_server_layer" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CLAUDE.md", + "source_location": null, + "weight": 1.0, + "_src": "claude_architecture", + "_tgt": "claude_shared_layer", + "source": "claude_architecture", + "target": "claude_shared_layer" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CLAUDE.md", + "source_location": null, + "weight": 1.0, + "_src": "claude_architecture", + "_tgt": "claude_db_schema", + "source": "claude_architecture", + "target": "claude_db_schema" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CLAUDE.md", + "source_location": null, + "weight": 1.0, + "_src": "claude_architecture", + "_tgt": "claude_auth_model", + "source": "claude_architecture", + "target": "claude_auth_model" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CLAUDE.md", + "source_location": null, + "weight": 1.0, + "_src": "claude_architecture", + "_tgt": "claude_mcp_server_overview", + "source": "claude_architecture", + "target": "claude_mcp_server_overview" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.65, + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "weight": 0.6, + "_src": "spec_catalog_tag_system", + "_tgt": "claude_db_schema", + "source": "claude_db_schema", + "target": "spec_catalog_tag_system" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.88, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_research_workflow", + "_tgt": "claude_thread_resolution", + "source": "claude_thread_resolution", + "target": "mcp_research_workflow" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_thread_resolve", + "_tgt": "claude_thread_resolution", + "source": "claude_thread_resolution", + "target": "api_thread_resolve" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_setup_items_atomic", + "_tgt": "claude_setup_item_sync", + "source": "claude_setup_item_sync", + "target": "api_setup_items_atomic" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "CLAUDE.md", + "source_location": null, + "weight": 1.0, + "_src": "claude_auth_model", + "_tgt": "auth_doc", + "source": "claude_auth_model", + "target": "auth_doc" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CLAUDE.md", + "source_location": null, + "weight": 1.0, + "_src": "claude_mcp_server_overview", + "_tgt": "claude_oauth_endpoints", + "source": "claude_mcp_server_overview", + "target": "claude_oauth_endpoints" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.92, + "source_file": "CLAUDE.md", + "source_location": null, + "weight": 1.0, + "_src": "claude_mcp_server_overview", + "_tgt": "mcp_server_doc", + "source": "claude_mcp_server_overview", + "target": "mcp_server_doc" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.92, + "source_file": "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_mcp_oauth", + "_tgt": "claude_oauth_endpoints", + "source": "claude_oauth_endpoints", + "target": "spec_mcp_oauth" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.78, + "source_file": "docs/superpowers/specs/2026-04-03-code-quality-round2-design.md", + "source_location": null, + "weight": 0.8, + "_src": "spec_useformatters_hook", + "_tgt": "claude_reusable_components", + "source": "claude_reusable_components", + "target": "spec_useformatters_hook" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_transport", + "source": "mcp_server_doc", + "target": "mcp_transport" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_tools_items", + "source": "mcp_server_doc", + "target": "mcp_tools_items" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_tools_categories", + "source": "mcp_server_doc", + "target": "mcp_tools_categories" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_tools_threads", + "source": "mcp_server_doc", + "target": "mcp_tools_threads" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_tools_setups", + "source": "mcp_server_doc", + "target": "mcp_tools_setups" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_tools_images", + "source": "mcp_server_doc", + "target": "mcp_tools_images" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_resource_summary", + "source": "mcp_server_doc", + "target": "mcp_resource_summary" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_research_workflow", + "source": "mcp_server_doc", + "target": "mcp_research_workflow" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_impl_structure", + "source": "mcp_server_doc", + "target": "mcp_impl_structure" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "mcp_session_mgmt", + "source": "mcp_server_doc", + "target": "mcp_session_mgmt" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/mcp-server.md", + "source_location": "line 53", + "weight": 1.0, + "_src": "mcp_server_doc", + "_tgt": "auth_doc", + "source": "mcp_server_doc", + "target": "auth_doc" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.87, + "source_file": "docs/superpowers/specs/2026-04-03-mcp-server-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_mcp_server_design", + "_tgt": "mcp_server_doc", + "source": "mcp_server_doc", + "target": "spec_mcp_server_design" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.82, + "source_file": "docs/authentication.md", + "source_location": null, + "weight": 0.8, + "_src": "auth_api_keys", + "_tgt": "mcp_server_doc", + "source": "mcp_server_doc", + "target": "auth_api_keys" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.88, + "source_file": "docs/mcp-server.md", + "source_location": null, + "weight": 0.9, + "_src": "mcp_tools_threads", + "_tgt": "mcp_research_workflow", + "source": "mcp_tools_threads", + "target": "mcp_research_workflow" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_doc", + "_tgt": "api_items_endpoints", + "source": "api_doc", + "target": "api_items_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_doc", + "_tgt": "api_categories_endpoints", + "source": "api_doc", + "target": "api_categories_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_doc", + "_tgt": "api_threads_endpoints", + "source": "api_doc", + "target": "api_threads_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_doc", + "_tgt": "api_setups_endpoints", + "source": "api_doc", + "target": "api_setups_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_doc", + "_tgt": "api_images_endpoints", + "source": "api_doc", + "target": "api_images_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_doc", + "_tgt": "api_settings_endpoints", + "source": "api_doc", + "target": "api_settings_endpoints" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_doc", + "_tgt": "api_totals_endpoint", + "source": "api_doc", + "target": "api_totals_endpoint" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": "line 631", + "weight": 1.0, + "_src": "api_doc", + "_tgt": "auth_doc", + "source": "api_doc", + "target": "auth_doc" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_threads_endpoints", + "_tgt": "api_thread_resolve", + "source": "api_threads_endpoints", + "target": "api_thread_resolve" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_threads_endpoints", + "_tgt": "api_candidate_reorder", + "source": "api_threads_endpoints", + "target": "api_candidate_reorder" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/api.md", + "source_location": null, + "weight": 1.0, + "_src": "api_setups_endpoints", + "_tgt": "api_setup_items_atomic", + "source": "api_setups_endpoints", + "target": "api_setup_items_atomic" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/superpowers/specs/2026-04-03-image-url-fetching-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_image_url_endpoint", + "_tgt": "api_images_endpoints", + "source": "api_images_endpoints", + "target": "spec_image_url_endpoint" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "auth_doc", + "_tgt": "auth_first_setup", + "source": "auth_doc", + "target": "auth_first_setup" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "auth_doc", + "_tgt": "auth_cookie_session", + "source": "auth_doc", + "target": "auth_cookie_session" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "auth_doc", + "_tgt": "auth_api_keys", + "source": "auth_doc", + "target": "auth_api_keys" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "auth_doc", + "_tgt": "auth_middleware_behavior", + "source": "auth_doc", + "target": "auth_middleware_behavior" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "auth_doc", + "_tgt": "auth_argon2", + "source": "auth_doc", + "target": "auth_argon2" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "auth_doc", + "_tgt": "auth_frontend_behavior", + "source": "auth_doc", + "target": "auth_frontend_behavior" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.88, + "source_file": "docs/superpowers/specs/2026-04-03-authentication-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_auth_design", + "_tgt": "auth_doc", + "source": "auth_doc", + "target": "spec_auth_design" + }, + { + "relation": "conceptually_related_to", + "confidence": "INFERRED", + "confidence_score": 0.78, + "source_file": "docs/superpowers/specs/2026-04-03-user-menu-design.md", + "source_location": null, + "weight": 0.8, + "_src": "spec_user_menu_component", + "_tgt": "auth_frontend_behavior", + "source": "auth_frontend_behavior", + "target": "spec_user_menu_component" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_auth", + "_tgt": "plan_auth_db_tables", + "source": "plan_auth", + "target": "plan_auth_db_tables" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_auth", + "_tgt": "plan_auth_service", + "source": "plan_auth", + "target": "plan_auth_service" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_auth", + "_tgt": "plan_auth_middleware", + "source": "plan_auth", + "target": "plan_auth_middleware" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "docs/superpowers/plans/2026-04-03-authentication.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_auth", + "_tgt": "spec_auth_design", + "source": "plan_auth", + "target": "spec_auth_design" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.92, + "source_file": "docs/superpowers/specs/2026-04-03-authentication-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_auth_db_schema", + "_tgt": "plan_auth_db_tables", + "source": "plan_auth_db_tables", + "target": "spec_auth_db_schema" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_testing", + "_tgt": "plan_testing_parseid", + "source": "plan_testing", + "target": "plan_testing_parseid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_testing", + "_tgt": "plan_testing_ratelimit", + "source": "plan_testing", + "target": "plan_testing_ratelimit" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_testing", + "_tgt": "plan_testing_playwright", + "source": "plan_testing", + "target": "plan_testing_playwright" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_testing", + "_tgt": "plan_testing_e2e_seed", + "source": "plan_testing", + "target": "plan_testing_e2e_seed" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "docs/superpowers/plans/2026-04-03-testing-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_testing", + "_tgt": "spec_testing_design", + "source": "plan_testing", + "target": "spec_testing_design" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.72, + "source_file": "docs/superpowers/specs/2026-04-03-code-quality-round2-design.md", + "source_location": null, + "weight": 0.7, + "_src": "spec_test_helper_migration", + "_tgt": "plan_testing_e2e_seed", + "source": "plan_testing_e2e_seed", + "target": "spec_test_helper_migration" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-image-url-fetching.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_image_url", + "_tgt": "plan_image_url_schema", + "source": "plan_image_url", + "target": "plan_image_url_schema" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-image-url-fetching.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_image_url", + "_tgt": "plan_image_url_service", + "source": "plan_image_url", + "target": "plan_image_url_service" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-image-url-fetching.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_image_url", + "_tgt": "plan_image_url_route", + "source": "plan_image_url", + "target": "plan_image_url_route" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "docs/superpowers/plans/2026-04-03-image-url-fetching.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_image_url", + "_tgt": "spec_image_url_design", + "source": "plan_image_url", + "target": "spec_image_url_design" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_mcp_server", + "_tgt": "plan_mcp_tools_items", + "source": "plan_mcp_server", + "target": "plan_mcp_tools_items" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "docs/superpowers/plans/2026-04-03-mcp-server.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_mcp_server", + "_tgt": "spec_mcp_server_design", + "source": "plan_mcp_server", + "target": "spec_mcp_server_design" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_codebase", + "_tgt": "plan_codebase_db_middleware", + "source": "plan_codebase", + "target": "plan_codebase_db_middleware" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_codebase", + "_tgt": "plan_codebase_params", + "source": "plan_codebase", + "target": "plan_codebase_params" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_codebase", + "_tgt": "plan_codebase_error_handler", + "source": "plan_codebase", + "target": "plan_codebase_error_handler" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_codebase", + "_tgt": "plan_codebase_rate_limit", + "source": "plan_codebase", + "target": "plan_codebase_rate_limit" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_codebase", + "_tgt": "plan_codebase_error_boundary", + "source": "plan_codebase", + "target": "plan_codebase_error_boundary" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_codebase", + "_tgt": "plan_codebase_split_collection", + "source": "plan_codebase", + "target": "plan_codebase_split_collection" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_codebase", + "_tgt": "spec_codebase_improvements", + "source": "plan_codebase", + "target": "spec_codebase_improvements" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.93, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_codebase_db_middleware", + "_tgt": "spec_codebase_db_middleware", + "source": "plan_codebase_db_middleware", + "target": "spec_codebase_db_middleware" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_codebase_parseid", + "_tgt": "plan_codebase_params", + "source": "plan_codebase_params", + "target": "spec_codebase_parseid" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.92, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_codebase_error_handler", + "_tgt": "spec_codebase_error_handler", + "source": "plan_codebase_error_handler", + "target": "spec_codebase_error_handler" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.92, + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_codebase_rate_limit", + "_tgt": "plan_codebase_rate_limit", + "source": "plan_codebase_rate_limit", + "target": "spec_codebase_rate_limit" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-04-mcp-oauth.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_mcp_oauth", + "_tgt": "plan_mcp_oauth_schema", + "source": "plan_mcp_oauth", + "target": "plan_mcp_oauth_schema" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/plans/2026-04-04-mcp-oauth.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_mcp_oauth", + "_tgt": "plan_mcp_oauth_service", + "source": "plan_mcp_oauth", + "target": "plan_mcp_oauth_service" + }, + { + "relation": "implements", + "confidence": "INFERRED", + "confidence_score": 0.9, + "source_file": "docs/superpowers/plans/2026-04-04-mcp-oauth.md", + "source_location": null, + "weight": 1.0, + "_src": "plan_mcp_oauth", + "_tgt": "spec_mcp_oauth", + "source": "plan_mcp_oauth", + "target": "spec_mcp_oauth" + }, + { + "relation": "semantically_similar_to", + "confidence": "INFERRED", + "confidence_score": 0.92, + "source_file": "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_mcp_oauth_db", + "_tgt": "plan_mcp_oauth_schema", + "source": "plan_mcp_oauth_schema", + "target": "spec_mcp_oauth_db" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_v14_collection_tools", + "_tgt": "spec_v14_item_quantity", + "source": "spec_v14_collection_tools", + "target": "spec_v14_item_quantity" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_v14_collection_tools", + "_tgt": "spec_v14_csv_import_export", + "source": "spec_v14_collection_tools", + "target": "spec_v14_csv_import_export" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_v14_collection_tools", + "_tgt": "spec_v14_item_duplication", + "source": "spec_v14_collection_tools", + "target": "spec_v14_item_duplication" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_v14_collection_tools", + "_tgt": "spec_v14_setup_impact", + "source": "spec_v14_collection_tools", + "target": "spec_v14_setup_impact" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_catalog_flow", + "_tgt": "spec_catalog_global_catalog", + "source": "spec_catalog_flow", + "target": "spec_catalog_global_catalog" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_catalog_flow", + "_tgt": "spec_catalog_tag_system", + "source": "spec_catalog_flow", + "target": "spec_catalog_tag_system" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_catalog_flow", + "_tgt": "spec_catalog_three_pillars", + "source": "spec_catalog_flow", + "target": "spec_catalog_three_pillars" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_catalog_flow", + "_tgt": "spec_catalog_add_gear_flow", + "source": "spec_catalog_flow", + "target": "spec_catalog_add_gear_flow" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_codebase_improvements", + "_tgt": "spec_codebase_db_middleware", + "source": "spec_codebase_improvements", + "target": "spec_codebase_db_middleware" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_codebase_improvements", + "_tgt": "spec_codebase_parseid", + "source": "spec_codebase_improvements", + "target": "spec_codebase_parseid" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_codebase_improvements", + "_tgt": "spec_codebase_error_handler", + "source": "spec_codebase_improvements", + "target": "spec_codebase_error_handler" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_codebase_improvements", + "_tgt": "spec_codebase_rate_limit", + "source": "spec_codebase_improvements", + "target": "spec_codebase_rate_limit" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-user-menu-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_user_menu", + "_tgt": "spec_user_menu_component", + "source": "spec_user_menu", + "target": "spec_user_menu_component" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-user-menu-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_user_menu", + "_tgt": "spec_user_menu_totalsbar", + "source": "spec_user_menu", + "target": "spec_user_menu_totalsbar" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-code-quality-round2-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_code_quality_round2", + "_tgt": "spec_useformatters_hook", + "source": "spec_code_quality_round2", + "target": "spec_useformatters_hook" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-code-quality-round2-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_code_quality_round2", + "_tgt": "spec_test_helper_migration", + "source": "spec_code_quality_round2", + "target": "spec_test_helper_migration" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_mcp_oauth", + "_tgt": "spec_mcp_oauth_flow", + "source": "spec_mcp_oauth", + "target": "spec_mcp_oauth_flow" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_mcp_oauth", + "_tgt": "spec_mcp_oauth_db", + "source": "spec_mcp_oauth", + "target": "spec_mcp_oauth_db" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_mcp_oauth", + "_tgt": "spec_mcp_oauth_service_design", + "source": "spec_mcp_oauth", + "target": "spec_mcp_oauth_service_design" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-authentication-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_auth_design", + "_tgt": "spec_auth_db_schema", + "source": "spec_auth_design", + "target": "spec_auth_db_schema" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-authentication-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_auth_design", + "_tgt": "spec_auth_middleware_design", + "source": "spec_auth_design", + "target": "spec_auth_middleware_design" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-mcp-server-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_mcp_server_design", + "_tgt": "spec_mcp_transport_design", + "source": "spec_mcp_server_design", + "target": "spec_mcp_transport_design" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-mcp-server-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_mcp_server_design", + "_tgt": "spec_mcp_tools_design", + "source": "spec_mcp_server_design", + "target": "spec_mcp_tools_design" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-testing-improvements-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_testing_design", + "_tgt": "spec_testing_e2e_design", + "source": "spec_testing_design", + "target": "spec_testing_e2e_design" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-image-url-fetching-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_image_url_design", + "_tgt": "spec_image_url_endpoint", + "source": "spec_image_url_design", + "target": "spec_image_url_endpoint" + }, + { + "relation": "references", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/superpowers/specs/2026-04-03-image-url-fetching-design.md", + "source_location": null, + "weight": 1.0, + "_src": "spec_image_url_design", + "_tgt": "spec_image_url_schema_changes", + "source": "spec_image_url_design", + "target": "spec_image_url_schema_changes" + } + ], + "hyperedges": [ + { + "id": "auth_dual_mode", + "label": "Dual Auth Mode: API Key + OAuth Bearer for MCP", + "nodes": [ + "auth_api_keys", + "spec_mcp_oauth_flow", + "mcp_server_doc", + "claude_oauth_endpoints" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.9, + "source_file": "CLAUDE.md" + }, + { + "id": "research_thread_workflow", + "label": "Research Thread Workflow: create\u2192add\u2192compare\u2192resolve", + "nodes": [ + "mcp_research_workflow", + "api_thread_resolve", + "claude_thread_resolution", + "mcp_tools_threads" + ], + "relation": "implement", + "confidence": "INFERRED", + "confidence_score": 0.88, + "source_file": "docs/mcp-server.md" + }, + { + "id": "server_hardening_bundle", + "label": "Server Hardening: DB Middleware + Params + Error Handler + Rate Limit", + "nodes": [ + "plan_codebase_db_middleware", + "plan_codebase_params", + "plan_codebase_error_handler", + "plan_codebase_rate_limit" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 0.92, + "source_file": "docs/superpowers/plans/2026-04-03-codebase-improvements.md" + } + ] +} \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json new file mode 100644 index 0000000..ea938b8 --- /dev/null +++ b/graphify-out/manifest.json @@ -0,0 +1,191 @@ +{ + "vite.config.ts": 1775401297.786613, + "drizzle.config.ts": 1775298137.6713374, + "playwright.config.ts": 1775225636.4156008, + "drizzle-pg.config.ts": 1775378300.6833742, + "src/server/index.ts": 1775455199.8767002, + "src/server/lib/params.ts": 1775223123.0936952, + "src/server/services/storage.service.ts": 1775568017.5821414, + "src/server/services/item.service.ts": 1775497750.0055015, + "src/server/services/global-item.service.ts": 1775496962.1092684, + "src/server/services/oauth.service.ts": 1775499823.6679575, + "src/server/services/totals.service.ts": 1775496962.1132684, + "src/server/services/auth.service.ts": 1775400418.2491226, + "src/server/services/thread.service.ts": 1775496962.1172683, + "src/server/services/category.service.ts": 1775496962.1112683, + "src/server/services/setup.service.ts": 1775428053.7308013, + "src/server/services/csv.service.ts": 1775496962.1122684, + "src/server/services/profile.service.ts": 1775428053.7298012, + "src/server/services/image.service.ts": 1775384666.2606268, + "src/server/services/tag.service.ts": 1775455199.8767002, + "src/server/mcp/index.ts": 1775381147.4622421, + "src/server/mcp/resources/collection.ts": 1775381147.4632423, + "src/server/mcp/tools/images.ts": 1775384666.2606268, + "src/server/mcp/tools/threads.ts": 1775384666.2606268, + "src/server/mcp/tools/setups.ts": 1775381147.4632423, + "src/server/mcp/tools/categories.ts": 1775381147.4632423, + "src/server/mcp/tools/items.ts": 1775384666.2606268, + "src/server/routes/totals.ts": 1775381147.4642422, + "src/server/routes/tags.ts": 1775455199.8767002, + "src/server/routes/oauth.ts": 1775499745.646702, + "src/server/routes/images.ts": 1775384666.2606268, + "src/server/routes/threads.ts": 1775400418.2491226, + "src/server/routes/setups.ts": 1775400418.2491226, + "src/server/routes/categories.ts": 1775381147.4642422, + "src/server/routes/items.ts": 1775496962.1062684, + "src/server/routes/auth.ts": 1775400418.2441225, + "src/server/routes/global-items.ts": 1775415274.541132, + "src/server/routes/profiles.ts": 1775387614.6025972, + "src/server/routes/settings.ts": 1775381147.4642422, + "src/server/middleware/rateLimit.ts": 1775225146.3311076, + "src/server/middleware/auth.ts": 1775402258.7481823, + "src/shared/schemas.ts": 1775497750.0055015, + "src/shared/types.ts": 1775413784.0066385, + "src/db/dev-seed-data.ts": 1775497738.885473, + "src/db/seed.ts": 1775387614.6095974, + "src/db/schema.ts": 1775499717.2636092, + "src/db/seed-global-items.ts": 1775477656.7478604, + "src/db/index.ts": 1775298137.6713374, + "src/db/migrate.ts": 1775298137.6713374, + "src/db/dev-seed.ts": 1775496962.1012683, + "src/client/main.tsx": 1773600574.695604, + "src/client/routeTree.gen.ts": 1775486652.7868547, + "src/client/lib/iconData.tsx": 1775497750.0047815, + "src/client/lib/impactDeltas.ts": 1775239536.8494341, + "src/client/lib/formatters.ts": 1774340676.960185, + "src/client/lib/api.ts": 1775239536.8494341, + "src/client/hooks/useItems.ts": 1775497750.0047815, + "src/client/hooks/useCandidates.ts": 1774340676.9598873, + "src/client/hooks/useAuth.ts": 1775401704.1677506, + "src/client/hooks/useProfile.ts": 1775388116.2074728, + "src/client/hooks/useTotals.ts": 1773600574.6936042, + "src/client/hooks/useSetups.ts": 1775388116.2074728, + "src/client/hooks/useFormatters.ts": 1775224091.689326, + "src/client/hooks/useImpactDeltas.ts": 1775239536.8489313, + "src/client/hooks/useSettings.ts": 1773600574.6936042, + "src/client/hooks/useWeightUnit.ts": 1774340676.960105, + "src/client/hooks/useCategories.ts": 1773600574.6936042, + "src/client/hooks/useCurrency.ts": 1774340676.9598873, + "src/client/hooks/useThreads.ts": 1775239536.8494341, + "src/client/hooks/useTags.ts": 1775455199.8757002, + "src/client/hooks/useGlobalItems.ts": 1775455199.8757002, + "src/client/stores/uiStore.ts": 1775497738.882473, + "src/client/routes/settings.tsx": 1775388116.2084727, + "src/client/routes/__root.tsx": 1775496708.6425436, + "src/client/routes/index.tsx": 1775224028.7108994, + "src/client/routes/login.tsx": 1775328984.2559686, + "src/client/routes/global-items/$globalItemId.tsx": 1775497738.8804731, + "src/client/routes/global-items/index.tsx": 1775388099.9719207, + "src/client/routes/collection/index.tsx": 1775239536.8494341, + "src/client/routes/setups/$setupId.tsx": 1775388116.2084727, + "src/client/routes/items/$itemId.tsx": 1775496428.1966932, + "src/client/routes/threads/$threadId/index.tsx": 1775497738.8864732, + "src/client/routes/threads/$threadId/candidates/$candidateId.tsx": 1775480645.6926198, + "src/client/routes/users/$userId.tsx": 1775388116.2084727, + "src/client/components/LinkToGlobalItem.tsx": 1775388099.9713807, + "src/client/components/ItemForm.tsx": 1775481300.2720795, + "src/client/components/ItemCard.tsx": 1775497002.01527, + "src/client/components/IconPicker.tsx": 1774340676.9593232, + "src/client/components/CatalogSearchOverlay.tsx": 1775495806.10785, + "src/client/components/CategoryPicker.tsx": 1774340676.958388, + "src/client/components/AddToCollectionModal.tsx": 1775497750.0047815, + "src/client/components/SlideOutPanel.tsx": 1773600574.689604, + "src/client/components/ThreadCard.tsx": 1775223940.3133, + "src/client/components/AddToThreadModal.tsx": 1775497738.866473, + "src/client/components/CandidateCard.tsx": 1775496992.9112687, + "src/client/components/ExternalLinkDialog.tsx": 1774340676.9592853, + "src/client/components/DashboardCard.tsx": 1774340676.9592607, + "src/client/components/SetupsView.tsx": 1775388116.2074728, + "src/client/components/ItemPicker.tsx": 1775224126.376561, + "src/client/components/StatusBadge.tsx": 1774340676.9596899, + "src/client/components/ManualEntryForm.tsx": 1775495737.72344, + "src/client/components/CategoryFilterDropdown.tsx": 1774340676.9573882, + "src/client/components/ComparisonTable.tsx": 1775384974.664518, + "src/client/components/OnboardingWizard.tsx": 1774340676.959639, + "src/client/components/CategoryHeader.tsx": 1775224126.376561, + "src/client/components/ThreadTabs.tsx": 1774340676.9597342, + "src/client/components/SetupCard.tsx": 1775388116.2074728, + "src/client/components/ClassificationBadge.tsx": 1774340676.9591277, + "src/client/components/CreateThreadModal.tsx": 1774340676.959191, + "src/client/components/CandidateForm.tsx": 1775481300.2720795, + "src/client/components/PlanningView.tsx": 1775223446.851935, + "src/client/components/ConfirmDialog.tsx": 1773600574.6846042, + "src/client/components/FabMenu.tsx": 1775456058.581611, + "src/client/components/CollectionView.tsx": 1775497750.0047815, + "src/client/components/ImageUpload.tsx": 1775497027.1222758, + "src/client/components/ProfileSection.tsx": 1775388116.2074728, + "src/client/components/PublicSetupCard.tsx": 1775388116.2074728, + "src/client/components/UserMenu.tsx": 1775328984.2549686, + "src/client/components/CandidateListItem.tsx": 1775481300.2720795, + "src/client/components/GlobalItemCard.tsx": 1775388099.9713807, + "src/client/components/SetupImpactSelector.tsx": 1775239536.8489313, + "src/client/components/TotalsBar.tsx": 1775496690.559586, + "src/client/components/WeightSummaryCard.tsx": 1775239536.8489313, + "src/client/components/ImpactDeltaBadge.tsx": 1775239536.8489313, + "tests/lib/impactDeltas.test.ts": 1775239536.850434, + "tests/lib/params.test.ts": 1775225131.7060795, + "tests/lib/formatters.test.ts": 1774340676.9613516, + "tests/services/category.service.test.ts": 1775381184.071451, + "tests/services/item.service.test.ts": 1775496962.1302683, + "tests/services/auth.service.test.ts": 1775381184.070451, + "tests/services/image.service.test.ts": 1775400418.2661226, + "tests/services/thread.service.test.ts": 1775496962.0872684, + "tests/services/global-item.service.test.ts": 1775496962.1312683, + "tests/services/csv.service.test.ts": 1775381184.071451, + "tests/services/storage.service.test.ts": 1775568692.637817, + "tests/services/tag.service.test.ts": 1775455199.8777003, + "tests/services/oauth.service.test.ts": 1775500183.374821, + "tests/services/setup.service.test.ts": 1775400418.2451227, + "tests/services/totals.test.ts": 1775381184.071451, + "tests/services/profile.service.test.ts": 1775496962.1372683, + "tests/mcp/tools.test.ts": 1775499887.3711665, + "tests/helpers/db.ts": 1775499013.8783193, + "tests/routes/profiles.test.ts": 1775496962.1292684, + "tests/routes/items.test.ts": 1775382446.4334328, + "tests/routes/global-items.test.ts": 1775496962.1212683, + "tests/routes/params.test.ts": 1775382496.6396964, + "tests/routes/auth.test.ts": 1775382630.7424035, + "tests/routes/threads.test.ts": 1775382459.837503, + "tests/routes/tags.test.ts": 1775455199.8767002, + "tests/routes/oauth.test.ts": 1775496962.1312683, + "tests/routes/images.test.ts": 1775400418.2601228, + "tests/routes/categories.test.ts": 1775382452.977467, + "tests/routes/setups.test.ts": 1775382471.242563, + "tests/middleware/auth.test.ts": 1775499614.0842717, + "tests/middleware/rateLimit.test.ts": 1775225260.6203685, + "scripts/migrate-sqlite-to-postgres.ts": 1775298651.3904054, + "scripts/migrate-images-to-s3.ts": 1775568064.8104713, + "e2e/error-handling.spec.ts": 1775226191.243978, + "e2e/dashboard.spec.ts": 1775225636.416601, + "e2e/seed.ts": 1775501762.4943113, + "e2e/auth.spec.ts": 1775226191.244978, + "e2e/collection.spec.ts": 1775225614.953519, + "e2e/threads.spec.ts": 1775226191.244978, + "e2e/global-setup.ts": 1775225388.8457344, + "README.md": 1775568034.5512583, + "CLAUDE.md": 1775567974.8618553, + "docs/mcp-server.md": 1775217575.3728483, + "docs/api.md": 1775217535.629659, + "docs/authentication.md": 1775217481.488381, + "docs/superpowers/plans/2026-04-03-authentication.md": 1775214398.772337, + "docs/superpowers/plans/2026-04-03-testing-improvements.md": 1775225101.0830247, + "docs/superpowers/plans/2026-04-03-image-url-fetching.md": 1775213853.4174955, + "docs/superpowers/plans/2026-04-03-mcp-server.md": 1775214347.1801987, + "docs/superpowers/plans/2026-04-03-codebase-improvements.md": 1775222975.7086604, + "docs/superpowers/plans/2026-04-04-mcp-oauth.md": 1775286563.8879275, + "docs/superpowers/specs/2026-04-03-v1.4-collection-tools-design.md": 1775239536.848434, + "docs/superpowers/specs/2026-04-05-catalog-driven-gear-flow-design.md": 1775406167.4770725, + "docs/superpowers/specs/2026-04-03-codebase-improvements-design.md": 1775222708.7757473, + "docs/superpowers/specs/2026-04-03-user-menu-design.md": 1775242804.336285, + "docs/superpowers/specs/2026-04-03-code-quality-round2-design.md": 1775223801.665358, + "docs/superpowers/specs/2026-04-04-mcp-oauth-design.md": 1775286186.3561695, + "docs/superpowers/specs/2026-04-03-authentication-design.md": 1775213615.8910823, + "docs/superpowers/specs/2026-04-03-mcp-server-design.md": 1775213617.4290743, + "docs/superpowers/specs/2026-04-03-testing-improvements-design.md": 1775224879.9578347, + "docs/superpowers/specs/2026-04-03-image-url-fetching-design.md": 1775213612.7000992, + "uploads/1773586112928-e5c49bc8-7edf-4c55-aed0-02cb57a74db4.png": 1773586112.9279783, + "uploads/1773594475132-0b2b79f3-5f9f-48ba-963c-8191fe556a1a.png": 1773594475.1326559, + "uploads/1775242726262-1f11b672-97dd-4fa3-9bf6-7f7dfe7cb566.png": 1775242726.264894, + "uploads/1773583248757-02352b82-2980-4d78-b461-0a508a67f79d.png": 1773583248.7582893, + "public/favicon.svg": 1774340676.9573882 +} \ No newline at end of file