solvdex 1.0.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.
- package/LICENSE +21 -0
- package/README.md +274 -0
- package/dist/hooks/error-lookup.d.ts +4 -0
- package/dist/hooks/error-lookup.d.ts.map +1 -0
- package/dist/hooks/error-lookup.js +92 -0
- package/dist/hooks/error-lookup.js.map +1 -0
- package/dist/hooks/post-task.d.ts +15 -0
- package/dist/hooks/post-task.d.ts.map +1 -0
- package/dist/hooks/post-task.js +246 -0
- package/dist/hooks/post-task.js.map +1 -0
- package/dist/hooks/prompt-enrich.d.ts +16 -0
- package/dist/hooks/prompt-enrich.d.ts.map +1 -0
- package/dist/hooks/prompt-enrich.js +141 -0
- package/dist/hooks/prompt-enrich.js.map +1 -0
- package/dist/hooks/session-start-cli.d.ts +3 -0
- package/dist/hooks/session-start-cli.d.ts.map +1 -0
- package/dist/hooks/session-start-cli.js +81 -0
- package/dist/hooks/session-start-cli.js.map +1 -0
- package/dist/hooks/session-start.d.ts +4 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +134 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/src/audit.d.ts +63 -0
- package/dist/src/audit.d.ts.map +1 -0
- package/dist/src/audit.js +229 -0
- package/dist/src/audit.js.map +1 -0
- package/dist/src/cache.d.ts +54 -0
- package/dist/src/cache.d.ts.map +1 -0
- package/dist/src/cache.js +167 -0
- package/dist/src/cache.js.map +1 -0
- package/dist/src/config.d.ts +52 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +175 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/entry.d.ts +154 -0
- package/dist/src/entry.d.ts.map +1 -0
- package/dist/src/entry.js +469 -0
- package/dist/src/entry.js.map +1 -0
- package/dist/src/errors.d.ts +65 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +121 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/frontmatter.d.ts +28 -0
- package/dist/src/frontmatter.d.ts.map +1 -0
- package/dist/src/frontmatter.js +111 -0
- package/dist/src/frontmatter.js.map +1 -0
- package/dist/src/index.d.ts +35 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +188 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/maturity.d.ts +31 -0
- package/dist/src/maturity.d.ts.map +1 -0
- package/dist/src/maturity.js +96 -0
- package/dist/src/maturity.js.map +1 -0
- package/dist/src/quality.d.ts +23 -0
- package/dist/src/quality.d.ts.map +1 -0
- package/dist/src/quality.js +236 -0
- package/dist/src/quality.js.map +1 -0
- package/dist/src/search.d.ts +35 -0
- package/dist/src/search.d.ts.map +1 -0
- package/dist/src/search.js +263 -0
- package/dist/src/search.js.map +1 -0
- package/dist/src/similarity.d.ts +42 -0
- package/dist/src/similarity.d.ts.map +1 -0
- package/dist/src/similarity.js +111 -0
- package/dist/src/similarity.js.map +1 -0
- package/dist/src/stats.d.ts +56 -0
- package/dist/src/stats.d.ts.map +1 -0
- package/dist/src/stats.js +198 -0
- package/dist/src/stats.js.map +1 -0
- package/dist/src/templates.d.ts +63 -0
- package/dist/src/templates.d.ts.map +1 -0
- package/dist/src/templates.js +347 -0
- package/dist/src/templates.js.map +1 -0
- package/dist/src/transfer.d.ts +92 -0
- package/dist/src/transfer.d.ts.map +1 -0
- package/dist/src/transfer.js +215 -0
- package/dist/src/transfer.js.map +1 -0
- package/dist/src/types.d.ts +270 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +153 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/validate.d.ts +90 -0
- package/dist/src/validate.d.ts.map +1 -0
- package/dist/src/validate.js +295 -0
- package/dist/src/validate.js.map +1 -0
- package/hooks/error-lookup.ts +110 -0
- package/hooks/hooks.json +49 -0
- package/hooks/post-task.ts +309 -0
- package/hooks/prompt-enrich.ts +162 -0
- package/hooks/session-start-cli.ts +96 -0
- package/hooks/session-start.ts +159 -0
- package/package.json +40 -0
- package/scripts/error-lookup.py +64 -0
- package/scripts/post-task.py +60 -0
- package/scripts/prompt-enrich.py +64 -0
- package/scripts/session-start.py +64 -0
- package/skills/wiki/SKILL.md +61 -0
- package/skills/wiki-add/SKILL.md +90 -0
- package/skills/wiki-browse/SKILL.md +108 -0
- package/skills/wiki-capture/SKILL.md +265 -0
- package/skills/wiki-explorer/SKILL.md +223 -0
- package/skills/wiki-export/SKILL.md +101 -0
- package/skills/wiki-fix/SKILL.md +86 -0
- package/skills/wiki-flag/SKILL.md +47 -0
- package/skills/wiki-import/SKILL.md +128 -0
- package/skills/wiki-init/SKILL.md +72 -0
- package/skills/wiki-scan/SKILL.md +98 -0
- package/skills/wiki-search/SKILL.md +86 -0
- package/skills/wiki-stats/SKILL.md +129 -0
- package/skills/wiki-status/SKILL.md +78 -0
- package/skills/wiki-test-trigger/SKILL.md +173 -0
- package/skills/wiki-validate/SKILL.md +62 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-task.js","sourceRoot":"","sources":["../../hooks/post-task.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PromptEnrichOutput } from '../src/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Hook input from Claude Code's UserPromptSubmit event.
|
|
4
|
+
*/
|
|
5
|
+
interface HookInput {
|
|
6
|
+
projectRoot: string;
|
|
7
|
+
prompt: string;
|
|
8
|
+
filePaths?: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* UserPromptSubmit hook - enriches prompts with relevant wiki context.
|
|
12
|
+
* Outputs to stdout for Claude Code to include in context.
|
|
13
|
+
*/
|
|
14
|
+
export declare function onPromptEnrich(input: HookInput): Promise<PromptEnrichOutput | null>;
|
|
15
|
+
export default onPromptEnrich;
|
|
16
|
+
//# sourceMappingURL=prompt-enrich.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-enrich.d.ts","sourceRoot":"","sources":["../../hooks/prompt-enrich.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,kBAAkB,EAAgB,MAAM,iBAAiB,CAAC;AAE3F;;GAEG;AACH,UAAU,SAAS;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAyBD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAmFzF;AAuCD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.onPromptEnrich = onPromptEnrich;
|
|
4
|
+
// hooks/prompt-enrich.ts
|
|
5
|
+
const index_js_1 = require("../src/index.js");
|
|
6
|
+
/**
|
|
7
|
+
* Category keywords for detecting relevant wiki categories from prompt.
|
|
8
|
+
*/
|
|
9
|
+
const CATEGORY_KEYWORDS = {
|
|
10
|
+
issues: ['error', 'fix', 'bug', 'broken', 'fails', 'crash', 'exception'],
|
|
11
|
+
patterns: ['pattern', 'template', 'reusable', 'design', 'approach'],
|
|
12
|
+
gotchas: ['careful', 'watch out', 'pitfall', 'gotcha', 'trap', 'avoid'],
|
|
13
|
+
testing: ['test', 'mock', 'fixture', 'assert', 'spec', 'coverage'],
|
|
14
|
+
docs: ['document', 'readme', 'guide', 'tutorial', 'api docs'],
|
|
15
|
+
security: ['auth', 'token', 'vulnerability', 'permission', 'csrf', 'xss', 'injection'],
|
|
16
|
+
performance: ['slow', 'optimize', 'memory', 'latency', 'benchmark', 'profiling']
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Path hints for detecting relevant categories from file paths.
|
|
20
|
+
*/
|
|
21
|
+
const PATH_HINTS = {
|
|
22
|
+
testing: ['test', 'spec', 'fixture', 'mock', '__tests__'],
|
|
23
|
+
docs: ['doc', 'readme', 'wiki', 'guide'],
|
|
24
|
+
security: ['auth', 'secret', 'cred', 'permission'],
|
|
25
|
+
performance: ['perf', 'bench', 'profile', 'optim']
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* UserPromptSubmit hook - enriches prompts with relevant wiki context.
|
|
29
|
+
* Outputs to stdout for Claude Code to include in context.
|
|
30
|
+
*/
|
|
31
|
+
async function onPromptEnrich(input) {
|
|
32
|
+
try {
|
|
33
|
+
const { projectRoot, prompt, filePaths } = input;
|
|
34
|
+
if (!(0, index_js_1.wikiExists)(projectRoot)) {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
// Detect relevant categories from prompt keywords
|
|
38
|
+
const relevantCategories = detectRelevantCategories(prompt, filePaths || []);
|
|
39
|
+
// Search wiki for relevant entries
|
|
40
|
+
const searchResults = await (0, index_js_1.searchWiki)(projectRoot, { query: prompt });
|
|
41
|
+
if (searchResults.length === 0 && relevantCategories.length === 0) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
// Format entries for output
|
|
45
|
+
const entries = searchResults.slice(0, 5).map(r => ({
|
|
46
|
+
title: r.entry.frontmatter.title,
|
|
47
|
+
category: r.entry.category,
|
|
48
|
+
path: r.entry.path,
|
|
49
|
+
confidence: r.entry.frontmatter.confidence
|
|
50
|
+
}));
|
|
51
|
+
// Record usage for matched entries
|
|
52
|
+
if (entries.length > 0) {
|
|
53
|
+
try {
|
|
54
|
+
const { recordEntryUsage } = await import('../src/index.js');
|
|
55
|
+
for (const entry of entries) {
|
|
56
|
+
recordEntryUsage(projectRoot, entry.path);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Usage tracking failure is non-critical
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Output for Claude Code hook integration (user-facing console logs)
|
|
64
|
+
if (entries.length > 0) {
|
|
65
|
+
console.log(`\u{1F4DA} Solvdex: Found ${entries.length} relevant entries for your task:`);
|
|
66
|
+
for (const entry of entries.slice(0, 3)) {
|
|
67
|
+
console.log(` - ${entry.title} (${entry.category}, confidence: ${entry.confidence})`);
|
|
68
|
+
}
|
|
69
|
+
if (entries.length > 3) {
|
|
70
|
+
console.log(` ... and ${entries.length - 3} more`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else if (relevantCategories.length > 0) {
|
|
74
|
+
console.log(`\u{1F4DA} Solvdex: Check ${relevantCategories.join(', ')} for related knowledge`);
|
|
75
|
+
}
|
|
76
|
+
// Structured output for Claude Code (includes both old and new format for backward compatibility)
|
|
77
|
+
const output = {
|
|
78
|
+
// Old format (for backward compatibility)
|
|
79
|
+
type: 'wiki_context',
|
|
80
|
+
message: entries.length > 0
|
|
81
|
+
? `Found ${entries.length} relevant wiki entries`
|
|
82
|
+
: `Relevant categories: ${relevantCategories.join(', ')}`,
|
|
83
|
+
entries,
|
|
84
|
+
// New format (Claude Code integration)
|
|
85
|
+
continue: true,
|
|
86
|
+
hookSpecificOutput: {
|
|
87
|
+
type: 'context_added',
|
|
88
|
+
message: entries.length > 0
|
|
89
|
+
? `Found ${entries.length} relevant wiki entries`
|
|
90
|
+
: `Relevant categories: ${relevantCategories.join(', ')}`,
|
|
91
|
+
entryCount: entries.length
|
|
92
|
+
},
|
|
93
|
+
additionalContext: entries.length > 0
|
|
94
|
+
? formatEntriesForContext(searchResults.slice(0, 5))
|
|
95
|
+
: undefined
|
|
96
|
+
};
|
|
97
|
+
// Output JSON marker + JSON (MUST be last output)
|
|
98
|
+
console.log('\n__HOOK_OUTPUT__');
|
|
99
|
+
console.log(JSON.stringify(output));
|
|
100
|
+
return output;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
// Graceful degradation - log error but don't crash
|
|
104
|
+
console.error(`[Solvdex] Error in prompt-enrich hook: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Detects relevant categories based on prompt keywords and file paths.
|
|
110
|
+
*/
|
|
111
|
+
function detectRelevantCategories(prompt, filePaths) {
|
|
112
|
+
const detected = new Set();
|
|
113
|
+
const promptLower = prompt.toLowerCase();
|
|
114
|
+
// Check keywords in prompt
|
|
115
|
+
for (const [category, keywords] of Object.entries(CATEGORY_KEYWORDS)) {
|
|
116
|
+
if (keywords.some(kw => promptLower.includes(kw))) {
|
|
117
|
+
detected.add(category);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Check path hints
|
|
121
|
+
for (const filePath of filePaths) {
|
|
122
|
+
const pathLower = filePath.toLowerCase();
|
|
123
|
+
for (const [category, hints] of Object.entries(PATH_HINTS)) {
|
|
124
|
+
if (hints.some(hint => pathLower.includes(hint))) {
|
|
125
|
+
detected.add(category);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return Array.from(detected);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Formats search results into a readable context string for Claude Code.
|
|
133
|
+
*/
|
|
134
|
+
function formatEntriesForContext(results) {
|
|
135
|
+
return results.map(r => {
|
|
136
|
+
const e = r.entry;
|
|
137
|
+
return `## ${e.frontmatter.title} (${e.category})\nConfidence: ${e.frontmatter.confidence}\nTags: ${e.frontmatter.tags.join(', ')}\n\n${e.content.substring(0, 300)}...`;
|
|
138
|
+
}).join('\n\n');
|
|
139
|
+
}
|
|
140
|
+
exports.default = onPromptEnrich;
|
|
141
|
+
//# sourceMappingURL=prompt-enrich.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-enrich.js","sourceRoot":"","sources":["../../hooks/prompt-enrich.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-start-cli.d.ts","sourceRoot":"","sources":["../../hooks/session-start-cli.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
// CLI wrapper for session-start hook
|
|
5
|
+
const index_js_1 = require("../src/index.js");
|
|
6
|
+
const CATEGORY_KEYWORDS = {
|
|
7
|
+
issues: ['error', 'fix', 'bug', 'broken', 'fails', 'crash', 'exception', 'trouble'],
|
|
8
|
+
patterns: ['pattern', 'template', 'reusable', 'design', 'approach', 'best practice'],
|
|
9
|
+
gotchas: ['careful', 'watch out', 'pitfall', 'gotcha', 'trap', 'avoid', 'never'],
|
|
10
|
+
testing: ['test', 'mock', 'fixture', 'assert', 'spec', 'coverage', 'jest', 'vitest'],
|
|
11
|
+
docs: ['document', 'readme', 'guide', 'tutorial', 'api docs', 'documentation'],
|
|
12
|
+
security: ['auth', 'token', 'vulnerability', 'permission', 'csrf', 'xss', 'injection', 'security'],
|
|
13
|
+
performance: ['slow', 'optimize', 'memory', 'latency', 'benchmark', 'profiling', 'performance']
|
|
14
|
+
};
|
|
15
|
+
const CATEGORY_PATH_HINTS = {
|
|
16
|
+
testing: ['test', 'spec', 'fixture', 'mock', '__tests__'],
|
|
17
|
+
docs: ['doc', 'readme', 'wiki', 'guide', 'docs'],
|
|
18
|
+
security: ['auth', 'secret', 'cred', 'permission', 'security'],
|
|
19
|
+
performance: ['perf', 'bench', 'profile', 'optim']
|
|
20
|
+
};
|
|
21
|
+
function detectCategoryFromPaths(paths) {
|
|
22
|
+
const detected = new Set();
|
|
23
|
+
for (const filePath of paths) {
|
|
24
|
+
const pathLower = filePath.toLowerCase();
|
|
25
|
+
for (const [category, hints] of Object.entries(CATEGORY_PATH_HINTS)) {
|
|
26
|
+
if (hints.some(hint => pathLower.includes(hint))) {
|
|
27
|
+
detected.add(category);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return Array.from(detected);
|
|
32
|
+
}
|
|
33
|
+
function isRelevantCategory(task, category) {
|
|
34
|
+
const categoryKeywords = CATEGORY_KEYWORDS[category] || [];
|
|
35
|
+
const taskLower = task.toLowerCase();
|
|
36
|
+
return categoryKeywords.some(kw => taskLower.includes(kw));
|
|
37
|
+
}
|
|
38
|
+
async function main() {
|
|
39
|
+
try {
|
|
40
|
+
// Read JSON from stdin
|
|
41
|
+
const chunks = [];
|
|
42
|
+
for await (const chunk of process.stdin) {
|
|
43
|
+
chunks.push(chunk);
|
|
44
|
+
}
|
|
45
|
+
const inputData = JSON.parse(Buffer.concat(chunks).toString());
|
|
46
|
+
const { projectRoot, taskDescription, filePaths } = inputData;
|
|
47
|
+
if (!(0, index_js_1.wikiExists)(projectRoot) || !taskDescription) {
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
// Check which categories might be relevant
|
|
51
|
+
const relevantCategories = [];
|
|
52
|
+
for (const category of index_js_1.DEFAULT_CATEGORIES) {
|
|
53
|
+
if (isRelevantCategory(taskDescription, category)) {
|
|
54
|
+
relevantCategories.push(category);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Also check paths for category hints
|
|
58
|
+
if (filePaths && filePaths.length > 0) {
|
|
59
|
+
const pathCategories = detectCategoryFromPaths(filePaths);
|
|
60
|
+
for (const cat of pathCategories) {
|
|
61
|
+
if (!relevantCategories.includes(cat)) {
|
|
62
|
+
relevantCategories.push(cat);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Search wiki for relevant entries
|
|
67
|
+
const searchResults = await (0, index_js_1.searchWiki)(projectRoot, { query: taskDescription });
|
|
68
|
+
if (searchResults.length > 0) {
|
|
69
|
+
console.log(`📚 Solvdex: Found ${searchResults.length} relevant entries`);
|
|
70
|
+
for (const r of searchResults.slice(0, 3)) {
|
|
71
|
+
console.log(` - ${r.entry.frontmatter.title} (${r.entry.category})`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
process.exit(0);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
process.exit(0); // Silent fail
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
main();
|
|
81
|
+
//# sourceMappingURL=session-start-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-start-cli.js","sourceRoot":"","sources":["../../hooks/session-start-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-start.d.ts","sourceRoot":"","sources":["../../hooks/session-start.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,kBAAkB,EAKnB,MAAM,iBAAiB,CAAC;AAkCzB,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAgGzF;AAkBD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.onSessionStart = onSessionStart;
|
|
4
|
+
// hooks/session-start.ts
|
|
5
|
+
const index_js_1 = require("../src/index.js");
|
|
6
|
+
const CATEGORY_KEYWORDS = {
|
|
7
|
+
issues: ['error', 'fix', 'bug', 'broken', 'fails', 'crash', 'exception', 'trouble'],
|
|
8
|
+
patterns: ['pattern', 'template', 'reusable', 'design', 'approach', 'best practice'],
|
|
9
|
+
gotchas: ['careful', 'watch out', 'pitfall', 'gotcha', 'trap', 'avoid', 'never'],
|
|
10
|
+
testing: ['test', 'mock', 'fixture', 'assert', 'spec', 'coverage', 'jest', 'vitest'],
|
|
11
|
+
docs: ['document', 'readme', 'guide', 'tutorial', 'api docs', 'documentation'],
|
|
12
|
+
security: ['auth', 'token', 'vulnerability', 'permission', 'csrf', 'xss', 'injection', 'security'],
|
|
13
|
+
performance: ['slow', 'optimize', 'memory', 'latency', 'benchmark', 'profiling', 'performance']
|
|
14
|
+
};
|
|
15
|
+
const CATEGORY_PATH_HINTS = {
|
|
16
|
+
testing: ['test', 'spec', 'fixture', 'mock', '__tests__'],
|
|
17
|
+
docs: ['doc', 'readme', 'wiki', 'guide', 'docs'],
|
|
18
|
+
security: ['auth', 'secret', 'cred', 'permission', 'security'],
|
|
19
|
+
performance: ['perf', 'bench', 'profile', 'optim']
|
|
20
|
+
};
|
|
21
|
+
function detectCategoryFromPaths(paths) {
|
|
22
|
+
const detected = new Set();
|
|
23
|
+
for (const filePath of paths) {
|
|
24
|
+
const pathLower = filePath.toLowerCase();
|
|
25
|
+
for (const [category, hints] of Object.entries(CATEGORY_PATH_HINTS)) {
|
|
26
|
+
if (hints.some(hint => pathLower.includes(hint))) {
|
|
27
|
+
detected.add(category);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return Array.from(detected);
|
|
32
|
+
}
|
|
33
|
+
async function onSessionStart(context) {
|
|
34
|
+
try {
|
|
35
|
+
// Validate input first
|
|
36
|
+
const validatedContext = (0, index_js_1.validateSessionStartInput)(context);
|
|
37
|
+
const { projectRoot, taskDescription, filePaths } = validatedContext;
|
|
38
|
+
if (!(0, index_js_1.wikiExists)(projectRoot)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
if (!taskDescription) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
// Check which categories might be relevant based on keywords
|
|
45
|
+
const relevantCategories = [];
|
|
46
|
+
for (const category of index_js_1.DEFAULT_CATEGORIES) {
|
|
47
|
+
if (isRelevantCategory(taskDescription, category)) {
|
|
48
|
+
relevantCategories.push(category);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Also check paths for category hints
|
|
52
|
+
if (filePaths && filePaths.length > 0) {
|
|
53
|
+
const pathCategories = detectCategoryFromPaths(filePaths);
|
|
54
|
+
for (const cat of pathCategories) {
|
|
55
|
+
if (!relevantCategories.includes(cat)) {
|
|
56
|
+
relevantCategories.push(cat);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Search wiki for relevant entries
|
|
61
|
+
const searchResults = await (0, index_js_1.searchWiki)(projectRoot, { query: taskDescription });
|
|
62
|
+
if (searchResults.length > 0 || relevantCategories.length > 0) {
|
|
63
|
+
const entries = searchResults.map(r => ({
|
|
64
|
+
title: r.entry.frontmatter.title,
|
|
65
|
+
category: r.entry.category,
|
|
66
|
+
path: r.entry.path
|
|
67
|
+
}));
|
|
68
|
+
const categories = relevantCategories.length > 0
|
|
69
|
+
? relevantCategories
|
|
70
|
+
: [...new Set(searchResults.map(r => r.entry.category))];
|
|
71
|
+
// Output for Claude Code hook integration (user-facing console logs)
|
|
72
|
+
if (searchResults.length > 0) {
|
|
73
|
+
console.log(`\u{1F4DA} Solvdex: Found ${searchResults.length} relevant entries`);
|
|
74
|
+
for (const r of searchResults.slice(0, 3)) {
|
|
75
|
+
console.log(` - ${r.entry.frontmatter.title} (${r.entry.category})`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Structured output for Claude Code (includes both old and new format for backward compatibility)
|
|
79
|
+
const output = {
|
|
80
|
+
// Old format (for backward compatibility)
|
|
81
|
+
type: 'wiki_context',
|
|
82
|
+
message: searchResults.length > 0
|
|
83
|
+
? `Wiki: Found ${searchResults.length} relevant entries`
|
|
84
|
+
: `Wiki: Check ${categories.join(', ')} for related knowledge`,
|
|
85
|
+
categories,
|
|
86
|
+
entries: entries.length > 0 ? entries : undefined,
|
|
87
|
+
// New format (Claude Code integration)
|
|
88
|
+
continue: true,
|
|
89
|
+
hookSpecificOutput: {
|
|
90
|
+
type: 'wiki_context',
|
|
91
|
+
message: searchResults.length > 0
|
|
92
|
+
? `Found ${searchResults.length} wiki entries`
|
|
93
|
+
: `Relevant categories: ${categories.join(', ')}`,
|
|
94
|
+
categories,
|
|
95
|
+
entries: entries.length > 0 ? entries.slice(0, 3) : undefined
|
|
96
|
+
},
|
|
97
|
+
additionalContext: searchResults.length > 0
|
|
98
|
+
? formatEntriesForContext(searchResults.slice(0, 3))
|
|
99
|
+
: undefined
|
|
100
|
+
};
|
|
101
|
+
// Output JSON marker + JSON (MUST be last output)
|
|
102
|
+
console.log('\n__HOOK_OUTPUT__');
|
|
103
|
+
console.log(JSON.stringify(output));
|
|
104
|
+
return output;
|
|
105
|
+
}
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
// Handle validation errors separately
|
|
110
|
+
if (error instanceof index_js_1.ValidationError) {
|
|
111
|
+
console.error(`[Solvdex] Invalid input: ${error.message}`);
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
// Graceful degradation - log error but don't crash
|
|
115
|
+
console.error(`[Solvdex] Error in session-start hook: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function isRelevantCategory(task, category) {
|
|
120
|
+
const categoryKeywords = CATEGORY_KEYWORDS[category] || [];
|
|
121
|
+
const taskLower = task.toLowerCase();
|
|
122
|
+
return categoryKeywords.some(kw => taskLower.includes(kw));
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Formats search results into a readable context string for Claude Code.
|
|
126
|
+
*/
|
|
127
|
+
function formatEntriesForContext(results) {
|
|
128
|
+
return results.map(r => {
|
|
129
|
+
const e = r.entry;
|
|
130
|
+
return `## ${e.frontmatter.title} (${e.category})\nConfidence: ${e.frontmatter.confidence}\n\n${e.content.substring(0, 300)}...`;
|
|
131
|
+
}).join('\n\n');
|
|
132
|
+
}
|
|
133
|
+
exports.default = onSessionStart;
|
|
134
|
+
//# sourceMappingURL=session-start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../hooks/session-start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { AuditAction } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Represents a parsed audit log entry.
|
|
4
|
+
*/
|
|
5
|
+
export interface AuditLogEntry {
|
|
6
|
+
timestamp: string;
|
|
7
|
+
action: AuditAction;
|
|
8
|
+
entryPath: string;
|
|
9
|
+
by: string;
|
|
10
|
+
details?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Options for reading the audit log.
|
|
14
|
+
*/
|
|
15
|
+
export interface ReadAuditLogOptions {
|
|
16
|
+
limit?: number;
|
|
17
|
+
entryPath?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Represents an audit summary report.
|
|
21
|
+
*/
|
|
22
|
+
export interface AuditReport {
|
|
23
|
+
totalEntries: number;
|
|
24
|
+
activeCount: number;
|
|
25
|
+
flaggedCount: number;
|
|
26
|
+
deprecatedCount: number;
|
|
27
|
+
last7DaysActivity: Record<AuditAction, number>;
|
|
28
|
+
recentActivity: AuditLogEntry[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Logs an audit action to the audit log file.
|
|
32
|
+
*
|
|
33
|
+
* @param projectRoot - The root directory of the project
|
|
34
|
+
* @param action - The audit action (created, updated, validated, flagged, deprecated)
|
|
35
|
+
* @param entryPath - The path to the entry being audited
|
|
36
|
+
* @param by - Who performed the action (e.g., "user", "claude", "auto-capture")
|
|
37
|
+
* @param details - Optional additional details about the action
|
|
38
|
+
*/
|
|
39
|
+
export declare function logAudit(projectRoot: string, action: AuditAction, entryPath: string, by: string, details?: string): void;
|
|
40
|
+
/**
|
|
41
|
+
* Reads audit log entries from the audit log file.
|
|
42
|
+
*
|
|
43
|
+
* @param projectRoot - The root directory of the project
|
|
44
|
+
* @param options - Optional filters (limit, entryPath)
|
|
45
|
+
* @returns Array of AuditLogEntry objects, most recent first
|
|
46
|
+
*/
|
|
47
|
+
export declare function readAuditLog(projectRoot: string, options?: ReadAuditLogOptions): AuditLogEntry[];
|
|
48
|
+
/**
|
|
49
|
+
* Gets the audit history for a specific wiki entry.
|
|
50
|
+
*
|
|
51
|
+
* @param projectRoot - The root directory of the project
|
|
52
|
+
* @param entryPath - The path to the entry
|
|
53
|
+
* @returns Array of AuditLogEntry objects for the entry, most recent first
|
|
54
|
+
*/
|
|
55
|
+
export declare function getEntryAuditHistory(projectRoot: string, entryPath: string): AuditLogEntry[];
|
|
56
|
+
/**
|
|
57
|
+
* Generates an audit summary report for the wiki.
|
|
58
|
+
*
|
|
59
|
+
* @param projectRoot - The root directory of the project
|
|
60
|
+
* @returns AuditReport with stats and recent activity
|
|
61
|
+
*/
|
|
62
|
+
export declare function generateAuditReport(projectRoot: string): Promise<AuditReport>;
|
|
63
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/audit.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAOzC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,cAAc,EAAE,aAAa,EAAE,CAAC;CACjC;AA+ED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CACtB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,MAAM,GACf,IAAI,CAwBN;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,GAChC,aAAa,EAAE,CAkCjB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,aAAa,EAAE,CAEjB;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CA4CtB"}
|