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.
- package/.claude/agents/issue-plan-agent.md +859 -0
- package/.claude/agents/issue-queue-agent.md +702 -0
- package/.claude/commands/issue/execute.md +453 -0
- package/.claude/commands/issue/manage.md +865 -0
- package/.claude/commands/issue/new.md +484 -0
- package/.claude/commands/issue/plan.md +421 -0
- package/.claude/commands/issue/queue.md +354 -0
- package/.claude/commands/{clean.md → workflow/clean.md} +5 -5
- package/.claude/commands/workflow/docs/analyze.md +1467 -0
- package/.claude/commands/workflow/docs/copyright.md +1265 -0
- package/.claude/commands/workflow/execute.md +0 -1
- package/.claude/commands/workflow/tools/conflict-resolution.md +76 -240
- package/.claude/commands/workflow/tools/context-gather.md +0 -2
- package/.claude/commands/workflow/tools/task-generate-agent.md +81 -8
- package/.claude/commands/workflow/tools/task-generate-tdd.md +0 -9
- package/.claude/commands/workflow/tools/test-context-gather.md +2 -3
- package/.claude/commands/workflow/tools/test-task-generate.md +0 -2
- package/.claude/skills/_shared/mermaid-utils.md +584 -0
- package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +0 -2
- package/.claude/skills/command-guide/reference/commands/workflow/execute.md +1 -1
- package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +1 -2
- package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +1 -8
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-context-gather.md +1 -4
- package/.claude/skills/command-guide/reference/commands/workflow/tools/test-task-generate.md +0 -2
- package/.claude/skills/copyright-docs/SKILL.md +132 -0
- package/.claude/skills/copyright-docs/phases/01-metadata-collection.md +78 -0
- package/.claude/skills/copyright-docs/phases/01.5-project-exploration.md +150 -0
- package/.claude/skills/copyright-docs/phases/02-deep-analysis.md +664 -0
- package/.claude/skills/copyright-docs/phases/02.5-consolidation.md +192 -0
- package/.claude/skills/copyright-docs/phases/04-document-assembly.md +261 -0
- package/.claude/skills/copyright-docs/phases/05-compliance-refinement.md +192 -0
- package/.claude/skills/copyright-docs/specs/cpcc-requirements.md +121 -0
- package/.claude/skills/copyright-docs/templates/agent-base.md +200 -0
- package/.claude/skills/project-analyze/SKILL.md +162 -0
- package/.claude/skills/project-analyze/phases/01-requirements-discovery.md +79 -0
- package/.claude/skills/project-analyze/phases/02-project-exploration.md +176 -0
- package/.claude/skills/project-analyze/phases/03-deep-analysis.md +854 -0
- package/.claude/skills/project-analyze/phases/03.5-consolidation.md +233 -0
- package/.claude/skills/project-analyze/phases/04-report-generation.md +217 -0
- package/.claude/skills/project-analyze/phases/05-iterative-refinement.md +124 -0
- package/.claude/skills/project-analyze/specs/quality-standards.md +115 -0
- package/.claude/skills/project-analyze/specs/writing-style.md +152 -0
- package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +79 -65
- package/.claude/workflows/cli-templates/schemas/issue-task-jsonl-schema.json +136 -0
- package/.claude/workflows/cli-templates/schemas/issues-jsonl-schema.json +74 -0
- package/.claude/workflows/cli-templates/schemas/queue-schema.json +136 -0
- package/.claude/workflows/cli-templates/schemas/registry-schema.json +94 -0
- package/.claude/workflows/cli-templates/schemas/solution-schema.json +120 -0
- package/.claude/workflows/cli-templates/schemas/solutions-jsonl-schema.json +125 -0
- package/.codex/prompts/issue-execute.md +266 -0
- package/README.md +11 -1
- package/ccw/dist/cli.d.ts.map +1 -1
- package/ccw/dist/cli.js +25 -0
- package/ccw/dist/cli.js.map +1 -1
- package/ccw/dist/commands/cli.d.ts.map +1 -1
- package/ccw/dist/commands/cli.js +46 -8
- package/ccw/dist/commands/cli.js.map +1 -1
- package/ccw/dist/commands/issue.d.ts +21 -0
- package/ccw/dist/commands/issue.d.ts.map +1 -0
- package/ccw/dist/commands/issue.js +895 -0
- package/ccw/dist/commands/issue.js.map +1 -0
- package/ccw/dist/core/dashboard-generator-patch.js +1 -0
- package/ccw/dist/core/dashboard-generator-patch.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +2 -2
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/core/routes/issue-routes.d.ts +34 -0
- package/ccw/dist/core/routes/issue-routes.d.ts.map +1 -0
- package/ccw/dist/core/routes/issue-routes.js +487 -0
- package/ccw/dist/core/routes/issue-routes.js.map +1 -0
- package/ccw/dist/core/server.d.ts.map +1 -1
- package/ccw/dist/core/server.js +17 -2
- package/ccw/dist/core/server.js.map +1 -1
- package/ccw/dist/tools/claude-cli-tools.d.ts +7 -3
- package/ccw/dist/tools/claude-cli-tools.d.ts.map +1 -1
- package/ccw/dist/tools/claude-cli-tools.js +31 -17
- package/ccw/dist/tools/claude-cli-tools.js.map +1 -1
- package/ccw/dist/tools/smart-search.d.ts +25 -0
- package/ccw/dist/tools/smart-search.d.ts.map +1 -1
- package/ccw/dist/tools/smart-search.js +121 -17
- package/ccw/dist/tools/smart-search.js.map +1 -1
- package/ccw/src/cli.ts +26 -0
- package/ccw/src/commands/cli.ts +49 -7
- package/ccw/src/commands/issue.ts +1184 -0
- package/ccw/src/core/dashboard-generator-patch.ts +1 -0
- package/ccw/src/core/routes/cli-routes.ts +3 -3
- package/ccw/src/core/routes/issue-routes.ts +559 -0
- package/ccw/src/core/server.ts +17 -2
- package/ccw/src/templates/dashboard-css/32-issue-manager.css +2544 -0
- package/ccw/src/templates/dashboard-css/33-cli-stream-viewer.css +467 -0
- package/ccw/src/templates/dashboard-js/components/cli-history.js +40 -13
- package/ccw/src/templates/dashboard-js/components/cli-status.js +26 -2
- package/ccw/src/templates/dashboard-js/components/cli-stream-viewer.js +461 -0
- package/ccw/src/templates/dashboard-js/components/navigation.js +8 -0
- package/ccw/src/templates/dashboard-js/components/notifications.js +16 -0
- package/ccw/src/templates/dashboard-js/i18n.js +290 -2
- package/ccw/src/templates/dashboard-js/views/cli-manager.js +5 -0
- package/ccw/src/templates/dashboard-js/views/history.js +19 -4
- package/ccw/src/templates/dashboard-js/views/hook-manager.js +11 -5
- package/ccw/src/templates/dashboard-js/views/issue-manager.js +1546 -0
- package/ccw/src/templates/dashboard.html +55 -0
- package/ccw/src/tools/claude-cli-tools.ts +37 -20
- package/ccw/src/tools/smart-search.ts +157 -16
- package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/config.py +5 -0
- package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/search/hybrid_search.py +144 -11
- package/codex-lens/src/codexlens/search/ranking.py +267 -1
- package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
- package/codex-lens/src/codexlens/semantic/chunker.py +55 -10
- 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":"AAYA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACrC,eAAe,EAAE,KAAK,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC,CAAC;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;QACxC,YAAY,EAAE;YACZ,OAAO,EAAE,OAAO,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;QACF,YAAY,EAAE,OAAO,CAAC;QACtB,cAAc,EAAE,OAAO,CAAC;QACxB,KAAK,EAAE,mBAAmB,CAAC;QAC3B,YAAY,EAAE,WAAW,GAAG,KAAK,CAAC;
|
|
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
|
-
//
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
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":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
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
|
|
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
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
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
|
|
977
|
-
const
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
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
|
-
|
|
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,
|
|
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;
|