diff --git a/app/assets/css/main.css b/app/assets/css/main.css index 6164538..ad14c0b 100644 --- a/app/assets/css/main.css +++ b/app/assets/css/main.css @@ -109,7 +109,10 @@ code, .mono { font-family: var(--code-font); font-size: 0.86em; } .task-meta { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 4px; padding-left: 24px; font-size: 12px; color: var(--muted); } .task-meta b { color: var(--fg-strong); font-weight: 600; } .task-meta .ctx b { color: var(--context); } +/* 위험도 색은 앱과 같다: 낮음 초록, 보통 주황, 높음 빨강 */ .task-meta .risk { color: var(--error); } +.task-meta .risk.risk-medium { color: var(--warning); } +.task-meta .risk.risk-low { color: var(--ok); } .steps { display: grid; grid-template-columns: repeat(6, 1fr); gap: 3px; margin-top: 10px; padding: 0; list-style: none; } .steps li { font-size: 11px; color: var(--dim); padding-top: 6px; border-top: 2px solid var(--border-strong); transition: color 0.3s, border-color 0.3s; letter-spacing: 0.02em; } .steps li.past { color: var(--muted); border-top-color: #4a4f63; } @@ -229,6 +232,10 @@ h2 { font-size: clamp(1.7rem, 2.9vw, 2.45rem); line-height: 1.24; letter-spacing .impact { margin: 10px 12px; padding: 10px 12px; border: 1px solid rgba(242, 101, 106, 0.45); border-radius: var(--radius); background: rgba(19, 20, 25, 0.6); } .impact-head { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--fg-strong); font-weight: 600; } .impact-head .risk { font-size: 11.5px; font-weight: 600; color: var(--error); background: rgba(242, 101, 106, 0.12); border-radius: 10px; padding: 1px 8px; } +.impact.risk-medium { border-color: rgba(220, 174, 58, 0.45); } +.impact.risk-medium .impact-head .risk { color: var(--warning); background: rgba(220, 174, 58, 0.14); } +.impact.risk-low { border-color: rgba(69, 189, 134, 0.4); } +.impact.risk-low .impact-head .risk { color: var(--ok); background: rgba(69, 189, 134, 0.14); } .impact-stats { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 6px; font-size: 13px; color: var(--muted); } .impact-stats b { color: var(--fg-strong); font-weight: 650; margin-right: 4px; } .impact-stats .sym { color: var(--fg); font-family: var(--code-font); font-size: 12.5px; } diff --git a/app/components/LandingPage.vue b/app/components/LandingPage.vue index 8d6f42d..53717e2 100644 --- a/app/components/LandingPage.vue +++ b/app/components/LandingPage.vue @@ -86,7 +86,7 @@ const sourceLine = computed(() => t.value.source(map.stats.files, map.stats.edge {{ t.chips.context }} {{ ctxFiles.length }} {{ t.chips.read }} {{ task.read.length }} {{ t.chips.edited }} 1 - {{ t.chips.risk[impact.risk] }} + {{ t.chips.risk[impact.risk] }}
  1. {{ t.steps[k] }}
  2. @@ -196,7 +196,7 @@ const sourceLine = computed(() => t.value.source(map.stats.files, map.stats.edge
    {{ l.n }}{{ l.code }}
    -
    +
    {{ t.impact.head }}{{ t.chips.risk[impact.risk] }}
    {{ impact.touched.join(", ") }} diff --git a/app/content/en.ts b/app/content/en.ts index bb491a1..d302fa8 100644 --- a/app/content/en.ts +++ b/app/content/en.ts @@ -34,12 +34,13 @@ const en: Copy = { budget: (used, budget, ms) => `${used} / ${budget} tokens · assembled in ${ms} ms`, evidenceTitle: "How many answer files each approach retrieves at the same budget", evidence: [ - { label: "Answer files retrieved (mean recall)", grep: "24%", lantern: "67%" }, - { label: "Questions with at least one answer file", grep: "35%", lantern: "90%" }, + { label: "Answer files retrieved (mean recall)", grep: "41%", lantern: "88%" }, + { label: "An answer file among the first 3 files", grep: "30%", lantern: "65%" }, + { label: "Same questions asked in Korean (recall)", grep: "38%", lantern: "76%" }, ], - grep: "Keyword search", + grep: "Keyword search (snippets around matches)", lantern: "Lantern", - condition: "Measured on one private project (1,772 code files, 20 hand-labelled questions, 8,000-token budget). A public benchmark on an open-source codebase is in progress.", + condition: "Public benchmark on 60 real commits from Flask, Hono and Commons Lang. The question is the commit message and the answer is the files it changed, so nobody hand-picks answers. 8,000-token budget; picking the same number of files at random scores 10%. Anyone can reproduce it with eval/bench in the repository.", }, read: { title: "What the agent read stays on the map.", @@ -86,10 +87,10 @@ const en: Copy = { }, models: { title: "You pick the model, and you can see everything it was sent.", - body: "Lantern doesn’t sell a model. Connect the API key you already use, or a local model on your machine.", + body: "Lantern doesn’t sell a model. Connect the API key you already use, or a local model on your machine, and pick from that provider’s model list. Switch between connected models right from the chat box.", rows: [ - { term: "Anthropic", text: "Claude (API key)" }, - { term: "OpenAI-compatible", text: "OpenAI, OpenRouter, vLLM, or any OpenAI-style endpoint" }, + { term: "Cloud", text: "Claude, GPT, Gemini, DeepSeek, Grok, Mistral, Groq, OpenRouter (API key)" }, + { term: "OpenAI-compatible", text: "vLLM or any other OpenAI-style endpoint" }, { term: "Local", text: "Ollama, LM Studio. Your code never leaves the machine" }, ], plain: ["No hidden system prompt", "No telemetry", "API keys in the OS credential store", "Monthly cost limit"], @@ -99,10 +100,11 @@ const en: Copy = { body: "This is a beta built by one person. Worth knowing before you try it.", rows: [ { term: "Code signing", text: "Not yet. On Windows, SmartScreen warns you; choose “More info → Run anyway”." }, - { term: "macOS · Linux", text: "They build and pass tests, but haven’t been used day to day. macOS isn’t notarized, so you have to allow it the first time." }, + { term: "macOS · Linux", text: "macOS has been installed and tried, but not used for long; Linux only builds and passes tests. macOS isn’t notarized, so you have to allow it the first time." }, + { term: "Languages analyzed", text: "Context, the map and the impact radius understand Rust, Python, TypeScript/JavaScript, Java, Go and C#. Other languages get syntax colors only, and their impact radius shows “unknown”." }, + { term: "Impact radius limits", text: "It finds calls by name (static analysis), so code a framework calls (@GetMapping, events, DI) may show no callers or tests. The card warns you when that’s likely." }, { term: "Merges · conflicts", text: "No UI. If a pull diverges, choose merge or rebase in the terminal." }, { term: "Extensions", text: "VS Code extensions don’t run. It connects language servers (TypeScript, Rust, Python)." }, - { term: "Public benchmark", text: "Not yet. The recall numbers above come from one private project." }, ], }, close: { @@ -110,7 +112,7 @@ const en: Copy = { body: "Before approving, read the impact radius on the card and press Show on map. Tell us what worked and what got in the way; it shapes the next beta.", os: [ { os: "windows", name: "Windows 10 · 11", detail: "x64 installer", status: "Tested", tested: true }, - { os: "mac", name: "macOS 11+", detail: "Apple Silicon · Intel", status: "Untested", tested: false }, + { os: "mac", name: "macOS 11+", detail: "Apple Silicon · Intel", status: "Install verified", tested: false }, { os: "linux", name: "Linux", detail: "AppImage · deb", status: "Untested", tested: false }, ], github: "View on GitHub", diff --git a/app/content/ko.ts b/app/content/ko.ts index 64c0b32..c0a181e 100644 --- a/app/content/ko.ts +++ b/app/content/ko.ts @@ -34,12 +34,13 @@ const ko: Copy = { budget: (used, budget, ms) => `${used} / ${budget} 토큰 · 조립 ${ms}ms`, evidenceTitle: "같은 예산에서 정답 파일을 몇 개 가져오나", evidence: [ - { label: "정답 파일 적중률 (평균)", grep: "24%", lantern: "67%" }, - { label: "정답 파일을 하나라도 가져온 질문", grep: "35%", lantern: "90%" }, + { label: "정답 파일 적중률 (평균)", grep: "41%", lantern: "88%" }, + { label: "처음 3개 파일 안에 정답", grep: "30%", lantern: "65%" }, + { label: "같은 질문을 한국어로 (적중률)", grep: "38%", lantern: "76%" }, ], - grep: "키워드 검색", + grep: "키워드 검색 (맞은 곳 앞뒤)", lantern: "Lantern", - condition: "비공개 프로젝트 하나(코드 파일 1,772개, 직접 정한 질문 20개, 예산 8,000토큰)에서 잰 값입니다. 공개 코드베이스로 만든 벤치마크를 준비하고 있습니다.", + condition: "Flask·Hono·Commons Lang의 실제 커밋 60개로 잰 공개 벤치마크입니다. 질문은 커밋 메시지, 정답은 그 커밋이 고친 파일이라 사람이 정답을 고르지 않습니다. 예산 8,000토큰, 같은 수의 파일을 무작위로 고르면 10%. 저장소의 eval/bench로 누구나 재현할 수 있습니다.", }, read: { title: "에이전트가 무엇을 읽었는지 지도에 남습니다.", @@ -86,10 +87,10 @@ const ko: Copy = { }, models: { title: "모델은 직접 고르고, 보낸 것은 전부 보입니다.", - body: "Lantern은 모델을 팔지 않습니다. 쓰던 API 키나 컴퓨터 안의 로컬 모델을 연결합니다.", + body: "Lantern은 모델을 팔지 않습니다. 쓰던 API 키나 컴퓨터 안의 로컬 모델을 연결하고, 키를 넣으면 그 회사의 모델 목록에서 고릅니다. 연결해 둔 모델끼리는 채팅 입력창에서 바로 바꿉니다.", rows: [ - { term: "Anthropic", text: "Claude (API 키)" }, - { term: "OpenAI 호환", text: "OpenAI, OpenRouter, vLLM 등 OpenAI 형식 주소" }, + { term: "클라우드", text: "Claude, GPT, Gemini, DeepSeek, Grok, Mistral, Groq, OpenRouter (API 키)" }, + { term: "OpenAI 호환", text: "vLLM 등 OpenAI 형식 주소라면 무엇이든" }, { term: "로컬", text: "Ollama, LM Studio. 코드가 컴퓨터 밖으로 나가지 않습니다" }, ], plain: ["숨은 시스템 프롬프트 없음", "사용 통계 수집 없음", "API 키는 운영체제 자격 증명 저장소에", "월 비용 한도"], @@ -99,10 +100,11 @@ const ko: Copy = { body: "혼자 만드는 베타입니다. 쓰기 전에 알아 두면 좋은 것들입니다.", rows: [ { term: "코드 서명", text: "아직 없습니다. Windows에서 SmartScreen 경고가 뜨면 ‘추가 정보 → 실행’을 눌러야 합니다." }, - { term: "macOS · Linux", text: "빌드와 테스트는 통과하지만 실제로 써 보지 않았습니다. 공증 전이라 macOS는 처음 열 때 허용이 필요합니다." }, + { term: "macOS · Linux", text: "macOS는 설치해 확인했지만 오래 써 보지는 않았고, Linux는 빌드와 테스트만 통과했습니다. 공증 전이라 macOS는 처음 열 때 허용이 필요합니다." }, + { term: "분석하는 언어", text: "맥락·지도·영향 반경은 Rust, Python, TypeScript·JavaScript, Java, Go, C#만 이해합니다. 그 밖의 언어는 코드 색만 나오고 영향 반경은 ‘알 수 없음’으로 보입니다." }, + { term: "영향 반경의 한계", text: "이름으로 호출을 찾는 정적 분석이라, 프레임워크가 부르는 코드(@GetMapping, 이벤트, DI)는 호출자와 테스트가 안 보일 수 있습니다. 이런 코드는 카드에 경고로 표시합니다." }, { term: "병합 · 충돌 해결", text: "화면이 없습니다. 풀이 갈라지면 터미널에서 병합이나 리베이스를 고릅니다." }, { term: "확장 기능", text: "VS Code 확장은 쓸 수 없습니다. 언어 서버(TypeScript, Rust, Python)만 연결합니다." }, - { term: "공개 벤치마크", text: "아직 없습니다. 위의 적중률은 비공개 프로젝트 하나로 잰 값입니다." }, ], }, close: { @@ -110,7 +112,7 @@ const ko: Copy = { body: "승인하기 전에 카드의 영향 반경을 보고, ‘지도에서 보기’를 눌러 보세요. 무엇이 좋았고 무엇이 막혔는지 알려 주시면 다음 베타에 반영합니다.", os: [ { os: "windows", name: "Windows 10 · 11", detail: "x64 설치 파일", status: "확인됨", tested: true }, - { os: "mac", name: "macOS 11 이상", detail: "Apple Silicon · Intel", status: "실사용 확인 전", tested: false }, + { os: "mac", name: "macOS 11 이상", detail: "Apple Silicon · Intel", status: "설치 확인됨", tested: false }, { os: "linux", name: "Linux", detail: "AppImage · deb", status: "실사용 확인 전", tested: false }, ], github: "GitHub에서 보기", diff --git a/app/data/lantern-map.json b/app/data/lantern-map.json index 480eb5d..e6d5f43 100644 --- a/app/data/lantern-map.json +++ b/app/data/lantern-map.json @@ -1 +1 @@ -{"generated":{"commit":"423187f","date":"2026-09-26","repo":"Lantern-IDE/lantern"},"stats":{"files":77,"edges":956,"groups":8},"groups":["app","app/e2e","app/src","app/src-tauri","app/tests","crates/lantern-context","eval","scripts"],"nodes":[{"id":"f:app/e2e/run.mjs","label":"run.mjs","path":"app/e2e/run.mjs","group":1,"weight":24,"x":0.001,"y":-0.295},{"id":"f:app/src-tauri/build.rs","label":"build.rs","path":"app/src-tauri/build.rs","group":3,"weight":1,"x":0.396,"y":0.351},{"id":"f:app/src-tauri/src/agent.rs","label":"agent.rs","path":"app/src-tauri/src/agent.rs","group":3,"weight":16,"x":-0.012,"y":0.229},{"id":"f:app/src-tauri/src/agents.rs","label":"agents.rs","path":"app/src-tauri/src/agents.rs","group":3,"weight":10,"x":-0.057,"y":0.074},{"id":"f:app/src-tauri/src/applog.rs","label":"applog.rs","path":"app/src-tauri/src/applog.rs","group":3,"weight":18,"x":0.175,"y":0.036},{"id":"f:app/src-tauri/src/completion.rs","label":"completion.rs","path":"app/src-tauri/src/completion.rs","group":3,"weight":14,"x":0.212,"y":0.24},{"id":"f:app/src-tauri/src/config.rs","label":"config.rs","path":"app/src-tauri/src/config.rs","group":3,"weight":28,"x":0.165,"y":0.375},{"id":"f:app/src-tauri/src/e2e_tests.rs","label":"e2e_tests.rs","path":"app/src-tauri/src/e2e_tests.rs","group":3,"weight":12,"x":-0.006,"y":0.302},{"id":"f:app/src-tauri/src/fswatch.rs","label":"fswatch.rs","path":"app/src-tauri/src/fswatch.rs","group":3,"weight":6,"x":0.241,"y":0.316},{"id":"f:app/src-tauri/src/gitops.rs","label":"gitops.rs","path":"app/src-tauri/src/gitops.rs","group":3,"weight":55,"x":0.007,"y":0.017},{"id":"f:app/src-tauri/src/hooks.rs","label":"hooks.rs","path":"app/src-tauri/src/hooks.rs","group":3,"weight":2,"x":0.309,"y":0.346},{"id":"f:app/src-tauri/src/llm/anthropic.rs","label":"anthropic.rs","path":"app/src-tauri/src/llm/anthropic.rs","group":3,"weight":11,"x":0.274,"y":0.095},{"id":"f:app/src-tauri/src/llm/mod.rs","label":"mod.rs","path":"app/src-tauri/src/llm/mod.rs","group":3,"weight":19,"x":0.106,"y":0.318},{"id":"f:app/src-tauri/src/llm/openai.rs","label":"openai.rs","path":"app/src-tauri/src/llm/openai.rs","group":3,"weight":6,"x":0.141,"y":0.246},{"id":"f:app/src-tauri/src/llm/sse.rs","label":"sse.rs","path":"app/src-tauri/src/llm/sse.rs","group":3,"weight":7,"x":0.004,"y":0.101},{"id":"f:app/src-tauri/src/lsp.rs","label":"lsp.rs","path":"app/src-tauri/src/lsp.rs","group":3,"weight":12,"x":0.026,"y":0.166},{"id":"f:app/src-tauri/src/lspinstall.rs","label":"lspinstall.rs","path":"app/src-tauri/src/lspinstall.rs","group":3,"weight":14,"x":0.055,"y":0.262},{"id":"f:app/src-tauri/src/main.rs","label":"main.rs","path":"app/src-tauri/src/main.rs","group":3,"weight":101,"x":0.098,"y":0.101},{"id":"f:app/src-tauri/src/settings.rs","label":"settings.rs","path":"app/src-tauri/src/settings.rs","group":3,"weight":14,"x":0.091,"y":0.199},{"id":"f:app/src-tauri/src/state.rs","label":"state.rs","path":"app/src-tauri/src/state.rs","group":3,"weight":31,"x":0.253,"y":0.171},{"id":"f:app/src-tauri/src/tasks.rs","label":"tasks.rs","path":"app/src-tauri/src/tasks.rs","group":3,"weight":32,"x":0.1,"y":-0.005},{"id":"f:app/src-tauri/src/terminal.rs","label":"terminal.rs","path":"app/src-tauri/src/terminal.rs","group":3,"weight":8,"x":0.176,"y":0.3},{"id":"f:app/src-tauri/src/tools.rs","label":"tools.rs","path":"app/src-tauri/src/tools.rs","group":3,"weight":21,"x":-0.048,"y":0.151},{"id":"f:app/src-tauri/src/workspace.rs","label":"workspace.rs","path":"app/src-tauri/src/workspace.rs","group":3,"weight":23,"x":0.166,"y":0.177},{"id":"f:app/src-tauri/src/worktree.rs","label":"worktree.rs","path":"app/src-tauri/src/worktree.rs","group":3,"weight":16,"x":0.202,"y":0.107},{"id":"f:app/src/api.ts","label":"api.ts","path":"app/src/api.ts","group":2,"weight":44,"x":0.465,"y":-0.185},{"id":"f:app/src/chat.ts","label":"chat.ts","path":"app/src/chat.ts","group":2,"weight":72,"x":0.184,"y":-0.058},{"id":"f:app/src/commands.ts","label":"commands.ts","path":"app/src/commands.ts","group":2,"weight":14,"x":0.342,"y":0.003},{"id":"f:app/src/completion.ts","label":"completion.ts","path":"app/src/completion.ts","group":2,"weight":15,"x":0.447,"y":-0.089},{"id":"f:app/src/dialog.ts","label":"dialog.ts","path":"app/src/dialog.ts","group":2,"weight":4,"x":0.547,"y":-0.285},{"id":"f:app/src/dom.ts","label":"dom.ts","path":"app/src/dom.ts","group":2,"weight":9,"x":0.049,"y":-0.078},{"id":"f:app/src/editor.ts","label":"editor.ts","path":"app/src/editor.ts","group":2,"weight":51,"x":0.32,"y":-0.156},{"id":"f:app/src/i18n.ts","label":"i18n.ts","path":"app/src/i18n.ts","group":2,"weight":12,"x":0.162,"y":-0.346},{"id":"f:app/src/icons.ts","label":"icons.ts","path":"app/src/icons.ts","group":2,"weight":5,"x":0.422,"y":-0.251},{"id":"f:app/src/inspector.ts","label":"inspector.ts","path":"app/src/inspector.ts","group":2,"weight":6,"x":0.4,"y":-0.139},{"id":"f:app/src/keybindings.ts","label":"keybindings.ts","path":"app/src/keybindings.ts","group":2,"weight":10,"x":0.142,"y":-0.278},{"id":"f:app/src/lib/context.ts","label":"context.ts","path":"app/src/lib/context.ts","group":2,"weight":3,"x":0.506,"y":-0.12},{"id":"f:app/src/lib/diff.ts","label":"diff.ts","path":"app/src/lib/diff.ts","group":2,"weight":1,"x":0.5,"y":-0.054},{"id":"f:app/src/lib/keys.ts","label":"keys.ts","path":"app/src/lib/keys.ts","group":2,"weight":3,"x":0.399,"y":-0.306},{"id":"f:app/src/lsp.ts","label":"lsp.ts","path":"app/src/lsp.ts","group":2,"weight":25,"x":0.285,"y":-0.071},{"id":"f:app/src/main.ts","label":"main.ts","path":"app/src/main.ts","group":2,"weight":116,"x":0.23,"y":-0.233},{"id":"f:app/src/map.ts","label":"map.ts","path":"app/src/map.ts","group":2,"weight":75,"x":0.046,"y":-0.168},{"id":"f:app/src/memory.ts","label":"memory.ts","path":"app/src/memory.ts","group":2,"weight":11,"x":0.077,"y":-0.302},{"id":"f:app/src/onboarding.ts","label":"onboarding.ts","path":"app/src/onboarding.ts","group":2,"weight":13,"x":0.166,"y":-0.147},{"id":"f:app/src/prefs.ts","label":"prefs.ts","path":"app/src/prefs.ts","group":2,"weight":8,"x":0.11,"y":-0.106},{"id":"f:app/src/quickopen.ts","label":"quickopen.ts","path":"app/src/quickopen.ts","group":2,"weight":13,"x":0.237,"y":-0.133},{"id":"f:app/src/report.ts","label":"report.ts","path":"app/src/report.ts","group":2,"weight":4,"x":0.225,"y":-0.327},{"id":"f:app/src/scm.ts","label":"scm.ts","path":"app/src/scm.ts","group":2,"weight":42,"x":0.258,"y":0.014},{"id":"f:app/src/search.ts","label":"search.ts","path":"app/src/search.ts","group":2,"weight":19,"x":0.333,"y":-0.244},{"id":"f:app/src/settingsPage.ts","label":"settingsPage.ts","path":"app/src/settingsPage.ts","group":2,"weight":26,"x":0.296,"y":-0.317},{"id":"f:app/src/terminal.ts","label":"terminal.ts","path":"app/src/terminal.ts","group":2,"weight":4,"x":0.425,"y":-0.025},{"id":"f:app/src/theme.ts","label":"theme.ts","path":"app/src/theme.ts","group":2,"weight":2,"x":0.619,"y":-0.206},{"id":"f:app/src/toast.ts","label":"toast.ts","path":"app/src/toast.ts","group":2,"weight":13,"x":0.128,"y":-0.209},{"id":"f:app/src/tree.ts","label":"tree.ts","path":"app/src/tree.ts","group":2,"weight":28,"x":0.369,"y":-0.071},{"id":"f:app/src/update.ts","label":"update.ts","path":"app/src/update.ts","group":2,"weight":5,"x":0.388,"y":-0.2},{"id":"f:app/tests/unit/i18n.test.ts","label":"i18n.test.ts","path":"app/tests/unit/i18n.test.ts","group":4,"weight":1,"x":-0.304,"y":0.375},{"id":"f:app/tests/unit/logic.test.ts","label":"logic.test.ts","path":"app/tests/unit/logic.test.ts","group":4,"weight":1,"x":-0.21,"y":0.33},{"id":"f:app/tests/unit/toast.test.ts","label":"toast.test.ts","path":"app/tests/unit/toast.test.ts","group":4,"weight":1,"x":-0.169,"y":0.253},{"id":"f:app/vite.config.ts","label":"vite.config.ts","path":"app/vite.config.ts","group":0,"weight":1,"x":-0.296,"y":-0.62},{"id":"f:app/vitest.config.ts","label":"vitest.config.ts","path":"app/vitest.config.ts","group":0,"weight":1,"x":-0.241,"y":-0.62},{"id":"f:crates/lantern-context/src/assemble.rs","label":"assemble.rs","path":"crates/lantern-context/src/assemble.rs","group":5,"weight":34,"x":-0.305,"y":-0.032},{"id":"f:crates/lantern-context/src/git.rs","label":"git.rs","path":"crates/lantern-context/src/git.rs","group":5,"weight":10,"x":-0.498,"y":0.174},{"id":"f:crates/lantern-context/src/graph.rs","label":"graph.rs","path":"crates/lantern-context/src/graph.rs","group":5,"weight":51,"x":-0.223,"y":0.016},{"id":"f:crates/lantern-context/src/indexer.rs","label":"indexer.rs","path":"crates/lantern-context/src/indexer.rs","group":5,"weight":7,"x":-0.5,"y":0.073},{"id":"f:crates/lantern-context/src/lang.rs","label":"lang.rs","path":"crates/lantern-context/src/lang.rs","group":5,"weight":11,"x":-0.319,"y":0.047},{"id":"f:crates/lantern-context/src/lib.rs","label":"lib.rs","path":"crates/lantern-context/src/lib.rs","group":5,"weight":26,"x":-0.314,"y":0.146},{"id":"f:crates/lantern-context/src/main.rs","label":"main.rs","path":"crates/lantern-context/src/main.rs","group":5,"weight":8,"x":-0.563,"y":0.093},{"id":"f:crates/lantern-context/src/mcp.rs","label":"mcp.rs","path":"crates/lantern-context/src/mcp.rs","group":5,"weight":9,"x":-0.264,"y":0.089},{"id":"f:crates/lantern-context/src/parse.rs","label":"parse.rs","path":"crates/lantern-context/src/parse.rs","group":5,"weight":26,"x":-0.38,"y":0.094},{"id":"f:crates/lantern-context/src/secrets.rs","label":"secrets.rs","path":"crates/lantern-context/src/secrets.rs","group":5,"weight":12,"x":-0.569,"y":0.161},{"id":"f:crates/lantern-context/src/store.rs","label":"store.rs","path":"crates/lantern-context/src/store.rs","group":5,"weight":41,"x":-0.389,"y":0.005},{"id":"f:crates/lantern-context/src/tokenize.rs","label":"tokenize.rs","path":"crates/lantern-context/src/tokenize.rs","group":5,"weight":18,"x":-0.426,"y":0.16},{"id":"f:eval/ab/run.mjs","label":"run.mjs","path":"eval/ab/run.mjs","group":6,"weight":22,"x":-0.324,"y":-0.115},{"id":"f:eval/retrieval.mjs","label":"retrieval.mjs","path":"eval/retrieval.mjs","group":6,"weight":11,"x":-0.495,"y":-0.136},{"id":"f:scripts/gen_notices.py","label":"gen_notices.py","path":"scripts/gen_notices.py","group":7,"weight":8,"x":-0.301,"y":-0.31},{"id":"f:scripts/i18n_check.py","label":"i18n_check.py","path":"scripts/i18n_check.py","group":7,"weight":7,"x":-0.397,"y":-0.318},{"id":"f:scripts/latest_json.mjs","label":"latest_json.mjs","path":"scripts/latest_json.mjs","group":7,"weight":1,"x":-0.475,"y":-0.333}],"edges":[[0,3,0],[0,4,0],[0,9,0],[0,14,0],[0,15,0],[0,20,0],[0,21,0],[0,25,0],[0,30,0],[0,35,0],[0,43,0],[0,44,0],[0,45,0],[0,46,0],[0,52,0],[0,62,0],[0,64,0],[0,65,0],[0,67,0],[0,68,0],[0,70,0],[0,72,0],[2,4,0],[2,5,0],[2,6,0],[2,7,0],[2,9,0],[2,11,0],[2,12,0],[2,13,0],[2,14,0],[2,19,0],[2,20,0],[2,22,0],[2,24,0],[2,30,0],[2,44,0],[2,52,0],[2,53,0],[2,60,0],[2,62,0],[2,64,0],[2,65,0],[2,67,0],[2,70,0],[2,72,0],[3,9,0],[3,14,0],[3,25,0],[3,62,0],[3,65,0],[3,68,0],[3,70,0],[3,72,0],[4,11,0],[4,15,0],[4,19,0],[4,21,0],[4,23,0],[4,24,0],[4,26,0],[4,28,0],[4,52,0],[4,67,0],[4,69,0],[4,72,0],[5,11,0],[5,12,0],[5,13,0],[5,30,0],[5,41,0],[5,44,0],[5,64,0],[5,69,0],[5,72,0],[6,4,0],[6,5,0],[6,11,0],[6,15,0],[6,21,0],[6,65,0],[6,72,0],[7,3,0],[7,4,0],[7,9,0],[7,11,0],[7,12,0],[7,13,0],[7,14,0],[7,15,0],[7,17,0],[7,19,0],[7,21,0],[7,22,0],[7,28,0],[7,62,0],[7,65,0],[7,67,0],[7,68,0],[7,72,0],[8,2,0],[8,9,0],[8,19,0],[8,21,0],[8,70,0],[9,0,0],[9,2,0],[9,3,0],[9,4,0],[9,7,0],[9,14,0],[9,15,0],[9,19,0],[9,20,0],[9,21,0],[9,22,0],[9,27,0],[9,41,0],[9,43,0],[9,46,0],[9,47,0],[9,52,0],[9,61,0],[9,62,0],[9,65,0],[9,68,0],[9,70,0],[9,72,0],[10,2,0],[10,22,0],[11,5,0],[11,6,0],[11,9,0],[11,12,0],[11,13,0],[11,14,0],[11,26,0],[11,43,0],[11,65,0],[11,72,0],[12,9,0],[12,11,0],[12,13,0],[12,43,0],[12,68,0],[12,72,0],[13,6,0],[13,9,0],[13,11,0],[13,12,0],[13,14,0],[13,27,0],[13,30,0],[13,43,0],[13,44,0],[13,64,0],[13,65,0],[13,72,0],[14,9,0],[14,72,0],[15,0,0],[15,2,0],[15,3,0],[15,4,0],[15,9,0],[15,14,0],[15,16,0],[15,21,0],[15,30,0],[15,44,0],[15,61,0],[15,64,0],[15,65,0],[15,68,0],[15,70,0],[15,71,0],[16,2,0],[16,4,0],[16,7,0],[16,15,0],[16,19,0],[16,21,0],[16,22,0],[16,52,0],[16,61,0],[16,62,0],[16,65,0],[16,72,0],[16,74,0],[17,0,0],[17,2,0],[17,4,0],[17,5,0],[17,6,0],[17,7,0],[17,8,0],[17,9,0],[17,11,0],[17,12,0],[17,14,0],[17,15,0],[17,16,0],[17,18,0],[17,19,0],[17,20,0],[17,21,0],[17,23,0],[17,24,0],[17,25,0],[17,26,0],[17,28,0],[17,30,0],[17,32,0],[17,35,0],[17,39,0],[17,41,0],[17,43,0],[17,44,0],[17,46,0],[17,47,0],[17,48,0],[17,50,0],[17,52,0],[17,53,0],[17,54,0],[17,60,0],[17,62,0],[17,64,0],[17,65,0],[17,67,0],[17,70,0],[17,72,0],[18,3,0],[18,4,0],[18,6,0],[18,9,0],[18,14,0],[18,15,0],[18,21,0],[18,24,0],[18,25,0],[18,30,0],[18,43,0],[18,44,0],[18,53,0],[18,64,0],[18,65,0],[18,68,0],[18,70,0],[18,72,0],[19,4,0],[19,9,0],[19,14,0],[19,15,0],[19,20,0],[19,21,0],[19,23,0],[19,24,0],[19,53,0],[19,65,0],[19,72,0],[20,4,0],[20,9,0],[20,14,0],[20,15,0],[20,19,0],[20,21,0],[20,23,0],[20,24,0],[20,27,0],[20,30,0],[20,32,0],[20,44,0],[20,53,0],[20,62,0],[20,64,0],[20,65,0],[20,70,0],[20,72,0],[21,2,0],[21,50,0],[21,65,0],[21,71,0],[22,2,0],[22,4,0],[22,7,0],[22,9,0],[22,12,0],[22,14,0],[22,15,0],[22,17,0],[22,19,0],[22,21,0],[22,23,0],[22,27,0],[22,30,0],[22,32,0],[22,41,0],[22,42,0],[22,44,0],[22,60,0],[22,64,0],[22,65,0],[22,69,0],[22,70,0],[22,72,0],[23,4,0],[23,9,0],[23,14,0],[23,15,0],[23,17,0],[23,19,0],[23,20,0],[23,21,0],[23,25,0],[23,26,0],[23,41,0],[23,48,0],[23,62,0],[23,65,0],[23,70,0],[23,72,0],[24,2,0],[24,4,0],[24,7,0],[24,9,0],[24,15,0],[24,19,0],[24,20,0],[24,21,0],[24,22,0],[24,47,0],[24,53,0],[24,65,0],[24,70,0],[24,72,0],[25,12,0],[25,19,0],[26,2,0],[26,3,0],[26,4,0],[26,6,0],[26,9,0],[26,11,0],[26,14,0],[26,18,0],[26,19,0],[26,20,0],[26,24,0],[26,25,0],[26,30,0],[26,31,0],[26,33,0],[26,34,0],[26,35,0],[26,36,0],[26,37,0],[26,39,0],[26,40,0],[26,41,0],[26,42,0],[26,44,0],[26,47,0],[26,48,0],[26,52,0],[26,53,0],[26,60,0],[26,62,0],[26,64,0],[26,65,0],[26,67,0],[26,68,0],[26,70,0],[26,72,0],[27,11,0],[27,24,0],[27,26,0],[27,30,0],[27,38,0],[27,41,0],[27,42,0],[27,44,0],[27,47,0],[27,53,0],[27,60,0],[27,64,0],[27,70,0],[27,72,0],[28,22,0],[28,30,0],[28,44,0],[28,49,0],[29,32,0],[30,3,0],[30,11,0],[30,26,0],[30,65,0],[30,68,0],[31,4,0],[31,9,0],[31,11,0],[31,14,0],[31,20,0],[31,22,0],[31,24,0],[31,25,0],[31,26,0],[31,28,0],[31,30,0],[31,33,0],[31,39,0],[31,41,0],[31,42,0],[31,44,0],[31,47,0],[31,48,0],[31,51,0],[31,52,0],[31,53,0],[31,60,0],[31,62,0],[31,64,0],[31,67,0],[32,27,0],[32,30,0],[32,44,0],[32,62,0],[32,64,0],[32,72,0],[33,11,0],[33,26,0],[33,30,0],[33,41,0],[33,47,0],[34,2,0],[34,20,0],[34,24,0],[34,25,0],[34,30,0],[34,31,0],[34,44,0],[34,48,0],[34,49,0],[34,53,0],[34,64,0],[34,74,0],[35,0,0],[35,3,0],[35,4,0],[35,11,0],[35,20,0],[35,24,0],[35,25,0],[35,26,0],[35,27,0],[35,30,0],[35,31,0],[35,33,0],[35,38,0],[35,41,0],[35,43,0],[35,44,0],[35,48,0],[35,52,0],[35,62,0],[35,65,0],[35,67,0],[35,68,0],[35,72,0],[36,9,0],[36,14,0],[37,9,0],[37,14,0],[38,72,0],[39,4,0],[39,9,0],[39,14,0],[39,15,0],[39,20,0],[39,25,0],[39,26,0],[39,28,0],[39,30,0],[39,41,0],[39,42,0],[39,44,0],[39,48,0],[39,52,0],[39,60,0],[39,64,0],[39,72,0],[40,0,0],[40,3,0],[40,4,0],[40,11,0],[40,24,0],[40,25,0],[40,26,0],[40,27,0],[40,28,0],[40,29,0],[40,30,0],[40,31,0],[40,33,0],[40,35,0],[40,39,0],[40,41,0],[40,42,0],[40,43,0],[40,44,0],[40,45,0],[40,46,0],[40,47,0],[40,48,0],[40,49,0],[40,50,0],[40,52,0],[40,53,0],[40,54,0],[40,60,0],[40,62,0],[40,64,0],[40,65,0],[40,67,0],[40,68,0],[40,70,0],[40,72,0],[41,0,0],[41,9,0],[41,11,0],[41,14,0],[41,15,0],[41,24,0],[41,25,0],[41,26,0],[41,27,0],[41,30,0],[41,32,0],[41,33,0],[41,39,0],[41,40,0],[41,42,0],[41,44,0],[41,45,0],[41,47,0],[41,48,0],[41,49,0],[41,50,0],[41,53,0],[41,60,0],[41,62,0],[41,64,0],[41,70,0],[41,72,0],[41,73,0],[42,4,0],[42,25,0],[42,30,0],[42,33,0],[42,40,0],[42,41,0],[42,44,0],[42,48,0],[42,52,0],[42,60,0],[42,62,0],[42,64,0],[42,67,0],[42,72,0],[43,3,0],[43,9,0],[43,11,0],[43,24,0],[43,25,0],[43,26,0],[43,30,0],[43,31,0],[43,33,0],[43,40,0],[43,41,0],[43,42,0],[43,44,0],[43,49,0],[43,53,0],[43,60,0],[43,62,0],[43,64,0],[43,65,0],[43,68,0],[43,72,0],[44,9,0],[44,14,0],[44,24,0],[44,30,0],[44,35,0],[44,64,0],[45,9,0],[45,11,0],[45,14,0],[45,24,0],[45,25,0],[45,26,0],[45,27,0],[45,28,0],[45,30,0],[45,33,0],[45,38,0],[45,41,0],[45,42,0],[45,48,0],[45,53,0],[45,60,0],[45,62,0],[45,72,0],[45,73,0],[46,4,0],[46,9,0],[46,11,0],[46,25,0],[46,26,0],[46,30,0],[46,31,0],[46,33,0],[46,52,0],[46,67,0],[47,4,0],[47,9,0],[47,11,0],[47,14,0],[47,20,0],[47,24,0],[47,25,0],[47,26,0],[47,27,0],[47,30,0],[47,31,0],[47,33,0],[47,40,0],[47,41,0],[47,42,0],[47,48,0],[47,52,0],[47,53,0],[47,60,0],[47,62,0],[47,67,0],[47,70,0],[47,72,0],[48,4,0],[48,11,0],[48,25,0],[48,26,0],[48,30,0],[48,31,0],[48,33,0],[48,34,0],[48,41,0],[48,45,0],[48,47,0],[48,52,0],[48,53,0],[48,62,0],[48,67,0],[48,72,0],[49,4,0],[49,9,0],[49,11,0],[49,14,0],[49,24,0],[49,25,0],[49,26,0],[49,30,0],[49,31,0],[49,32,0],[49,33,0],[49,34,0],[49,40,0],[49,41,0],[49,42,0],[49,43,0],[49,44,0],[49,47,0],[49,48,0],[49,52,0],[49,53,0],[49,60,0],[49,64,0],[49,67,0],[49,72,0],[49,74,0],[50,4,0],[50,15,0],[50,21,0],[50,25,0],[50,27,0],[50,30,0],[50,41,0],[50,44,0],[50,48,0],[52,11,0],[52,24,0],[52,26,0],[52,28,0],[52,30,0],[52,33,0],[52,41,0],[52,42,0],[52,47,0],[52,53,0],[52,60,0],[52,70,0],[52,72,0],[53,4,0],[53,11,0],[53,20,0],[53,23,0],[53,24,0],[53,25,0],[53,26,0],[53,27,0],[53,30,0],[53,33,0],[53,41,0],[53,42,0],[53,45,0],[53,47,0],[53,48,0],[53,52,0],[53,60,0],[53,62,0],[53,67,0],[53,72,0],[54,4,0],[54,16,0],[54,25,0],[54,30,0],[54,44,0],[54,45,0],[54,52,0],[54,67,0],[55,32,0],[56,36,0],[56,37,0],[56,38,0],[56,72,0],[57,4,0],[57,11,0],[57,24,0],[57,26,0],[57,52,0],[57,53,0],[57,70,0],[57,72,0],[60,9,0],[60,14,0],[60,30,0],[60,41,0],[60,42,0],[60,44,0],[60,62,0],[60,64,0],[60,65,0],[60,69,0],[60,70,0],[60,71,0],[60,72,0],[61,2,0],[61,7,0],[61,9,0],[61,22,0],[61,47,0],[61,52,0],[61,70,0],[61,72,0],[62,0,0],[62,4,0],[62,7,0],[62,9,0],[62,14,0],[62,15,0],[62,19,0],[62,20,0],[62,21,0],[62,24,0],[62,26,0],[62,30,0],[62,39,0],[62,41,0],[62,44,0],[62,45,0],[62,53,0],[62,61,0],[62,64,0],[62,65,0],[62,69,0],[62,70,0],[62,71,0],[62,72,0],[62,73,0],[63,3,0],[63,9,0],[63,30,0],[63,41,0],[63,44,0],[63,47,0],[63,64,0],[63,65,0],[63,68,0],[63,70,0],[63,72,0],[64,65,0],[65,4,0],[65,9,0],[65,14,0],[65,15,0],[65,21,0],[65,23,0],[65,30,0],[65,39,0],[65,41,0],[65,44,0],[65,60,0],[65,61,0],[65,62,0],[65,63,0],[65,64,0],[65,69,0],[65,70,0],[65,71,0],[65,72,0],[66,3,0],[66,9,0],[66,14,0],[66,30,0],[66,44,0],[66,60,0],[66,62,0],[66,64,0],[66,65,0],[66,67,0],[66,68,0],[66,70,0],[66,71,0],[66,72,0],[67,4,0],[67,26,0],[67,30,0],[67,34,0],[67,44,0],[67,52,0],[67,60,0],[67,64,0],[67,65,0],[67,70,0],[67,71,0],[67,72,0],[68,3,0],[68,9,0],[68,14,0],[68,30,0],[68,32,0],[68,41,0],[68,44,0],[68,62,0],[68,64,0],[68,65,0],[68,71,0],[68,72,0],[69,41,0],[69,70,0],[69,72,0],[70,9,0],[70,14,0],[70,30,0],[70,41,0],[70,44,0],[70,64,0],[70,72,0],[71,9,0],[71,14,0],[71,22,0],[71,30,0],[71,41,0],[71,44,0],[71,48,0],[71,62,0],[71,64,0],[71,70,0],[71,72,0],[72,3,0],[72,4,0],[72,9,0],[72,14,0],[72,24,0],[72,28,0],[72,30,0],[72,41,0],[72,42,0],[72,46,0],[72,52,0],[72,60,0],[72,62,0],[72,65,0],[72,67,0],[72,68,0],[72,73,0],[73,3,0],[73,4,0],[73,9,0],[73,14,0],[73,30,0],[73,41,0],[73,45,0],[73,46,0],[73,52,0],[73,62,0],[73,65,0],[73,67,0],[73,68,0],[73,72,0],[73,75,0],[74,9,0],[74,11,0],[74,16,0],[74,20,0],[74,23,0],[74,26,0],[74,30,0],[74,34,0],[74,42,0],[74,44,0],[74,49,0],[74,60,0],[74,64,0],[75,9,0],[75,11,0],[75,26,0],[75,30,0],[75,32,0],[75,42,0],[75,44,0],[75,47,0],[75,60,0],[75,62,0],[75,65,0],[75,70,0],[75,73,0],[76,3,0],[76,4,0],[76,9,0],[76,30,0],[76,46,0],[76,52,0],[76,65,0],[76,67,0],[76,68,0]],"task":{"question":"한국어 질문을 검색어로 바꾸는 곳에서 중복을 줄여줘","context":{"used":7958,"budget":8000,"ms":6,"terms":["한국어","질문","검색어","바꾸","곳에서","중복","줄여줘","duplicate","dedupe"],"files":[{"path":"crates/lantern-context/src/tokenize.rs","tokens":900,"symbols":["QueryTerm","query_terms","fts_query_is_quoted","builds_query_terms"]},{"path":"app/src-tauri/src/agents.rs","tokens":326,"symbols":["builtin"]},{"path":"app/src-tauri/src/tasks.rs","tokens":550,"symbols":["fingerprint","save_checkpoint","fingerprints_detect_later_changes","write_atomic","checkpoint_path"]},{"path":"crates/lantern-context/src/assemble.rs","tokens":2214,"symbols":["assemble","ranked","search_reason","normalize_path"]},{"path":"eval/ab/run.mjs","tokens":79,"symbols":["map","judge"]},{"path":"crates/lantern-context/src/main.rs","tokens":356,"symbols":["Cmd"]},{"path":"app/src/search.ts","tokens":1017,"symbols":["render","replaceIn","changedHandler"]},{"path":"app/src/main.ts","tokens":1071,"symbols":["onContext","renderContextStatus","openProject"]},{"path":"app/src/chat.ts","tokens":181,"symbols":["revertSafely"]},{"path":"app/src/i18n.ts","tokens":177,"symbols":["fromPattern"]},{"path":"app/src/scm.ts","tokens":130,"symbols":["switchTo"]},{"path":"app/src-tauri/src/tools.rs","tokens":158,"symbols":["ToolCtx"]},{"path":"app/src/onboarding.ts","tokens":642,"symbols":["render"]},{"path":"app/src/keybindings.ts","tokens":157,"symbols":["onKey"]}]},"read":["crates/lantern-context/src/assemble.rs"],"edit":{"path":"crates/lantern-context/src/tokenize.rs","symbol":"query_terms","line":261,"before":" if seen.insert(text.clone()) {","after":" if seen.insert(text.to_lowercase()) {","snippet":[{"n":256,"code":"/// 질문을 검색어 목록으로 바꾼다."},{"n":257,"code":"pub fn query_terms(query: &str) -> Vec {"},{"n":258,"code":" let mut seen = HashSet::new();"},{"n":259,"code":" let mut out = Vec::new();"},{"n":260,"code":" let mut push = |text: String, prefix: bool, expanded: bool, out: &mut Vec| {"},{"n":261,"code":" if seen.insert(text.clone()) {"},{"n":262,"code":" out.push(QueryTerm { text, prefix, expanded });"},{"n":263,"code":" }"},{"n":264,"code":" };"},{"n":265,"code":""}]},"impact":{"touched":["query_terms"],"callers":4,"callers2":24,"files":17,"modules":3,"risk":"high","tests":[],"cochanged":[],"depthByPath":{"crates/lantern-context/src/tokenize.rs":0,"crates/lantern-context/src/assemble.rs":1,"crates/lantern-context/src/graph.rs":1,"crates/lantern-context/src/lib.rs":1,"app/e2e/run.mjs":2,"app/src-tauri/src/agent.rs":2,"app/src-tauri/src/agents.rs":2,"app/src-tauri/src/gitops.rs":2,"app/src-tauri/src/lspinstall.rs":2,"app/src-tauri/src/main.rs":2,"app/src-tauri/src/tasks.rs":2,"app/src-tauri/src/workspace.rs":2,"app/src/chat.ts":2,"app/src/editor.ts":2,"app/src/keybindings.ts":2,"app/src/main.ts":2,"app/src/onboarding.ts":2,"crates/lantern-context/src/main.rs":2}}}} +{"generated":{"commit":"446b1a4","date":"2026-09-27","repo":"Lantern-IDE/lantern"},"stats":{"files":79,"edges":599,"groups":8},"groups":["app","app/e2e","app/src","app/src-tauri","app/tests","crates/lantern-context","eval","scripts"],"nodes":[{"id":"f:app/e2e/run.mjs","label":"run.mjs","path":"app/e2e/run.mjs","group":1,"weight":24,"x":0.206,"y":-0.312},{"id":"f:app/src-tauri/build.rs","label":"build.rs","path":"app/src-tauri/build.rs","group":3,"weight":1,"x":0.348,"y":0.32},{"id":"f:app/src-tauri/src/agent.rs","label":"agent.rs","path":"app/src-tauri/src/agent.rs","group":3,"weight":16,"x":0.068,"y":0.305},{"id":"f:app/src-tauri/src/agents.rs","label":"agents.rs","path":"app/src-tauri/src/agents.rs","group":3,"weight":10,"x":-0.017,"y":0.296},{"id":"f:app/src-tauri/src/applog.rs","label":"applog.rs","path":"app/src-tauri/src/applog.rs","group":3,"weight":18,"x":0.153,"y":0.235},{"id":"f:app/src-tauri/src/completion.rs","label":"completion.rs","path":"app/src-tauri/src/completion.rs","group":3,"weight":14,"x":0.189,"y":0.187},{"id":"f:app/src-tauri/src/config.rs","label":"config.rs","path":"app/src-tauri/src/config.rs","group":3,"weight":28,"x":0.263,"y":0.22},{"id":"f:app/src-tauri/src/e2e_tests.rs","label":"e2e_tests.rs","path":"app/src-tauri/src/e2e_tests.rs","group":3,"weight":12,"x":0.101,"y":0.259},{"id":"f:app/src-tauri/src/fswatch.rs","label":"fswatch.rs","path":"app/src-tauri/src/fswatch.rs","group":3,"weight":6,"x":0.24,"y":0.273},{"id":"f:app/src-tauri/src/gitops.rs","label":"gitops.rs","path":"app/src-tauri/src/gitops.rs","group":3,"weight":55,"x":-0.023,"y":0.23},{"id":"f:app/src-tauri/src/hooks.rs","label":"hooks.rs","path":"app/src-tauri/src/hooks.rs","group":3,"weight":2,"x":0.294,"y":0.325},{"id":"f:app/src-tauri/src/llm/anthropic.rs","label":"anthropic.rs","path":"app/src-tauri/src/llm/anthropic.rs","group":3,"weight":11,"x":0.245,"y":0.324},{"id":"f:app/src-tauri/src/llm/mod.rs","label":"mod.rs","path":"app/src-tauri/src/llm/mod.rs","group":3,"weight":19,"x":0.196,"y":0.353},{"id":"f:app/src-tauri/src/llm/openai.rs","label":"openai.rs","path":"app/src-tauri/src/llm/openai.rs","group":3,"weight":6,"x":0.208,"y":0.236},{"id":"f:app/src-tauri/src/llm/sse.rs","label":"sse.rs","path":"app/src-tauri/src/llm/sse.rs","group":3,"weight":7,"x":0.031,"y":0.265},{"id":"f:app/src-tauri/src/lsp.rs","label":"lsp.rs","path":"app/src-tauri/src/lsp.rs","group":3,"weight":12,"x":0.04,"y":0.125},{"id":"f:app/src-tauri/src/lspinstall.rs","label":"lspinstall.rs","path":"app/src-tauri/src/lspinstall.rs","group":3,"weight":14,"x":0.125,"y":0.31},{"id":"f:app/src-tauri/src/main.rs","label":"main.rs","path":"app/src-tauri/src/main.rs","group":3,"weight":101,"x":0.058,"y":0.198},{"id":"f:app/src-tauri/src/settings.rs","label":"settings.rs","path":"app/src-tauri/src/settings.rs","group":3,"weight":14,"x":0.132,"y":0.18},{"id":"f:app/src-tauri/src/state.rs","label":"state.rs","path":"app/src-tauri/src/state.rs","group":3,"weight":31,"x":0.185,"y":0.29},{"id":"f:app/src-tauri/src/tasks.rs","label":"tasks.rs","path":"app/src-tauri/src/tasks.rs","group":3,"weight":32,"x":-0.013,"y":0.157},{"id":"f:app/src-tauri/src/terminal.rs","label":"terminal.rs","path":"app/src-tauri/src/terminal.rs","group":3,"weight":8,"x":0.083,"y":0.358},{"id":"f:app/src-tauri/src/tools.rs","label":"tools.rs","path":"app/src-tauri/src/tools.rs","group":3,"weight":21,"x":0.019,"y":0.341},{"id":"f:app/src-tauri/src/workspace.rs","label":"workspace.rs","path":"app/src-tauri/src/workspace.rs","group":3,"weight":23,"x":0.099,"y":0.13},{"id":"f:app/src-tauri/src/worktree.rs","label":"worktree.rs","path":"app/src-tauri/src/worktree.rs","group":3,"weight":16,"x":0.138,"y":0.366},{"id":"f:app/src/api.ts","label":"api.ts","path":"app/src/api.ts","group":2,"weight":44,"x":0.473,"y":-0.203},{"id":"f:app/src/chat.ts","label":"chat.ts","path":"app/src/chat.ts","group":2,"weight":73,"x":0.338,"y":-0.064},{"id":"f:app/src/commands.ts","label":"commands.ts","path":"app/src/commands.ts","group":2,"weight":14,"x":0.42,"y":-0.166},{"id":"f:app/src/completion.ts","label":"completion.ts","path":"app/src/completion.ts","group":2,"weight":15,"x":0.41,"y":-0.222},{"id":"f:app/src/dialog.ts","label":"dialog.ts","path":"app/src/dialog.ts","group":2,"weight":4,"x":0.533,"y":-0.001},{"id":"f:app/src/dom.ts","label":"dom.ts","path":"app/src/dom.ts","group":2,"weight":9,"x":0.205,"y":-0.173},{"id":"f:app/src/editor.ts","label":"editor.ts","path":"app/src/editor.ts","group":2,"weight":87,"x":0.423,"y":-0.089},{"id":"f:app/src/i18n.ts","label":"i18n.ts","path":"app/src/i18n.ts","group":2,"weight":12,"x":0.277,"y":-0.029},{"id":"f:app/src/icons.ts","label":"icons.ts","path":"app/src/icons.ts","group":2,"weight":5,"x":0.467,"y":-0.143},{"id":"f:app/src/inspector.ts","label":"inspector.ts","path":"app/src/inspector.ts","group":2,"weight":6,"x":0.537,"y":-0.055},{"id":"f:app/src/keybindings.ts","label":"keybindings.ts","path":"app/src/keybindings.ts","group":2,"weight":10,"x":0.281,"y":-0.108},{"id":"f:app/src/lib/context.ts","label":"context.ts","path":"app/src/lib/context.ts","group":2,"weight":3,"x":0.319,"y":-0.228},{"id":"f:app/src/lib/diff.ts","label":"diff.ts","path":"app/src/lib/diff.ts","group":2,"weight":1,"x":0.442,"y":0.06},{"id":"f:app/src/lib/keys.ts","label":"keys.ts","path":"app/src/lib/keys.ts","group":2,"weight":3,"x":0.227,"y":-0.024},{"id":"f:app/src/lsp.ts","label":"lsp.ts","path":"app/src/lsp.ts","group":2,"weight":25,"x":0.5,"y":-0.098},{"id":"f:app/src/main.ts","label":"main.ts","path":"app/src/main.ts","group":2,"weight":117,"x":0.402,"y":0.003},{"id":"f:app/src/map.ts","label":"map.ts","path":"app/src/map.ts","group":2,"weight":75,"x":0.274,"y":-0.181},{"id":"f:app/src/memory.ts","label":"memory.ts","path":"app/src/memory.ts","group":2,"weight":11,"x":0.242,"y":-0.071},{"id":"f:app/src/onboarding.ts","label":"onboarding.ts","path":"app/src/onboarding.ts","group":2,"weight":13,"x":0.329,"y":-0.135},{"id":"f:app/src/prefs.ts","label":"prefs.ts","path":"app/src/prefs.ts","group":2,"weight":8,"x":0.515,"y":-0.154},{"id":"f:app/src/quickopen.ts","label":"quickopen.ts","path":"app/src/quickopen.ts","group":2,"weight":13,"x":0.23,"y":-0.125},{"id":"f:app/src/report.ts","label":"report.ts","path":"app/src/report.ts","group":2,"weight":4,"x":0.174,"y":-0.135},{"id":"f:app/src/scm.ts","label":"scm.ts","path":"app/src/scm.ts","group":2,"weight":42,"x":0.481,"y":-0.031},{"id":"f:app/src/search.ts","label":"search.ts","path":"app/src/search.ts","group":2,"weight":19,"x":0.322,"y":0.007},{"id":"f:app/src/settingsPage.ts","label":"settingsPage.ts","path":"app/src/settingsPage.ts","group":2,"weight":26,"x":0.357,"y":-0.188},{"id":"f:app/src/terminal.ts","label":"terminal.ts","path":"app/src/terminal.ts","group":2,"weight":4,"x":0.471,"y":0.028},{"id":"f:app/src/theme.ts","label":"theme.ts","path":"app/src/theme.ts","group":2,"weight":2,"x":0.378,"y":-0.139},{"id":"f:app/src/toast.ts","label":"toast.ts","path":"app/src/toast.ts","group":2,"weight":13,"x":0.189,"y":-0.086},{"id":"f:app/src/tree.ts","label":"tree.ts","path":"app/src/tree.ts","group":2,"weight":28,"x":0.347,"y":0.065},{"id":"f:app/src/update.ts","label":"update.ts","path":"app/src/update.ts","group":2,"weight":6,"x":0.363,"y":-0.246},{"id":"f:app/tests/unit/i18n.test.ts","label":"i18n.test.ts","path":"app/tests/unit/i18n.test.ts","group":4,"weight":1,"x":-0.16,"y":0.367},{"id":"f:app/tests/unit/logic.test.ts","label":"logic.test.ts","path":"app/tests/unit/logic.test.ts","group":4,"weight":1,"x":-0.15,"y":0.265},{"id":"f:app/tests/unit/toast.test.ts","label":"toast.test.ts","path":"app/tests/unit/toast.test.ts","group":4,"weight":1,"x":-0.109,"y":0.213},{"id":"f:app/vite.config.ts","label":"vite.config.ts","path":"app/vite.config.ts","group":0,"weight":1,"x":-0.168,"y":-0.494},{"id":"f:app/vitest.config.ts","label":"vitest.config.ts","path":"app/vitest.config.ts","group":0,"weight":1,"x":-0.149,"y":-0.453},{"id":"f:crates/lantern-context/src/assemble.rs","label":"assemble.rs","path":"crates/lantern-context/src/assemble.rs","group":5,"weight":34,"x":-0.434,"y":0.231},{"id":"f:crates/lantern-context/src/git.rs","label":"git.rs","path":"crates/lantern-context/src/git.rs","group":5,"weight":10,"x":-0.346,"y":0.299},{"id":"f:crates/lantern-context/src/graph.rs","label":"graph.rs","path":"crates/lantern-context/src/graph.rs","group":5,"weight":56,"x":-0.286,"y":0.269},{"id":"f:crates/lantern-context/src/indexer.rs","label":"indexer.rs","path":"crates/lantern-context/src/indexer.rs","group":5,"weight":7,"x":-0.5,"y":0.189},{"id":"f:crates/lantern-context/src/lang.rs","label":"lang.rs","path":"crates/lantern-context/src/lang.rs","group":5,"weight":15,"x":-0.359,"y":0.143},{"id":"f:crates/lantern-context/src/lib.rs","label":"lib.rs","path":"crates/lantern-context/src/lib.rs","group":5,"weight":26,"x":-0.249,"y":0.207},{"id":"f:crates/lantern-context/src/main.rs","label":"main.rs","path":"crates/lantern-context/src/main.rs","group":5,"weight":8,"x":-0.497,"y":0.24},{"id":"f:crates/lantern-context/src/mcp.rs","label":"mcp.rs","path":"crates/lantern-context/src/mcp.rs","group":5,"weight":9,"x":-0.392,"y":0.187},{"id":"f:crates/lantern-context/src/parse.rs","label":"parse.rs","path":"crates/lantern-context/src/parse.rs","group":5,"weight":30,"x":-0.367,"y":0.242},{"id":"f:crates/lantern-context/src/secrets.rs","label":"secrets.rs","path":"crates/lantern-context/src/secrets.rs","group":5,"weight":12,"x":-0.467,"y":0.284},{"id":"f:crates/lantern-context/src/store.rs","label":"store.rs","path":"crates/lantern-context/src/store.rs","group":5,"weight":41,"x":-0.317,"y":0.193},{"id":"f:crates/lantern-context/src/tokenize.rs","label":"tokenize.rs","path":"crates/lantern-context/src/tokenize.rs","group":5,"weight":24,"x":-0.409,"y":0.293},{"id":"f:eval/ab/run.mjs","label":"run.mjs","path":"eval/ab/run.mjs","group":6,"weight":22,"x":-0.187,"y":-0.101},{"id":"f:eval/bench/make.mjs","label":"make.mjs","path":"eval/bench/make.mjs","group":6,"weight":4,"x":-0.419,"y":-0.105},{"id":"f:eval/bench/run.mjs","label":"run.mjs","path":"eval/bench/run.mjs","group":6,"weight":4,"x":-0.483,"y":-0.097},{"id":"f:eval/retrieval.mjs","label":"retrieval.mjs","path":"eval/retrieval.mjs","group":6,"weight":18,"x":-0.325,"y":-0.109},{"id":"f:scripts/gen_notices.py","label":"gen_notices.py","path":"scripts/gen_notices.py","group":7,"weight":8,"x":-0.613,"y":-0.35},{"id":"f:scripts/i18n_check.py","label":"i18n_check.py","path":"scripts/i18n_check.py","group":7,"weight":7,"x":-0.563,"y":-0.353},{"id":"f:scripts/latest_json.mjs","label":"latest_json.mjs","path":"scripts/latest_json.mjs","group":7,"weight":1,"x":-0.369,"y":-0.296}],"edges":[[0,25,0],[0,30,0],[0,35,0],[0,43,0],[0,44,0],[0,45,0],[0,46,0],[0,52,0],[0,72,0],[2,4,0],[2,5,0],[2,6,0],[2,7,0],[2,9,0],[2,11,0],[2,12,0],[2,13,0],[2,14,0],[2,19,0],[2,20,0],[2,22,0],[2,24,0],[2,60,0],[2,62,0],[2,64,0],[2,65,0],[2,67,0],[2,70,0],[3,9,0],[3,14,0],[3,62,0],[3,65,0],[3,68,0],[3,70,0],[4,11,0],[4,15,0],[4,19,0],[4,21,0],[4,23,0],[4,24,0],[4,67,0],[4,69,0],[5,11,0],[5,12,0],[5,13,0],[5,64,0],[5,69,0],[6,4,0],[6,5,0],[6,11,0],[6,15,0],[6,21,0],[6,65,0],[7,3,0],[7,4,0],[7,9,0],[7,11,0],[7,12,0],[7,13,0],[7,14,0],[7,15,0],[7,17,0],[7,19,0],[7,21,0],[7,22,0],[7,62,0],[7,65,0],[7,67,0],[7,68,0],[8,2,0],[8,9,0],[8,19,0],[8,21,0],[8,70,0],[9,2,0],[9,3,0],[9,4,0],[9,7,0],[9,14,0],[9,15,0],[9,19,0],[9,20,0],[9,21,0],[9,22,0],[9,61,0],[9,62,0],[9,65,0],[9,68,0],[9,70,0],[10,2,0],[10,22,0],[11,5,0],[11,6,0],[11,9,0],[11,12,0],[11,13,0],[11,14,0],[11,65,0],[12,9,0],[12,11,0],[12,13,0],[12,68,0],[13,6,0],[13,9,0],[13,11,0],[13,12,0],[13,14,0],[13,64,0],[13,65,0],[14,9,0],[15,2,0],[15,3,0],[15,4,0],[15,9,0],[15,14,0],[15,16,0],[15,21,0],[15,61,0],[15,64,0],[15,65,0],[15,68,0],[15,70,0],[15,71,0],[16,2,0],[16,4,0],[16,7,0],[16,15,0],[16,19,0],[16,21,0],[16,22,0],[16,61,0],[16,62,0],[16,65,0],[17,2,0],[17,4,0],[17,5,0],[17,6,0],[17,7,0],[17,8,0],[17,9,0],[17,11,0],[17,12,0],[17,14,0],[17,15,0],[17,16,0],[17,18,0],[17,19,0],[17,20,0],[17,21,0],[17,23,0],[17,24,0],[17,60,0],[17,62,0],[17,64,0],[17,65,0],[17,67,0],[17,70,0],[18,3,0],[18,4,0],[18,6,0],[18,9,0],[18,14,0],[18,15,0],[18,21,0],[18,24,0],[18,64,0],[18,65,0],[18,68,0],[18,70,0],[19,4,0],[19,9,0],[19,14,0],[19,15,0],[19,20,0],[19,21,0],[19,23,0],[19,24,0],[19,65,0],[20,4,0],[20,9,0],[20,14,0],[20,15,0],[20,19,0],[20,21,0],[20,23,0],[20,24,0],[20,62,0],[20,64,0],[20,65,0],[20,70,0],[21,2,0],[21,65,0],[21,71,0],[22,2,0],[22,4,0],[22,7,0],[22,9,0],[22,12,0],[22,14,0],[22,15,0],[22,17,0],[22,19,0],[22,21,0],[22,23,0],[22,60,0],[22,64,0],[22,65,0],[22,69,0],[22,70,0],[23,4,0],[23,9,0],[23,14,0],[23,15,0],[23,17,0],[23,19,0],[23,20,0],[23,21,0],[23,62,0],[23,65,0],[23,70,0],[24,2,0],[24,4,0],[24,7,0],[24,9,0],[24,15,0],[24,19,0],[24,20,0],[24,21,0],[24,22,0],[24,65,0],[24,70,0],[26,25,0],[26,30,0],[26,31,0],[26,33,0],[26,34,0],[26,35,0],[26,36,0],[26,37,0],[26,39,0],[26,40,0],[26,41,0],[26,42,0],[26,44,0],[26,47,0],[26,48,0],[26,52,0],[26,53,0],[26,72,0],[27,26,0],[27,30,0],[27,38,0],[27,41,0],[27,42,0],[27,44,0],[27,47,0],[27,53,0],[27,72,0],[28,30,0],[28,44,0],[28,49,0],[29,32,0],[30,26,0],[31,25,0],[31,26,0],[31,28,0],[31,30,0],[31,33,0],[31,39,0],[31,41,0],[31,42,0],[31,44,0],[31,47,0],[31,48,0],[31,51,0],[31,52,0],[31,53,0],[31,74,0],[32,27,0],[32,30,0],[32,44,0],[32,72,0],[33,26,0],[33,30,0],[33,41,0],[33,47,0],[34,25,0],[34,30,0],[34,31,0],[34,44,0],[34,48,0],[34,49,0],[34,53,0],[35,0,0],[35,25,0],[35,26,0],[35,27,0],[35,30,0],[35,31,0],[35,33,0],[35,38,0],[35,41,0],[35,43,0],[35,44,0],[35,48,0],[35,52,0],[35,72,0],[38,72,0],[39,25,0],[39,26,0],[39,28,0],[39,30,0],[39,41,0],[39,42,0],[39,44,0],[39,48,0],[39,52,0],[39,72,0],[40,0,0],[40,25,0],[40,26,0],[40,27,0],[40,28,0],[40,29,0],[40,30,0],[40,31,0],[40,33,0],[40,35,0],[40,39,0],[40,41,0],[40,42,0],[40,43,0],[40,44,0],[40,45,0],[40,46,0],[40,47,0],[40,48,0],[40,49,0],[40,50,0],[40,52,0],[40,53,0],[40,54,0],[40,72,0],[41,0,0],[41,25,0],[41,26,0],[41,27,0],[41,30,0],[41,32,0],[41,33,0],[41,39,0],[41,40,0],[41,42,0],[41,44,0],[41,45,0],[41,47,0],[41,48,0],[41,49,0],[41,50,0],[41,53,0],[41,72,0],[41,75,0],[42,25,0],[42,30,0],[42,33,0],[42,40,0],[42,41,0],[42,44,0],[42,48,0],[42,52,0],[42,72,0],[43,25,0],[43,26,0],[43,30,0],[43,31,0],[43,33,0],[43,40,0],[43,41,0],[43,42,0],[43,44,0],[43,49,0],[43,53,0],[43,72,0],[44,30,0],[44,35,0],[45,25,0],[45,26,0],[45,27,0],[45,28,0],[45,30,0],[45,33,0],[45,38,0],[45,41,0],[45,42,0],[45,48,0],[45,53,0],[45,72,0],[45,75,0],[46,25,0],[46,26,0],[46,30,0],[46,31,0],[46,33,0],[46,52,0],[47,25,0],[47,26,0],[47,27,0],[47,30,0],[47,31,0],[47,33,0],[47,40,0],[47,41,0],[47,42,0],[47,48,0],[47,52,0],[47,53,0],[47,72,0],[48,25,0],[48,26,0],[48,30,0],[48,31,0],[48,33,0],[48,34,0],[48,41,0],[48,45,0],[48,47,0],[48,52,0],[48,53,0],[48,72,0],[49,25,0],[49,26,0],[49,30,0],[49,31,0],[49,32,0],[49,33,0],[49,34,0],[49,40,0],[49,41,0],[49,42,0],[49,43,0],[49,44,0],[49,47,0],[49,48,0],[49,52,0],[49,53,0],[49,72,0],[50,25,0],[50,27,0],[50,30,0],[50,41,0],[50,44,0],[50,48,0],[52,26,0],[52,28,0],[52,30,0],[52,33,0],[52,41,0],[52,42,0],[52,47,0],[52,53,0],[52,72,0],[53,25,0],[53,26,0],[53,27,0],[53,30,0],[53,33,0],[53,41,0],[53,42,0],[53,45,0],[53,47,0],[53,48,0],[53,52,0],[53,72,0],[54,25,0],[54,42,0],[54,45,0],[54,52,0],[55,32,0],[56,36,0],[56,37,0],[56,38,0],[56,72,0],[57,26,0],[57,52,0],[57,53,0],[57,72,0],[60,9,0],[60,14,0],[60,62,0],[60,64,0],[60,65,0],[60,69,0],[60,70,0],[60,71,0],[61,2,0],[61,7,0],[61,9,0],[61,22,0],[61,70,0],[62,4,0],[62,7,0],[62,9,0],[62,14,0],[62,15,0],[62,19,0],[62,20,0],[62,21,0],[62,24,0],[62,61,0],[62,64,0],[62,65,0],[62,69,0],[62,70,0],[62,71,0],[63,3,0],[63,9,0],[63,64,0],[63,65,0],[63,68,0],[63,70,0],[64,65,0],[65,4,0],[65,9,0],[65,14,0],[65,15,0],[65,21,0],[65,23,0],[65,60,0],[65,61,0],[65,62,0],[65,63,0],[65,64,0],[65,69,0],[65,70,0],[65,71,0],[66,3,0],[66,9,0],[66,14,0],[66,60,0],[66,62,0],[66,64,0],[66,65,0],[66,67,0],[66,68,0],[66,70,0],[66,71,0],[67,4,0],[67,60,0],[67,64,0],[67,65,0],[67,70,0],[67,71,0],[68,3,0],[68,9,0],[68,14,0],[68,62,0],[68,64,0],[68,65,0],[68,71,0],[69,70,0],[70,9,0],[70,14,0],[70,64,0],[71,9,0],[71,14,0],[71,22,0],[71,62,0],[71,64,0],[71,70,0],[72,28,0],[72,30,0],[72,41,0],[72,42,0],[72,46,0],[72,52,0],[72,74,0],[72,75,0],[73,30,0],[73,44,0],[73,46,0],[73,52,0],[73,72,0],[74,30,0],[74,46,0],[74,72,0],[74,75,0],[75,30,0],[75,41,0],[75,42,0],[75,45,0],[75,46,0],[75,52,0],[75,72,0],[75,74,0],[78,30,0],[78,46,0],[78,52,0],[62,68,1],[64,68,1]],"task":{"question":"한국어 질문을 검색어로 바꾸는 곳에서 중복을 줄여줘","context":{"used":7985,"budget":8000,"ms":6,"terms":["한국어","질문","검색어","바꾸","곳에서","중복","줄여","query","question","prompt","term","keyword","change","update","replace","duplicate","dedupe","reduce","shrink"],"files":[{"path":"crates/lantern-context/src/tokenize.rs","tokens":1686,"symbols":["korean_actions_become_code_words","texts","QueryTerm","KO_VERB","tests","query_terms","fts_query_is_quoted","builds_query_terms"]},{"path":"app/src/search.ts","tokens":1017,"symbols":["render","replaceIn","changedHandler"]},{"path":"crates/lantern-context/src/main.rs","tokens":356,"symbols":["Cmd"]},{"path":"app/src-tauri/src/agents.rs","tokens":326,"symbols":["builtin"]},{"path":"eval/ab/run.mjs","tokens":842,"symbols":["judge","chat"]},{"path":"app/src/chat.ts","tokens":508,"symbols":["Task","init"]},{"path":"crates/lantern-context/src/assemble.rs","tokens":1869,"symbols":["assemble"]},{"path":"app/src/keybindings.ts","tokens":492,"symbols":["render"]},{"path":"app/src/api.ts","tokens":58,"symbols":["errorText"]},{"path":"app/src/dom.ts","tokens":69,"symbols":["$"]},{"path":"app/src/editor.ts","tokens":201,"symbols":["isDirty","reloadIfClean"]},{"path":"app/src/toast.ts","tokens":47,"symbols":["warn"]},{"path":"app/src/main.ts","tokens":123,"symbols":["onContext"]},{"path":"app/src-tauri/src/tasks.rs","tokens":178,"symbols":["save_checkpoint","fingerprints_detect_later_changes"]},{"path":"crates/lantern-context/src/store.rs","tokens":55,"symbols":["replace_file"]},{"path":"eval/retrieval.mjs","tokens":120,"symbols":["keywords"]},{"path":"app/src-tauri/src/tools.rs","tokens":38,"symbols":["specs"]}]},"read":["crates/lantern-context/src/assemble.rs"],"edit":{"path":"crates/lantern-context/src/tokenize.rs","symbol":"query_terms","line":412,"before":" if seen.insert(text.clone()) {","after":" if seen.insert(text.to_lowercase()) {","snippet":[{"n":407,"code":"/// 질문을 검색어 목록으로 바꾼다."},{"n":408,"code":"pub fn query_terms(query: &str) -> Vec {"},{"n":409,"code":" let mut seen = HashSet::new();"},{"n":410,"code":" let mut out = Vec::new();"},{"n":411,"code":" let mut push = |text: String, prefix: bool, expanded: bool, out: &mut Vec| {"},{"n":412,"code":" if seen.insert(text.clone()) {"},{"n":413,"code":" out.push(QueryTerm { text, prefix, expanded });"},{"n":414,"code":" }"},{"n":415,"code":" };"},{"n":416,"code":""}]},"impact":{"touched":["query_terms"],"callers":5,"callers2":13,"files":11,"modules":1,"risk":"medium","tests":[],"cochanged":[],"depthByPath":{"crates/lantern-context/src/tokenize.rs":0,"crates/lantern-context/src/assemble.rs":1,"crates/lantern-context/src/graph.rs":1,"crates/lantern-context/src/lib.rs":1,"app/src-tauri/src/agent.rs":2,"app/src-tauri/src/agents.rs":2,"app/src-tauri/src/gitops.rs":2,"app/src-tauri/src/lspinstall.rs":2,"app/src-tauri/src/main.rs":2,"app/src-tauri/src/tasks.rs":2,"app/src-tauri/src/workspace.rs":2,"crates/lantern-context/src/main.rs":2}}}}