cmp-standards 2.0.1 → 2.6.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.
Files changed (167) hide show
  1. package/README.md +633 -541
  2. package/dist/cli/index.js +239 -7
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/dashboard/server.d.ts.map +1 -1
  5. package/dist/dashboard/server.js +203 -39
  6. package/dist/dashboard/server.js.map +1 -1
  7. package/dist/db/cloud.d.ts +174 -0
  8. package/dist/db/cloud.d.ts.map +1 -0
  9. package/dist/db/cloud.js +241 -0
  10. package/dist/db/cloud.js.map +1 -0
  11. package/dist/db/drizzle-client.d.ts +3 -3
  12. package/dist/db/drizzle-client.d.ts.map +1 -1
  13. package/dist/db/drizzle-client.js +57 -58
  14. package/dist/db/drizzle-client.js.map +1 -1
  15. package/dist/db/errors.d.ts +76 -0
  16. package/dist/db/errors.d.ts.map +1 -0
  17. package/dist/db/errors.js +135 -0
  18. package/dist/db/errors.js.map +1 -0
  19. package/dist/db/turso-client.d.ts +178 -0
  20. package/dist/db/turso-client.d.ts.map +1 -0
  21. package/dist/db/turso-client.js +455 -0
  22. package/dist/db/turso-client.js.map +1 -0
  23. package/dist/db/upstash-client.d.ts +161 -0
  24. package/dist/db/upstash-client.d.ts.map +1 -0
  25. package/dist/db/upstash-client.js +325 -0
  26. package/dist/db/upstash-client.js.map +1 -0
  27. package/dist/eslint/rules/no-async-useeffect.js +6 -6
  28. package/dist/hooks/cloud-post-tool-use.d.ts +30 -0
  29. package/dist/hooks/cloud-post-tool-use.d.ts.map +1 -0
  30. package/dist/hooks/cloud-post-tool-use.js +116 -0
  31. package/dist/hooks/cloud-post-tool-use.js.map +1 -0
  32. package/dist/hooks/cloud-pre-tool-use.d.ts +19 -0
  33. package/dist/hooks/cloud-pre-tool-use.d.ts.map +1 -0
  34. package/dist/hooks/cloud-pre-tool-use.js +149 -0
  35. package/dist/hooks/cloud-pre-tool-use.js.map +1 -0
  36. package/dist/hooks/cloud-session-start.d.ts +32 -0
  37. package/dist/hooks/cloud-session-start.d.ts.map +1 -0
  38. package/dist/hooks/cloud-session-start.js +257 -0
  39. package/dist/hooks/cloud-session-start.js.map +1 -0
  40. package/dist/hooks/index.d.ts +3 -0
  41. package/dist/hooks/index.d.ts.map +1 -1
  42. package/dist/hooks/index.js +5 -0
  43. package/dist/hooks/index.js.map +1 -1
  44. package/dist/hooks/memory-checkpoint.d.ts.map +1 -1
  45. package/dist/hooks/memory-checkpoint.js +12 -20
  46. package/dist/hooks/memory-checkpoint.js.map +1 -1
  47. package/dist/hooks/pre-tool-use.d.ts +2 -8
  48. package/dist/hooks/pre-tool-use.d.ts.map +1 -1
  49. package/dist/hooks/pre-tool-use.js +7 -106
  50. package/dist/hooks/pre-tool-use.js.map +1 -1
  51. package/dist/hooks/session-start.d.ts +2 -1
  52. package/dist/hooks/session-start.d.ts.map +1 -1
  53. package/dist/hooks/session-start.js +111 -77
  54. package/dist/hooks/session-start.js.map +1 -1
  55. package/dist/index.d.ts +14 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +18 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/mcp/server.d.ts.map +1 -1
  60. package/dist/mcp/server.js +225 -2
  61. package/dist/mcp/server.js.map +1 -1
  62. package/dist/schema/plans.d.ts +194 -0
  63. package/dist/schema/plans.d.ts.map +1 -0
  64. package/dist/schema/plans.js +180 -0
  65. package/dist/schema/plans.js.map +1 -0
  66. package/dist/schema/tracking.d.ts +644 -0
  67. package/dist/schema/tracking.d.ts.map +1 -0
  68. package/dist/schema/tracking.js +204 -0
  69. package/dist/schema/tracking.js.map +1 -0
  70. package/dist/services/ContextGenerator.d.ts +16 -0
  71. package/dist/services/ContextGenerator.d.ts.map +1 -0
  72. package/dist/services/ContextGenerator.js +62 -0
  73. package/dist/services/ContextGenerator.js.map +1 -0
  74. package/dist/services/PlanManager.d.ts +99 -0
  75. package/dist/services/PlanManager.d.ts.map +1 -0
  76. package/dist/services/PlanManager.js +372 -0
  77. package/dist/services/PlanManager.js.map +1 -0
  78. package/dist/services/ProjectScaffold.d.ts.map +1 -1
  79. package/dist/services/ProjectScaffold.js +109 -81
  80. package/dist/services/ProjectScaffold.js.map +1 -1
  81. package/dist/services/TaskTracker.d.ts +1 -1
  82. package/dist/services/TaskTracker.d.ts.map +1 -1
  83. package/dist/services/TaskTracker.js +4 -8
  84. package/dist/services/TaskTracker.js.map +1 -1
  85. package/dist/services/WorkPlanManager.d.ts +1 -1
  86. package/dist/services/WorkPlanManager.d.ts.map +1 -1
  87. package/dist/services/WorkPlanManager.js +8 -14
  88. package/dist/services/WorkPlanManager.js.map +1 -1
  89. package/dist/services/auto-inject.d.ts +1 -0
  90. package/dist/services/auto-inject.d.ts.map +1 -1
  91. package/dist/services/auto-inject.js +12 -17
  92. package/dist/services/auto-inject.js.map +1 -1
  93. package/dist/services/context-injector.d.ts +105 -0
  94. package/dist/services/context-injector.d.ts.map +1 -0
  95. package/dist/services/context-injector.js +357 -0
  96. package/dist/services/context-injector.js.map +1 -0
  97. package/dist/services/cross-project-sync.d.ts +2 -0
  98. package/dist/services/cross-project-sync.d.ts.map +1 -1
  99. package/dist/services/cross-project-sync.js +26 -21
  100. package/dist/services/cross-project-sync.js.map +1 -1
  101. package/dist/services/index.d.ts +15 -15
  102. package/dist/services/index.d.ts.map +1 -1
  103. package/dist/services/index.js +18 -20
  104. package/dist/services/index.js.map +1 -1
  105. package/dist/services/memory-consolidation.d.ts.map +1 -1
  106. package/dist/services/memory-consolidation.js +30 -27
  107. package/dist/services/memory-consolidation.js.map +1 -1
  108. package/dist/services/memory-router.d.ts +98 -0
  109. package/dist/services/memory-router.d.ts.map +1 -0
  110. package/dist/services/memory-router.js +373 -0
  111. package/dist/services/memory-router.js.map +1 -0
  112. package/dist/services/pattern-tracker.d.ts +93 -0
  113. package/dist/services/pattern-tracker.d.ts.map +1 -0
  114. package/dist/services/pattern-tracker.js +347 -0
  115. package/dist/services/pattern-tracker.js.map +1 -0
  116. package/dist/services/semantic-search.d.ts +33 -35
  117. package/dist/services/semantic-search.d.ts.map +1 -1
  118. package/dist/services/semantic-search.js +207 -165
  119. package/dist/services/semantic-search.js.map +1 -1
  120. package/dist/utils/env-loader.d.ts +41 -0
  121. package/dist/utils/env-loader.d.ts.map +1 -0
  122. package/dist/utils/env-loader.js +78 -0
  123. package/dist/utils/env-loader.js.map +1 -0
  124. package/dist/utils/git.d.ts +52 -0
  125. package/dist/utils/git.d.ts.map +1 -0
  126. package/dist/utils/git.js +267 -0
  127. package/dist/utils/git.js.map +1 -0
  128. package/dist/utils/paths.d.ts +39 -5
  129. package/dist/utils/paths.d.ts.map +1 -1
  130. package/dist/utils/paths.js +88 -7
  131. package/dist/utils/paths.js.map +1 -1
  132. package/package.json +100 -94
  133. package/standards/README.md +50 -0
  134. package/standards/experts/expert-routing.md +215 -0
  135. package/standards/general/code-quality.md +86 -0
  136. package/standards/general/memory-usage.md +205 -0
  137. package/standards/general/sync-workflow.md +235 -0
  138. package/standards/general/workflow.md +82 -0
  139. package/standards/hooks/mandatory-tracking.md +446 -0
  140. package/standards/infrastructure/cloud-database.md +287 -0
  141. package/standards/mcp/server-design.md +243 -0
  142. package/standards/mcp/tool-patterns.md +354 -0
  143. package/standards/skills/skill-structure.md +286 -0
  144. package/standards/skills/workflow-design.md +323 -0
  145. package/standards/tools/tool-design.md +297 -0
  146. package/templates/agents/architecture-expert.md +61 -61
  147. package/templates/agents/database-expert.md +62 -62
  148. package/templates/agents/documentation-expert.md +57 -57
  149. package/templates/agents/memory-expert.md +88 -88
  150. package/templates/agents/performance-expert.md +61 -61
  151. package/templates/agents/security-expert.md +59 -59
  152. package/templates/agents/ux-expert.md +63 -63
  153. package/templates/agents/worker.md +75 -75
  154. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
  155. package/templates/claude-settings.json +72 -0
  156. package/templates/commands/experts.md +138 -138
  157. package/templates/hooks/README.md +158 -158
  158. package/templates/hooks/project.config.json.template +77 -77
  159. package/templates/hooks/settings.local.json.template +57 -57
  160. package/templates/memory-config.json +56 -82
  161. package/templates/memory-config.schema.json +212 -212
  162. package/templates/settings.json +58 -58
  163. package/templates/skills/continue.md +205 -0
  164. package/templates/workflows/business-improvement.md +264 -264
  165. package/templates/workflows/expert-review.md +153 -153
  166. package/templates/workflows/internal-app.md +245 -245
  167. package/templates/workflows/sync-docs.md +187 -187
