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.
Files changed (139) hide show
  1. package/README.md +399 -633
  2. package/dist/analytics/CrossProjectAnalytics.js +65 -65
  3. package/dist/cli/index.js +255 -12
  4. package/dist/cli/index.js.map +1 -1
  5. package/dist/dashboard/tokens.js +173 -173
  6. package/dist/db/cloud.d.ts +1 -0
  7. package/dist/db/cloud.d.ts.map +1 -1
  8. package/dist/db/migrations.js +256 -256
  9. package/dist/db/turso-client.js +2 -2
  10. package/dist/db/upstash-client.d.ts +9 -0
  11. package/dist/db/upstash-client.d.ts.map +1 -1
  12. package/dist/db/upstash-client.js +11 -0
  13. package/dist/db/upstash-client.js.map +1 -1
  14. package/dist/eslint/rules/no-async-useeffect.js +6 -6
  15. package/dist/experts/ExpertVotePersistence.js +9 -9
  16. package/dist/hooks/auto-learning-hook.d.ts +48 -0
  17. package/dist/hooks/auto-learning-hook.d.ts.map +1 -0
  18. package/dist/hooks/auto-learning-hook.js +258 -0
  19. package/dist/hooks/auto-learning-hook.js.map +1 -0
  20. package/dist/hooks/cloud-post-tool-use.d.ts.map +1 -1
  21. package/dist/hooks/cloud-post-tool-use.js +72 -10
  22. package/dist/hooks/cloud-post-tool-use.js.map +1 -1
  23. package/dist/hooks/cloud-pre-tool-use.d.ts +12 -9
  24. package/dist/hooks/cloud-pre-tool-use.d.ts.map +1 -1
  25. package/dist/hooks/cloud-pre-tool-use.js +227 -99
  26. package/dist/hooks/cloud-pre-tool-use.js.map +1 -1
  27. package/dist/hooks/cloud-session-start.js +5 -5
  28. package/dist/hooks/fast-session-start.d.ts +24 -0
  29. package/dist/hooks/fast-session-start.d.ts.map +1 -0
  30. package/dist/hooks/fast-session-start.js +354 -0
  31. package/dist/hooks/fast-session-start.js.map +1 -0
  32. package/dist/hooks/resilient-hook-runner.d.ts +78 -0
  33. package/dist/hooks/resilient-hook-runner.d.ts.map +1 -0
  34. package/dist/hooks/resilient-hook-runner.js +201 -0
  35. package/dist/hooks/resilient-hook-runner.js.map +1 -0
  36. package/dist/hooks/session-end.js +14 -14
  37. package/dist/index.d.ts +12 -0
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +17 -0
  40. package/dist/index.js.map +1 -1
  41. package/dist/patterns/registry.js +90 -90
  42. package/dist/schema/codewiki-types.d.ts +10 -10
  43. package/dist/schema/docs-types.d.ts +8 -8
  44. package/dist/schema/ecosystem-types.d.ts +12 -12
  45. package/dist/services/BootstrapService.d.ts +123 -0
  46. package/dist/services/BootstrapService.d.ts.map +1 -0
  47. package/dist/services/BootstrapService.js +309 -0
  48. package/dist/services/BootstrapService.js.map +1 -0
  49. package/dist/services/CodeWikiIndexer.js +3 -3
  50. package/dist/services/ContextGenerator.js +7 -7
  51. package/dist/services/FeedbackCollector.js +11 -11
  52. package/dist/services/GitIntegration.js +9 -9
  53. package/dist/services/HookVerifier.js +70 -70
  54. package/dist/services/KnowledgeGapDetector.d.ts +122 -0
  55. package/dist/services/KnowledgeGapDetector.d.ts.map +1 -0
  56. package/dist/services/KnowledgeGapDetector.js +530 -0
  57. package/dist/services/KnowledgeGapDetector.js.map +1 -0
  58. package/dist/services/ProjectScaffold.d.ts.map +1 -1
  59. package/dist/services/ProjectScaffold.js +79 -78
  60. package/dist/services/ProjectScaffold.js.map +1 -1
  61. package/dist/services/auto-evolution-trigger.d.ts +101 -0
  62. package/dist/services/auto-evolution-trigger.d.ts.map +1 -0
  63. package/dist/services/auto-evolution-trigger.js +359 -0
  64. package/dist/services/auto-evolution-trigger.js.map +1 -0
  65. package/dist/services/cloud-memory-service.d.ts +101 -0
  66. package/dist/services/cloud-memory-service.d.ts.map +1 -0
  67. package/dist/services/cloud-memory-service.js +363 -0
  68. package/dist/services/cloud-memory-service.js.map +1 -0
  69. package/dist/services/index.d.ts +4 -0
  70. package/dist/services/index.d.ts.map +1 -1
  71. package/dist/services/index.js +6 -0
  72. package/dist/services/index.js.map +1 -1
  73. package/dist/services/knowledge-graph.d.ts +121 -0
  74. package/dist/services/knowledge-graph.d.ts.map +1 -0
  75. package/dist/services/knowledge-graph.js +446 -0
  76. package/dist/services/knowledge-graph.js.map +1 -0
  77. package/dist/services/memory-keeper-client.d.ts +106 -0
  78. package/dist/services/memory-keeper-client.d.ts.map +1 -0
  79. package/dist/services/memory-keeper-client.js +319 -0
  80. package/dist/services/memory-keeper-client.js.map +1 -0
  81. package/dist/services/memory-router.d.ts +25 -0
  82. package/dist/services/memory-router.d.ts.map +1 -1
  83. package/dist/services/memory-router.js +236 -98
  84. package/dist/services/memory-router.js.map +1 -1
  85. package/dist/services/pattern-learning.d.ts +79 -0
  86. package/dist/services/pattern-learning.d.ts.map +1 -0
  87. package/dist/services/pattern-learning.js +312 -0
  88. package/dist/services/pattern-learning.js.map +1 -0
  89. package/dist/services/pattern-tracker.js +95 -95
  90. package/dist/services/semantic-search.js +2 -2
  91. package/dist/services/skill-learning-bridge.d.ts +100 -0
  92. package/dist/services/skill-learning-bridge.d.ts.map +1 -0
  93. package/dist/services/skill-learning-bridge.js +331 -0
  94. package/dist/services/skill-learning-bridge.js.map +1 -0
  95. package/dist/services/unified-memory-router.d.ts +123 -0
  96. package/dist/services/unified-memory-router.d.ts.map +1 -0
  97. package/dist/services/unified-memory-router.js +555 -0
  98. package/dist/services/unified-memory-router.js.map +1 -0
  99. package/package.json +124 -116
  100. package/standards/README.md +94 -50
  101. package/standards/experts/expert-routing.md +215 -215
  102. package/standards/general/code-quality.md +86 -86
  103. package/standards/general/ecosystem.md +243 -0
  104. package/standards/general/learning-loop.md +192 -0
  105. package/standards/general/memory-usage.md +205 -205
  106. package/standards/general/project-onboarding.md +339 -0
  107. package/standards/general/sync-workflow.md +235 -235
  108. package/standards/general/workflow.md +82 -82
  109. package/standards/hooks/mandatory-tracking.md +446 -446
  110. package/standards/infrastructure/cloud-database.md +287 -287
  111. package/standards/mcp/server-design.md +243 -243
  112. package/standards/mcp/tool-patterns.md +354 -354
  113. package/standards/skills/skill-structure.md +286 -286
  114. package/standards/skills/workflow-design.md +323 -323
  115. package/standards/tools/tool-design.md +297 -297
  116. package/templates/agents/architecture-expert.md +61 -61
  117. package/templates/agents/database-expert.md +62 -62
  118. package/templates/agents/documentation-expert.md +57 -57
  119. package/templates/agents/ecosystem-expert.md +104 -0
  120. package/templates/agents/memory-expert.md +88 -88
  121. package/templates/agents/performance-expert.md +61 -61
  122. package/templates/agents/security-expert.md +59 -59
  123. package/templates/agents/ux-expert.md +63 -63
  124. package/templates/agents/worker.md +75 -75
  125. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
  126. package/templates/claude-settings.json +72 -72
  127. package/templates/commands/experts.md +138 -138
  128. package/templates/hooks/README.md +158 -158
  129. package/templates/hooks/project.config.json.template +77 -77
  130. package/templates/hooks/settings.local.json.template +57 -57
  131. package/templates/hooks.config.json +21 -0
  132. package/templates/memory-config.json +56 -56
  133. package/templates/memory-config.schema.json +212 -212
  134. package/templates/settings.json +58 -58
  135. package/templates/skills/continue.md +205 -205
  136. package/templates/workflows/business-improvement.md +264 -264
  137. package/templates/workflows/expert-review.md +153 -153
  138. package/templates/workflows/internal-app.md +245 -245
  139. package/templates/workflows/sync-docs.md +187 -187
