From 55c8e1c9dde34518e23aa7af29b54aa0543cb512 Mon Sep 17 00:00:00 2001 From: g1nation Date: Tue, 5 May 2026 10:39:34 +0900 Subject: [PATCH] fix(retrieval): resolved 'synonyms is not iterable' by using Map and Array.isArray v2.68.0 --- package-lock.json | 4 ++-- package.json | 2 +- src/retrieval/scoring.ts | 44 ++++++++++++++++++++-------------------- 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7b4cbd1..2f59f52 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "g1nation", - "version": "2.64.1", + "version": "2.68.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "g1nation", - "version": "2.64.1", + "version": "2.68.0", "license": "MIT", "dependencies": { "marked": "^18.0.2" diff --git a/package.json b/package.json index f11ed6d..3fb52f3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "astra", "displayName": "Astra", "description": "The personal intelligence layer for Antigravity and VS Code. A private cognitive partner for deep project context, memory, and proactive strategic decision-making.", - "version": "2.67.0", + "version": "2.68.0", "publisher": "g1nation", "license": "MIT", "icon": "assets/icon.png", diff --git a/src/retrieval/scoring.ts b/src/retrieval/scoring.ts index a47ecac..0b3b6f0 100644 --- a/src/retrieval/scoring.ts +++ b/src/retrieval/scoring.ts @@ -44,31 +44,31 @@ export function tokenize(text: string): string[] { * 동의어/관련어 확장을 수행합니다. */ export function expandQuery(tokens: string[]): string[] { - const synonymMap: Record = { - '성능': ['performance', 'optimization', '최적화', 'speed'], - 'performance': ['성능', '최적화', 'optimization', 'speed'], - '아키텍처': ['architecture', '구조', 'structure', 'design'], - 'architecture': ['아키텍처', '구조', 'structure', 'design'], - '메모리': ['memory', '기억', 'cache', 'storage'], - 'memory': ['메모리', '기억', 'cache', 'storage'], - '버그': ['bug', 'error', '오류', 'issue', 'defect'], - 'bug': ['버그', 'error', '오류', 'issue'], - '설계': ['design', '아키텍처', 'architecture', 'pattern'], - 'design': ['설계', '아키텍처', 'architecture', 'pattern'], - '배포': ['deploy', 'deployment', 'release', 'ci', 'cd'], - 'deploy': ['배포', 'deployment', 'release'], - '테스트': ['test', 'testing', 'spec', 'jest', 'mocha'], - 'test': ['테스트', 'testing', 'spec'], - '프로젝트': ['project', '프로그램', 'repo', 'repository'], - 'project': ['프로젝트', '프로그램', 'repo'], - '방향': ['direction', '전략', 'strategy', '목표', 'goal'], - 'direction': ['방향', '전략', 'strategy', '목표'] - }; + const synonymMap = new Map([ + ['성능', ['performance', 'optimization', '최적화', 'speed']], + ['performance', ['성능', '최적화', 'optimization', 'speed']], + ['아키텍처', ['architecture', '구조', 'structure', 'design']], + ['architecture', ['아키텍처', '구조', 'structure', 'design']], + ['메모리', ['memory', '기억', 'cache', 'storage']], + ['memory', ['메모리', '기억', 'cache', 'storage']], + ['버그', ['bug', 'error', '오류', 'issue', 'defect']], + ['bug', ['버그', 'error', '오류', 'issue']], + ['설계', ['design', '아키텍처', 'architecture', 'pattern']], + ['design', ['설계', '아키텍처', 'architecture', 'pattern']], + ['배포', ['deploy', 'deployment', 'release', 'ci', 'cd']], + ['deploy', ['배포', 'deployment', 'release']], + ['테스트', ['test', 'testing', 'spec', 'jest', 'mocha']], + ['test', ['테스트', 'testing', 'spec']], + ['프로젝트', ['project', '프로그램', 'repo', 'repository']], + ['project', ['프로젝트', '프로그램', 'repo']], + ['방향', ['direction', '전략', 'strategy', '목표', 'goal']], + ['direction', ['방향', '전략', 'strategy', '목표']] + ]); const expanded = new Set(tokens); for (const token of tokens) { - const synonyms = synonymMap[token]; - if (synonyms) { + const synonyms = synonymMap.get(token); + if (Array.isArray(synonyms)) { for (const syn of synonyms) { expanded.add(syn); }