claude-code-workflow 6.3.4 → 6.3.6

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.
Files changed (111) hide show
  1. package/.claude/agents/issue-plan-agent.md +859 -0
  2. package/.claude/agents/issue-queue-agent.md +702 -0
  3. package/.claude/commands/issue/execute.md +453 -0
  4. package/.claude/commands/issue/manage.md +865 -0
  5. package/.claude/commands/issue/new.md +484 -0
  6. package/.claude/commands/issue/plan.md +421 -0
  7. package/.claude/commands/issue/queue.md +354 -0
  8. package/.claude/commands/{clean.md → workflow/clean.md} +5 -5
  9. package/.claude/commands/workflow/docs/analyze.md +1467 -0
  10. package/.claude/commands/workflow/docs/copyright.md +1265 -0
  11. package/.claude/commands/workflow/execute.md +0 -1
  12. package/.claude/commands/workflow/tools/conflict-resolution.md +76 -240
  13. package/.claude/commands/workflow/tools/context-gather.md +0 -2
  14. package/.claude/commands/workflow/tools/task-generate-agent.md +81 -8
  15. package/.claude/commands/workflow/tools/task-generate-tdd.md +0 -9
  16. package/.claude/commands/workflow/tools/test-context-gather.md +2 -3
  17. package/.claude/commands/workflow/tools/test-task-generate.md +0 -2
  18. package/.claude/skills/_shared/mermaid-utils.md +584 -0
  19. package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +0 -2
  20. package/.claude/skills/command-guide/reference/commands/workflow/execute.md +1 -1
  21. package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +1 -2
  22. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +1 -8
  23. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-context-gather.md +1 -4
  24. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +0 -2
  25. package/.claude/skills/copyright-docs/SKILL.md +132 -0
  26. package/.claude/skills/copyright-docs/phases/01-metadata-collection.md +78 -0
  27. package/.claude/skills/copyright-docs/phases/01.5-project-exploration.md +150 -0
  28. package/.claude/skills/copyright-docs/phases/02-deep-analysis.md +664 -0
  29. package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -0
  30. package/.claude/skills/copyright-docs/phases/04-document-assembly.md +261 -0
  31. package/.claude/skills/copyright-docs/phases/05-compliance-refinement.md +192 -0
  32. package/.claude/skills/copyright-docs/specs/cpcc-requirements.md +121 -0
  33. package/.claude/skills/copyright-docs/templates/agent-base.md +200 -0
  34. package/.claude/skills/project-analyze/SKILL.md +162 -0
  35. package/.claude/skills/project-analyze/phases/01-requirements-discovery.md +79 -0
  36. package/.claude/skills/project-analyze/phases/02-project-exploration.md +176 -0
  37. package/.claude/skills/project-analyze/phases/03-deep-analysis.md +854 -0
  38. package/.claude/skills/project-analyze/phases/03.5-consolidation.md +233 -0
  39. package/.claude/skills/project-analyze/phases/04-report-generation.md +217 -0
  40. package/.claude/skills/project-analyze/phases/05-iterative-refinement.md +124 -0
  41. package/.claude/skills/project-analyze/specs/quality-standards.md +115 -0
  42. package/.claude/skills/project-analyze/specs/writing-style.md +152 -0
  43. package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +79 -65
  44. package/.claude/workflows/cli-templates/schemas/issue-task-jsonl-schema.json +136 -0
  45. package/.claude/workflows/cli-templates/schemas/issues-jsonl-schema.json +74 -0
  46. package/.claude/workflows/cli-templates/schemas/queue-schema.json +136 -0
  47. package/.claude/workflows/cli-templates/schemas/registry-schema.json +94 -0
  48. package/.claude/workflows/cli-templates/schemas/solution-schema.json +120 -0
  49. package/.claude/workflows/cli-templates/schemas/solutions-jsonl-schema.json +125 -0
  50. package/.codex/prompts/issue-execute.md +266 -0
  51. package/README.md +11 -1
  52. package/ccw/dist/cli.d.ts.map +1 -1
  53. package/ccw/dist/cli.js +25 -0
  54. package/ccw/dist/cli.js.map +1 -1
  55. package/ccw/dist/commands/cli.d.ts.map +1 -1
  56. package/ccw/dist/commands/cli.js +46 -8
  57. package/ccw/dist/commands/cli.js.map +1 -1
  58. package/ccw/dist/commands/issue.d.ts +21 -0
  59. package/ccw/dist/commands/issue.d.ts.map +1 -0
  60. package/ccw/dist/commands/issue.js +895 -0
  61. package/ccw/dist/commands/issue.js.map +1 -0
  62. package/ccw/dist/core/dashboard-generator-patch.js +1 -0
  63. package/ccw/dist/core/dashboard-generator-patch.js.map +1 -1
  64. package/ccw/dist/core/routes/cli-routes.js +2 -2
  65. package/ccw/dist/core/routes/cli-routes.js.map +1 -1
  66. package/ccw/dist/core/routes/issue-routes.d.ts +34 -0
  67. package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -0
  68. package/ccw/dist/core/routes/issue-routes.js +487 -0
  69. package/ccw/dist/core/routes/issue-routes.js.map +1 -0
  70. package/ccw/dist/core/server.d.ts.map +1 -1
  71. package/ccw/dist/core/server.js +17 -2
  72. package/ccw/dist/core/server.js.map +1 -1
  73. package/ccw/dist/tools/claude-cli-tools.d.ts +7 -3
  74. package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
  75. package/ccw/dist/tools/claude-cli-tools.js +31 -17
  76. package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
  77. package/ccw/dist/tools/smart-search.d.ts +25 -0
  78. package/ccw/dist/tools/smart-search.d.ts.map +1 -1
  79. package/ccw/dist/tools/smart-search.js +121 -17
  80. package/ccw/dist/tools/smart-search.js.map +1 -1
  81. package/ccw/src/cli.ts +26 -0
  82. package/ccw/src/commands/cli.ts +49 -7
  83. package/ccw/src/commands/issue.ts +1184 -0
  84. package/ccw/src/core/dashboard-generator-patch.ts +1 -0
  85. package/ccw/src/core/routes/cli-routes.ts +3 -3
  86. package/ccw/src/core/routes/issue-routes.ts +559 -0
  87. package/ccw/src/core/server.ts +17 -2
  88. package/ccw/src/templates/dashboard-css/32-issue-manager.css +2544 -0
  89. package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +467 -0
  90. package/ccw/src/templates/dashboard-js/components/cli-history.js +40 -13
  91. package/ccw/src/templates/dashboard-js/components/cli-status.js +26 -2
  92. package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +461 -0
  93. package/ccw/src/templates/dashboard-js/components/navigation.js +8 -0
  94. package/ccw/src/templates/dashboard-js/components/notifications.js +16 -0
  95. package/ccw/src/templates/dashboard-js/i18n.js +290 -2
  96. package/ccw/src/templates/dashboard-js/views/cli-manager.js +5 -0
  97. package/ccw/src/templates/dashboard-js/views/history.js +19 -4
  98. package/ccw/src/templates/dashboard-js/views/hook-manager.js +11 -5
  99. package/ccw/src/templates/dashboard-js/views/issue-manager.js +1546 -0
  100. package/ccw/src/templates/dashboard.html +55 -0
  101. package/ccw/src/tools/claude-cli-tools.ts +37 -20
  102. package/ccw/src/tools/smart-search.ts +157 -16
  103. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  104. package/codex-lens/src/codexlens/config.py +5 -0
  105. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  106. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  107. package/codex-lens/src/codexlens/search/hybrid_search.py +144 -11
  108. package/codex-lens/src/codexlens/search/ranking.py +267 -1
  109. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  110. package/codex-lens/src/codexlens/semantic/chunker.py +55 -10
  111. package/package.json +2 -2
