cmp-standards 2.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/README.md +541 -0
- package/dist/analytics/index.d.ts +5 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +5 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/tracker.d.ts +107 -0
- package/dist/analytics/tracker.d.ts.map +1 -0
- package/dist/analytics/tracker.js +333 -0
- package/dist/analytics/tracker.js.map +1 -0
- package/dist/auto-improve/eslint-generator.d.ts +36 -0
- package/dist/auto-improve/eslint-generator.d.ts.map +1 -0
- package/dist/auto-improve/eslint-generator.js +280 -0
- package/dist/auto-improve/eslint-generator.js.map +1 -0
- package/dist/auto-improve/index.d.ts +6 -0
- package/dist/auto-improve/index.d.ts.map +1 -0
- package/dist/auto-improve/index.js +6 -0
- package/dist/auto-improve/index.js.map +1 -0
- package/dist/auto-improve/pattern-detector.d.ts +92 -0
- package/dist/auto-improve/pattern-detector.d.ts.map +1 -0
- package/dist/auto-improve/pattern-detector.js +231 -0
- package/dist/auto-improve/pattern-detector.js.map +1 -0
- package/dist/cli/index.d.ts +18 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +769 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/dashboard/index.d.ts +6 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +6 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/server.d.ts +15 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +373 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/dashboard/ui.d.ts +9 -0
- package/dist/dashboard/ui.d.ts.map +1 -0
- package/dist/dashboard/ui.js +530 -0
- package/dist/dashboard/ui.js.map +1 -0
- package/dist/db/client.d.ts +66 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +159 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/drizzle-client.d.ts +302 -0
- package/dist/db/drizzle-client.d.ts.map +1 -0
- package/dist/db/drizzle-client.js +404 -0
- package/dist/db/drizzle-client.js.map +1 -0
- package/dist/db/index.d.ts +5 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +5 -0
- package/dist/db/index.js.map +1 -0
- package/dist/eslint/config-builder.d.ts +45 -0
- package/dist/eslint/config-builder.d.ts.map +1 -0
- package/dist/eslint/config-builder.js +128 -0
- package/dist/eslint/config-builder.js.map +1 -0
- package/dist/eslint/index.d.ts +161 -0
- package/dist/eslint/index.d.ts.map +1 -0
- package/dist/eslint/index.js +106 -0
- package/dist/eslint/index.js.map +1 -0
- package/dist/eslint/rules/consistent-error-handling.d.ts +9 -0
- package/dist/eslint/rules/consistent-error-handling.d.ts.map +1 -0
- package/dist/eslint/rules/consistent-error-handling.js +52 -0
- package/dist/eslint/rules/consistent-error-handling.js.map +1 -0
- package/dist/eslint/rules/finance-ledger-sync.d.ts +12 -0
- package/dist/eslint/rules/finance-ledger-sync.d.ts.map +1 -0
- package/dist/eslint/rules/finance-ledger-sync.js +72 -0
- package/dist/eslint/rules/finance-ledger-sync.js.map +1 -0
- package/dist/eslint/rules/no-async-useeffect.d.ts +10 -0
- package/dist/eslint/rules/no-async-useeffect.d.ts.map +1 -0
- package/dist/eslint/rules/no-async-useeffect.js +49 -0
- package/dist/eslint/rules/no-async-useeffect.js.map +1 -0
- package/dist/eslint/rules/no-await-in-loop.d.ts +10 -0
- package/dist/eslint/rules/no-await-in-loop.d.ts.map +1 -0
- package/dist/eslint/rules/no-await-in-loop.js +51 -0
- package/dist/eslint/rules/no-await-in-loop.js.map +1 -0
- package/dist/eslint/rules/no-inline-functions-in-jsx.d.ts +10 -0
- package/dist/eslint/rules/no-inline-functions-in-jsx.d.ts.map +1 -0
- package/dist/eslint/rules/no-inline-functions-in-jsx.js +45 -0
- package/dist/eslint/rules/no-inline-functions-in-jsx.js.map +1 -0
- package/dist/eslint/rules/no-raw-sql.d.ts +19 -0
- package/dist/eslint/rules/no-raw-sql.d.ts.map +1 -0
- package/dist/eslint/rules/no-raw-sql.js +136 -0
- package/dist/eslint/rules/no-raw-sql.js.map +1 -0
- package/dist/eslint/rules/no-sequential-api-calls.d.ts +10 -0
- package/dist/eslint/rules/no-sequential-api-calls.d.ts.map +1 -0
- package/dist/eslint/rules/no-sequential-api-calls.js +72 -0
- package/dist/eslint/rules/no-sequential-api-calls.js.map +1 -0
- package/dist/eslint/rules/prefer-server-components.d.ts +10 -0
- package/dist/eslint/rules/prefer-server-components.d.ts.map +1 -0
- package/dist/eslint/rules/prefer-server-components.js +76 -0
- package/dist/eslint/rules/prefer-server-components.js.map +1 -0
- package/dist/eslint/rules/require-loading-states.d.ts +9 -0
- package/dist/eslint/rules/require-loading-states.d.ts.map +1 -0
- package/dist/eslint/rules/require-loading-states.js +85 -0
- package/dist/eslint/rules/require-loading-states.js.map +1 -0
- package/dist/eslint/rules/require-zod-validation.d.ts +10 -0
- package/dist/eslint/rules/require-zod-validation.d.ts.map +1 -0
- package/dist/eslint/rules/require-zod-validation.js +70 -0
- package/dist/eslint/rules/require-zod-validation.js.map +1 -0
- package/dist/eslint/rules/semantic-tokens-only.d.ts +10 -0
- package/dist/eslint/rules/semantic-tokens-only.d.ts.map +1 -0
- package/dist/eslint/rules/semantic-tokens-only.js +62 -0
- package/dist/eslint/rules/semantic-tokens-only.js.map +1 -0
- package/dist/feedback/collector.d.ts +74 -0
- package/dist/feedback/collector.d.ts.map +1 -0
- package/dist/feedback/collector.js +231 -0
- package/dist/feedback/collector.js.map +1 -0
- package/dist/feedback/index.d.ts +5 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +5 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/memory-checkpoint.d.ts +43 -0
- package/dist/hooks/memory-checkpoint.d.ts.map +1 -0
- package/dist/hooks/memory-checkpoint.js +257 -0
- package/dist/hooks/memory-checkpoint.js.map +1 -0
- package/dist/hooks/post-tool-use.d.ts +61 -0
- package/dist/hooks/post-tool-use.d.ts.map +1 -0
- package/dist/hooks/post-tool-use.js +262 -0
- package/dist/hooks/post-tool-use.js.map +1 -0
- package/dist/hooks/pre-tool-use.d.ts +34 -0
- package/dist/hooks/pre-tool-use.d.ts.map +1 -0
- package/dist/hooks/pre-tool-use.js +358 -0
- package/dist/hooks/pre-tool-use.js.map +1 -0
- package/dist/hooks/session-start.d.ts +38 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +274 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +42 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +599 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/registry/embeddings.d.ts +38 -0
- package/dist/registry/embeddings.d.ts.map +1 -0
- package/dist/registry/embeddings.js +110 -0
- package/dist/registry/embeddings.js.map +1 -0
- package/dist/registry/generator.d.ts +41 -0
- package/dist/registry/generator.d.ts.map +1 -0
- package/dist/registry/generator.js +323 -0
- package/dist/registry/generator.js.map +1 -0
- package/dist/registry/index.d.ts +6 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +6 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/services/IdeaCollector.d.ts +103 -0
- package/dist/services/IdeaCollector.d.ts.map +1 -0
- package/dist/services/IdeaCollector.js +371 -0
- package/dist/services/IdeaCollector.js.map +1 -0
- package/dist/services/ProjectScaffold.d.ts +76 -0
- package/dist/services/ProjectScaffold.d.ts.map +1 -0
- package/dist/services/ProjectScaffold.js +479 -0
- package/dist/services/ProjectScaffold.js.map +1 -0
- package/dist/services/ProjectScanner.d.ts +81 -0
- package/dist/services/ProjectScanner.d.ts.map +1 -0
- package/dist/services/ProjectScanner.js +349 -0
- package/dist/services/ProjectScanner.js.map +1 -0
- package/dist/services/TaskTracker.d.ts +89 -0
- package/dist/services/TaskTracker.d.ts.map +1 -0
- package/dist/services/TaskTracker.js +324 -0
- package/dist/services/TaskTracker.js.map +1 -0
- package/dist/services/WorkPlanManager.d.ts +107 -0
- package/dist/services/WorkPlanManager.d.ts.map +1 -0
- package/dist/services/WorkPlanManager.js +440 -0
- package/dist/services/WorkPlanManager.js.map +1 -0
- package/dist/services/auto-inject.d.ts +77 -0
- package/dist/services/auto-inject.d.ts.map +1 -0
- package/dist/services/auto-inject.js +289 -0
- package/dist/services/auto-inject.js.map +1 -0
- package/dist/services/auto-tag.d.ts +61 -0
- package/dist/services/auto-tag.d.ts.map +1 -0
- package/dist/services/auto-tag.js +203 -0
- package/dist/services/auto-tag.js.map +1 -0
- package/dist/services/cross-project-sync.d.ts +76 -0
- package/dist/services/cross-project-sync.d.ts.map +1 -0
- package/dist/services/cross-project-sync.js +235 -0
- package/dist/services/cross-project-sync.js.map +1 -0
- package/dist/services/index.d.ts +17 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +23 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/memory-consolidation.d.ts +77 -0
- package/dist/services/memory-consolidation.d.ts.map +1 -0
- package/dist/services/memory-consolidation.js +298 -0
- package/dist/services/memory-consolidation.js.map +1 -0
- package/dist/services/semantic-search.d.ts +93 -0
- package/dist/services/semantic-search.d.ts.map +1 -0
- package/dist/services/semantic-search.js +278 -0
- package/dist/services/semantic-search.js.map +1 -0
- package/dist/services/weekly-digest.d.ts +105 -0
- package/dist/services/weekly-digest.d.ts.map +1 -0
- package/dist/services/weekly-digest.js +292 -0
- package/dist/services/weekly-digest.js.map +1 -0
- package/dist/types/index.d.ts +274 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +84 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +21 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +89 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/paths.d.ts +28 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +80 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +95 -0
- package/templates/agents/architecture-expert.md +61 -0
- package/templates/agents/database-expert.md +62 -0
- package/templates/agents/documentation-expert.md +57 -0
- package/templates/agents/memory-expert.md +88 -0
- package/templates/agents/performance-expert.md +61 -0
- package/templates/agents/security-expert.md +59 -0
- package/templates/agents/ux-expert.md +63 -0
- package/templates/agents/worker.md +75 -0
- package/templates/ai-skills/SKILL_TEMPLATE.md +55 -0
- package/templates/commands/experts.md +138 -0
- package/templates/hooks/README.md +158 -0
- package/templates/hooks/project.config.json.template +77 -0
- package/templates/hooks/settings.local.json.template +57 -0
- package/templates/memory-config.json +82 -0
- package/templates/memory-config.schema.json +212 -0
- package/templates/settings.json +58 -0
- package/templates/workflows/business-improvement.md +264 -0
- package/templates/workflows/expert-review.md +153 -0
- package/templates/workflows/internal-app.md +245 -0
- package/templates/workflows/sync-docs.md +187 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-checkpoint.js","sourceRoot":"","sources":["../../src/hooks/memory-checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostToolUse Hook - Executable
|
|
3
|
+
*
|
|
4
|
+
* Records what was actually changed after Edit/Write completes.
|
|
5
|
+
* Creates memory entries for significant changes.
|
|
6
|
+
*/
|
|
7
|
+
import type { HookResult } from '../types/index.js';
|
|
8
|
+
export interface PostToolUseEvent {
|
|
9
|
+
tool_name: string;
|
|
10
|
+
parameters: Record<string, unknown>;
|
|
11
|
+
result: {
|
|
12
|
+
success: boolean;
|
|
13
|
+
output?: string;
|
|
14
|
+
error?: string;
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
interface ChangeRecord {
|
|
18
|
+
file: string;
|
|
19
|
+
type: 'edit' | 'write' | 'delete';
|
|
20
|
+
linesChanged?: number;
|
|
21
|
+
summary?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class PostToolUseHook {
|
|
24
|
+
private config;
|
|
25
|
+
private projectRoot;
|
|
26
|
+
private client;
|
|
27
|
+
private sessionChanges;
|
|
28
|
+
/**
|
|
29
|
+
* Initialize the hook
|
|
30
|
+
*/
|
|
31
|
+
init(projectRoot?: string): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Execute the hook after a tool completes
|
|
34
|
+
*/
|
|
35
|
+
execute(event: PostToolUseEvent): Promise<HookResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Record a significant change to memory
|
|
38
|
+
*/
|
|
39
|
+
private recordChange;
|
|
40
|
+
/**
|
|
41
|
+
* Generate description for change
|
|
42
|
+
*/
|
|
43
|
+
private generateChangeDescription;
|
|
44
|
+
/**
|
|
45
|
+
* Get all changes recorded this session
|
|
46
|
+
*/
|
|
47
|
+
getSessionChanges(): ChangeRecord[];
|
|
48
|
+
/**
|
|
49
|
+
* Create session summary
|
|
50
|
+
*/
|
|
51
|
+
createSessionSummary(): Promise<{
|
|
52
|
+
id: string;
|
|
53
|
+
} | null>;
|
|
54
|
+
/**
|
|
55
|
+
* Clear session changes
|
|
56
|
+
*/
|
|
57
|
+
clearSession(): void;
|
|
58
|
+
}
|
|
59
|
+
export declare function runPostToolUseHook(eventJson: string): Promise<void>;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=post-tool-use.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-tool-use.d.ts","sourceRoot":"","sources":["../../src/hooks/post-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAA+B,MAAM,mBAAmB,CAAA;AAShF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,MAAM,EAAE;QACN,OAAO,EAAE,OAAO,CAAA;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,CAAA;CACF;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAA;IACjC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AA0GD,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,cAAc,CAAqB;IAE3C;;OAEG;IACG,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY/C;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC;IA0C3D;;OAEG;YACW,YAAY;IA4B1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkBjC;;OAEG;IACH,iBAAiB,IAAI,YAAY,EAAE;IAInC;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IA6C5D;;OAEG;IACH,YAAY,IAAI,IAAI;CAGrB;AAMD,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKzE"}
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostToolUse Hook - Executable
|
|
3
|
+
*
|
|
4
|
+
* Records what was actually changed after Edit/Write completes.
|
|
5
|
+
* Creates memory entries for significant changes.
|
|
6
|
+
*/
|
|
7
|
+
import { loadConfig } from '../utils/config.js';
|
|
8
|
+
import { getProjectRoot, matchesPattern } from '../utils/paths.js';
|
|
9
|
+
import { createDrizzleClient } from '../db/drizzle-client.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// CHANGE ANALYSIS
|
|
12
|
+
// =============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Analyze what was changed
|
|
15
|
+
*/
|
|
16
|
+
function analyzeChange(event) {
|
|
17
|
+
const { tool_name, parameters, result } = event;
|
|
18
|
+
if (!result.success) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
switch (tool_name) {
|
|
22
|
+
case 'Edit': {
|
|
23
|
+
const filePath = parameters.file_path;
|
|
24
|
+
const oldString = parameters.old_string;
|
|
25
|
+
const newString = parameters.new_string;
|
|
26
|
+
if (!filePath)
|
|
27
|
+
return null;
|
|
28
|
+
const linesChanged = Math.abs((newString?.split('\n').length ?? 0) - (oldString?.split('\n').length ?? 0));
|
|
29
|
+
return {
|
|
30
|
+
file: filePath,
|
|
31
|
+
type: 'edit',
|
|
32
|
+
linesChanged,
|
|
33
|
+
summary: `Edited ${filePath.split('/').pop()}`,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
case 'Write': {
|
|
37
|
+
const filePath = parameters.file_path;
|
|
38
|
+
const content = parameters.content;
|
|
39
|
+
if (!filePath)
|
|
40
|
+
return null;
|
|
41
|
+
return {
|
|
42
|
+
file: filePath,
|
|
43
|
+
type: 'write',
|
|
44
|
+
linesChanged: content?.split('\n').length ?? 0,
|
|
45
|
+
summary: `Created ${filePath.split('/').pop()}`,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
default:
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Determine if change is significant enough to record
|
|
54
|
+
*/
|
|
55
|
+
function isSignificantChange(change, config) {
|
|
56
|
+
// Critical paths are always significant
|
|
57
|
+
if (matchesPattern(change.file, config.checkpoint.criticalPaths)) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
// Check minimum lines changed
|
|
61
|
+
if (change.linesChanged && change.linesChanged >= config.checkpoint.minLinesChanged) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
// New files are significant
|
|
65
|
+
if (change.type === 'write') {
|
|
66
|
+
return true;
|
|
67
|
+
}
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Extract domain from file path
|
|
72
|
+
*/
|
|
73
|
+
function extractDomain(filePath, domains) {
|
|
74
|
+
const pathLower = filePath.toLowerCase();
|
|
75
|
+
for (const domain of domains) {
|
|
76
|
+
if (pathLower.includes(domain.replace(/-/g, '/')) ||
|
|
77
|
+
pathLower.includes(domain.replace(/-/g, '_'))) {
|
|
78
|
+
return domain;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Fallback detection
|
|
82
|
+
if (pathLower.includes('/schema/'))
|
|
83
|
+
return 'schema';
|
|
84
|
+
if (pathLower.includes('/api/') || pathLower.includes('/routers/'))
|
|
85
|
+
return 'api';
|
|
86
|
+
if (pathLower.includes('/components/'))
|
|
87
|
+
return 'components';
|
|
88
|
+
if (pathLower.includes('/hooks/'))
|
|
89
|
+
return 'hooks';
|
|
90
|
+
return 'general';
|
|
91
|
+
}
|
|
92
|
+
// =============================================================================
|
|
93
|
+
// MAIN HOOK CLASS
|
|
94
|
+
// =============================================================================
|
|
95
|
+
export class PostToolUseHook {
|
|
96
|
+
config = null;
|
|
97
|
+
projectRoot = null;
|
|
98
|
+
client = null;
|
|
99
|
+
sessionChanges = [];
|
|
100
|
+
/**
|
|
101
|
+
* Initialize the hook
|
|
102
|
+
*/
|
|
103
|
+
async init(projectRoot) {
|
|
104
|
+
this.projectRoot = projectRoot ?? await getProjectRoot();
|
|
105
|
+
this.config = await loadConfig(this.projectRoot);
|
|
106
|
+
try {
|
|
107
|
+
this.client = createDrizzleClient(this.config.system);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
// DB not available, will log locally
|
|
111
|
+
console.warn('[PostToolUse] Database not available, recording changes locally');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Execute the hook after a tool completes
|
|
116
|
+
*/
|
|
117
|
+
async execute(event) {
|
|
118
|
+
if (!this.config || !this.projectRoot) {
|
|
119
|
+
await this.init();
|
|
120
|
+
}
|
|
121
|
+
const config = this.config;
|
|
122
|
+
// Skip if checkpointing disabled
|
|
123
|
+
if (!config.checkpoint.enabled) {
|
|
124
|
+
return { mode: 'proceed' };
|
|
125
|
+
}
|
|
126
|
+
// Analyze the change
|
|
127
|
+
const change = analyzeChange(event);
|
|
128
|
+
if (!change) {
|
|
129
|
+
return { mode: 'proceed' };
|
|
130
|
+
}
|
|
131
|
+
// Check if excluded
|
|
132
|
+
if (matchesPattern(change.file, config.checkpoint.excludePaths)) {
|
|
133
|
+
return { mode: 'proceed' };
|
|
134
|
+
}
|
|
135
|
+
// Track the change
|
|
136
|
+
this.sessionChanges.push(change);
|
|
137
|
+
// Check if significant
|
|
138
|
+
if (!isSignificantChange(change, config)) {
|
|
139
|
+
return { mode: 'proceed' };
|
|
140
|
+
}
|
|
141
|
+
// Record significant change
|
|
142
|
+
try {
|
|
143
|
+
await this.recordChange(change, config);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
console.error('[PostToolUse] Failed to record change:', error);
|
|
147
|
+
}
|
|
148
|
+
return { mode: 'proceed' };
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Record a significant change to memory
|
|
152
|
+
*/
|
|
153
|
+
async recordChange(change, config) {
|
|
154
|
+
const domain = extractDomain(change.file, config.domains);
|
|
155
|
+
const content = {
|
|
156
|
+
title: change.summary ?? `Change to ${change.file}`,
|
|
157
|
+
body: this.generateChangeDescription(change),
|
|
158
|
+
domain,
|
|
159
|
+
source: 'checkpoint',
|
|
160
|
+
relatedFiles: [change.file],
|
|
161
|
+
};
|
|
162
|
+
if (this.client) {
|
|
163
|
+
// Save to database
|
|
164
|
+
await this.client.createMemory(content, [
|
|
165
|
+
'auto-checkpoint',
|
|
166
|
+
domain,
|
|
167
|
+
change.type,
|
|
168
|
+
]);
|
|
169
|
+
console.log(`📝 [PostToolUse] Recorded: ${content.title}`);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
// Log locally
|
|
173
|
+
console.log(`📝 [PostToolUse] Change recorded (local): ${content.title}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Generate description for change
|
|
178
|
+
*/
|
|
179
|
+
generateChangeDescription(change) {
|
|
180
|
+
const lines = [];
|
|
181
|
+
lines.push(`## Change Details`);
|
|
182
|
+
lines.push('');
|
|
183
|
+
lines.push(`- **File**: ${change.file}`);
|
|
184
|
+
lines.push(`- **Type**: ${change.type}`);
|
|
185
|
+
if (change.linesChanged) {
|
|
186
|
+
lines.push(`- **Lines changed**: ${change.linesChanged}`);
|
|
187
|
+
}
|
|
188
|
+
lines.push('');
|
|
189
|
+
lines.push(`*Recorded at ${new Date().toISOString()}*`);
|
|
190
|
+
return lines.join('\n');
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get all changes recorded this session
|
|
194
|
+
*/
|
|
195
|
+
getSessionChanges() {
|
|
196
|
+
return [...this.sessionChanges];
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Create session summary
|
|
200
|
+
*/
|
|
201
|
+
async createSessionSummary() {
|
|
202
|
+
if (this.sessionChanges.length === 0) {
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
const config = this.config;
|
|
206
|
+
const changes = this.sessionChanges;
|
|
207
|
+
// Group by domain
|
|
208
|
+
const byDomain = new Map();
|
|
209
|
+
for (const change of changes) {
|
|
210
|
+
const domain = extractDomain(change.file, config.domains);
|
|
211
|
+
const existing = byDomain.get(domain) ?? [];
|
|
212
|
+
existing.push(change);
|
|
213
|
+
byDomain.set(domain, existing);
|
|
214
|
+
}
|
|
215
|
+
// Generate summary
|
|
216
|
+
const lines = ['## Session Summary', ''];
|
|
217
|
+
for (const [domain, domainChanges] of byDomain) {
|
|
218
|
+
lines.push(`### ${domain}`);
|
|
219
|
+
for (const change of domainChanges) {
|
|
220
|
+
lines.push(`- ${change.type}: ${change.file.split('/').pop()}`);
|
|
221
|
+
}
|
|
222
|
+
lines.push('');
|
|
223
|
+
}
|
|
224
|
+
lines.push(`**Total changes**: ${changes.length}`);
|
|
225
|
+
lines.push(`**Domains affected**: ${byDomain.size}`);
|
|
226
|
+
const content = {
|
|
227
|
+
title: `Session Summary: ${changes.length} changes`,
|
|
228
|
+
body: lines.join('\n'),
|
|
229
|
+
source: 'checkpoint',
|
|
230
|
+
relatedFiles: changes.map(c => c.file),
|
|
231
|
+
};
|
|
232
|
+
if (this.client) {
|
|
233
|
+
return this.client.createMemory(content, ['session-summary']);
|
|
234
|
+
}
|
|
235
|
+
return null;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Clear session changes
|
|
239
|
+
*/
|
|
240
|
+
clearSession() {
|
|
241
|
+
this.sessionChanges = [];
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// =============================================================================
|
|
245
|
+
// STANDALONE EXECUTION
|
|
246
|
+
// =============================================================================
|
|
247
|
+
export async function runPostToolUseHook(eventJson) {
|
|
248
|
+
const event = JSON.parse(eventJson);
|
|
249
|
+
const hook = new PostToolUseHook();
|
|
250
|
+
const result = await hook.execute(event);
|
|
251
|
+
console.log(JSON.stringify(result));
|
|
252
|
+
}
|
|
253
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
254
|
+
const eventJson = process.argv[2];
|
|
255
|
+
if (eventJson) {
|
|
256
|
+
runPostToolUseHook(eventJson).catch(console.error);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
console.error('Usage: node post-tool-use.js <event-json>');
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=post-tool-use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../src/hooks/post-tool-use.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PreToolUse Hook - Executable
|
|
3
|
+
*
|
|
4
|
+
* Validates tool calls against configured guards:
|
|
5
|
+
* 1. Schema protection (block modifications to protected files)
|
|
6
|
+
* 2. Pattern validation (warn about bad patterns)
|
|
7
|
+
* 3. Embedding injection (inject relevant knowledge for Task tool)
|
|
8
|
+
*/
|
|
9
|
+
import type { HookResult, PreToolUseEvent } from '../types/index.js';
|
|
10
|
+
export declare class PreToolUseHook {
|
|
11
|
+
private config;
|
|
12
|
+
private projectRoot;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the hook
|
|
15
|
+
*/
|
|
16
|
+
init(projectRoot?: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Execute the hook for a tool call
|
|
19
|
+
*/
|
|
20
|
+
execute(event: PreToolUseEvent): Promise<HookResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Handle Edit/Write tool calls - run guards
|
|
23
|
+
*/
|
|
24
|
+
private handleFileOperation;
|
|
25
|
+
/**
|
|
26
|
+
* Handle Task tool calls - inject knowledge
|
|
27
|
+
*/
|
|
28
|
+
private handleTaskTool;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Run hook as standalone script (reads event from stdin)
|
|
32
|
+
*/
|
|
33
|
+
export declare function runPreToolUseHook(): Promise<void>;
|
|
34
|
+
//# sourceMappingURL=pre-tool-use.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../src/hooks/pre-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EAMhB,MAAM,mBAAmB,CAAA;AAwQ1B,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,WAAW,CAAsB;IAEzC;;OAEG;IACG,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/C;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAuB1D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiD3B;;OAEG;YACW,cAAc;CA6C7B;AAMD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBvD"}
|