@devflow-tools/context-engine 0.14.3 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,13 @@
1
+ import { createRequire } from "node:module";
2
+ const require = createRequire(import.meta.url);
3
+ let jiebaCutForSearch = null;
4
+ try {
5
+ const jieba = require("nodejieba");
6
+ jiebaCutForSearch = jieba.cutForSearch.bind(jieba);
7
+ }
8
+ catch {
9
+ // nodejieba optional — falls back to regex-only mode
10
+ }
1
11
  const INTENT_PATTERNS = [
2
12
  { pattern: /(fix|bug|crash|error|broken|issue|debug)/i, intent: "debug" },
3
13
  { pattern: /(add|new|create|build|implement|feature)/i, intent: "feature" },
@@ -37,7 +47,6 @@ export function parseIntent(query) {
37
47
  }
38
48
  }
39
49
  }
40
- // Chinese intent classification (runs on original query)
41
50
  if (intent === "unknown") {
42
51
  for (const { pattern, intent: i } of CN_INTENT_MAP) {
43
52
  if (pattern.test(query)) {
@@ -68,124 +77,249 @@ export function parseIntent(query) {
68
77
  confidence: (maxIntentConf + maxDomainConf) / 2,
69
78
  };
70
79
  }
80
+ // ── Chinese → English term dictionary ──────────────────────────────
81
+ // Each entry: Chinese words/phrases → English code-relevant keywords
71
82
  const ZH_EN_MAP = [
72
83
  // 认证/登录
73
- [/(认证|鉴权)/g, ["authentication", "auth", "login", "oauth"]],
74
- [/(登录|登陆)/g, ["login", "signin", "auth"]],
75
- [/(注册)/g, ["register", "signup"]],
76
- [/(权限|授权)/g, ["permission", "role", "authorization", "guard"]],
84
+ { words: ["认证", "鉴权"], expansions: ["authentication", "auth", "login", "oauth"] },
85
+ { words: ["登录", "登陆"], expansions: ["login", "signin", "auth"] },
86
+ { words: ["注册"], expansions: ["register", "signup"] },
87
+ { words: ["权限", "授权"], expansions: ["permission", "role", "authorization", "guard"] },
77
88
  // 路由
78
- [/(路由|导航)/g, ["route", "routing", "router", "path", "navigate"]],
79
- [/(页面)/g, ["page", "screen", "view"]],
89
+ { words: ["路由", "导航"], expansions: ["route", "routing", "router", "path", "navigate"] },
90
+ { words: ["页面"], expansions: ["page", "screen", "view"] },
80
91
  // 状态管理
81
- [/(状态管理)/g, ["state", "store", "zustand", "redux", "context", "provider"]],
82
- [/(状态)/g, ["state", "status"]],
92
+ { words: ["状态管理"], expansions: ["state", "store", "zustand", "redux", "context", "provider"] },
93
+ { words: ["状态"], expansions: ["state", "status"] },
83
94
  // 组件
84
- [/(组件)/g, ["component", "props", "jsx", "tsx"]],
85
- [/(渲染)/g, ["render", "rendering", "jsx"]],
86
- [/(钩子|hooks?函数)/g, ["hook", "useEffect", "useState", "useCallback"]],
87
- [/(生命周期)/g, ["lifecycle", "useEffect", "mount", "unmount"]],
95
+ { words: ["组件"], expansions: ["component", "props", "jsx", "tsx"] },
96
+ { words: ["渲染"], expansions: ["render", "rendering", "jsx"] },
97
+ { words: ["钩子", "hook", "hooks"], expansions: ["hook", "useEffect", "useState", "useCallback"] },
98
+ { words: ["生命周期"], expansions: ["lifecycle", "useEffect", "mount", "unmount"] },
88
99
  // 修复
89
- [/(修复|改bug|bug)/gi, ["fix", "bug", "debug", "error", "broken", "issue"]],
90
- [/(错误|异常|报错)/g, ["error", "exception", "crash", "throw"]],
91
- [/(调试|debug)/gi, ["debug", "debugger", "console", "log"]],
100
+ { words: ["修复", "bug"], expansions: ["fix", "bug", "debug", "error", "broken", "issue"] },
101
+ { words: ["错误", "异常", "报错"], expansions: ["error", "exception", "crash", "throw"] },
102
+ { words: ["调试"], expansions: ["debug", "debugger", "console", "log"] },
92
103
  // 新增
93
- [/(新增|添加|新建|创建)/g, ["add", "new", "create", "feature", "implement", "build"]],
94
- [/(功能|特性)/g, ["feature", "functionality", "capability"]],
95
- [/(实现|开发)/g, ["implement", "develop", "build", "code"]],
104
+ { words: ["新增", "添加", "新建", "创建"], expansions: ["add", "new", "create", "feature", "implement", "build"] },
105
+ { words: ["功能", "特性"], expansions: ["feature", "functionality", "capability"] },
106
+ { words: ["实现", "开发"], expansions: ["implement", "develop", "build", "code"] },
96
107
  // API/接口
97
- [/(接口|API|端点)/gi, ["api", "endpoint", "interface", "controller", "handler"]],
98
- [/(请求|调用)/g, ["request", "fetch", "axios", "call", "invoke"]],
99
- [/(响应|返回)/g, ["response", "return", "handler", "callback"]],
108
+ { words: ["接口", "api", "端点"], expansions: ["api", "endpoint", "interface", "controller", "handler"] },
109
+ { words: ["请求", "调用"], expansions: ["request", "fetch", "axios", "call", "invoke"] },
110
+ { words: ["响应", "返回"], expansions: ["response", "return", "handler", "callback"] },
100
111
  // 样式
101
- [/(样式|风格|外观)/g, ["style", "css", "theme", "tailwind", "design"]],
102
- [/(布局|排版)/g, ["layout", "flex", "grid", "position"]],
103
- [/(响应式)/g, ["responsive", "breakpoint", "media query"]],
112
+ { words: ["样式", "风格", "外观"], expansions: ["style", "css", "theme", "tailwind", "design"] },
113
+ { words: ["布局", "排版"], expansions: ["layout", "flex", "grid", "position"] },
114
+ { words: ["响应式"], expansions: ["responsive", "breakpoint", "media query"] },
104
115
  // 数据库
105
- [/(数据库|DB)/gi, ["database", "db", "query", "schema", "model", "sql"]],
106
- [/(查询|检索)/g, ["query", "select", "find", "search", "filter"]],
107
- [/(表\b|集合)/g, ["table", "collection", "model", "schema"]],
116
+ { words: ["数据库", "db"], expansions: ["database", "db", "query", "schema", "model", "sql"] },
117
+ { words: ["查询", "检索"], expansions: ["query", "select", "find", "search", "filter"] },
118
+ { words: ["表", "集合"], expansions: ["table", "collection", "model", "schema"] },
108
119
  // 测试
109
- [/(测试|单测|用例)/g, ["test", "spec", "mock", "assert", "expect"]],
120
+ { words: ["测试", "单测", "用例"], expansions: ["test", "spec", "mock", "assert", "expect"] },
110
121
  // 构建/配置
111
- [/(构建|打包|编译)/g, ["build", "bundle", "compile", "webpack", "rsbuild"]],
112
- [/(配置|设置)/g, ["config", "configuration", "setting", "option"]],
113
- [/(部署|发布|上线)/g, ["deploy", "publish", "release", "CI", "CD"]],
114
- // 其他
115
- [/(类型定义|类型)/g, ["type", "interface", "typedef", "generic"]],
116
- [/(事件|触发)/g, ["event", "handler", "callback", "listener", "trigger"]],
117
- [/(异步|并发)/g, ["async", "promise", "await", "concurrent", "parallel"]],
118
- [/(性能|优化|提速)/g, ["performance", "optimize", "memo", "cache", "lazy"]],
119
- [/(重构|整理|优化代码)/g, ["refactor", "clean", "restructure", "extract"]],
122
+ { words: ["构建", "打包", "编译"], expansions: ["build", "bundle", "compile", "webpack", "rsbuild"] },
123
+ { words: ["配置", "设置"], expansions: ["config", "configuration", "setting", "option"] },
124
+ { words: ["部署", "发布", "上线"], expansions: ["deploy", "publish", "release", "CI", "CD"] },
125
+ // 类型
126
+ { words: ["类型定义", "类型"], expansions: ["type", "interface", "typedef", "generic"] },
127
+ // 事件
128
+ { words: ["事件", "触发"], expansions: ["event", "handler", "callback", "listener", "trigger"] },
129
+ // 异步
130
+ { words: ["异步", "并发"], expansions: ["async", "promise", "await", "concurrent", "parallel"] },
131
+ // 性能
132
+ { words: ["性能", "优化", "提速"], expansions: ["performance", "optimize", "memo", "cache", "lazy"] },
133
+ // 重构
134
+ { words: ["重构", "整理"], expansions: ["refactor", "clean", "restructure", "extract"] },
120
135
  // 代码审核/审查
121
- [/(代码审核|代码审查|code review)/gi, ["code review", "audit", "review"]],
122
- [/(审核|审查|评审)/g, ["review", "audit", "evaluation", "inspection"]],
136
+ { words: ["代码审核", "代码审查", "code review"], expansions: ["code review", "audit", "review"] },
137
+ { words: ["审核", "审查", "评审"], expansions: ["review", "audit", "evaluation", "inspection"] },
123
138
  // 文档
124
- [/(文档|doc)/gi, ["document", "documentation", "docs", "readme"]],
139
+ { words: ["文档", "文档"], expansions: ["document", "documentation", "docs", "readme"] },
125
140
  // 流程/模块
126
- [/(流程|工作流|流水线)/g, ["workflow", "flow", "pipeline", "process"]],
127
- [/(模块)/g, ["module", "component", "package"]],
141
+ { words: ["流程", "工作流", "流水线"], expansions: ["workflow", "flow", "pipeline", "process"] },
142
+ { words: ["模块"], expansions: ["module", "component", "package"] },
128
143
  // 日志
129
- [/(日志|log)/gi, ["log", "logging", "audit log", "console"]],
144
+ { words: ["日志", "log"], expansions: ["log", "logging", "audit log", "console"] },
130
145
  // 用户
131
- [/(用户|成员)/g, ["user", "member", "account", "profile"]],
132
- [/(评论|留言)/g, ["comment", "review comment", "feedback"]],
146
+ { words: ["用户", "成员"], expansions: ["user", "member", "account", "profile"] },
147
+ { words: ["评论", "留言"], expansions: ["comment", "review comment", "feedback"] },
133
148
  // 文件
134
- [/(文件)/g, ["file", "document", "attachment"]],
135
- [/(版本)/g, ["version", "revision", "release"]],
136
- [/(历史)/g, ["history", "changelog", "timeline"]],
149
+ { words: ["文件"], expansions: ["file", "document", "attachment"] },
150
+ { words: ["版本"], expansions: ["version", "revision", "release"] },
151
+ { words: ["历史"], expansions: ["history", "changelog", "timeline"] },
137
152
  // 搜索/过滤
138
- [/(搜索|检索|查找)/g, ["search", "find", "query", "filter"]],
139
- [/(过滤|筛选)/g, ["filter", "search", "query", "sort"]],
140
- [/(分页)/g, ["pagination", "page", "offset", "limit"]],
153
+ { words: ["搜索", "检索", "查找"], expansions: ["search", "find", "query", "filter"] },
154
+ { words: ["过滤", "筛选"], expansions: ["filter", "search", "query", "sort"] },
155
+ { words: ["分页"], expansions: ["pagination", "page", "offset", "limit"] },
141
156
  // 统计/图表
142
- [/(统计|数据统计)/g, ["stats", "statistics", "analytics", "metrics"]],
143
- [/(图表|可视化)/g, ["chart", "graph", "diagram", "visualization"]],
144
- [/(导出)/g, ["export", "download", "csv", "json"]],
145
- [/(导入)/g, ["import", "upload", "parse"]],
157
+ { words: ["统计", "数据统计"], expansions: ["stats", "statistics", "analytics", "metrics"] },
158
+ { words: ["图表", "可视化"], expansions: ["chart", "graph", "diagram", "visualization"] },
159
+ { words: ["导出"], expansions: ["export", "download", "csv", "json"] },
160
+ { words: ["导入"], expansions: ["import", "upload", "parse"] },
146
161
  // 通知/消息
147
- [/(通知|提醒)/g, ["notification", "notify", "alert", "toast"]],
148
- [/(消息|聊天)/g, ["message", "chat", "websocket", "notification"]],
162
+ { words: ["通知", "提醒"], expansions: ["notification", "notify", "alert", "toast"] },
163
+ { words: ["消息", "聊天"], expansions: ["message", "chat", "websocket", "notification"] },
149
164
  // 文件操作
150
- [/(上传)/g, ["upload", "import", "file"]],
151
- [/(下载)/g, ["download", "export", "file"]],
152
- [/(预览)/g, ["preview", "viewer", "thumbnail"]],
153
- [/(保存)/g, ["save", "persist", "commit"]],
154
- [/(删除|移除)/g, ["delete", "remove", "destroy"]],
155
- [/(编辑|修改)/g, ["edit", "modify", "update", "patch"]],
165
+ { words: ["上传"], expansions: ["upload", "import", "file"] },
166
+ { words: ["下载"], expansions: ["download", "export", "file"] },
167
+ { words: ["预览"], expansions: ["preview", "viewer", "thumbnail"] },
168
+ { words: ["保存"], expansions: ["save", "persist", "commit"] },
169
+ { words: ["删除", "移除"], expansions: ["delete", "remove", "destroy"] },
170
+ { words: ["编辑", "修改"], expansions: ["edit", "modify", "update", "patch"] },
156
171
  // UI 元素
157
- [/(菜单|导航栏)/g, ["menu", "navigation", "nav", "sidebar"]],
158
- [/(面包屑)/g, ["breadcrumb", "navigation"]],
159
- [/(标签页|tab)/gi, ["tab", "tag", "label", "badge"]],
160
- [/(卡片)/g, ["card", "panel", "widget"]],
161
- [/(列表)/g, ["list", "table", "grid"]],
162
- [/(表格)/g, ["table", "grid", "data table"]],
163
- [/(表单)/g, ["form", "input", "validation"]],
164
- [/(弹窗|对话框|模态框)/g, ["modal", "dialog", "popup", "overlay"]],
165
- [/(抽屉)/g, ["drawer", "sidebar", "panel"]],
166
- [/(下拉|选择器)/g, ["dropdown", "select", "picker", "combo"]],
172
+ { words: ["菜单", "导航栏"], expansions: ["menu", "navigation", "nav", "sidebar"] },
173
+ { words: ["面包屑"], expansions: ["breadcrumb", "navigation"] },
174
+ { words: ["标签页", "tab"], expansions: ["tab", "tag", "label", "badge"] },
175
+ { words: ["卡片"], expansions: ["card", "panel", "widget"] },
176
+ { words: ["列表"], expansions: ["list", "table", "grid"] },
177
+ { words: ["表格"], expansions: ["table", "grid", "data table"] },
178
+ { words: ["表单"], expansions: ["form", "input", "validation"] },
179
+ { words: ["弹窗", "对话框", "模态框"], expansions: ["modal", "dialog", "popup", "overlay"] },
180
+ { words: ["抽屉"], expansions: ["drawer", "sidebar", "panel"] },
181
+ { words: ["下拉", "选择器"], expansions: ["dropdown", "select", "picker", "combo"] },
167
182
  // 交互
168
- [/(加载|loading)/gi, ["loading", "spinner", "skeleton"]],
169
- [/(错误处理|异常处理)/g, ["error handling", "try catch", "exception"]],
170
- [/(验证|校验)/g, ["validation", "verify", "validate", "schema"]],
171
- [/(国际化|多语言)/g, ["i18n", "internationalization", "locale", "translation"]],
172
- [/(主题|暗色模式)/g, ["theme", "dark mode", "color scheme"]],
183
+ { words: ["加载", "loading"], expansions: ["loading", "spinner", "skeleton"] },
184
+ { words: ["错误处理", "异常处理"], expansions: ["error handling", "try catch", "exception"] },
185
+ { words: ["验证", "校验"], expansions: ["validation", "verify", "validate", "schema"] },
186
+ { words: ["国际化", "多语言"], expansions: ["i18n", "internationalization", "locale", "translation"] },
187
+ { words: ["主题", "暗色模式"], expansions: ["theme", "dark mode", "color scheme"] },
173
188
  // 架构
174
- [/(服务)/g, ["service", "api", "endpoint"]],
175
- [/(中间件)/g, ["middleware", "interceptor", "guard"]],
176
- [/(拦截器)/g, ["interceptor", "middleware", "filter"]],
177
- [/(数据)/g, ["data", "model", "store", "database"]],
178
- [/(缓存)/g, ["cache", "memo", "storage", "redis"]],
179
- [/(存储|持久化)/g, ["storage", "store", "persistence", "database"]],
189
+ { words: ["服务"], expansions: ["service", "api", "endpoint"] },
190
+ { words: ["中间件"], expansions: ["middleware", "interceptor", "guard"] },
191
+ { words: ["拦截器"], expansions: ["interceptor", "middleware", "filter"] },
192
+ { words: ["数据"], expansions: ["data", "model", "store", "database"] },
193
+ { words: ["缓存"], expansions: ["cache", "memo", "storage", "redis"] },
194
+ { words: ["存储", "持久化"], expansions: ["storage", "store", "persistence", "database"] },
180
195
  // 媒体
181
- [/(图片|图像)/g, ["image", "picture", "photo", "thumbnail"]],
182
- [/(视频)/g, ["video", "media", "player"]],
183
- [/(音频|声音)/g, ["audio", "sound", "media", "player"]],
196
+ { words: ["图片", "图像"], expansions: ["image", "picture", "photo", "thumbnail"] },
197
+ { words: ["视频"], expansions: ["video", "media", "player"] },
198
+ { words: ["音频", "声音"], expansions: ["audio", "sound", "media", "player"] },
184
199
  // 通用
185
- [/(逻辑|业务逻辑)/g, ["logic", "business", "service", "handler"]],
186
- [/(工具|辅助|helper)/gi, ["tool", "utility", "helper", "utils"]],
187
- [/(配置项|环境变量)/g, ["config", "env", "environment", "variable"]],
200
+ { words: ["逻辑", "业务逻辑"], expansions: ["logic", "business", "service", "handler"] },
201
+ { words: ["工具", "辅助", "helper"], expansions: ["tool", "utility", "helper", "utils"] },
202
+ { words: ["配置项", "环境变量"], expansions: ["config", "env", "environment", "variable"] },
188
203
  ];
204
+ // ── Word map built from ZH_EN_MAP at module init ──────────────────
205
+ const WORD_MAP = new Map();
206
+ function addToMap(word, expansions) {
207
+ const lower = word.toLowerCase();
208
+ const existing = WORD_MAP.get(lower) ?? [];
209
+ for (const exp of expansions) {
210
+ if (!existing.includes(exp)) {
211
+ existing.push(exp);
212
+ }
213
+ }
214
+ WORD_MAP.set(lower, existing);
215
+ }
216
+ for (const entry of ZH_EN_MAP) {
217
+ for (const word of entry.words) {
218
+ addToMap(word, entry.expansions);
219
+ // For compound words, also index component parts for partial matches
220
+ if (word.length >= 4 && /[一-鿿]/.test(word)) {
221
+ // e.g. "状态管理" → also index "状态" and "管理" if not already standalone entries
222
+ }
223
+ }
224
+ }
225
+ // ── Regex fallback patterns (used when jieba unavailable) ─────────
226
+ const ZH_EN_REGEX = [
227
+ { pattern: /(认证|鉴权)/g, replacements: ["authentication", "auth", "login", "oauth"] },
228
+ { pattern: /(登录|登陆)/g, replacements: ["login", "signin", "auth"] },
229
+ { pattern: /(注册)/g, replacements: ["register", "signup"] },
230
+ { pattern: /(权限|授权)/g, replacements: ["permission", "role", "authorization", "guard"] },
231
+ { pattern: /(路由|导航)/g, replacements: ["route", "routing", "router", "path", "navigate"] },
232
+ { pattern: /(页面)/g, replacements: ["page", "screen", "view"] },
233
+ { pattern: /(状态管理)/g, replacements: ["state", "store", "zustand", "redux", "context", "provider"] },
234
+ { pattern: /(状态)/g, replacements: ["state", "status"] },
235
+ { pattern: /(组件)/g, replacements: ["component", "props", "jsx", "tsx"] },
236
+ { pattern: /(渲染)/g, replacements: ["render", "rendering", "jsx"] },
237
+ { pattern: /(钩子|hooks?函数)/g, replacements: ["hook", "useEffect", "useState", "useCallback"] },
238
+ { pattern: /(生命周期)/g, replacements: ["lifecycle", "useEffect", "mount", "unmount"] },
239
+ { pattern: /(修复|改bug|bug)/gi, replacements: ["fix", "bug", "debug", "error", "broken", "issue"] },
240
+ { pattern: /(错误|异常|报错)/g, replacements: ["error", "exception", "crash", "throw"] },
241
+ { pattern: /(调试|debug)/gi, replacements: ["debug", "debugger", "console", "log"] },
242
+ { pattern: /(新增|添加|新建|创建)/g, replacements: ["add", "new", "create", "feature", "implement", "build"] },
243
+ { pattern: /(功能|特性)/g, replacements: ["feature", "functionality", "capability"] },
244
+ { pattern: /(实现|开发)/g, replacements: ["implement", "develop", "build", "code"] },
245
+ { pattern: /(接口|API|端点)/gi, replacements: ["api", "endpoint", "interface", "controller", "handler"] },
246
+ { pattern: /(请求|调用)/g, replacements: ["request", "fetch", "axios", "call", "invoke"] },
247
+ { pattern: /(响应|返回)/g, replacements: ["response", "return", "handler", "callback"] },
248
+ { pattern: /(样式|风格|外观)/g, replacements: ["style", "css", "theme", "tailwind", "design"] },
249
+ { pattern: /(布局|排版)/g, replacements: ["layout", "flex", "grid", "position"] },
250
+ { pattern: /(响应式)/g, replacements: ["responsive", "breakpoint", "media query"] },
251
+ { pattern: /(数据库|DB)/gi, replacements: ["database", "db", "query", "schema", "model", "sql"] },
252
+ { pattern: /(查询|检索)/g, replacements: ["query", "select", "find", "search", "filter"] },
253
+ { pattern: /(表\b|集合)/g, replacements: ["table", "collection", "model", "schema"] },
254
+ { pattern: /(测试|单测|用例)/g, replacements: ["test", "spec", "mock", "assert", "expect"] },
255
+ { pattern: /(构建|打包|编译)/g, replacements: ["build", "bundle", "compile", "webpack", "rsbuild"] },
256
+ { pattern: /(配置|设置)/g, replacements: ["config", "configuration", "setting", "option"] },
257
+ { pattern: /(部署|发布|上线)/g, replacements: ["deploy", "publish", "release", "CI", "CD"] },
258
+ { pattern: /(类型定义|类型)/g, replacements: ["type", "interface", "typedef", "generic"] },
259
+ { pattern: /(事件|触发)/g, replacements: ["event", "handler", "callback", "listener", "trigger"] },
260
+ { pattern: /(异步|并发)/g, replacements: ["async", "promise", "await", "concurrent", "parallel"] },
261
+ { pattern: /(性能|优化|提速)/g, replacements: ["performance", "optimize", "memo", "cache", "lazy"] },
262
+ { pattern: /(重构|整理|优化代码)/g, replacements: ["refactor", "clean", "restructure", "extract"] },
263
+ { pattern: /(代码审核|代码审查|code review)/gi, replacements: ["code review", "audit", "review"] },
264
+ { pattern: /(审核|审查|评审)/g, replacements: ["review", "audit", "evaluation", "inspection"] },
265
+ { pattern: /(文档|doc)/gi, replacements: ["document", "documentation", "docs", "readme"] },
266
+ { pattern: /(流程|工作流|流水线)/g, replacements: ["workflow", "flow", "pipeline", "process"] },
267
+ { pattern: /(模块)/g, replacements: ["module", "component", "package"] },
268
+ { pattern: /(日志|log)/gi, replacements: ["log", "logging", "audit log", "console"] },
269
+ { pattern: /(用户|成员)/g, replacements: ["user", "member", "account", "profile"] },
270
+ { pattern: /(评论|留言)/g, replacements: ["comment", "review comment", "feedback"] },
271
+ { pattern: /(文件)/g, replacements: ["file", "document", "attachment"] },
272
+ { pattern: /(版本)/g, replacements: ["version", "revision", "release"] },
273
+ { pattern: /(历史)/g, replacements: ["history", "changelog", "timeline"] },
274
+ { pattern: /(搜索|检索|查找)/g, replacements: ["search", "find", "query", "filter"] },
275
+ { pattern: /(过滤|筛选)/g, replacements: ["filter", "search", "query", "sort"] },
276
+ { pattern: /(分页)/g, replacements: ["pagination", "page", "offset", "limit"] },
277
+ { pattern: /(统计|数据统计)/g, replacements: ["stats", "statistics", "analytics", "metrics"] },
278
+ { pattern: /(图表|可视化)/g, replacements: ["chart", "graph", "diagram", "visualization"] },
279
+ { pattern: /(导出)/g, replacements: ["export", "download", "csv", "json"] },
280
+ { pattern: /(导入)/g, replacements: ["import", "upload", "parse"] },
281
+ { pattern: /(通知|提醒)/g, replacements: ["notification", "notify", "alert", "toast"] },
282
+ { pattern: /(消息|聊天)/g, replacements: ["message", "chat", "websocket", "notification"] },
283
+ { pattern: /(上传)/g, replacements: ["upload", "import", "file"] },
284
+ { pattern: /(下载)/g, replacements: ["download", "export", "file"] },
285
+ { pattern: /(预览)/g, replacements: ["preview", "viewer", "thumbnail"] },
286
+ { pattern: /(保存)/g, replacements: ["save", "persist", "commit"] },
287
+ { pattern: /(删除|移除)/g, replacements: ["delete", "remove", "destroy"] },
288
+ { pattern: /(编辑|修改)/g, replacements: ["edit", "modify", "update", "patch"] },
289
+ { pattern: /(菜单|导航栏)/g, replacements: ["menu", "navigation", "nav", "sidebar"] },
290
+ { pattern: /(面包屑)/g, replacements: ["breadcrumb", "navigation"] },
291
+ { pattern: /(标签页|tab)/gi, replacements: ["tab", "tag", "label", "badge"] },
292
+ { pattern: /(卡片)/g, replacements: ["card", "panel", "widget"] },
293
+ { pattern: /(列表)/g, replacements: ["list", "table", "grid"] },
294
+ { pattern: /(表格)/g, replacements: ["table", "grid", "data table"] },
295
+ { pattern: /(表单)/g, replacements: ["form", "input", "validation"] },
296
+ { pattern: /(弹窗|对话框|模态框)/g, replacements: ["modal", "dialog", "popup", "overlay"] },
297
+ { pattern: /(抽屉)/g, replacements: ["drawer", "sidebar", "panel"] },
298
+ { pattern: /(下拉|选择器)/g, replacements: ["dropdown", "select", "picker", "combo"] },
299
+ { pattern: /(加载|loading)/gi, replacements: ["loading", "spinner", "skeleton"] },
300
+ { pattern: /(错误处理|异常处理)/g, replacements: ["error handling", "try catch", "exception"] },
301
+ { pattern: /(验证|校验)/g, replacements: ["validation", "verify", "validate", "schema"] },
302
+ { pattern: /(国际化|多语言)/g, replacements: ["i18n", "internationalization", "locale", "translation"] },
303
+ { pattern: /(主题|暗色模式)/g, replacements: ["theme", "dark mode", "color scheme"] },
304
+ { pattern: /(服务)/g, replacements: ["service", "api", "endpoint"] },
305
+ { pattern: /(中间件)/g, replacements: ["middleware", "interceptor", "guard"] },
306
+ { pattern: /(拦截器)/g, replacements: ["interceptor", "middleware", "filter"] },
307
+ { pattern: /(数据)/g, replacements: ["data", "model", "store", "database"] },
308
+ { pattern: /(缓存)/g, replacements: ["cache", "memo", "storage", "redis"] },
309
+ { pattern: /(存储|持久化)/g, replacements: ["storage", "store", "persistence", "database"] },
310
+ { pattern: /(图片|图像)/g, replacements: ["image", "picture", "photo", "thumbnail"] },
311
+ { pattern: /(视频)/g, replacements: ["video", "media", "player"] },
312
+ { pattern: /(音频|声音)/g, replacements: ["audio", "sound", "media", "player"] },
313
+ { pattern: /(逻辑|业务逻辑)/g, replacements: ["logic", "business", "service", "handler"] },
314
+ { pattern: /(工具|辅助|helper)/gi, replacements: ["tool", "utility", "helper", "utils"] },
315
+ { pattern: /(配置项|环境变量)/g, replacements: ["config", "env", "environment", "variable"] },
316
+ ];
317
+ /**
318
+ * Segment a Chinese query into terms using jieba, then look up each word
319
+ * and consecutive bigrams in WORD_MAP for English expansions.
320
+ *
321
+ * Falls back to ZH_EN_REGEX when jieba is unavailable.
322
+ */
189
323
  export function expandQuery(query) {
190
324
  if (!query)
191
325
  return query;
@@ -193,13 +327,44 @@ export function expandQuery(query) {
193
327
  if (!hasChinese)
194
328
  return query;
195
329
  const terms = new Set();
196
- for (const [pattern, replacements] of ZH_EN_MAP) {
197
- if (pattern.test(query)) {
198
- for (const r of replacements) {
199
- terms.add(r);
330
+ if (jiebaCutForSearch) {
331
+ // Extract English words from the original query before jieba segmentation.
332
+ // jieba splits mixed text like "认证bug" into individual letters "b","u","g",
333
+ // so we rescue standalone English terms directly from the query.
334
+ const englishTerms = query.match(/\b[a-zA-Z][a-zA-Z0-9]+\b/g) ?? [];
335
+ // Phase 1: jieba segmentation + word map lookup
336
+ const raw = jiebaCutForSearch(query);
337
+ const words = raw.filter((w) => w.length >= 2 || /^[a-zA-Z]+$/.test(w));
338
+ // Combine jieba tokens with rescued English terms
339
+ const allWords = [...new Set([...words, ...englishTerms])];
340
+ for (const word of allWords) {
341
+ const expansions = WORD_MAP.get(word.toLowerCase());
342
+ if (expansions) {
343
+ for (const exp of expansions)
344
+ terms.add(exp);
345
+ }
346
+ }
347
+ // Bigram scan: catch compound terms split by jieba
348
+ // e.g. jieba splits "代码审核" into ["代码", "审核"], bigram matches WORD_MAP
349
+ for (let i = 0; i < words.length - 1; i++) {
350
+ const bigram = (words[i] + words[i + 1]).toLowerCase();
351
+ const expansions = WORD_MAP.get(bigram);
352
+ if (expansions) {
353
+ for (const exp of expansions)
354
+ terms.add(exp);
355
+ }
356
+ }
357
+ }
358
+ else {
359
+ // Phase 1 fallback: regex-based matching
360
+ for (const { pattern, replacements } of ZH_EN_REGEX) {
361
+ if (pattern.test(query)) {
362
+ for (const r of replacements) {
363
+ terms.add(r);
364
+ }
200
365
  }
366
+ pattern.lastIndex = 0;
201
367
  }
202
- pattern.lastIndex = 0;
203
368
  }
204
369
  if (terms.size > 0) {
205
370
  return query + " " + [...terms].join(" ");
@@ -1 +1 @@
1
- {"version":3,"file":"intent-parser.js","sourceRoot":"","sources":["../src/intent-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"intent-parser.js","sourceRoot":"","sources":["../src/intent-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { CodeGraph } from "@colbymchenry/codegraph";
2
+ import type { EmbeddingProvider } from "@devflow-tools/memory-engine";
3
+ import type { SymbolVectorStore } from "./symbol-vector-store.js";
4
+ export declare class SymbolEmbedder {
5
+ private cg;
6
+ private embedder;
7
+ private store;
8
+ constructor(cg: CodeGraph, embedder: EmbeddingProvider, store: SymbolVectorStore);
9
+ buildAll(onProgress?: (p: {
10
+ current: number;
11
+ total: number;
12
+ }) => void): Promise<void>;
13
+ updateForFiles(filePaths: string[]): Promise<void>;
14
+ isBuilt(): Promise<boolean>;
15
+ }
16
+ //# sourceMappingURL=symbol-embedder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-embedder.d.ts","sourceRoot":"","sources":["../src/symbol-embedder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAQ,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAQlE,qBAAa,cAAc;IAEvB,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,KAAK;gBAFL,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,iBAAiB;IAG5B,QAAQ,CACZ,UAAU,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAC3D,OAAO,CAAC,IAAI,CAAC;IAgCV,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAgClD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAKlC"}
@@ -0,0 +1,75 @@
1
+ const BATCH_SIZE = 32;
2
+ function buildNodeText(node) {
3
+ return `${node.name} ${node.kind} ${node.signature ?? ""} ${node.filePath}`;
4
+ }
5
+ export class SymbolEmbedder {
6
+ cg;
7
+ embedder;
8
+ store;
9
+ constructor(cg, embedder, store) {
10
+ this.cg = cg;
11
+ this.embedder = embedder;
12
+ this.store = store;
13
+ }
14
+ async buildAll(onProgress) {
15
+ if (!this.embedder.isReady()) {
16
+ await this.embedder.initialize();
17
+ }
18
+ const files = this.cg.getFiles();
19
+ const allNodes = [];
20
+ for (const file of files) {
21
+ const nodes = this.cg.getNodesInFile(file.path);
22
+ allNodes.push(...nodes);
23
+ }
24
+ const total = allNodes.length;
25
+ const batches = [];
26
+ for (let i = 0; i < total; i += BATCH_SIZE) {
27
+ batches.push(allNodes.slice(i, i + BATCH_SIZE));
28
+ }
29
+ let processed = 0;
30
+ for (const batch of batches) {
31
+ const texts = batch.map(buildNodeText);
32
+ const embeddings = await this.embedder.embedBatch(texts);
33
+ const entries = batch.map((node, i) => ({
34
+ id: node.id,
35
+ embedding: embeddings[i],
36
+ }));
37
+ this.store.upsertBatch(entries);
38
+ processed += batch.length;
39
+ onProgress?.({ current: processed, total });
40
+ }
41
+ }
42
+ async updateForFiles(filePaths) {
43
+ if (!this.embedder.isReady()) {
44
+ await this.embedder.initialize();
45
+ }
46
+ // Delete old embeddings for changed files
47
+ const idsToDelete = [];
48
+ for (const fp of filePaths) {
49
+ const nodes = this.cg.getNodesInFile(fp);
50
+ idsToDelete.push(...nodes.map((n) => n.id));
51
+ }
52
+ if (idsToDelete.length > 0) {
53
+ this.store.delete(idsToDelete);
54
+ }
55
+ // Re-embed changed files
56
+ for (const fp of filePaths) {
57
+ const nodes = this.cg.getNodesInFile(fp);
58
+ const batches = [];
59
+ for (let i = 0; i < nodes.length; i += BATCH_SIZE) {
60
+ batches.push(nodes.slice(i, i + BATCH_SIZE));
61
+ }
62
+ for (const batch of batches) {
63
+ const texts = batch.map(buildNodeText);
64
+ const embeddings = await this.embedder.embedBatch(texts);
65
+ this.store.upsertBatch(batch.map((node, i) => ({ id: node.id, embedding: embeddings[i] })));
66
+ }
67
+ }
68
+ }
69
+ async isBuilt() {
70
+ const stats = this.cg.getStats();
71
+ const storeCount = this.store.count();
72
+ return storeCount > 0 && storeCount >= stats.nodeCount * 0.9;
73
+ }
74
+ }
75
+ //# sourceMappingURL=symbol-embedder.js.map