@@ -28,7 +28,7 @@ export interface ClaudeCliToolsConfig {
28
28
  nativeResume: boolean;
29
29
  recursiveQuery: boolean;
30
30
  cache: ClaudeCacheSettings;
31
- codeIndexMcp: 'codexlens' | 'ace';
31
+ codeIndexMcp: 'codexlens' | 'ace' | 'none';
32
32
  };
33
33
  }
34
34
  /**
@@ -85,7 +85,7 @@ export declare function getClaudeCliToolsInfo(projectDir: string): {
85
85
  * Strategy: Only modify global user-level CLAUDE.md (~/.claude/CLAUDE.md)
86
86
  * This is consistent with Chinese response and Windows platform settings
87
87
  */
88
- export declare function updateCodeIndexMcp(projectDir: string, provider: 'codexlens' | 'ace'): {
88
+ export declare function updateCodeIndexMcp(projectDir: string, provider: 'codexlens' | 'ace' | 'none'): {
89
89
  success: boolean;
90
90
  error?: string;
91
91
  config?: ClaudeCliToolsConfig;
@@ -93,5 +93,9 @@ export declare function updateCodeIndexMcp(projectDir: string, provider: 'codexl
93
93
  /**
94
94
  * Get current Code Index MCP provider
95
95
  */
96
- export declare function getCodeIndexMcp(projectDir: string): 'codexlens' | 'ace';
96
+ export declare function getCodeIndexMcp(projectDir: string): 'codexlens' | 'ace' | 'none';
97
+ /**
98
+ * Get the context-tools file path based on provider
99
+ */
100
+ export declare function getContextToolsPath(provider: 'codexlens' | 'ace' | 'none'): string;
97
101
  //# sourceMappingURL=claude-cli-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-cli-tools.d.ts","sourceRoot":"","sources":["../../src/tools/claude-cli-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-cli-tools.d.ts","sourceRoot":"","sources":["../../src/tools/claude-cli-tools.ts"],"names":[],"mappings":"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"}
@@ -227,20 +227,25 @@ export function updateCodeIndexMcp(projectDir, provider) {
227
227
  saveClaudeCliTools(projectDir, config);
228
228
  // Only update global CLAUDE.md (consistent with Chinese response / Windows platform)
229
229
  const globalClaudeMdPath = path.join(os.homedir(), '.claude', 'CLAUDE.md');
230
+ // Define patterns for all formats
231
+ const codexlensPattern = /@~\/\.claude\/workflows\/context-tools\.md/g;
232
+ const acePattern = /@~\/\.claude\/workflows\/context-tools-ace\.md/g;
233
+ const nonePattern = /@~\/\.claude\/workflows\/context-tools-none\.md/g;
234
+ // Determine target file based on provider
235
+ const targetFile = provider === 'ace'
236
+ ? '@~/.claude/workflows/context-tools-ace.md'
237
+ : provider === 'none'
238
+ ? '@~/.claude/workflows/context-tools-none.md'
239
+ : '@~/.claude/workflows/context-tools.md';
230
240
  if (!fs.existsSync(globalClaudeMdPath)) {
231
241
  // If global CLAUDE.md doesn't exist, check project-level
232
242
  const projectClaudeMdPath = path.join(projectDir, '.claude', 'CLAUDE.md');
233
243
  if (fs.existsSync(projectClaudeMdPath)) {
234
244
  let content = fs.readFileSync(projectClaudeMdPath, 'utf-8');
235
- // Define patterns for both formats
236
- const codexlensPattern = /@~\/\.claude\/workflows\/context-tools\.md/g;
237
- const acePattern = /@~\/\.claude\/workflows\/context-tools-ace\.md/g;
238
- if (provider === 'ace') {
239
- content = content.replace(codexlensPattern, '@~/.claude/workflows/context-tools-ace.md');
240
- }
241
- else {
242
- content = content.replace(acePattern, '@~/.claude/workflows/context-tools.md');
243
- }
245
+ // Replace any existing pattern with the target
246
+ content = content.replace(codexlensPattern, targetFile);
247
+ content = content.replace(acePattern, targetFile);
248
+ content = content.replace(nonePattern, targetFile);
244
249
  fs.writeFileSync(projectClaudeMdPath, content, 'utf-8');
245
250
  console.log(`[claude-cli-tools] Updated project CLAUDE.md to use ${provider} (no global CLAUDE.md found)`);
246
251
  }
@@ -248,14 +253,10 @@ export function updateCodeIndexMcp(projectDir, provider) {
248
253
  else {
249
254
  // Update global CLAUDE.md (primary target)
250
255
  let content = fs.readFileSync(globalClaudeMdPath, 'utf-8');
251
- const codexlensPattern = /@~\/\.claude\/workflows\/context-tools\.md/g;
252
- const acePattern = /@~\/\.claude\/workflows\/context-tools-ace\.md/g;
253
- if (provider === 'ace') {
254
- content = content.replace(codexlensPattern, '@~/.claude/workflows/context-tools-ace.md');
255
- }
256
- else {
257
- content = content.replace(acePattern, '@~/.claude/workflows/context-tools.md');
258
- }
256
+ // Replace any existing pattern with the target
257
+ content = content.replace(codexlensPattern, targetFile);
258
+ content = content.replace(acePattern, targetFile);
259
+ content = content.replace(nonePattern, targetFile);
259
260
  fs.writeFileSync(globalClaudeMdPath, content, 'utf-8');
260
261
  console.log(`[claude-cli-tools] Updated global CLAUDE.md to use ${provider}`);
261
262
  }
@@ -273,4 +274,17 @@ export function getCodeIndexMcp(projectDir) {
273
274
  const config = loadClaudeCliTools(projectDir);
274
275
  return config.settings.codeIndexMcp || 'codexlens';
275
276
  }
277
+ /**
278
+ * Get the context-tools file path based on provider
279
+ */
280
+ export function getContextToolsPath(provider) {
281
+ switch (provider) {
282
+ case 'ace':
283
+ return 'context-tools-ace.md';
284
+ case 'none':
285
+ return 'context-tools-none.md';
286
+ default:
287
+ return 'context-tools.md';
288
+ }
289
+ }
276
290
  //# sourceMappingURL=claude-cli-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-cli-tools.js","sourceRoot":"","sources":["../../src/tools/claude-cli-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-cli-tools.js","sourceRoot":"","sources":["../../src/tools/claude-cli-tools.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,9 @@
15
15
  */
16
16
  import type { ToolSchema, ToolResult } from '../types/tool.js';
17
17
  import type { ProgressInfo } from './codex-lens.js';
18
+ interface TimingData {
19
+ [key: string]: number;
20
+ }
18
21
  interface ExactMatch {
19
22
  file: string;
20
23
  line: number;
@@ -74,6 +77,7 @@ interface SearchMetadata {
74
77
  tokens?: string[];
75
78
  tokenized?: boolean;
76
79
  pagination?: PaginationInfo;
80
+ timing?: TimingData;
77
81
  action?: string;
78
82
  path?: string;
79
83
  progress?: {
@@ -95,6 +99,27 @@ interface SearchResult {
95
99
  status?: unknown;
96
100
  message?: string;
97
101
  }
102
+ /**
103
+ * Query intent used to adapt RRF weights (Python parity).
104
+ *
105
+ * Keep this logic aligned with CodexLens Python hybrid search:
106
+ * `codex-lens/src/codexlens/search/hybrid_search.py`
107
+ */
108
+ export type QueryIntent = 'keyword' | 'semantic' | 'mixed';
109
+ /**
110
+ * Detect query intent using the same heuristic signals as Python:
111
+ * - Code patterns: `.`, `::`, `->`, CamelCase, snake_case, common code keywords
112
+ * - Natural language patterns: >5 words, question marks, interrogatives, common verbs
113
+ */
114
+ export declare function detectQueryIntent(query: string): QueryIntent;
115
+ /**
116
+ * Intent → weights mapping (Python parity).
117
+ * - keyword: exact-heavy
118
+ * - semantic: vector-heavy
119
+ * - mixed: keep defaults
120
+ */
121
+ export declare function adjustWeightsByIntent(intent: QueryIntent, baseWeights: Record<string, number>): Record<string, number>;
122
+ export declare function getRRFWeights(query: string, baseWeights?: Record<string, number>): Record<string, number>;
98
123
  export declare const schema: ToolSchema;
99
124
  export declare function handler(params: Record<string, unknown>): Promise<ToolResult<SearchResult>>;
100
125
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"smart-search.d.ts","sourceRoot":"","sources":["../../src/tools/smart-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smart-search.d.ts","sourceRoot":"","sources":["../../src/tools/smart-search.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,32 @@ import { z } from 'zod';
17
17
  import { spawn, execSync } from 'child_process';
18
18
  import { ensureReady as ensureCodexLensReady, executeCodexLens, } from './codex-lens.js';
19
19
  import { getProjectRoot } from '../utils/path-validator.js';
20
+ // Timing utilities for performance analysis
21
+ const TIMING_ENABLED = process.env.SMART_SEARCH_TIMING === '1' || process.env.DEBUG?.includes('timing');
22
+ function createTimer() {
23
+ const startTime = performance.now();
24
+ const marks = [];
25
+ let lastMark = startTime;
26
+ return {
27
+ mark(name) {
28
+ const now = performance.now();
29
+ marks.push({ name, time: now - lastMark });
30
+ lastMark = now;
31
+ },
32
+ getTimings() {
33
+ const timings = {};
34
+ marks.forEach(m => { timings[m.name] = Math.round(m.time * 100) / 100; });
35
+ timings['_total'] = Math.round((performance.now() - startTime) * 100) / 100;
36
+ return timings;
37
+ },
38
+ log() {
39
+ if (TIMING_ENABLED) {
40
+ const timings = this.getTimings();
41
+ console.error(`[TIMING] smart-search: ${JSON.stringify(timings)}`);
42
+ }
43
+ }
44
+ };
45
+ }
20
46
  // Define Zod schema for validation
21
47
  const ParamsSchema = z.object({
22
48
  // Action: search (content), find_files (path/name pattern), init, status
@@ -41,6 +67,9 @@ const ParamsSchema = z.object({
41
67
  regex: z.boolean().default(true), // Use regex pattern matching (default: enabled)
42
68
  caseSensitive: z.boolean().default(true), // Case sensitivity (default: case-sensitive)
43
69
  tokenize: z.boolean().default(true), // Tokenize multi-word queries for OR matching (default: enabled)
70
+ // File type filtering
71
+ excludeExtensions: z.array(z.string()).optional().describe('File extensions to exclude from results (e.g., ["md", "txt"])'),
72
+ codeOnly: z.boolean().default(false).describe('Only return code files (excludes md, txt, json, yaml, xml, etc.)'),
44
73
  // Fuzzy matching is implicit in hybrid mode (RRF fusion)
45
74
  });
46
75
  // Search mode constants
@@ -860,7 +889,8 @@ async function executeCodexLensExactMode(params) {
860
889
  * Requires index with embeddings
861
890
  */
862
891
  async function executeHybridMode(params) {
863
- const { query, path = '.', maxResults = 5, extraFilesCount = 10, maxContentLength = 200, enrich = false } = params;
892
+ const timer = createTimer();
893
+ const { query, path = '.', maxResults = 5, extraFilesCount = 10, maxContentLength = 200, enrich = false, excludeExtensions, codeOnly = false } = params;
864
894
  if (!query) {
865
895
  return {
866
896
  success: false,
@@ -869,6 +899,7 @@ async function executeHybridMode(params) {
869
899
  }
870
900
  // Check CodexLens availability
871
901
  const readyStatus = await ensureCodexLensReady();
902
+ timer.mark('codexlens_ready_check');
872
903
  if (!readyStatus.ready) {
873
904
  return {
874
905
  success: false,
@@ -877,6 +908,7 @@ async function executeHybridMode(params) {
877
908
  }
878
909
  // Check index status
879
910
  const indexStatus = await checkIndexStatus(path);
911
+ timer.mark('index_status_check');
880
912
  // Request more results to support split (full content + extra files)
881
913
  const totalToFetch = maxResults + extraFilesCount;
882
914
  const args = ['search', query, '--limit', totalToFetch.toString(), '--mode', 'hybrid', '--json'];
@@ -884,7 +916,9 @@ async function executeHybridMode(params) {
884
916
  args.push('--enrich');
885
917
  }
886
918
  const result = await executeCodexLens(args, { cwd: path });
919
+ timer.mark('codexlens_search');
887
920
  if (!result.success) {
921
+ timer.log();
888
922
  return {
889
923
  success: false,
890
924
  error: result.error,
@@ -917,20 +951,22 @@ async function executeHybridMode(params) {
917
951
  symbol: item.symbol || null,
918
952
  };
919
953
  });
954
+ timer.mark('parse_results');
920
955
  initialCount = allResults.length;
921
956
  // Post-processing pipeline to improve semantic search quality
922
957
  // 0. Filter dominant baseline scores (hot spot detection)
923
958
  const baselineResult = filterDominantBaselineScores(allResults);
924
959
  allResults = baselineResult.filteredResults;
925
960
  baselineInfo = baselineResult.baselineInfo;
926
- // 1. Filter noisy files (coverage, node_modules, etc.)
927
- allResults = filterNoisyFiles(allResults);
961
+ // 1. Filter noisy files (coverage, node_modules, etc.) and excluded extensions
962
+ allResults = filterNoisyFiles(allResults, { excludeExtensions, codeOnly });
928
963
  // 2. Boost results containing query keywords
929
964
  allResults = applyKeywordBoosting(allResults, query);
930
965
  // 3. Enforce score diversity (penalize identical scores)
931
966
  allResults = enforceScoreDiversity(allResults);
932
967
  // 4. Re-sort by adjusted scores
933
968
  allResults.sort((a, b) => b.score - a.score);
969
+ timer.mark('post_processing');
934
970
  }
935
971
  catch {
936
972
  return {
@@ -948,11 +984,15 @@ async function executeHybridMode(params) {
948
984
  }
949
985
  // Split results: first N with full content, rest as file paths only
950
986
  const { results, extra_files } = splitResultsWithExtraFiles(allResults, maxResults, extraFilesCount);
987
+ timer.mark('split_results');
951
988
  // Build metadata with baseline info if detected
952
989
  let note = 'Hybrid mode uses RRF fusion (exact + fuzzy + vector) for best results';
953
990
  if (baselineInfo) {
954
991
  note += ` | Filtered ${initialCount - allResults.length} hot-spot results with baseline score ~${baselineInfo.score.toFixed(4)}`;
955
992
  }
993
+ // Log timing data
994
+ timer.log();
995
+ const timings = timer.getTimings();
956
996
  return {
957
997
  success: true,
958
998
  results,
@@ -965,22 +1005,64 @@ async function executeHybridMode(params) {
965
1005
  note,
966
1006
  warning: indexStatus.warning,
967
1007
  suggested_weights: getRRFWeights(query),
1008
+ timing: TIMING_ENABLED ? timings : undefined,
968
1009
  },
969
1010
  };
970
1011
  }
971
- const RRF_WEIGHTS = {
972
- code: { exact: 0.7, fuzzy: 0.2, vector: 0.1 },
973
- natural: { exact: 0.4, fuzzy: 0.2, vector: 0.4 },
974
- default: { exact: 0.5, fuzzy: 0.2, vector: 0.3 },
1012
+ // Python default: vector 60%, exact 30%, fuzzy 10%
1013
+ const DEFAULT_RRF_WEIGHTS = {
1014
+ exact: 0.3,
1015
+ fuzzy: 0.1,
1016
+ vector: 0.6,
975
1017
  };
976
- function getRRFWeights(query) {
977
- const isCode = looksLikeCodeQuery(query);
978
- const isNatural = detectNaturalLanguage(query);
979
- if (isCode)
980
- return RRF_WEIGHTS.code;
981
- if (isNatural)
982
- return RRF_WEIGHTS.natural;
983
- return RRF_WEIGHTS.default;
1018
+ function normalizeWeights(weights) {
1019
+ const sum = Object.values(weights).reduce((acc, v) => acc + v, 0);
1020
+ if (!Number.isFinite(sum) || sum <= 0)
1021
+ return { ...weights };
1022
+ return Object.fromEntries(Object.entries(weights).map(([k, v]) => [k, v / sum]));
1023
+ }
1024
+ /**
1025
+ * Detect query intent using the same heuristic signals as Python:
1026
+ * - Code patterns: `.`, `::`, `->`, CamelCase, snake_case, common code keywords
1027
+ * - Natural language patterns: >5 words, question marks, interrogatives, common verbs
1028
+ */
1029
+ export function detectQueryIntent(query) {
1030
+ const trimmed = query.trim();
1031
+ if (!trimmed)
1032
+ return 'mixed';
1033
+ const lower = trimmed.toLowerCase();
1034
+ const wordCount = trimmed.split(/\s+/).filter(Boolean).length;
1035
+ const hasCodeSignals = /(::|->|\.)/.test(trimmed) ||
1036
+ /[A-Z][a-z]+[A-Z]/.test(trimmed) ||
1037
+ /\b\w+_\w+\b/.test(trimmed) ||
1038
+ /\b(def|class|function|const|let|var|import|from|return|async|await|interface|type)\b/i.test(lower);
1039
+ const hasNaturalSignals = wordCount > 5 ||
1040
+ /\?/.test(trimmed) ||
1041
+ /\b(how|what|why|when|where)\b/i.test(trimmed) ||
1042
+ /\b(handle|explain|fix|implement|create|build|use|find|search|convert|parse|generate|support)\b/i.test(trimmed);
1043
+ if (hasCodeSignals && hasNaturalSignals)
1044
+ return 'mixed';
1045
+ if (hasCodeSignals)
1046
+ return 'keyword';
1047
+ if (hasNaturalSignals)
1048
+ return 'semantic';
1049
+ return 'mixed';
1050
+ }
1051
+ /**
1052
+ * Intent → weights mapping (Python parity).
1053
+ * - keyword: exact-heavy
1054
+ * - semantic: vector-heavy
1055
+ * - mixed: keep defaults
1056
+ */
1057
+ export function adjustWeightsByIntent(intent, baseWeights) {
1058
+ if (intent === 'keyword')
1059
+ return normalizeWeights({ exact: 0.5, fuzzy: 0.1, vector: 0.4 });
1060
+ if (intent === 'semantic')
1061
+ return normalizeWeights({ exact: 0.2, fuzzy: 0.1, vector: 0.7 });
1062
+ return normalizeWeights({ ...baseWeights });
1063
+ }
1064
+ export function getRRFWeights(query, baseWeights = DEFAULT_RRF_WEIGHTS) {
1065
+ return adjustWeightsByIntent(detectQueryIntent(query), baseWeights);
984
1066
  }
985
1067
  /**
986
1068
  * Post-processing: Filter noisy files from semantic search results
@@ -989,7 +1071,21 @@ function getRRFWeights(query) {
989
1071
  */
990
1072
  // Pre-compile file exclusion regexes once (avoid recompilation in loop)
991
1073
  const FILE_EXCLUDE_REGEXES = [...FILTER_CONFIG.exclude_files].map(pattern => new RegExp('^' + pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&').replace(/\\\*/g, '.*') + '$'));
992
- function filterNoisyFiles(results) {
1074
+ // Non-code file extensions (for codeOnly filter)
1075
+ const NON_CODE_EXTENSIONS = new Set([
1076
+ 'md', 'txt', 'json', 'yaml', 'yml', 'xml', 'csv', 'log',
1077
+ 'ini', 'cfg', 'conf', 'toml', 'env', 'properties',
1078
+ 'html', 'htm', 'svg', 'png', 'jpg', 'jpeg', 'gif', 'ico', 'webp',
1079
+ 'pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx',
1080
+ 'lock', 'sum', 'mod',
1081
+ ]);
1082
+ function filterNoisyFiles(results, options = {}) {
1083
+ const { excludeExtensions = [], codeOnly = false } = options;
1084
+ // Build extension filter set
1085
+ const excludedExtSet = new Set(excludeExtensions.map(ext => ext.toLowerCase().replace(/^\./, '')));
1086
+ if (codeOnly) {
1087
+ NON_CODE_EXTENSIONS.forEach(ext => excludedExtSet.add(ext));
1088
+ }
993
1089
  return results.filter(r => {
994
1090
  const filePath = r.file || '';
995
1091
  if (!filePath)
@@ -1004,6 +1100,13 @@ function filterNoisyFiles(results) {
1004
1100
  if (FILE_EXCLUDE_REGEXES.some(regex => regex.test(filename))) {
1005
1101
  return false;
1006
1102
  }
1103
+ // Extension filter check
1104
+ if (excludedExtSet.size > 0) {
1105
+ const ext = filename.split('.').pop()?.toLowerCase() || '';
1106
+ if (excludedExtSet.has(ext)) {
1107
+ return false;
1108
+ }
1109
+ }
1007
1110
  return true;
1008
1111
  });
1009
1112
  }
@@ -1126,7 +1229,8 @@ function filterDominantBaselineScores(results) {
1126
1229
  * Reference: codex-lens/src/codexlens/search/ranking.py
1127
1230
  * Formula: score(d) = Σ weight_source / (k + rank_source(d))
1128
1231
  */
1129
- function applyRRFFusion(resultsMap, weights, limit, k = 60) {
1232
+ function applyRRFFusion(resultsMap, weightsOrQuery, limit, k = 60) {
1233
+ const weights = typeof weightsOrQuery === 'string' ? getRRFWeights(weightsOrQuery) : weightsOrQuery;
1130
1234
  const pathScores = new Map();
1131
1235
  resultsMap.forEach((results, source) => {
1132
1236
  const weight = weights[source] || 0;