@@ -0,0 +1,372 @@
1
+ /**
2
+ * @file PlanManager Service
3
+ * @description Gestiona planes de trabajo con checkpoints para continuidad multi-agente.
4
+ *
5
+ * Características:
6
+ * - Detección de planes similares al iniciar sesión
7
+ * - Checkpoints incrementales para save points
8
+ * - Soporte para merge de planes
9
+ * - Historial navegable
10
+ *
11
+ * @version 1.0.0
12
+ */
13
+ import { createDrizzleClient } from '../db/drizzle-client.js';
14
+ import { PlanSchema, PlanCheckpointSchema, createPlan, createCheckpoint, extractKeywords, calculateKeywordSimilarity, } from '../schema/plans.js';
15
+ // =============================================================================
16
+ // PLAN MANAGER SERVICE
17
+ // =============================================================================
18
+ export class PlanManager {
19
+ client;
20
+ system;
21
+ currentSessionId;
22
+ agentId;
23
+ constructor(system, options) {
24
+ this.system = system;
25
+ this.client = createDrizzleClient(system);
26
+ this.currentSessionId = options?.sessionId || `session_${Date.now()}`;
27
+ this.agentId = options?.agentId || 'claude';
28
+ }
29
+ // ===========================================================================
30
+ // PLAN LIFECYCLE
31
+ // ===========================================================================
32
+ /**
33
+ * Crear un nuevo plan
34
+ */
35
+ async create(options) {
36
+ const now = new Date().toISOString();
37
+ const planData = createPlan({
38
+ ...options,
39
+ system: this.system,
40
+ createdBy: this.agentId,
41
+ });
42
+ const result = await this.client.create({
43
+ type: 'plan',
44
+ status: 'active',
45
+ priority: 'high',
46
+ content: planData,
47
+ tags: ['plan', 'active', ...(options.domain ? [options.domain] : [])],
48
+ });
49
+ const plan = {
50
+ ...planData,
51
+ id: result.id,
52
+ createdAt: now,
53
+ updatedAt: now,
54
+ };
55
+ // Crear checkpoint inicial
56
+ await this.addCheckpoint(plan.id, {
57
+ checkpointType: 'progress',
58
+ summary: `Plan creado: ${options.title}`,
59
+ nextSteps: options.description ? [options.description] : [],
60
+ });
61
+ return plan;
62
+ }
63
+ /**
64
+ * Obtener plan por ID con validación Zod
65
+ */
66
+ async get(planId) {
67
+ const item = await this.client.get(planId);
68
+ if (!item || item.type !== 'plan')
69
+ return null;
70
+ // Validate schema before returning
71
+ const parseResult = PlanSchema.safeParse({
72
+ ...item.content,
73
+ id: item.id,
74
+ });
75
+ if (!parseResult.success) {
76
+ console.error('[PlanManager] Invalid plan schema:', parseResult.error.message);
77
+ return null;
78
+ }
79
+ return parseResult.data;
80
+ }
81
+ /**
82
+ * Obtener todos los planes activos
83
+ */
84
+ async getActive() {
85
+ const items = await this.client.list({
86
+ type: 'plan',
87
+ status: 'active',
88
+ limit: 20,
89
+ });
90
+ return items.map(item => ({
91
+ ...item.content,
92
+ id: item.id,
93
+ }));
94
+ }
95
+ /**
96
+ * Buscar planes similares a un prompt (optimizado para evitar N+1 queries)
97
+ */
98
+ async findSimilar(options) {
99
+ const { prompt, domain, limit = 5, minSimilarity = 0.2 } = options;
100
+ const promptKeywords = extractKeywords(prompt);
101
+ // Batch query: obtener planes Y checkpoints en paralelo
102
+ const [planItems, checkpointItems] = await Promise.all([
103
+ this.client.list({ type: 'plan', limit: 50 }),
104
+ this.client.list({ type: 'plan_checkpoint', limit: 500 }),
105
+ ]);
106
+ // Pre-compute checkpoint counts por planId (O(n) en lugar de O(n*m))
107
+ const checkpointCounts = new Map();
108
+ for (const item of checkpointItems) {
109
+ const content = item.content;
110
+ const planId = content.planId;
111
+ if (planId) {
112
+ checkpointCounts.set(planId, (checkpointCounts.get(planId) || 0) + 1);
113
+ }
114
+ }
115
+ const matches = [];
116
+ for (const item of planItems) {
117
+ const plan = item.content;
118
+ if (plan.status === 'completed' || plan.status === 'abandoned')
119
+ continue;
120
+ // Calcular similitud
121
+ const keywordSim = calculateKeywordSimilarity(promptKeywords, plan.keywords || []);
122
+ // Bonus por mismo dominio
123
+ const domainBonus = domain && plan.domain === domain ? 0.2 : 0;
124
+ // Bonus por actividad reciente (últimas 24h)
125
+ const lastUpdate = new Date(plan.updatedAt || plan.createdAt);
126
+ const hoursSinceUpdate = (Date.now() - lastUpdate.getTime()) / (1000 * 60 * 60);
127
+ const recencyBonus = hoursSinceUpdate < 24 ? 0.1 : hoursSinceUpdate < 72 ? 0.05 : 0;
128
+ const similarity = Math.min(1, keywordSim + domainBonus + recencyBonus);
129
+ if (similarity >= minSimilarity) {
130
+ matches.push({
131
+ planId: item.id,
132
+ title: plan.title,
133
+ similarity,
134
+ matchReason: domainBonus > 0 ? 'domain' : recencyBonus > 0 ? 'recent' : 'keyword',
135
+ lastActivity: plan.updatedAt || plan.createdAt,
136
+ checkpointCount: checkpointCounts.get(item.id) || 0, // O(1) lookup
137
+ status: plan.status,
138
+ });
139
+ }
140
+ }
141
+ // Ordenar por similitud descendente
142
+ return matches
143
+ .sort((a, b) => b.similarity - a.similarity)
144
+ .slice(0, limit);
145
+ }
146
+ /**
147
+ * Actualizar estado del plan
148
+ */
149
+ async updateStatus(planId, status) {
150
+ const item = await this.client.get(planId);
151
+ if (!item)
152
+ return;
153
+ const plan = item.content;
154
+ const now = new Date().toISOString();
155
+ await this.client.update(planId, {
156
+ status: status === 'active' ? 'active' : status === 'completed' ? 'done' : 'blocked',
157
+ content: {
158
+ ...plan,
159
+ status,
160
+ updatedAt: now,
161
+ ...(status === 'completed' ? { completedAt: now } : {}),
162
+ },
163
+ });
164
+ // Agregar checkpoint de estado
165
+ await this.addCheckpoint(planId, {
166
+ checkpointType: status === 'completed' ? 'complete' : 'progress',
167
+ summary: `Plan ${status === 'completed' ? 'completado' : status === 'paused' ? 'pausado' : 'actualizado'}`,
168
+ });
169
+ }
170
+ /**
171
+ * Mergear dos planes
172
+ */
173
+ async merge(targetPlanId, sourcePlanId) {
174
+ const [targetItem, sourceItem] = await Promise.all([
175
+ this.client.get(targetPlanId),
176
+ this.client.get(sourcePlanId),
177
+ ]);
178
+ if (!targetItem || !sourceItem) {
179
+ throw new Error('Planes no encontrados');
180
+ }
181
+ const target = targetItem.content;
182
+ const source = sourceItem.content;
183
+ const now = new Date().toISOString();
184
+ // Combinar keywords y taskIds
185
+ const allKeywords = (target.keywords || []).concat(source.keywords || []);
186
+ const mergedKeywords = Array.from(new Set(allKeywords));
187
+ const allTaskIds = (target.taskIds || []).concat(source.taskIds || []);
188
+ const mergedTaskIds = Array.from(new Set(allTaskIds));
189
+ const mergedFromIds = [...(target.mergedFromIds || []), sourcePlanId];
190
+ // Actualizar plan target
191
+ await this.client.update(targetPlanId, {
192
+ content: {
193
+ ...target,
194
+ keywords: mergedKeywords,
195
+ taskIds: mergedTaskIds,
196
+ mergedFromIds,
197
+ updatedAt: now,
198
+ },
199
+ });
200
+ // Marcar source como merged
201
+ await this.client.update(sourcePlanId, {
202
+ status: 'done',
203
+ content: {
204
+ ...source,
205
+ status: 'merged',
206
+ parentPlanId: targetPlanId,
207
+ updatedAt: now,
208
+ },
209
+ });
210
+ // Agregar checkpoints en ambos
211
+ await Promise.all([
212
+ this.addCheckpoint(targetPlanId, {
213
+ checkpointType: 'progress',
214
+ summary: `Plan fusionado con: ${source.title}`,
215
+ }),
216
+ this.addCheckpoint(sourcePlanId, {
217
+ checkpointType: 'complete',
218
+ summary: `Fusionado en: ${target.title}`,
219
+ }),
220
+ ]);
221
+ }
222
+ // ===========================================================================
223
+ // CHECKPOINTS
224
+ // ===========================================================================
225
+ /**
226
+ * Agregar checkpoint a un plan
227
+ */
228
+ async addCheckpoint(planId, options) {
229
+ const now = new Date().toISOString();
230
+ const checkpointData = createCheckpoint({
231
+ planId,
232
+ ...options,
233
+ agentId: this.agentId,
234
+ sessionId: this.currentSessionId,
235
+ });
236
+ const result = await this.client.create({
237
+ type: 'plan_checkpoint',
238
+ status: 'active',
239
+ priority: 'medium',
240
+ content: checkpointData,
241
+ tags: ['checkpoint', options.checkpointType, planId],
242
+ });
243
+ // Actualizar lastCheckpoint en el plan
244
+ const planItem = await this.client.get(planId);
245
+ if (planItem) {
246
+ const plan = planItem.content;
247
+ await this.client.update(planId, {
248
+ content: {
249
+ ...plan,
250
+ lastCheckpointId: result.id,
251
+ lastCheckpointSummary: options.summary,
252
+ updatedAt: now,
253
+ },
254
+ });
255
+ }
256
+ return {
257
+ ...checkpointData,
258
+ id: result.id,
259
+ createdAt: now,
260
+ };
261
+ }
262
+ /**
263
+ * Obtener checkpoints de un plan con validación Zod
264
+ */
265
+ async getCheckpoints(planId, limit = 10) {
266
+ const items = await this.client.list({
267
+ type: 'plan_checkpoint',
268
+ limit,
269
+ });
270
+ const validCheckpoints = [];
271
+ for (const item of items) {
272
+ const parseResult = PlanCheckpointSchema.safeParse({
273
+ ...item.content,
274
+ id: item.id,
275
+ });
276
+ if (parseResult.success && parseResult.data.planId === planId) {
277
+ validCheckpoints.push(parseResult.data);
278
+ }
279
+ }
280
+ return validCheckpoints;
281
+ }
282
+ /**
283
+ * Obtener último checkpoint de un plan
284
+ */
285
+ async getLastCheckpoint(planId) {
286
+ const checkpoints = await this.getCheckpoints(planId, 1);
287
+ return checkpoints[0] || null;
288
+ }
289
+ // ===========================================================================
290
+ // CONTEXT FOR SESSION START
291
+ // ===========================================================================
292
+ /**
293
+ * Generar contexto de planes para session start
294
+ */
295
+ async getSessionContext(currentPrompt) {
296
+ let context = '';
297
+ // Planes activos
298
+ const activePlans = await this.getActive();
299
+ if (activePlans.length > 0) {
300
+ context += `## 🎯 Planes Activos (${activePlans.length})\n\n`;
301
+ for (const plan of activePlans.slice(0, 3)) {
302
+ const lastCheckpoint = await this.getLastCheckpoint(plan.id);
303
+ context += `### ${plan.title}\n`;
304
+ context += `- **Estado**: ${plan.status}\n`;
305
+ if (lastCheckpoint) {
306
+ context += `- **Último avance**: ${lastCheckpoint.summary}\n`;
307
+ if (lastCheckpoint.nextSteps.length > 0) {
308
+ context += `- **Próximos pasos**: ${lastCheckpoint.nextSteps[0]}\n`;
309
+ }
310
+ }
311
+ context += `- **ID**: \`${plan.id}\`\n\n`;
312
+ }
313
+ }
314
+ // Buscar planes similares si hay prompt
315
+ if (currentPrompt) {
316
+ const similar = await this.findSimilar({
317
+ prompt: currentPrompt,
318
+ minSimilarity: 0.3,
319
+ limit: 3,
320
+ });
321
+ if (similar.length > 0) {
322
+ context += `## 🔍 Planes Relacionados Encontrados\n\n`;
323
+ context += `Tu solicitud parece relacionarse con planes existentes:\n\n`;
324
+ for (const match of similar) {
325
+ const similarity = Math.round(match.similarity * 100);
326
+ context += `- **${match.title}** (${similarity}% similar, ${match.checkpointCount} checkpoints)\n`;
327
+ context += ` ID: \`${match.planId}\` | Último: ${formatTimeAgo(match.lastActivity)}\n`;
328
+ }
329
+ context += `\n> Usa \`/plan continue <id>\` para retomar o \`/plan new\` para crear uno nuevo.\n\n`;
330
+ }
331
+ }
332
+ return context;
333
+ }
334
+ }
335
+ // =============================================================================
336
+ // HELPERS
337
+ // =============================================================================
338
+ function formatTimeAgo(isoDate) {
339
+ const date = new Date(isoDate);
340
+ const now = new Date();
341
+ const diffMs = now.getTime() - date.getTime();
342
+ const diffMins = Math.floor(diffMs / 60000);
343
+ const diffHours = Math.floor(diffMins / 60);
344
+ const diffDays = Math.floor(diffHours / 24);
345
+ if (diffMins < 1)
346
+ return 'ahora';
347
+ if (diffMins < 60)
348
+ return `hace ${diffMins}m`;
349
+ if (diffHours < 24)
350
+ return `hace ${diffHours}h`;
351
+ return `hace ${diffDays}d`;
352
+ }
353
+ // =============================================================================
354
+ // FACTORY
355
+ // =============================================================================
356
+ let managerInstance = null;
357
+ /**
358
+ * Obtener o crear instancia de PlanManager
359
+ */
360
+ export function getPlanManager(system, options) {
361
+ if (!managerInstance || options) {
362
+ managerInstance = new PlanManager(system, options);
363
+ }
364
+ return managerInstance;
365
+ }
366
+ /**
367
+ * Crear nueva instancia de PlanManager
368
+ */
369
+ export function createPlanManager(system, options) {
370
+ return new PlanManager(system, options);
371
+ }
372
+ //# sourceMappingURL=PlanManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanManager.js","sourceRoot":"","sources":["../../src/services/PlanManager.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectScaffold.d.ts","sourceRoot":"","sources":["../../src/services/ProjectScaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE;QACT,MAAM,EAAE,OAAO,CAAA;QACf,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,UAAU,EAAE;QACV,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,OAAO,EAAE,MAAM,EAAE,CAAA;KAClB,CAAA;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAe;gBAEjB,WAAW,GAAE,MAAsB;IAKzC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA2DjE,OAAO,CAAC,cAAc;YAsBR,wBAAwB;YA0BxB,UAAU;YAsBV,YAAY;YAsBZ,UAAU;IAsBxB,OAAO,CAAC,qBAAqB;IA+B7B,OAAO,CAAC,gBAAgB;YAiBV,kBAAkB;YAOlB,aAAa;IAe3B,OAAO,CAAC,gBAAgB;YAmIV,aAAa;YA0Bb,cAAc;IA2D5B,OAAO,CAAC,UAAU;CA8BnB;AAED,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,CAE3E"}
1
+ {"version":3,"file":"ProjectScaffold.d.ts","sourceRoot":"","sources":["../../src/services/ProjectScaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE;QACT,MAAM,EAAE,OAAO,CAAA;QACf,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAA;QACZ,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAA;QACX,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,UAAU,EAAE;QACV,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,OAAO,EAAE,MAAM,EAAE,CAAA;KAClB,CAAA;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,MAAM,CAAe;gBAEjB,WAAW,GAAE,MAAsB;IAKzC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IA2DjE,OAAO,CAAC,cAAc;YAsBR,wBAAwB;YA0BxB,UAAU;YAsBV,YAAY;YAsBZ,UAAU;IAsBxB,OAAO,CAAC,qBAAqB;IA+B7B,OAAO,CAAC,gBAAgB;YAiBV,kBAAkB;YAOlB,aAAa;IAe3B,OAAO,CAAC,gBAAgB;YAmIV,aAAa;YA0Bb,cAAc;IAuF5B,OAAO,CAAC,UAAU;CA8BnB;AAED,wBAAgB,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,eAAe,CAE3E"}
@@ -248,19 +248,19 @@ export class ProjectScaffold {
248
248
  generateClaudeMd(scan, options) {
249
249
  const system = options.system.toUpperCase();
250
250
  const projectName = options.projectName || scan.name;
251
- let content = `# CLAUDE.md - ${projectName}
252
-
253
- > **System**: ${system}
254
- > **Generated**: ${new Date().toISOString().split('T')[0]}
255
-
256
- ---
257
-
258
- ## Project Overview
259
-
260
- ${projectName} is part of the **MetaNautical Group** ecosystem.
261
-
262
- ### Tech Stack
263
-
251
+ let content = `# CLAUDE.md - ${projectName}
252
+
253
+ > **System**: ${system}
254
+ > **Generated**: ${new Date().toISOString().split('T')[0]}
255
+
256
+ ---
257
+
258
+ ## Project Overview
259
+
260
+ ${projectName} is part of the **MetaNautical Group** ecosystem.
261
+
262
+ ### Tech Stack
263
+
264
264
  `;
265
265
  // Framework
266
266
  if (scan.framework.name !== 'unknown') {
@@ -294,33 +294,33 @@ ${projectName} is part of the **MetaNautical Group** ecosystem.
294
294
  if (scan.api.type !== 'none') {
295
295
  content += `- **API**: ${scan.api.type.toUpperCase()}\n`;
296
296
  }
297
- content += `
298
- ---
299
-
300
- ## Core Rules (Non-Negotiable)
301
-
302
- ### Code Quality
303
- - NO \`any\`/\`unknown\` types - use proper typing
304
- - NO ESLint disable comments without justification
305
- - **Never Assume**: Verify files/constants exist before using
306
-
307
- ### Security
308
- - All inputs must be validated with Zod
309
- - Use \`protectedProcedure\` for authenticated routes
310
- - Never expose sensitive data in responses
311
-
312
- ---
313
-
314
- ## Structure
315
-
316
- \`\`\`
317
- ${scan.name}/
318
- ├── .claude/ # Claude Code configuration
319
- │ ├── agents/ # AI expert agents
320
- │ ├── commands/ # Slash commands (/experts, etc.)
321
- │ ├── hooks/ # Session hooks
322
- │ └── project.config.json
323
- ├── .ai-skills/ # Project-specific knowledge
297
+ content += `
298
+ ---
299
+
300
+ ## Core Rules (Non-Negotiable)
301
+
302
+ ### Code Quality
303
+ - NO \`any\`/\`unknown\` types - use proper typing
304
+ - NO ESLint disable comments without justification
305
+ - **Never Assume**: Verify files/constants exist before using
306
+
307
+ ### Security
308
+ - All inputs must be validated with Zod
309
+ - Use \`protectedProcedure\` for authenticated routes
310
+ - Never expose sensitive data in responses
311
+
312
+ ---
313
+
314
+ ## Structure
315
+
316
+ \`\`\`
317
+ ${scan.name}/
318
+ ├── .claude/ # Claude Code configuration
319
+ │ ├── agents/ # AI expert agents
320
+ │ ├── commands/ # Slash commands (/experts, etc.)
321
+ │ ├── hooks/ # Session hooks
322
+ │ └── project.config.json
323
+ ├── .ai-skills/ # Project-specific knowledge
324
324
  `;
325
325
  if (scan.structure.srcDir) {
326
326
  content += `├── src/\n`;
@@ -331,42 +331,42 @@ ${scan.name}/
331
331
  content += `│ ├── server/\n`;
332
332
  }
333
333
  }
334
- content += `└── CLAUDE.md # This file
335
- \`\`\`
336
-
337
- ---
338
-
339
- ## Commands
340
-
341
- ### Development
342
- \`\`\`bash
343
- npm run dev # Start dev server
344
- npm run build # Production build
345
- npm run lint # ESLint check
346
- npm run typecheck # TypeScript check
347
- \`\`\`
348
-
349
- ### Memory System
350
- \`\`\`bash
351
- cmp-memory status # Check memory system health
352
- cmp-memory validate # Validate project structure
353
- cmp-memory sync # Sync experts/hooks from npm
354
- \`\`\`
355
-
356
- ---
357
-
358
- ## Expert Review
359
-
360
- Use \`/experts\` for code review:
361
-
362
- \`\`\`bash
363
- /experts src/path/to/file.ts # Review specific file
364
- /experts src/server/api/ # Review directory
365
- \`\`\`
366
-
367
- ---
368
-
369
- *Part of MetaNautical Group ecosystem*
334
+ content += `└── CLAUDE.md # This file
335
+ \`\`\`
336
+
337
+ ---
338
+
339
+ ## Commands
340
+
341
+ ### Development
342
+ \`\`\`bash
343
+ npm run dev # Start dev server
344
+ npm run build # Production build
345
+ npm run lint # ESLint check
346
+ npm run typecheck # TypeScript check
347
+ \`\`\`
348
+
349
+ ### Memory System
350
+ \`\`\`bash
351
+ cmp-memory status # Check memory system health
352
+ cmp-memory validate # Validate project structure
353
+ cmp-memory sync # Sync experts/hooks from npm
354
+ \`\`\`
355
+
356
+ ---
357
+
358
+ ## Expert Review
359
+
360
+ Use \`/experts\` for code review:
361
+
362
+ \`\`\`bash
363
+ /experts src/path/to/file.ts # Review specific file
364
+ /experts src/server/api/ # Review directory
365
+ \`\`\`
366
+
367
+ ---
368
+
369
+ *Part of MetaNautical Group ecosystem*
370
370
  `;
371
371
  return content;
372
372
  }
@@ -403,15 +403,37 @@ Use \`/experts\` for code review:
403
403
  hooks: [
404
404
  {
405
405
  type: 'command',
406
- command: 'npx cmp-memory session-context'
406
+ command: 'npx cmp-standards cloud session --silent || npx cmp-memory session-context'
407
+ }
408
+ ]
409
+ }
410
+ ],
411
+ PreToolUse: [
412
+ {
413
+ matcher: 'Edit|Write|Task',
414
+ hooks: [
415
+ {
416
+ type: 'command',
417
+ command: 'node node_modules/cmp-standards/dist/hooks/cloud-pre-tool-use.js'
418
+ }
419
+ ]
420
+ }
421
+ ],
422
+ PostToolUse: [
423
+ {
424
+ matcher: 'Edit|Write',
425
+ hooks: [
426
+ {
427
+ type: 'command',
428
+ command: 'node node_modules/cmp-standards/dist/hooks/cloud-post-tool-use.js'
407
429
  }
408
430
  ]
409
431
  }
410
432
  ]
411
433
  },
412
434
  plugins: {
413
- 'cmp-memory-system': {
414
- version: '1.0.0',
435
+ 'cmp-standards': {
436
+ version: '2.2.0',
415
437
  enabled: true,
416
438
  configPath: '.claude/memory-config.json'
417
439
  }
@@ -419,18 +441,24 @@ Use \`/experts\` for code review:
419
441
  };
420
442
  writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
421
443
  this.created.push('.claude/settings.json');
422
- console.log(chalk.green(' ✓ Updated settings.json'));
444
+ console.log(chalk.green(' ✓ Updated settings.json with cloud hooks'));
423
445
  // Also create memory-config.json if not exists
424
446
  const memoryConfigPath = join(this.projectPath, '.claude/memory-config.json');
425
447
  if (!existsSync(memoryConfigPath)) {
426
448
  const memoryConfig = {
427
449
  system: options.system.toUpperCase(),
428
450
  projectName: options.projectName || options.system,
451
+ description: `${options.projectName || options.system} project`,
429
452
  domains: [],
430
453
  guards: {
431
454
  enabled: true,
432
455
  rules: []
433
456
  },
457
+ tracking: {
458
+ enabled: true,
459
+ requireImprovements: true,
460
+ minImprovementsPerTask: 1
461
+ },
434
462
  embedding: {
435
463
  enabled: true,
436
464
  threshold: 0.60,
@@ -444,7 +472,7 @@ Use \`/experts\` for code review:
444
472
  };
445
473
  writeFileSync(memoryConfigPath, JSON.stringify(memoryConfig, null, 2));
446
474
  this.created.push('.claude/memory-config.json');
447
- console.log(chalk.green(' ✓ Created memory-config.json'));
475
+ console.log(chalk.green(' ✓ Created memory-config.json with tracking enabled'));
448
476
  }
449
477
  }
450
478
  logSummary() {