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