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.
- package/README.md +633 -541
- package/dist/cli/index.js +239 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/dashboard/server.d.ts.map +1 -1
- package/dist/dashboard/server.js +203 -39
- package/dist/dashboard/server.js.map +1 -1
- package/dist/db/cloud.d.ts +174 -0
- package/dist/db/cloud.d.ts.map +1 -0
- package/dist/db/cloud.js +241 -0
- package/dist/db/cloud.js.map +1 -0
- package/dist/db/drizzle-client.d.ts +3 -3
- package/dist/db/drizzle-client.d.ts.map +1 -1
- package/dist/db/drizzle-client.js +57 -58
- package/dist/db/drizzle-client.js.map +1 -1
- package/dist/db/errors.d.ts +76 -0
- package/dist/db/errors.d.ts.map +1 -0
- package/dist/db/errors.js +135 -0
- package/dist/db/errors.js.map +1 -0
- package/dist/db/turso-client.d.ts +178 -0
- package/dist/db/turso-client.d.ts.map +1 -0
- package/dist/db/turso-client.js +455 -0
- package/dist/db/turso-client.js.map +1 -0
- package/dist/db/upstash-client.d.ts +161 -0
- package/dist/db/upstash-client.d.ts.map +1 -0
- package/dist/db/upstash-client.js +325 -0
- package/dist/db/upstash-client.js.map +1 -0
- package/dist/eslint/rules/no-async-useeffect.js +6 -6
- package/dist/hooks/cloud-post-tool-use.d.ts +30 -0
- package/dist/hooks/cloud-post-tool-use.d.ts.map +1 -0
- package/dist/hooks/cloud-post-tool-use.js +116 -0
- package/dist/hooks/cloud-post-tool-use.js.map +1 -0
- package/dist/hooks/cloud-pre-tool-use.d.ts +19 -0
- package/dist/hooks/cloud-pre-tool-use.d.ts.map +1 -0
- package/dist/hooks/cloud-pre-tool-use.js +149 -0
- package/dist/hooks/cloud-pre-tool-use.js.map +1 -0
- package/dist/hooks/cloud-session-start.d.ts +32 -0
- package/dist/hooks/cloud-session-start.d.ts.map +1 -0
- package/dist/hooks/cloud-session-start.js +257 -0
- package/dist/hooks/cloud-session-start.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/memory-checkpoint.d.ts.map +1 -1
- package/dist/hooks/memory-checkpoint.js +12 -20
- package/dist/hooks/memory-checkpoint.js.map +1 -1
- package/dist/hooks/pre-tool-use.d.ts +2 -8
- package/dist/hooks/pre-tool-use.d.ts.map +1 -1
- package/dist/hooks/pre-tool-use.js +7 -106
- package/dist/hooks/pre-tool-use.js.map +1 -1
- package/dist/hooks/session-start.d.ts +2 -1
- package/dist/hooks/session-start.d.ts.map +1 -1
- package/dist/hooks/session-start.js +111 -77
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +225 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/schema/plans.d.ts +194 -0
- package/dist/schema/plans.d.ts.map +1 -0
- package/dist/schema/plans.js +180 -0
- package/dist/schema/plans.js.map +1 -0
- package/dist/schema/tracking.d.ts +644 -0
- package/dist/schema/tracking.d.ts.map +1 -0
- package/dist/schema/tracking.js +204 -0
- package/dist/schema/tracking.js.map +1 -0
- package/dist/services/ContextGenerator.d.ts +16 -0
- package/dist/services/ContextGenerator.d.ts.map +1 -0
- package/dist/services/ContextGenerator.js +62 -0
- package/dist/services/ContextGenerator.js.map +1 -0
- package/dist/services/PlanManager.d.ts +99 -0
- package/dist/services/PlanManager.d.ts.map +1 -0
- package/dist/services/PlanManager.js +372 -0
- package/dist/services/PlanManager.js.map +1 -0
- package/dist/services/ProjectScaffold.d.ts.map +1 -1
- package/dist/services/ProjectScaffold.js +109 -81
- package/dist/services/ProjectScaffold.js.map +1 -1
- package/dist/services/TaskTracker.d.ts +1 -1
- package/dist/services/TaskTracker.d.ts.map +1 -1
- package/dist/services/TaskTracker.js +4 -8
- package/dist/services/TaskTracker.js.map +1 -1
- package/dist/services/WorkPlanManager.d.ts +1 -1
- package/dist/services/WorkPlanManager.d.ts.map +1 -1
- package/dist/services/WorkPlanManager.js +8 -14
- package/dist/services/WorkPlanManager.js.map +1 -1
- package/dist/services/auto-inject.d.ts +1 -0
- package/dist/services/auto-inject.d.ts.map +1 -1
- package/dist/services/auto-inject.js +12 -17
- package/dist/services/auto-inject.js.map +1 -1
- package/dist/services/context-injector.d.ts +105 -0
- package/dist/services/context-injector.d.ts.map +1 -0
- package/dist/services/context-injector.js +357 -0
- package/dist/services/context-injector.js.map +1 -0
- package/dist/services/cross-project-sync.d.ts +2 -0
- package/dist/services/cross-project-sync.d.ts.map +1 -1
- package/dist/services/cross-project-sync.js +26 -21
- package/dist/services/cross-project-sync.js.map +1 -1
- package/dist/services/index.d.ts +15 -15
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +18 -20
- package/dist/services/index.js.map +1 -1
- package/dist/services/memory-consolidation.d.ts.map +1 -1
- package/dist/services/memory-consolidation.js +30 -27
- package/dist/services/memory-consolidation.js.map +1 -1
- package/dist/services/memory-router.d.ts +98 -0
- package/dist/services/memory-router.d.ts.map +1 -0
- package/dist/services/memory-router.js +373 -0
- package/dist/services/memory-router.js.map +1 -0
- package/dist/services/pattern-tracker.d.ts +93 -0
- package/dist/services/pattern-tracker.d.ts.map +1 -0
- package/dist/services/pattern-tracker.js +347 -0
- package/dist/services/pattern-tracker.js.map +1 -0
- package/dist/services/semantic-search.d.ts +33 -35
- package/dist/services/semantic-search.d.ts.map +1 -1
- package/dist/services/semantic-search.js +207 -165
- package/dist/services/semantic-search.js.map +1 -1
- package/dist/utils/env-loader.d.ts +41 -0
- package/dist/utils/env-loader.d.ts.map +1 -0
- package/dist/utils/env-loader.js +78 -0
- package/dist/utils/env-loader.js.map +1 -0
- package/dist/utils/git.d.ts +52 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +267 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/paths.d.ts +39 -5
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +88 -7
- package/dist/utils/paths.js.map +1 -1
- package/package.json +100 -94
- package/standards/README.md +50 -0
- package/standards/experts/expert-routing.md +215 -0
- package/standards/general/code-quality.md +86 -0
- package/standards/general/memory-usage.md +205 -0
- package/standards/general/sync-workflow.md +235 -0
- package/standards/general/workflow.md +82 -0
- package/standards/hooks/mandatory-tracking.md +446 -0
- package/standards/infrastructure/cloud-database.md +287 -0
- package/standards/mcp/server-design.md +243 -0
- package/standards/mcp/tool-patterns.md +354 -0
- package/standards/skills/skill-structure.md +286 -0
- package/standards/skills/workflow-design.md +323 -0
- package/standards/tools/tool-design.md +297 -0
- 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/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 -0
- 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/memory-config.json +56 -82
- package/templates/memory-config.schema.json +212 -212
- package/templates/settings.json +58 -58
- package/templates/skills/continue.md +205 -0
- 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
|
@@ -0,0 +1,149 @@
|
|
|
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
|
|
5
|
+
*/
|
|
6
|
+
import { config } from 'dotenv';
|
|
7
|
+
import { resolve } from 'path';
|
|
8
|
+
import { cloud } from '../db/cloud.js';
|
|
9
|
+
import { upstash } from '../db/upstash-client.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Configuration
|
|
12
|
+
// =============================================================================
|
|
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'];
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// System Detection
|
|
19
|
+
// =============================================================================
|
|
20
|
+
function detectSystem(cwd) {
|
|
21
|
+
if (cwd.includes('swarmscale') || cwd.includes('SwarmScale')) {
|
|
22
|
+
return 'SWARMSCALE';
|
|
23
|
+
}
|
|
24
|
+
if (cwd.includes('easycharter') || cwd.includes('charter')) {
|
|
25
|
+
return 'CHARTER';
|
|
26
|
+
}
|
|
27
|
+
if (cwd.includes('carlosmartinpavon')) {
|
|
28
|
+
return 'CMP';
|
|
29
|
+
}
|
|
30
|
+
return 'UNKNOWN';
|
|
31
|
+
}
|
|
32
|
+
// =============================================================================
|
|
33
|
+
// Hook Implementation
|
|
34
|
+
// =============================================================================
|
|
35
|
+
export async function onPreToolUse(event) {
|
|
36
|
+
const { tool, params, cwd } = event;
|
|
37
|
+
// Tools que siempre proceden
|
|
38
|
+
if (ALWAYS_ALLOWED.includes(tool)) {
|
|
39
|
+
return { proceed: true };
|
|
40
|
+
}
|
|
41
|
+
// Cargar .env
|
|
42
|
+
const envPaths = [
|
|
43
|
+
resolve(cwd, '.env'),
|
|
44
|
+
resolve(cwd, '../.env'),
|
|
45
|
+
resolve(cwd, '../../.env')
|
|
46
|
+
];
|
|
47
|
+
for (const envPath of envPaths) {
|
|
48
|
+
config({ path: envPath });
|
|
49
|
+
}
|
|
50
|
+
// Si no es un tool que trackeamos, proceder
|
|
51
|
+
if (!TRACKED_TOOLS.includes(tool)) {
|
|
52
|
+
return { proceed: true };
|
|
53
|
+
}
|
|
54
|
+
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) {
|
|
102
|
+
const filePath = params.file_path;
|
|
103
|
+
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
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
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 };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// =============================================================================
|
|
128
|
+
// CLI Entry Point
|
|
129
|
+
// =============================================================================
|
|
130
|
+
if (process.argv[1]?.includes('cloud-pre-tool-use')) {
|
|
131
|
+
// Leer evento desde stdin o args
|
|
132
|
+
const tool = process.argv[2] || 'Unknown';
|
|
133
|
+
const cwd = process.cwd();
|
|
134
|
+
onPreToolUse({ tool, params: {}, cwd })
|
|
135
|
+
.then(result => {
|
|
136
|
+
if (result.warning) {
|
|
137
|
+
console.log(result.warning);
|
|
138
|
+
}
|
|
139
|
+
if (!result.proceed) {
|
|
140
|
+
console.log(result.message);
|
|
141
|
+
process.exit(1);
|
|
142
|
+
}
|
|
143
|
+
})
|
|
144
|
+
.catch(error => {
|
|
145
|
+
console.error('Error:', error.message);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
export default onPreToolUse;
|
|
149
|
+
//# sourceMappingURL=cloud-pre-tool-use.js.map
|
|
@@ -0,0 +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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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Cloud Session Start Hook v2
|
|
3
|
+
* @description Enhanced hook for Claude Code session initialization
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Smart domain detection from git activity
|
|
7
|
+
* - Semantic memory loading
|
|
8
|
+
* - System health dashboard
|
|
9
|
+
* - Unresolved issues display
|
|
10
|
+
* - Skill suggestions
|
|
11
|
+
* - Distillation queue status
|
|
12
|
+
*
|
|
13
|
+
* @version 3.0.0
|
|
14
|
+
*/
|
|
15
|
+
export interface SessionStartEvent {
|
|
16
|
+
cwd: string;
|
|
17
|
+
claudeMdPath?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface SessionStartResult {
|
|
20
|
+
contextInjection: string;
|
|
21
|
+
metadata: {
|
|
22
|
+
sessionId: string;
|
|
23
|
+
activeTasks: number;
|
|
24
|
+
pendingImprovements: number;
|
|
25
|
+
activeWorkPlan?: string;
|
|
26
|
+
detectedDomain?: string;
|
|
27
|
+
healthStatus: 'healthy' | 'degraded' | 'offline';
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export declare function onSessionStart(event: SessionStartEvent): Promise<SessionStartResult>;
|
|
31
|
+
export default onSessionStart;
|
|
32
|
+
//# sourceMappingURL=cloud-session-start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-session-start.d.ts","sourceRoot":"","sources":["../../src/hooks/cloud-session-start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAgBH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAA;QACjB,WAAW,EAAE,MAAM,CAAA;QACnB,mBAAmB,EAAE,MAAM,CAAA;QAC3B,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB,YAAY,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAA;KACjD,CAAA;CACF;AA4FD,wBAAsB,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwI1F;AAsCD,eAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Cloud Session Start Hook v2
|
|
3
|
+
* @description Enhanced hook for Claude Code session initialization
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Smart domain detection from git activity
|
|
7
|
+
* - Semantic memory loading
|
|
8
|
+
* - System health dashboard
|
|
9
|
+
* - Unresolved issues display
|
|
10
|
+
* - Skill suggestions
|
|
11
|
+
* - Distillation queue status
|
|
12
|
+
*
|
|
13
|
+
* @version 3.0.0
|
|
14
|
+
*/
|
|
15
|
+
import { config } from 'dotenv';
|
|
16
|
+
import { resolve } from 'path';
|
|
17
|
+
import { execFileSync } from 'child_process';
|
|
18
|
+
import { cloud } from '../db/cloud.js';
|
|
19
|
+
import { getWorkPlanManager } from '../services/WorkPlanManager.js';
|
|
20
|
+
import { getPlanManager } from '../services/PlanManager.js';
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// System Detection
|
|
23
|
+
// =============================================================================
|
|
24
|
+
function detectSystem(cwd) {
|
|
25
|
+
// Detectar sistema basado en path o package.json
|
|
26
|
+
if (cwd.includes('swarmscale') || cwd.includes('SwarmScale')) {
|
|
27
|
+
return 'SWARMSCALE';
|
|
28
|
+
}
|
|
29
|
+
if (cwd.includes('easycharter') || cwd.includes('charter')) {
|
|
30
|
+
return 'PANEL'; // Changed from CHARTER to PANEL for consistency
|
|
31
|
+
}
|
|
32
|
+
if (cwd.includes('carlosmartinpavon')) {
|
|
33
|
+
return 'ECOSYSTEM';
|
|
34
|
+
}
|
|
35
|
+
return 'ECOSYSTEM'; // Default to ECOSYSTEM instead of UNKNOWN
|
|
36
|
+
}
|
|
37
|
+
// =============================================================================
|
|
38
|
+
// Domain Detection from Git Activity (Safe - no shell injection)
|
|
39
|
+
// =============================================================================
|
|
40
|
+
function detectDomainFromGit(cwd, domains) {
|
|
41
|
+
try {
|
|
42
|
+
// Validate cwd is within expected project directories (security)
|
|
43
|
+
const allowedPrefixes = ['/Users', '/home', '/var/www', '/opt', '/tmp'];
|
|
44
|
+
const isAllowedPath = allowedPrefixes.some(prefix => cwd.startsWith(prefix));
|
|
45
|
+
if (!isAllowedPath || cwd.includes('..')) {
|
|
46
|
+
console.warn('[cloud-session-start] Suspicious cwd path, skipping git detection:', cwd);
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
// Use execFileSync for safety (no shell injection possible)
|
|
50
|
+
let result;
|
|
51
|
+
try {
|
|
52
|
+
result = execFileSync('git', ['diff', '--name-only', 'HEAD~10'], {
|
|
53
|
+
cwd,
|
|
54
|
+
encoding: 'utf-8',
|
|
55
|
+
timeout: 5000,
|
|
56
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Fallback to smaller range if HEAD~10 fails
|
|
61
|
+
try {
|
|
62
|
+
result = execFileSync('git', ['diff', '--name-only', 'HEAD~5'], {
|
|
63
|
+
cwd,
|
|
64
|
+
encoding: 'utf-8',
|
|
65
|
+
timeout: 5000,
|
|
66
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const files = result.split('\n').filter(f => f.trim());
|
|
74
|
+
if (files.length === 0)
|
|
75
|
+
return undefined;
|
|
76
|
+
// Count domain occurrences
|
|
77
|
+
const domainCounts = new Map();
|
|
78
|
+
for (const file of files) {
|
|
79
|
+
const fileLower = file.toLowerCase();
|
|
80
|
+
for (const domain of domains) {
|
|
81
|
+
if (fileLower.includes(domain) || fileLower.includes(domain.replace(/-/g, '/'))) {
|
|
82
|
+
domainCounts.set(domain, (domainCounts.get(domain) || 0) + 1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Return most frequent domain
|
|
87
|
+
let maxDomain;
|
|
88
|
+
let maxCount = 0;
|
|
89
|
+
for (const [domain, count] of domainCounts) {
|
|
90
|
+
if (count > maxCount) {
|
|
91
|
+
maxCount = count;
|
|
92
|
+
maxDomain = domain;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return maxDomain;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// =============================================================================
|
|
102
|
+
// Hook Implementation
|
|
103
|
+
// =============================================================================
|
|
104
|
+
export async function onSessionStart(event) {
|
|
105
|
+
// Cargar .env desde el directorio del proyecto o monorepo
|
|
106
|
+
const envPaths = [
|
|
107
|
+
resolve(event.cwd, '.env'),
|
|
108
|
+
resolve(event.cwd, '../.env'),
|
|
109
|
+
resolve(event.cwd, '../../.env')
|
|
110
|
+
];
|
|
111
|
+
for (const envPath of envPaths) {
|
|
112
|
+
config({ path: envPath });
|
|
113
|
+
}
|
|
114
|
+
const system = detectSystem(event.cwd);
|
|
115
|
+
try {
|
|
116
|
+
// Inicializar cloud (solo si no está inicializado)
|
|
117
|
+
await cloud.init();
|
|
118
|
+
// Iniciar sesión de trabajo
|
|
119
|
+
const session = await cloud.startWorkSession(system, {
|
|
120
|
+
projectPath: event.cwd,
|
|
121
|
+
ide: process.env.TERM_PROGRAM || 'unknown'
|
|
122
|
+
});
|
|
123
|
+
// Construir contexto para inyectar
|
|
124
|
+
let contextInjection = '';
|
|
125
|
+
let activeWorkPlanTitle;
|
|
126
|
+
// Work Plan activo (persistente entre sesiones)
|
|
127
|
+
try {
|
|
128
|
+
const planManager = getWorkPlanManager(system);
|
|
129
|
+
const planSummary = await planManager.getPlanSummary();
|
|
130
|
+
if (planSummary) {
|
|
131
|
+
activeWorkPlanTitle = planSummary.title;
|
|
132
|
+
const planTasks = await planManager.getPlanTasks();
|
|
133
|
+
contextInjection += `\n## 🎯 Plan de Trabajo Activo\n\n`;
|
|
134
|
+
contextInjection += `**${planSummary.title}** - ${planSummary.progress}% completado\n\n`;
|
|
135
|
+
if (planSummary.currentTask) {
|
|
136
|
+
contextInjection += `### Tarea Actual\n`;
|
|
137
|
+
contextInjection += `→ **${planSummary.currentTask.title}** [${planSummary.currentTask.status}]\n\n`;
|
|
138
|
+
}
|
|
139
|
+
const pendingPlanTasks = planTasks.filter(t => t.status === 'pending' || t.status === 'in_progress');
|
|
140
|
+
if (pendingPlanTasks.length > 0) {
|
|
141
|
+
contextInjection += `### Tareas Pendientes (${pendingPlanTasks.length})\n`;
|
|
142
|
+
for (const task of pendingPlanTasks.slice(0, 5)) {
|
|
143
|
+
const marker = task.isCurrent ? '→' : '○';
|
|
144
|
+
contextInjection += `${marker} ${task.title}\n`;
|
|
145
|
+
}
|
|
146
|
+
if (pendingPlanTasks.length > 5) {
|
|
147
|
+
contextInjection += ` ... y ${pendingPlanTasks.length - 5} más\n`;
|
|
148
|
+
}
|
|
149
|
+
contextInjection += `\n`;
|
|
150
|
+
}
|
|
151
|
+
contextInjection += `> Usa \`/plan status\` para ver detalles o \`/plan complete\` al terminar una tarea.\n\n`;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch (planError) {
|
|
155
|
+
// WorkPlan es opcional, continuar sin él
|
|
156
|
+
console.error('[cloud-session-start] WorkPlan error:', planError);
|
|
157
|
+
}
|
|
158
|
+
// Planes con checkpoints (nuevo sistema multi-agente)
|
|
159
|
+
try {
|
|
160
|
+
const planManager = getPlanManager(system, {
|
|
161
|
+
sessionId: session.sessionId,
|
|
162
|
+
agentId: 'claude'
|
|
163
|
+
});
|
|
164
|
+
const planContext = await planManager.getSessionContext();
|
|
165
|
+
if (planContext.trim()) {
|
|
166
|
+
contextInjection += planContext;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch (planMgrError) {
|
|
170
|
+
// PlanManager es opcional, continuar sin él
|
|
171
|
+
console.error('[cloud-session-start] PlanManager error:', planMgrError);
|
|
172
|
+
}
|
|
173
|
+
// Tareas activas
|
|
174
|
+
if (session.activeTasks.length > 0) {
|
|
175
|
+
contextInjection += `\n## 📋 Tareas en Progreso (${session.activeTasks.length})\n\n`;
|
|
176
|
+
for (const task of session.activeTasks) {
|
|
177
|
+
const t = task.content;
|
|
178
|
+
const progress = `${t.currentStep + 1}/${t.plan.length}`;
|
|
179
|
+
const timeAgo = formatTimeAgo(t.lastActivityAt);
|
|
180
|
+
contextInjection += `### ${t.title}\n`;
|
|
181
|
+
contextInjection += `- **Progreso**: Paso ${progress}\n`;
|
|
182
|
+
contextInjection += `- **Último paso**: ${t.plan[t.currentStep]}\n`;
|
|
183
|
+
contextInjection += `- **Última actividad**: ${timeAgo}\n`;
|
|
184
|
+
contextInjection += `- **ID**: \`${task.id}\`\n\n`;
|
|
185
|
+
}
|
|
186
|
+
contextInjection += `> Usa \`/continue\` para retomar una tarea o empieza algo nuevo.\n\n`;
|
|
187
|
+
}
|
|
188
|
+
// Mejoras pendientes
|
|
189
|
+
if (session.pendingImprovements > 0) {
|
|
190
|
+
contextInjection += `## 💡 Mejoras Pendientes: ${session.pendingImprovements}\n\n`;
|
|
191
|
+
contextInjection += `> Hay mejoras detectadas en sesiones anteriores. Considera implementarlas.\n\n`;
|
|
192
|
+
}
|
|
193
|
+
// Recordatorio de workflow
|
|
194
|
+
contextInjection += `## ⚙️ Workflow Obligatorio\n\n`;
|
|
195
|
+
contextInjection += `1. **Registrar tarea** antes de empezar a trabajar\n`;
|
|
196
|
+
contextInjection += `2. **Actualizar progreso** durante el trabajo\n`;
|
|
197
|
+
contextInjection += `3. **Registrar mejoras** al completar (mínimo 1)\n\n`;
|
|
198
|
+
return {
|
|
199
|
+
contextInjection,
|
|
200
|
+
metadata: {
|
|
201
|
+
sessionId: session.sessionId,
|
|
202
|
+
activeTasks: session.activeTasks.length,
|
|
203
|
+
pendingImprovements: session.pendingImprovements,
|
|
204
|
+
activeWorkPlan: activeWorkPlanTitle,
|
|
205
|
+
healthStatus: 'healthy'
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
// Si falla la conexión cloud, continuar sin contexto
|
|
211
|
+
console.error('[cloud-session-start] Error:', error);
|
|
212
|
+
return {
|
|
213
|
+
contextInjection: `\n## ⚠️ Cloud Memory Offline\n\nNo se pudo conectar al sistema de memoria cloud. Continúa trabajando normalmente.\n\n`,
|
|
214
|
+
metadata: {
|
|
215
|
+
sessionId: 'offline',
|
|
216
|
+
activeTasks: 0,
|
|
217
|
+
pendingImprovements: 0,
|
|
218
|
+
healthStatus: 'offline'
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// =============================================================================
|
|
224
|
+
// Helpers
|
|
225
|
+
// =============================================================================
|
|
226
|
+
function formatTimeAgo(isoDate) {
|
|
227
|
+
const date = new Date(isoDate);
|
|
228
|
+
const now = new Date();
|
|
229
|
+
const diffMs = now.getTime() - date.getTime();
|
|
230
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
231
|
+
const diffHours = Math.floor(diffMins / 60);
|
|
232
|
+
const diffDays = Math.floor(diffHours / 24);
|
|
233
|
+
if (diffMins < 1)
|
|
234
|
+
return 'ahora';
|
|
235
|
+
if (diffMins < 60)
|
|
236
|
+
return `hace ${diffMins} min`;
|
|
237
|
+
if (diffHours < 24)
|
|
238
|
+
return `hace ${diffHours}h`;
|
|
239
|
+
return `hace ${diffDays}d`;
|
|
240
|
+
}
|
|
241
|
+
// =============================================================================
|
|
242
|
+
// CLI Entry Point
|
|
243
|
+
// =============================================================================
|
|
244
|
+
if (process.argv[1]?.includes('cloud-session-start')) {
|
|
245
|
+
const cwd = process.cwd();
|
|
246
|
+
onSessionStart({ cwd })
|
|
247
|
+
.then(result => {
|
|
248
|
+
// Output context injection to stdout for Claude to consume
|
|
249
|
+
console.log(result.contextInjection);
|
|
250
|
+
})
|
|
251
|
+
.catch(error => {
|
|
252
|
+
console.error('Error:', error.message);
|
|
253
|
+
process.exit(1);
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
export default onSessionStart;
|
|
257
|
+
//# sourceMappingURL=cloud-session-start.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-session-start.js","sourceRoot":"","sources":["../../src/hooks/cloud-session-start.ts"],"names":[],"mappings":"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"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -5,4 +5,7 @@ export { SessionStartHook, runSessionStartHook } from './session-start.js';
|
|
|
5
5
|
export { PreToolUseHook, runPreToolUseHook } from './pre-tool-use.js';
|
|
6
6
|
export { PostToolUseHook, runPostToolUseHook } from './post-tool-use.js';
|
|
7
7
|
export { MemoryCheckpointHook, runMemoryCheckpointHook } from './memory-checkpoint.js';
|
|
8
|
+
export { onSessionStart as cloudSessionStart } from './cloud-session-start.js';
|
|
9
|
+
export { onPreToolUse as cloudPreToolUse } from './cloud-pre-tool-use.js';
|
|
10
|
+
export { onPostToolUse as cloudPostToolUse } from './cloud-post-tool-use.js';
|
|
8
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGtF,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAA"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Hooks module exports
|
|
3
3
|
*/
|
|
4
|
+
// Legacy hooks (MySQL-based)
|
|
4
5
|
export { SessionStartHook, runSessionStartHook } from './session-start.js';
|
|
5
6
|
export { PreToolUseHook, runPreToolUseHook } from './pre-tool-use.js';
|
|
6
7
|
export { PostToolUseHook, runPostToolUseHook } from './post-tool-use.js';
|
|
7
8
|
export { MemoryCheckpointHook, runMemoryCheckpointHook } from './memory-checkpoint.js';
|
|
9
|
+
// Cloud hooks (Turso + Upstash)
|
|
10
|
+
export { onSessionStart as cloudSessionStart } from './cloud-session-start.js';
|
|
11
|
+
export { onPreToolUse as cloudPreToolUse } from './cloud-pre-tool-use.js';
|
|
12
|
+
export { onPostToolUse as cloudPostToolUse } from './cloud-post-tool-use.js';
|
|
8
13
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,6BAA6B;AAC7B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAEtF,gCAAgC;AAChC,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC9E,OAAO,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzE,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-checkpoint.d.ts","sourceRoot":"","sources":["../../src/hooks/memory-checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"memory-checkpoint.d.ts","sourceRoot":"","sources":["../../src/hooks/memory-checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,UAAU,EAIX,MAAM,mBAAmB,CAAA;AAsE1B,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAA;IACjF,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CACjD;AAqED,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAC7B;AA4ED,qBAAa,oBAAoB;IAC/B,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,IAAI,OAAO,CAAC,UAAU,GAAG;QAAE,UAAU,CAAC,EAAE,gBAAgB,CAAA;KAAE,CAAC;IA2DxE;;OAEG;IACG,sBAAsB,CAC1B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,gBAAgB,CAAC;CAS7B;AAMD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ7D"}
|
|
@@ -6,33 +6,25 @@
|
|
|
6
6
|
* 2. Extracts patterns from changes
|
|
7
7
|
* 3. Creates memory entries in DEV_Items
|
|
8
8
|
*/
|
|
9
|
-
import { exec } from 'child_process';
|
|
10
|
-
import { promisify } from 'util';
|
|
11
9
|
import { loadConfig } from '../utils/config.js';
|
|
12
10
|
import { getProjectRoot, matchesPattern } from '../utils/paths.js';
|
|
13
|
-
|
|
11
|
+
import { getStagedChanges } from '../utils/git.js';
|
|
14
12
|
/**
|
|
15
|
-
* Get recent file changes from git
|
|
13
|
+
* Get recent file changes from git (safe - uses simple-git)
|
|
16
14
|
*/
|
|
17
15
|
async function getRecentChanges(projectRoot) {
|
|
18
16
|
try {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
for (const line of stdout.trim().split('\n').filter(Boolean)) {
|
|
23
|
-
const [added, removed, file] = line.split('\t');
|
|
24
|
-
if (!file)
|
|
25
|
-
continue;
|
|
26
|
-
changes.push({
|
|
27
|
-
path: file,
|
|
28
|
-
type: added === '0' && removed !== '0' ? 'delete'
|
|
29
|
-
: removed === '0' && added !== '0' ? 'add'
|
|
30
|
-
: 'modify',
|
|
31
|
-
linesAdded: parseInt(added ?? '0', 10) || 0,
|
|
32
|
-
linesRemoved: parseInt(removed ?? '0', 10) || 0,
|
|
33
|
-
});
|
|
17
|
+
const result = await getStagedChanges(projectRoot);
|
|
18
|
+
if (!result.success || !result.data) {
|
|
19
|
+
return [];
|
|
34
20
|
}
|
|
35
|
-
|
|
21
|
+
// Map GitChangedFile to FileChange (compatible types)
|
|
22
|
+
return result.data.map(file => ({
|
|
23
|
+
path: file.path,
|
|
24
|
+
type: file.type,
|
|
25
|
+
linesAdded: file.linesAdded,
|
|
26
|
+
linesRemoved: file.linesRemoved,
|
|
27
|
+
}));
|
|
36
28
|
}
|
|
37
29
|
catch {
|
|
38
30
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-checkpoint.js","sourceRoot":"","sources":["../../src/hooks/memory-checkpoint.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"memory-checkpoint.js","sourceRoot":"","sources":["../../src/hooks/memory-checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* PreToolUse Hook - Executable
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* 2. Pattern validation (warn about bad patterns)
|
|
7
|
-
* 3. Embedding injection (inject relevant knowledge for Task tool)
|
|
4
|
+
* Injects relevant knowledge for Task tool calls.
|
|
5
|
+
* Note: Guard/blocking functionality has been removed for simplicity.
|
|
8
6
|
*/
|
|
9
7
|
import type { HookResult, PreToolUseEvent } from '../types/index.js';
|
|
10
8
|
export declare class PreToolUseHook {
|
|
@@ -18,10 +16,6 @@ export declare class PreToolUseHook {
|
|
|
18
16
|
* Execute the hook for a tool call
|
|
19
17
|
*/
|
|
20
18
|
execute(event: PreToolUseEvent): Promise<HookResult>;
|
|
21
|
-
/**
|
|
22
|
-
* Handle Edit/Write tool calls - run guards
|
|
23
|
-
*/
|
|
24
|
-
private handleFileOperation;
|
|
25
19
|
/**
|
|
26
20
|
* Handle Task tool calls - inject knowledge
|
|
27
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../src/hooks/pre-tool-use.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"pre-tool-use.d.ts","sourceRoot":"","sources":["../../src/hooks/pre-tool-use.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EAIhB,MAAM,mBAAmB,CAAA;AA6L1B,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;IAkB1D;;OAEG;YACW,cAAc;CA6C7B;AAMD;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAuBvD"}
|