@@ -1,19 +1,22 @@
1
1
  /**
2
- * @file Cloud Pre-Tool-Use Hook
3
- * @description Hook que valida y trackea antes de usar herramientas
4
- * Verifica que hay tarea activa antes de editar código
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 interface PreToolUseResult {
13
- proceed: boolean;
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;;;;GAIG;AAWH,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;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAiCD,wBAAsB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqGpF;AA0BD,eAAe,YAAY,CAAA"}
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 Hook que valida y trackea antes de usar herramientas
4
- * Verifica que hay tarea activa antes de editar código
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 { cloud } from '../db/cloud.js';
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 que requieren tarea activa
14
- const TRACKED_TOOLS = ['Edit', 'Write', 'Task'];
15
- // Tools que siempre proceden
16
- const ALWAYS_ALLOWED = ['Read', 'Glob', 'Grep', 'Bash', 'WebSearch', 'WebFetch'];
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
- if (cwd.includes('swarmscale') || cwd.includes('SwarmScale')) {
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
- if (cwd.includes('easycharter') || cwd.includes('charter')) {
25
- return 'CHARTER';
48
+ return cloudModule.cloud;
49
+ }
50
+ async function getUpstash() {
51
+ if (!upstashModule) {
52
+ upstashModule = await import('../db/upstash-client.js');
26
53
  }
27
- if (cwd.includes('carlosmartinpavon')) {
28
- return 'CMP';
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
- // Tools que siempre proceden
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
- // Cargar .env
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
- try {
56
- // Buscar sesión activa en Redis
57
- const sessions = await upstash.getSystemSessions(system);
58
- const activeSession = sessions.find(s => {
59
- // Sesión de las últimas 4 horas
60
- const lastActivity = new Date(s.lastActivityAt);
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
- // Actualizar archivos modificados en la tarea
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
- // Actualizar actividad de sesión
118
- await upstash.updateSessionActivity(activeSession.sessionId);
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
- onPreToolUse({ tool, params: {}, cwd })
135
- .then(result => {
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 (!result.proceed) {
140
- console.log(result.message);
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(error => {
145
- console.error('Error:', error.message);
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":"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"}
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"}