cmp-standards 3.5.1 → 3.7.1
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 +399 -633
- package/dist/analytics/CrossProjectAnalytics.js +65 -65
- package/dist/cli/index.js +255 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/tokens.js +173 -173
- package/dist/db/cloud.d.ts +1 -0
- package/dist/db/cloud.d.ts.map +1 -1
- package/dist/db/migrations.js +256 -256
- package/dist/db/turso-client.js +2 -2
- package/dist/db/upstash-client.d.ts +9 -0
- package/dist/db/upstash-client.d.ts.map +1 -1
- package/dist/db/upstash-client.js +11 -0
- package/dist/db/upstash-client.js.map +1 -1
- package/dist/eslint/rules/no-async-useeffect.js +6 -6
- package/dist/experts/ExpertVotePersistence.js +9 -9
- package/dist/hooks/auto-learning-hook.d.ts +48 -0
- package/dist/hooks/auto-learning-hook.d.ts.map +1 -0
- package/dist/hooks/auto-learning-hook.js +258 -0
- package/dist/hooks/auto-learning-hook.js.map +1 -0
- package/dist/hooks/cloud-post-tool-use.d.ts.map +1 -1
- package/dist/hooks/cloud-post-tool-use.js +72 -10
- package/dist/hooks/cloud-post-tool-use.js.map +1 -1
- package/dist/hooks/cloud-pre-tool-use.d.ts +12 -9
- package/dist/hooks/cloud-pre-tool-use.d.ts.map +1 -1
- package/dist/hooks/cloud-pre-tool-use.js +227 -99
- package/dist/hooks/cloud-pre-tool-use.js.map +1 -1
- package/dist/hooks/cloud-session-start.js +5 -5
- package/dist/hooks/fast-session-start.d.ts +24 -0
- package/dist/hooks/fast-session-start.d.ts.map +1 -0
- package/dist/hooks/fast-session-start.js +354 -0
- package/dist/hooks/fast-session-start.js.map +1 -0
- package/dist/hooks/resilient-hook-runner.d.ts +78 -0
- package/dist/hooks/resilient-hook-runner.d.ts.map +1 -0
- package/dist/hooks/resilient-hook-runner.js +201 -0
- package/dist/hooks/resilient-hook-runner.js.map +1 -0
- package/dist/hooks/session-end.js +14 -14
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/patterns/registry.js +90 -90
- package/dist/schema/codewiki-types.d.ts +10 -10
- package/dist/schema/docs-types.d.ts +8 -8
- package/dist/schema/ecosystem-types.d.ts +12 -12
- package/dist/services/BootstrapService.d.ts +123 -0
- package/dist/services/BootstrapService.d.ts.map +1 -0
- package/dist/services/BootstrapService.js +309 -0
- package/dist/services/BootstrapService.js.map +1 -0
- package/dist/services/CodeWikiIndexer.js +3 -3
- package/dist/services/ContextGenerator.js +7 -7
- package/dist/services/FeedbackCollector.js +11 -11
- package/dist/services/GitIntegration.js +9 -9
- package/dist/services/HookVerifier.js +70 -70
- package/dist/services/KnowledgeGapDetector.d.ts +122 -0
- package/dist/services/KnowledgeGapDetector.d.ts.map +1 -0
- package/dist/services/KnowledgeGapDetector.js +530 -0
- package/dist/services/KnowledgeGapDetector.js.map +1 -0
- package/dist/services/ProjectScaffold.d.ts.map +1 -1
- package/dist/services/ProjectScaffold.js +79 -78
- package/dist/services/ProjectScaffold.js.map +1 -1
- package/dist/services/auto-evolution-trigger.d.ts +101 -0
- package/dist/services/auto-evolution-trigger.d.ts.map +1 -0
- package/dist/services/auto-evolution-trigger.js +359 -0
- package/dist/services/auto-evolution-trigger.js.map +1 -0
- package/dist/services/cloud-memory-service.d.ts +101 -0
- package/dist/services/cloud-memory-service.d.ts.map +1 -0
- package/dist/services/cloud-memory-service.js +363 -0
- package/dist/services/cloud-memory-service.js.map +1 -0
- package/dist/services/index.d.ts +4 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +6 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/knowledge-graph.d.ts +121 -0
- package/dist/services/knowledge-graph.d.ts.map +1 -0
- package/dist/services/knowledge-graph.js +446 -0
- package/dist/services/knowledge-graph.js.map +1 -0
- package/dist/services/memory-keeper-client.d.ts +106 -0
- package/dist/services/memory-keeper-client.d.ts.map +1 -0
- package/dist/services/memory-keeper-client.js +319 -0
- package/dist/services/memory-keeper-client.js.map +1 -0
- package/dist/services/memory-router.d.ts +25 -0
- package/dist/services/memory-router.d.ts.map +1 -1
- package/dist/services/memory-router.js +236 -98
- package/dist/services/memory-router.js.map +1 -1
- package/dist/services/pattern-learning.d.ts +79 -0
- package/dist/services/pattern-learning.d.ts.map +1 -0
- package/dist/services/pattern-learning.js +312 -0
- package/dist/services/pattern-learning.js.map +1 -0
- package/dist/services/pattern-tracker.js +95 -95
- package/dist/services/semantic-search.js +2 -2
- package/dist/services/skill-learning-bridge.d.ts +100 -0
- package/dist/services/skill-learning-bridge.d.ts.map +1 -0
- package/dist/services/skill-learning-bridge.js +331 -0
- package/dist/services/skill-learning-bridge.js.map +1 -0
- package/dist/services/unified-memory-router.d.ts +123 -0
- package/dist/services/unified-memory-router.d.ts.map +1 -0
- package/dist/services/unified-memory-router.js +555 -0
- package/dist/services/unified-memory-router.js.map +1 -0
- package/package.json +124 -116
- package/standards/README.md +94 -50
- package/standards/experts/expert-routing.md +215 -215
- package/standards/general/code-quality.md +86 -86
- package/standards/general/ecosystem.md +243 -0
- package/standards/general/learning-loop.md +192 -0
- package/standards/general/memory-usage.md +205 -205
- package/standards/general/project-onboarding.md +339 -0
- package/standards/general/sync-workflow.md +235 -235
- package/standards/general/workflow.md +82 -82
- package/standards/hooks/mandatory-tracking.md +446 -446
- package/standards/infrastructure/cloud-database.md +287 -287
- package/standards/mcp/server-design.md +243 -243
- package/standards/mcp/tool-patterns.md +354 -354
- package/standards/skills/skill-structure.md +286 -286
- package/standards/skills/workflow-design.md +323 -323
- package/standards/tools/tool-design.md +297 -297
- package/templates/agents/architecture-expert.md +61 -61
- package/templates/agents/database-expert.md +62 -62
- package/templates/agents/documentation-expert.md +57 -57
- package/templates/agents/ecosystem-expert.md +104 -0
- package/templates/agents/memory-expert.md +88 -88
- package/templates/agents/performance-expert.md +61 -61
- package/templates/agents/security-expert.md +59 -59
- package/templates/agents/ux-expert.md +63 -63
- package/templates/agents/worker.md +75 -75
- package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
- package/templates/claude-settings.json +72 -72
- package/templates/commands/experts.md +138 -138
- package/templates/hooks/README.md +158 -158
- package/templates/hooks/project.config.json.template +77 -77
- package/templates/hooks/settings.local.json.template +57 -57
- package/templates/hooks.config.json +21 -0
- package/templates/memory-config.json +56 -56
- package/templates/memory-config.schema.json +212 -212
- package/templates/settings.json +58 -58
- package/templates/skills/continue.md +205 -205
- package/templates/workflows/business-improvement.md +264 -264
- package/templates/workflows/expert-review.md +153 -153
- package/templates/workflows/internal-app.md +245 -245
- package/templates/workflows/sync-docs.md +187 -187
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file Cloud Pre-Tool-Use Hook
|
|
3
|
-
* @description
|
|
4
|
-
*
|
|
2
|
+
* @file Cloud Pre-Tool-Use Hook (Resilient Version)
|
|
3
|
+
* @description Validates and tracks tool usage with fault-tolerant execution
|
|
4
|
+
*
|
|
5
|
+
* Key improvements:
|
|
6
|
+
* - 2 second timeout (never blocks)
|
|
7
|
+
* - Session caching (no repeated network calls)
|
|
8
|
+
* - Silent failures (always proceeds)
|
|
9
|
+
* - Per-project configuration
|
|
10
|
+
* - Fire-and-forget tracking
|
|
5
11
|
*/
|
|
12
|
+
import { type HookResult } from './resilient-hook-runner.js';
|
|
6
13
|
export interface PreToolUseEvent {
|
|
7
14
|
tool: string;
|
|
8
15
|
params: Record<string, unknown>;
|
|
9
16
|
sessionId?: string;
|
|
10
17
|
cwd: string;
|
|
11
18
|
}
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
message?: string;
|
|
15
|
-
warning?: string;
|
|
16
|
-
}
|
|
17
|
-
export declare function onPreToolUse(event: PreToolUseEvent): Promise<PreToolUseResult>;
|
|
19
|
+
export declare function onPreToolUse(event: PreToolUseEvent): Promise<HookResult>;
|
|
20
|
+
export declare const safeOnPreToolUse: (args_0: PreToolUseEvent) => Promise<HookResult>;
|
|
18
21
|
export default onPreToolUse;
|
|
19
22
|
//# sourceMappingURL=cloud-pre-tool-use.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-pre-tool-use.d.ts","sourceRoot":"","sources":["../../src/hooks/cloud-pre-tool-use.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cloud-pre-tool-use.d.ts","sourceRoot":"","sources":["../../src/hooks/cloud-pre-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAOL,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAA;AAMnC,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;CACZ;AA0KD,wBAAsB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAoD9E;AAMD,eAAO,MAAM,gBAAgB,kDAG5B,CAAA;AA6ED,eAAe,YAAY,CAAA"}
|
|
@@ -1,148 +1,276 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @file Cloud Pre-Tool-Use Hook
|
|
3
|
-
* @description
|
|
4
|
-
*
|
|
2
|
+
* @file Cloud Pre-Tool-Use Hook (Resilient Version)
|
|
3
|
+
* @description Validates and tracks tool usage with fault-tolerant execution
|
|
4
|
+
*
|
|
5
|
+
* Key improvements:
|
|
6
|
+
* - 2 second timeout (never blocks)
|
|
7
|
+
* - Session caching (no repeated network calls)
|
|
8
|
+
* - Silent failures (always proceeds)
|
|
9
|
+
* - Per-project configuration
|
|
10
|
+
* - Fire-and-forget tracking
|
|
5
11
|
*/
|
|
6
12
|
import { config } from 'dotenv';
|
|
7
13
|
import { resolve } from 'path';
|
|
8
|
-
import {
|
|
9
|
-
import { upstash } from '../db/upstash-client.js';
|
|
14
|
+
import { safeHook, getCachedSession, setCachedSession, withTimeout, loadHookConfig } from './resilient-hook-runner.js';
|
|
10
15
|
// =============================================================================
|
|
11
16
|
// Configuration
|
|
12
17
|
// =============================================================================
|
|
13
|
-
// Tools
|
|
14
|
-
const
|
|
15
|
-
// Tools
|
|
16
|
-
const
|
|
18
|
+
// Tools that always proceed without any checks
|
|
19
|
+
const ALWAYS_ALLOWED = ['Read', 'Glob', 'Grep', 'Bash', 'WebSearch', 'WebFetch', 'LS'];
|
|
20
|
+
// Tools that we might want to track (but never block)
|
|
21
|
+
const TRACKABLE_TOOLS = ['Edit', 'Write', 'Task', 'NotebookEdit'];
|
|
17
22
|
// =============================================================================
|
|
18
|
-
// System Detection
|
|
23
|
+
// System Detection (Local - No Network)
|
|
19
24
|
// =============================================================================
|
|
20
25
|
function detectSystem(cwd) {
|
|
21
|
-
|
|
26
|
+
const cwdLower = cwd.toLowerCase();
|
|
27
|
+
if (cwdLower.includes('swarmscale'))
|
|
22
28
|
return 'SWARMSCALE';
|
|
29
|
+
if (cwdLower.includes('easycharter') || cwdLower.includes('thecharterpanel'))
|
|
30
|
+
return 'PANEL';
|
|
31
|
+
if (cwdLower.includes('connectahotel'))
|
|
32
|
+
return 'CONNECTA_HOTEL';
|
|
33
|
+
if (cwdLower.includes('connectacrew'))
|
|
34
|
+
return 'CONNECTA_CREW';
|
|
35
|
+
if (cwdLower.includes('cmp-standards') || cwdLower.includes('carlosmartinpavon'))
|
|
36
|
+
return 'ECOSYSTEM';
|
|
37
|
+
return 'UNKNOWN';
|
|
38
|
+
}
|
|
39
|
+
// =============================================================================
|
|
40
|
+
// Lazy Cloud Module Loading
|
|
41
|
+
// =============================================================================
|
|
42
|
+
let cloudModule = null;
|
|
43
|
+
let upstashModule = null;
|
|
44
|
+
async function getCloud() {
|
|
45
|
+
if (!cloudModule) {
|
|
46
|
+
cloudModule = await import('../db/cloud.js');
|
|
23
47
|
}
|
|
24
|
-
|
|
25
|
-
|
|
48
|
+
return cloudModule.cloud;
|
|
49
|
+
}
|
|
50
|
+
async function getUpstash() {
|
|
51
|
+
if (!upstashModule) {
|
|
52
|
+
upstashModule = await import('../db/upstash-client.js');
|
|
26
53
|
}
|
|
27
|
-
|
|
28
|
-
|
|
54
|
+
return upstashModule.upstash;
|
|
55
|
+
}
|
|
56
|
+
// =============================================================================
|
|
57
|
+
// Fire-and-Forget Tracking
|
|
58
|
+
// =============================================================================
|
|
59
|
+
/**
|
|
60
|
+
* Track file modification without blocking
|
|
61
|
+
* Errors are silently ignored
|
|
62
|
+
*/
|
|
63
|
+
function trackFileModification(system, filePath, _tool) {
|
|
64
|
+
// Get cached session
|
|
65
|
+
const session = getCachedSession();
|
|
66
|
+
if (!session?.activeTaskId)
|
|
67
|
+
return;
|
|
68
|
+
// Fire and forget - don't await
|
|
69
|
+
getCloud()
|
|
70
|
+
.then(async (cloud) => {
|
|
71
|
+
const task = await cloud.turso.getItem(session.activeTaskId);
|
|
72
|
+
if (task) {
|
|
73
|
+
const content = task.content;
|
|
74
|
+
const files = content.files || [];
|
|
75
|
+
if (!files.includes(filePath)) {
|
|
76
|
+
await cloud.updateProgress(session.activeTaskId, {
|
|
77
|
+
files: [...files, filePath]
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
})
|
|
82
|
+
.catch(() => {
|
|
83
|
+
// Silently ignore - tracking is optional
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Update session activity without blocking
|
|
88
|
+
*/
|
|
89
|
+
function updateSessionActivity() {
|
|
90
|
+
const session = getCachedSession();
|
|
91
|
+
if (!session?.sessionId)
|
|
92
|
+
return;
|
|
93
|
+
// Fire and forget
|
|
94
|
+
getUpstash()
|
|
95
|
+
.then(upstash => upstash.updateSessionActivity(session.sessionId))
|
|
96
|
+
.catch(() => {
|
|
97
|
+
// Silently ignore
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
// =============================================================================
|
|
101
|
+
// Session Initialization (Cached)
|
|
102
|
+
// =============================================================================
|
|
103
|
+
/**
|
|
104
|
+
* Initialize or refresh session cache
|
|
105
|
+
* Only makes network call if cache is empty/expired
|
|
106
|
+
*/
|
|
107
|
+
async function ensureSession(system) {
|
|
108
|
+
// Check cache first
|
|
109
|
+
const cached = getCachedSession();
|
|
110
|
+
if (cached && cached.system === system) {
|
|
111
|
+
return; // Use cached session
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
const upstash = await getUpstash();
|
|
115
|
+
// Get active session with timeout
|
|
116
|
+
const { result: sessions, timedOut } = await withTimeout(() => upstash.getSystemSessions(system), 1500, // 1.5 second timeout
|
|
117
|
+
[]);
|
|
118
|
+
if (timedOut || sessions.length === 0) {
|
|
119
|
+
// No session found, create a local one
|
|
120
|
+
setCachedSession({
|
|
121
|
+
sessionId: `local_${Date.now()}`,
|
|
122
|
+
system,
|
|
123
|
+
ttl: 30 * 60 * 1000 // 30 minutes
|
|
124
|
+
});
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Find most recent active session
|
|
128
|
+
const fourHoursAgo = Date.now() - 4 * 60 * 60 * 1000;
|
|
129
|
+
const activeSession = sessions.find(s => {
|
|
130
|
+
const lastActivity = new Date(s.lastActivityAt).getTime();
|
|
131
|
+
return lastActivity > fourHoursAgo;
|
|
132
|
+
});
|
|
133
|
+
if (activeSession) {
|
|
134
|
+
setCachedSession({
|
|
135
|
+
sessionId: activeSession.sessionId,
|
|
136
|
+
system,
|
|
137
|
+
activeTaskId: activeSession.activeTaskId,
|
|
138
|
+
ttl: 30 * 60 * 1000
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
setCachedSession({
|
|
143
|
+
sessionId: `local_${Date.now()}`,
|
|
144
|
+
system,
|
|
145
|
+
ttl: 30 * 60 * 1000
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// Network error - use local session
|
|
151
|
+
setCachedSession({
|
|
152
|
+
sessionId: `local_${Date.now()}`,
|
|
153
|
+
system,
|
|
154
|
+
ttl: 30 * 60 * 1000
|
|
155
|
+
});
|
|
29
156
|
}
|
|
30
|
-
return 'UNKNOWN';
|
|
31
157
|
}
|
|
32
158
|
// =============================================================================
|
|
33
|
-
// Hook Implementation
|
|
159
|
+
// Main Hook Implementation
|
|
34
160
|
// =============================================================================
|
|
35
161
|
export async function onPreToolUse(event) {
|
|
36
162
|
const { tool, params, cwd } = event;
|
|
37
|
-
|
|
163
|
+
const start = Date.now();
|
|
164
|
+
// Always allow these tools immediately (no processing)
|
|
38
165
|
if (ALWAYS_ALLOWED.includes(tool)) {
|
|
39
|
-
return { proceed: true };
|
|
166
|
+
return { success: true, proceed: true, took: Date.now() - start };
|
|
167
|
+
}
|
|
168
|
+
// Load configuration
|
|
169
|
+
const hookConfig = loadHookConfig(cwd);
|
|
170
|
+
// Check if hooks are disabled for this project
|
|
171
|
+
if (!hookConfig.enabled) {
|
|
172
|
+
return { success: true, proceed: true, took: Date.now() - start };
|
|
40
173
|
}
|
|
41
|
-
//
|
|
174
|
+
// Load environment variables (local operation)
|
|
42
175
|
const envPaths = [
|
|
43
176
|
resolve(cwd, '.env'),
|
|
177
|
+
resolve(cwd, '.env.local'),
|
|
44
178
|
resolve(cwd, '../.env'),
|
|
45
179
|
resolve(cwd, '../../.env')
|
|
46
180
|
];
|
|
47
181
|
for (const envPath of envPaths) {
|
|
48
182
|
config({ path: envPath });
|
|
49
183
|
}
|
|
50
|
-
// Si no es un tool que trackeamos, proceder
|
|
51
|
-
if (!TRACKED_TOOLS.includes(tool)) {
|
|
52
|
-
return { proceed: true };
|
|
53
|
-
}
|
|
54
184
|
const system = detectSystem(cwd);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const fourHoursAgo = new Date(Date.now() - 4 * 60 * 60 * 1000);
|
|
62
|
-
return lastActivity > fourHoursAgo;
|
|
63
|
-
});
|
|
64
|
-
if (!activeSession) {
|
|
65
|
-
// No hay sesión activa, advertir pero permitir
|
|
66
|
-
return {
|
|
67
|
-
proceed: true,
|
|
68
|
-
warning: `⚠️ No hay sesión de trabajo activa.
|
|
69
|
-
|
|
70
|
-
Para tracking completo, inicia una sesión:
|
|
71
|
-
\`\`\`
|
|
72
|
-
Tarea: [descripción]
|
|
73
|
-
Plan:
|
|
74
|
-
1. [paso 1]
|
|
75
|
-
2. [paso 2]
|
|
76
|
-
\`\`\`
|
|
77
|
-
|
|
78
|
-
Continuando sin tracking...`
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
// Verificar si hay tarea activa
|
|
82
|
-
const activeTasks = await cloud.turso.getActiveTasks(system);
|
|
83
|
-
if (activeTasks.length === 0 && tool !== 'Task') {
|
|
84
|
-
// No hay tarea activa, advertir pero permitir
|
|
85
|
-
return {
|
|
86
|
-
proceed: true,
|
|
87
|
-
warning: `⚠️ No hay tarea registrada.
|
|
88
|
-
|
|
89
|
-
Registra la tarea antes de continuar:
|
|
90
|
-
\`\`\`
|
|
91
|
-
Tarea: [qué estás haciendo]
|
|
92
|
-
Plan:
|
|
93
|
-
1. [paso 1]
|
|
94
|
-
2. [paso 2]
|
|
95
|
-
\`\`\`
|
|
96
|
-
|
|
97
|
-
Esto permite continuidad si se cierra la sesión.`
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
// Hay sesión y tarea, actualizar actividad
|
|
101
|
-
if (activeSession.activeTaskId) {
|
|
185
|
+
// Only track if feature is enabled
|
|
186
|
+
if (hookConfig.features.sessionTracking && TRACKABLE_TOOLS.includes(tool)) {
|
|
187
|
+
// Initialize session (cached, non-blocking after first call)
|
|
188
|
+
await ensureSession(system);
|
|
189
|
+
// Track file modifications (fire-and-forget)
|
|
190
|
+
if (hookConfig.features.fileTracking) {
|
|
102
191
|
const filePath = params.file_path;
|
|
103
192
|
if (filePath && (tool === 'Edit' || tool === 'Write')) {
|
|
104
|
-
|
|
105
|
-
const task = await cloud.turso.getItem(activeSession.activeTaskId);
|
|
106
|
-
if (task) {
|
|
107
|
-
const content = task.content;
|
|
108
|
-
const files = content.files || [];
|
|
109
|
-
if (!files.includes(filePath)) {
|
|
110
|
-
await cloud.updateProgress(activeSession.activeTaskId, {
|
|
111
|
-
files: [...files, filePath]
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
}
|
|
193
|
+
trackFileModification(system, filePath, tool);
|
|
115
194
|
}
|
|
116
195
|
}
|
|
117
|
-
//
|
|
118
|
-
|
|
119
|
-
return { proceed: true };
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
// Si falla la conexión, continuar sin tracking
|
|
123
|
-
console.error('[cloud-pre-tool-use] Error:', error);
|
|
124
|
-
return { proceed: true };
|
|
196
|
+
// Update session activity (fire-and-forget)
|
|
197
|
+
updateSessionActivity();
|
|
125
198
|
}
|
|
199
|
+
return {
|
|
200
|
+
success: true,
|
|
201
|
+
proceed: true,
|
|
202
|
+
took: Date.now() - start
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
// =============================================================================
|
|
206
|
+
// Export Safe Wrapped Version
|
|
207
|
+
// =============================================================================
|
|
208
|
+
export const safeOnPreToolUse = safeHook((event) => onPreToolUse(event), { timeout: 2000, hookType: 'PreToolUse' });
|
|
209
|
+
// =============================================================================
|
|
210
|
+
// Stdin Reader for Claude Code Hooks
|
|
211
|
+
// =============================================================================
|
|
212
|
+
async function readStdin() {
|
|
213
|
+
return new Promise((resolve) => {
|
|
214
|
+
let data = '';
|
|
215
|
+
const timeout = setTimeout(() => {
|
|
216
|
+
process.stdin.removeAllListeners();
|
|
217
|
+
resolve('');
|
|
218
|
+
}, 100);
|
|
219
|
+
process.stdin.setEncoding('utf8');
|
|
220
|
+
process.stdin.on('data', (chunk) => {
|
|
221
|
+
clearTimeout(timeout);
|
|
222
|
+
data += chunk;
|
|
223
|
+
});
|
|
224
|
+
process.stdin.on('end', () => {
|
|
225
|
+
clearTimeout(timeout);
|
|
226
|
+
resolve(data);
|
|
227
|
+
});
|
|
228
|
+
process.stdin.on('error', () => {
|
|
229
|
+
clearTimeout(timeout);
|
|
230
|
+
resolve('');
|
|
231
|
+
});
|
|
232
|
+
if (process.stdin.isTTY) {
|
|
233
|
+
clearTimeout(timeout);
|
|
234
|
+
resolve('');
|
|
235
|
+
}
|
|
236
|
+
});
|
|
126
237
|
}
|
|
127
238
|
// =============================================================================
|
|
128
239
|
// CLI Entry Point
|
|
129
240
|
// =============================================================================
|
|
130
241
|
if (process.argv[1]?.includes('cloud-pre-tool-use')) {
|
|
131
|
-
// Leer evento desde stdin o args
|
|
132
|
-
const tool = process.argv[2] || 'Unknown';
|
|
133
242
|
const cwd = process.cwd();
|
|
134
|
-
|
|
135
|
-
.then(
|
|
243
|
+
readStdin()
|
|
244
|
+
.then(async (stdinData) => {
|
|
245
|
+
let event;
|
|
246
|
+
if (stdinData.trim()) {
|
|
247
|
+
try {
|
|
248
|
+
const parsed = JSON.parse(stdinData);
|
|
249
|
+
event = {
|
|
250
|
+
tool: parsed.tool_name || parsed.tool || 'Unknown',
|
|
251
|
+
params: parsed.tool_input || parsed.params || {},
|
|
252
|
+
cwd,
|
|
253
|
+
sessionId: parsed.sessionId
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
event = { tool: process.argv[2] || 'Unknown', params: {}, cwd };
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
else {
|
|
261
|
+
event = { tool: process.argv[2] || 'Unknown', params: {}, cwd };
|
|
262
|
+
}
|
|
263
|
+
const result = await safeOnPreToolUse(event);
|
|
136
264
|
if (result.warning) {
|
|
137
265
|
console.log(result.warning);
|
|
138
266
|
}
|
|
139
|
-
if (
|
|
140
|
-
console.
|
|
141
|
-
process.exit(1);
|
|
267
|
+
if (result.error) {
|
|
268
|
+
console.error(`[Hook Error]: ${result.error}`);
|
|
142
269
|
}
|
|
270
|
+
process.exit(0);
|
|
143
271
|
})
|
|
144
|
-
.catch(
|
|
145
|
-
|
|
272
|
+
.catch(() => {
|
|
273
|
+
process.exit(0);
|
|
146
274
|
});
|
|
147
275
|
}
|
|
148
276
|
export default onPreToolUse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-pre-tool-use.js","sourceRoot":"","sources":["../../src/hooks/cloud-pre-tool-use.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cloud-pre-tool-use.js","sourceRoot":"","sources":["../../src/hooks/cloud-pre-tool-use.ts"],"names":[],"mappings":"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"}
|
|
@@ -245,11 +245,11 @@ async function warmupEmbeddingCache(system) {
|
|
|
245
245
|
const db = turso.getClient();
|
|
246
246
|
// Get top 50 memories by access count and feedback score
|
|
247
247
|
const result = await db.execute({
|
|
248
|
-
sql: `SELECT id, content FROM items
|
|
249
|
-
WHERE system = ? AND type = 'memory' AND status = 'active'
|
|
250
|
-
ORDER BY
|
|
251
|
-
COALESCE(json_extract(content, '$.accessCount'), 0) DESC,
|
|
252
|
-
COALESCE(json_extract(content, '$.feedbackScore'), 0.5) DESC
|
|
248
|
+
sql: `SELECT id, content FROM items
|
|
249
|
+
WHERE system = ? AND type = 'memory' AND status = 'active'
|
|
250
|
+
ORDER BY
|
|
251
|
+
COALESCE(json_extract(content, '$.accessCount'), 0) DESC,
|
|
252
|
+
COALESCE(json_extract(content, '$.feedbackScore'), 0.5) DESC
|
|
253
253
|
LIMIT 50`,
|
|
254
254
|
args: [system]
|
|
255
255
|
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Fast Session Start Hook v1.0.0
|
|
3
|
+
* @description Optimized session start with <500ms latency target
|
|
4
|
+
*
|
|
5
|
+
* ## Performance Strategy
|
|
6
|
+
*
|
|
7
|
+
* 1. **Immediate Output**: Return minimal context within 100ms
|
|
8
|
+
* 2. **Lazy Initialization**: Cloud/DB init happens in background
|
|
9
|
+
* 3. **Cached Checks**: Skip expensive checks if recently passed
|
|
10
|
+
* 4. **Two-Phase Loading**: Basic → Enhanced context
|
|
11
|
+
*
|
|
12
|
+
* ## Optimization Techniques
|
|
13
|
+
*
|
|
14
|
+
* - Worker health check: Cached for 5 minutes
|
|
15
|
+
* - Install check: Cached via version marker file
|
|
16
|
+
* - Context injection: Immediate minimal, enhanced async
|
|
17
|
+
* - Git detection: Skipped if no .git directory
|
|
18
|
+
*
|
|
19
|
+
* @version 1.0.0
|
|
20
|
+
*/
|
|
21
|
+
declare function runFastSessionStart(): Promise<void>;
|
|
22
|
+
export { runFastSessionStart };
|
|
23
|
+
export default runFastSessionStart;
|
|
24
|
+
//# sourceMappingURL=fast-session-start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fast-session-start.d.ts","sourceRoot":"","sources":["../../src/hooks/fast-session-start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAkVH,iBAAe,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoClD;AA2CD,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAC9B,eAAe,mBAAmB,CAAA"}
|