cmp-standards 2.7.0 → 2.8.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 (162) hide show
  1. package/README.md +633 -633
  2. package/dist/cache/EmbeddingCache.d.ts +110 -0
  3. package/dist/cache/EmbeddingCache.d.ts.map +1 -0
  4. package/dist/cache/EmbeddingCache.js +239 -0
  5. package/dist/cache/EmbeddingCache.js.map +1 -0
  6. package/dist/cache/index.d.ts +6 -0
  7. package/dist/cache/index.d.ts.map +1 -0
  8. package/dist/cache/index.js +6 -0
  9. package/dist/cache/index.js.map +1 -0
  10. package/dist/cli/index.js +0 -0
  11. package/dist/db/cloud.d.ts +1 -0
  12. package/dist/db/cloud.d.ts.map +1 -1
  13. package/dist/db/drizzle-client.d.ts +10 -1
  14. package/dist/db/drizzle-client.d.ts.map +1 -1
  15. package/dist/db/drizzle-client.js +57 -3
  16. package/dist/db/drizzle-client.js.map +1 -1
  17. package/dist/db/errors.d.ts +13 -1
  18. package/dist/db/errors.d.ts.map +1 -1
  19. package/dist/db/errors.js +49 -5
  20. package/dist/db/errors.js.map +1 -1
  21. package/dist/db/migrations.d.ts +42 -0
  22. package/dist/db/migrations.d.ts.map +1 -0
  23. package/dist/db/migrations.js +173 -0
  24. package/dist/db/migrations.js.map +1 -0
  25. package/dist/db/turso-client.d.ts +15 -3
  26. package/dist/db/turso-client.d.ts.map +1 -1
  27. package/dist/db/turso-client.js +50 -39
  28. package/dist/db/turso-client.js.map +1 -1
  29. package/dist/eslint/rules/no-async-useeffect.js +6 -6
  30. package/dist/events/EventBus.d.ts +97 -0
  31. package/dist/events/EventBus.d.ts.map +1 -0
  32. package/dist/events/EventBus.js +256 -0
  33. package/dist/events/EventBus.js.map +1 -0
  34. package/dist/events/index.d.ts +7 -0
  35. package/dist/events/index.d.ts.map +1 -0
  36. package/dist/events/index.js +9 -0
  37. package/dist/events/index.js.map +1 -0
  38. package/dist/events/types.d.ts +989 -0
  39. package/dist/events/types.d.ts.map +1 -0
  40. package/dist/events/types.js +136 -0
  41. package/dist/events/types.js.map +1 -0
  42. package/dist/experts/ConsensusEngine.d.ts +57 -0
  43. package/dist/experts/ConsensusEngine.d.ts.map +1 -0
  44. package/dist/experts/ConsensusEngine.js +146 -0
  45. package/dist/experts/ConsensusEngine.js.map +1 -0
  46. package/dist/experts/ExpertPanelService.d.ts +84 -0
  47. package/dist/experts/ExpertPanelService.d.ts.map +1 -0
  48. package/dist/experts/ExpertPanelService.js +204 -0
  49. package/dist/experts/ExpertPanelService.js.map +1 -0
  50. package/dist/experts/ExpertRouter.d.ts +68 -0
  51. package/dist/experts/ExpertRouter.d.ts.map +1 -0
  52. package/dist/experts/ExpertRouter.js +374 -0
  53. package/dist/experts/ExpertRouter.js.map +1 -0
  54. package/dist/experts/VoteCollector.d.ts +58 -0
  55. package/dist/experts/VoteCollector.d.ts.map +1 -0
  56. package/dist/experts/VoteCollector.js +146 -0
  57. package/dist/experts/VoteCollector.js.map +1 -0
  58. package/dist/experts/index.d.ts +9 -0
  59. package/dist/experts/index.d.ts.map +1 -0
  60. package/dist/experts/index.js +13 -0
  61. package/dist/experts/index.js.map +1 -0
  62. package/dist/hooks/cloud-pre-tool-use.js +20 -20
  63. package/dist/hooks/expert-review.d.ts +74 -0
  64. package/dist/hooks/expert-review.d.ts.map +1 -0
  65. package/dist/hooks/expert-review.js +220 -0
  66. package/dist/hooks/expert-review.js.map +1 -0
  67. package/dist/hooks/index.d.ts +1 -0
  68. package/dist/hooks/index.d.ts.map +1 -1
  69. package/dist/hooks/index.js +2 -0
  70. package/dist/hooks/index.js.map +1 -1
  71. package/dist/index.d.ts +13 -0
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +22 -0
  74. package/dist/index.js.map +1 -1
  75. package/dist/interfaces/index.d.ts +450 -0
  76. package/dist/interfaces/index.d.ts.map +1 -0
  77. package/dist/interfaces/index.js +50 -0
  78. package/dist/interfaces/index.js.map +1 -0
  79. package/dist/mcp/schemas.d.ts +278 -0
  80. package/dist/mcp/schemas.d.ts.map +1 -0
  81. package/dist/mcp/schemas.js +166 -0
  82. package/dist/mcp/schemas.js.map +1 -0
  83. package/dist/mcp/server.d.ts.map +1 -1
  84. package/dist/mcp/server.js +14 -3
  85. package/dist/mcp/server.js.map +1 -1
  86. package/dist/patterns/feedback-loop.d.ts +264 -0
  87. package/dist/patterns/feedback-loop.d.ts.map +1 -0
  88. package/dist/patterns/feedback-loop.js +329 -0
  89. package/dist/patterns/feedback-loop.js.map +1 -0
  90. package/dist/patterns/index.d.ts +9 -0
  91. package/dist/patterns/index.d.ts.map +1 -0
  92. package/dist/patterns/index.js +9 -0
  93. package/dist/patterns/index.js.map +1 -0
  94. package/dist/patterns/lifecycle.d.ts +88 -0
  95. package/dist/patterns/lifecycle.d.ts.map +1 -0
  96. package/dist/patterns/lifecycle.js +284 -0
  97. package/dist/patterns/lifecycle.js.map +1 -0
  98. package/dist/patterns/registry.d.ts +142 -0
  99. package/dist/patterns/registry.d.ts.map +1 -0
  100. package/dist/patterns/registry.js +442 -0
  101. package/dist/patterns/registry.js.map +1 -0
  102. package/dist/performance/Debouncer.d.ts +91 -0
  103. package/dist/performance/Debouncer.d.ts.map +1 -0
  104. package/dist/performance/Debouncer.js +198 -0
  105. package/dist/performance/Debouncer.js.map +1 -0
  106. package/dist/performance/MemoryDecay.d.ts +82 -0
  107. package/dist/performance/MemoryDecay.d.ts.map +1 -0
  108. package/dist/performance/MemoryDecay.js +153 -0
  109. package/dist/performance/MemoryDecay.js.map +1 -0
  110. package/dist/performance/index.d.ts +7 -0
  111. package/dist/performance/index.d.ts.map +1 -0
  112. package/dist/performance/index.js +9 -0
  113. package/dist/performance/index.js.map +1 -0
  114. package/dist/schema/expert-types.d.ts +395 -0
  115. package/dist/schema/expert-types.d.ts.map +1 -0
  116. package/dist/schema/expert-types.js +250 -0
  117. package/dist/schema/expert-types.js.map +1 -0
  118. package/dist/services/ContextGenerator.js +7 -7
  119. package/dist/services/PlanManager.d.ts +1 -1
  120. package/dist/services/PlanManager.d.ts.map +1 -1
  121. package/dist/services/PlanManager.js +26 -6
  122. package/dist/services/PlanManager.js.map +1 -1
  123. package/dist/services/ProjectScaffold.js +76 -76
  124. package/dist/services/memory-router.js +35 -35
  125. package/dist/services/pattern-tracker.js +90 -90
  126. package/dist/services/semantic-search.js +2 -2
  127. package/package.json +105 -104
  128. package/standards/README.md +50 -50
  129. package/standards/experts/expert-routing.md +215 -215
  130. package/standards/general/code-quality.md +86 -86
  131. package/standards/general/memory-usage.md +205 -205
  132. package/standards/general/sync-workflow.md +235 -235
  133. package/standards/general/workflow.md +82 -82
  134. package/standards/hooks/mandatory-tracking.md +446 -446
  135. package/standards/infrastructure/cloud-database.md +287 -287
  136. package/standards/mcp/server-design.md +243 -243
  137. package/standards/mcp/tool-patterns.md +354 -354
  138. package/standards/skills/skill-structure.md +286 -286
  139. package/standards/skills/workflow-design.md +323 -323
  140. package/standards/tools/tool-design.md +297 -297
  141. package/templates/agents/architecture-expert.md +61 -61
  142. package/templates/agents/database-expert.md +62 -62
  143. package/templates/agents/documentation-expert.md +57 -57
  144. package/templates/agents/memory-expert.md +88 -88
  145. package/templates/agents/performance-expert.md +61 -61
  146. package/templates/agents/security-expert.md +59 -59
  147. package/templates/agents/ux-expert.md +63 -63
  148. package/templates/agents/worker.md +75 -75
  149. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
  150. package/templates/claude-settings.json +72 -72
  151. package/templates/commands/experts.md +138 -138
  152. package/templates/hooks/README.md +158 -158
  153. package/templates/hooks/project.config.json.template +77 -77
  154. package/templates/hooks/settings.local.json.template +57 -57
  155. package/templates/memory-config.json +56 -56
  156. package/templates/memory-config.schema.json +212 -212
  157. package/templates/settings.json +58 -58
  158. package/templates/skills/continue.md +205 -205
  159. package/templates/workflows/business-improvement.md +264 -264
  160. package/templates/workflows/expert-review.md +153 -153
  161. package/templates/workflows/internal-app.md +245 -245
  162. package/templates/workflows/sync-docs.md +187 -187
package/dist/db/errors.js CHANGED
@@ -2,6 +2,41 @@
2
2
  * @file Cloud Database Errors
3
3
  * @description Custom error classes for database operations
4
4
  */
5
+ // =============================================================================
6
+ // Error Sanitization
7
+ // =============================================================================
8
+ /**
9
+ * Sanitize error messages to prevent credential/token leakage
10
+ */
11
+ export function sanitizeError(error) {
12
+ const msg = String(error);
13
+ return msg
14
+ // Remove URLs (may contain embedded credentials)
15
+ .replace(/https?:\/\/[^\s]+/g, '[REDACTED_URL]')
16
+ // Remove libsql:// connection strings
17
+ .replace(/libsql:\/\/[^\s]+/g, '[REDACTED_URL]')
18
+ // Remove long alphanumeric strings (likely tokens)
19
+ .replace(/[A-Za-z0-9_-]{32,}/g, '[REDACTED_TOKEN]')
20
+ // Remove common secret patterns
21
+ .replace(/Bearer\s+[^\s]+/gi, 'Bearer [REDACTED]')
22
+ .replace(/token[=:]\s*[^\s&]+/gi, 'token=[REDACTED]')
23
+ .replace(/password[=:]\s*[^\s&]+/gi, 'password=[REDACTED]')
24
+ .replace(/authToken[=:]\s*[^\s&]+/gi, 'authToken=[REDACTED]');
25
+ }
26
+ /**
27
+ * Sanitize an Error object
28
+ */
29
+ export function sanitizeErrorObject(error) {
30
+ const sanitized = new Error(sanitizeError(error.message));
31
+ sanitized.name = error.name;
32
+ if (error.stack) {
33
+ sanitized.stack = sanitizeError(error.stack);
34
+ }
35
+ return sanitized;
36
+ }
37
+ // =============================================================================
38
+ // Base Error Class
39
+ // =============================================================================
5
40
  /**
6
41
  * Base error for all cloud operations
7
42
  */
@@ -9,7 +44,8 @@ export class CloudBaseError extends Error {
9
44
  cause;
10
45
  code;
11
46
  constructor(message, cause, code) {
12
- super(message);
47
+ // Sanitize message to prevent token leakage
48
+ super(sanitizeError(message));
13
49
  this.cause = cause;
14
50
  this.code = code;
15
51
  this.name = this.constructor.name;
@@ -28,17 +64,25 @@ export class CloudBaseError extends Error {
28
64
  return this.cause ?? this;
29
65
  }
30
66
  /**
31
- * Format error for logging
67
+ * Format error for logging (sanitized)
32
68
  */
33
69
  toJSON() {
34
70
  return {
35
71
  name: this.name,
36
- message: this.message,
72
+ message: this.message, // Already sanitized in constructor
37
73
  code: this.code,
38
- cause: this.cause instanceof Error ? this.cause.message : this.cause,
39
- stack: this.stack
74
+ cause: this.cause instanceof Error
75
+ ? sanitizeError(this.cause.message)
76
+ : sanitizeError(String(this.cause)),
77
+ // Don't include stack in JSON (may contain sensitive paths)
40
78
  };
41
79
  }
80
+ /**
81
+ * Get sanitized message
82
+ */
83
+ getSanitizedMessage() {
84
+ return this.message; // Already sanitized
85
+ }
42
86
  }
43
87
  /**
44
88
  * Turso (SQLite) specific errors
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/db/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @file Database Migrations
3
+ * @description Version-controlled schema changes for Turso
4
+ * @version 2.8.0
5
+ */
6
+ import type { Client } from '@libsql/client';
7
+ export interface Migration {
8
+ version: number;
9
+ name: string;
10
+ up: (db: Client) => Promise<void>;
11
+ down: (db: Client) => Promise<void>;
12
+ }
13
+ export interface MigrationStatus {
14
+ current: number;
15
+ pending: number;
16
+ applied: Array<{
17
+ version: number;
18
+ name: string;
19
+ appliedAt: string;
20
+ }>;
21
+ }
22
+ declare const migrations: Migration[];
23
+ /**
24
+ * Run all pending migrations
25
+ */
26
+ export declare function runMigrations(): Promise<{
27
+ applied: number;
28
+ current: number;
29
+ }>;
30
+ /**
31
+ * Get migration status
32
+ */
33
+ export declare function getMigrationStatus(): Promise<MigrationStatus>;
34
+ /**
35
+ * Rollback last migration
36
+ */
37
+ export declare function rollbackMigration(): Promise<{
38
+ rolledBack: number | null;
39
+ current: number;
40
+ }>;
41
+ export { migrations };
42
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAW,MAAM,gBAAgB,CAAA;AAOrD,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACrE;AAMD,QAAA,MAAM,UAAU,EAAE,SAAS,EA+D1B,CAAA;AAMD;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CA4CD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAwBnE;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IACjD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAC,CA2BD;AAMD,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * @file Database Migrations
3
+ * @description Version-controlled schema changes for Turso
4
+ * @version 2.8.0
5
+ */
6
+ import { getTurso, TursoError } from './turso-client.js';
7
+ // =============================================================================
8
+ // Migrations
9
+ // =============================================================================
10
+ const migrations = [
11
+ {
12
+ version: 1,
13
+ name: 'initial_schema',
14
+ up: async (db) => {
15
+ await db.execute(`
16
+ CREATE TABLE IF NOT EXISTS items (
17
+ id TEXT PRIMARY KEY,
18
+ type TEXT NOT NULL,
19
+ status TEXT NOT NULL DEFAULT 'pending',
20
+ system TEXT NOT NULL,
21
+ content TEXT NOT NULL,
22
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
23
+ updated_at TEXT NOT NULL DEFAULT (datetime('now'))
24
+ )
25
+ `);
26
+ await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_type ON items(type)`);
27
+ await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_status ON items(status)`);
28
+ await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_system ON items(system)`);
29
+ await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_type_status ON items(type, status)`);
30
+ },
31
+ down: async (db) => {
32
+ await db.execute(`DROP TABLE IF EXISTS items`);
33
+ }
34
+ },
35
+ {
36
+ version: 2,
37
+ name: 'add_parent_id',
38
+ up: async (db) => {
39
+ // Check if column exists
40
+ const result = await db.execute(`PRAGMA table_info(items)`);
41
+ const hasParentId = result.rows.some(row => row.name === 'parent_id');
42
+ if (!hasParentId) {
43
+ await db.execute(`ALTER TABLE items ADD COLUMN parent_id TEXT`);
44
+ await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_parent_id ON items(parent_id)`);
45
+ }
46
+ },
47
+ down: async () => {
48
+ // SQLite doesn't support DROP COLUMN easily
49
+ throw new Error('Migration 2 rollback not supported - requires table recreation');
50
+ }
51
+ },
52
+ {
53
+ version: 3,
54
+ name: 'add_system_type_status_index',
55
+ up: async (db) => {
56
+ await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_system_type_status ON items(system, type, status)`);
57
+ },
58
+ down: async (db) => {
59
+ await db.execute(`DROP INDEX IF EXISTS idx_items_system_type_status`);
60
+ }
61
+ },
62
+ {
63
+ version: 4,
64
+ name: 'add_created_at_index',
65
+ up: async (db) => {
66
+ await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_created_at ON items(created_at)`);
67
+ },
68
+ down: async (db) => {
69
+ await db.execute(`DROP INDEX IF EXISTS idx_items_created_at`);
70
+ }
71
+ }
72
+ ];
73
+ // =============================================================================
74
+ // Migration Runner
75
+ // =============================================================================
76
+ /**
77
+ * Run all pending migrations
78
+ */
79
+ export async function runMigrations() {
80
+ const db = getTurso();
81
+ // Create migrations tracking table
82
+ await db.execute(`
83
+ CREATE TABLE IF NOT EXISTS schema_migrations (
84
+ version INTEGER PRIMARY KEY,
85
+ name TEXT NOT NULL,
86
+ applied_at TEXT NOT NULL DEFAULT (datetime('now'))
87
+ )
88
+ `);
89
+ // Get current version
90
+ const result = await db.execute('SELECT MAX(version) as version FROM schema_migrations');
91
+ const currentVersion = result.rows[0]?.version || 0;
92
+ let applied = 0;
93
+ // Run pending migrations
94
+ for (const migration of migrations) {
95
+ if (migration.version > currentVersion) {
96
+ console.log(`[Migration] Running ${migration.version}: ${migration.name}`);
97
+ try {
98
+ await migration.up(db);
99
+ await db.execute({
100
+ sql: 'INSERT INTO schema_migrations (version, name) VALUES (?, ?)',
101
+ args: [migration.version, migration.name]
102
+ });
103
+ console.log(`[Migration] ✓ ${migration.version} completed`);
104
+ applied++;
105
+ }
106
+ catch (error) {
107
+ console.error(`[Migration] ✗ ${migration.version} failed:`, error);
108
+ throw new TursoError(`Migration ${migration.version} failed`, error, 'init');
109
+ }
110
+ }
111
+ }
112
+ const newVersion = currentVersion + applied;
113
+ if (applied > 0) {
114
+ console.log(`[Migration] Applied ${applied} migrations. Now at version ${newVersion}`);
115
+ }
116
+ return { applied, current: newVersion };
117
+ }
118
+ /**
119
+ * Get migration status
120
+ */
121
+ export async function getMigrationStatus() {
122
+ const db = getTurso();
123
+ // Check if migrations table exists
124
+ const tables = await db.execute(`
125
+ SELECT name FROM sqlite_master
126
+ WHERE type='table' AND name='schema_migrations'
127
+ `);
128
+ if (tables.rows.length === 0) {
129
+ return { current: 0, pending: migrations.length, applied: [] };
130
+ }
131
+ const result = await db.execute('SELECT version, name, applied_at FROM schema_migrations ORDER BY version');
132
+ const applied = result.rows.map(row => ({
133
+ version: row.version,
134
+ name: row.name,
135
+ appliedAt: row.applied_at
136
+ }));
137
+ const current = applied.length > 0 ? Math.max(...applied.map(a => a.version)) : 0;
138
+ const pending = migrations.filter(m => m.version > current).length;
139
+ return { current, pending, applied };
140
+ }
141
+ /**
142
+ * Rollback last migration
143
+ */
144
+ export async function rollbackMigration() {
145
+ const db = getTurso();
146
+ const status = await getMigrationStatus();
147
+ if (status.current === 0) {
148
+ return { rolledBack: null, current: 0 };
149
+ }
150
+ const migration = migrations.find(m => m.version === status.current);
151
+ if (!migration) {
152
+ throw new TursoError(`Migration ${status.current} not found`, undefined, 'init');
153
+ }
154
+ console.log(`[Migration] Rolling back ${migration.version}: ${migration.name}`);
155
+ try {
156
+ await migration.down(db);
157
+ await db.execute({
158
+ sql: 'DELETE FROM schema_migrations WHERE version = ?',
159
+ args: [migration.version]
160
+ });
161
+ console.log(`[Migration] ✓ Rollback complete`);
162
+ return { rolledBack: migration.version, current: status.current - 1 };
163
+ }
164
+ catch (error) {
165
+ console.error(`[Migration] ✗ Rollback failed:`, error);
166
+ throw new TursoError(`Rollback of migration ${migration.version} failed`, error, 'init');
167
+ }
168
+ }
169
+ // =============================================================================
170
+ // Exports
171
+ // =============================================================================
172
+ export { migrations };
173
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/db/migrations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAmBxD,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,MAAM,UAAU,GAAgB;IAC9B;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,gBAAgB;QACtB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACf,MAAM,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;OAUhB,CAAC,CAAA;YACF,MAAM,EAAE,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAA;YAC5E,MAAM,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAA;YAChF,MAAM,EAAE,CAAC,OAAO,CAAC,8DAA8D,CAAC,CAAA;YAChF,MAAM,EAAE,CAAC,OAAO,CAAC,yEAAyE,CAAC,CAAA;QAC7F,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACjB,MAAM,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAA;QAChD,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,eAAe;QACrB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACf,yBAAyB;YACzB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAA;YAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;YAErE,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAA;gBAC/D,MAAM,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAA;YACxF,CAAC;QACH,CAAC;QACD,IAAI,EAAE,KAAK,IAAI,EAAE;YACf,4CAA4C;YAC5C,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;QACnF,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,8BAA8B;QACpC,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACf,MAAM,EAAE,CAAC,OAAO,CAAC,wFAAwF,CAAC,CAAA;QAC5G,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACjB,MAAM,EAAE,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAA;QACvE,CAAC;KACF;IACD;QACE,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,sBAAsB;QAC5B,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACf,MAAM,EAAE,CAAC,OAAO,CAAC,sEAAsE,CAAC,CAAA;QAC1F,CAAC;QACD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;YACjB,MAAM,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAA;QAC/D,CAAC;KACF;CACF,CAAA;AAED,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IAIjC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAErB,mCAAmC;IACnC,MAAM,EAAE,CAAC,OAAO,CAAC;;;;;;GAMhB,CAAC,CAAA;IAEF,sBAAsB;IACtB,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAA;IACxF,MAAM,cAAc,GAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAkB,IAAI,CAAC,CAAA;IAE/D,IAAI,OAAO,GAAG,CAAC,CAAA;IAEf,yBAAyB;IACzB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,OAAO,GAAG,cAAc,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;YAE1E,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;gBACtB,MAAM,EAAE,CAAC,OAAO,CAAC;oBACf,GAAG,EAAE,6DAA6D;oBAClE,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC;iBAC1C,CAAC,CAAA;gBACF,OAAO,CAAC,GAAG,CAAC,iBAAiB,SAAS,CAAC,OAAO,YAAY,CAAC,CAAA;gBAC3D,OAAO,EAAE,CAAA;YACX,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,iBAAiB,SAAS,CAAC,OAAO,UAAU,EAAE,KAAK,CAAC,CAAA;gBAClE,MAAM,IAAI,UAAU,CAAC,aAAa,SAAS,CAAC,OAAO,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;YAC9E,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,GAAG,OAAO,CAAA;IAC3C,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,OAAO,+BAA+B,UAAU,EAAE,CAAC,CAAA;IACxF,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAA;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAErB,mCAAmC;IACnC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;;;GAG/B,CAAC,CAAA;IAEF,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAA;IAChE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,0EAA0E,CAAC,CAAA;IAC3G,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,EAAE,GAAG,CAAC,OAAiB;QAC9B,IAAI,EAAE,GAAG,CAAC,IAAc;QACxB,SAAS,EAAE,GAAG,CAAC,UAAoB;KACpC,CAAC,CAAC,CAAA;IAEH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACjF,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,MAAM,CAAA;IAElE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IAIrC,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAA;IAErB,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAA;IACzC,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAA;IACzC,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,CAAC,CAAA;IACpE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,UAAU,CAAC,aAAa,MAAM,CAAC,OAAO,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAClF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;IAE/E,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxB,MAAM,EAAE,CAAC,OAAO,CAAC;YACf,GAAG,EAAE,iDAAiD;YACtD,IAAI,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC;SAC1B,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAA;QAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAA;IACvE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAA;QACtD,MAAM,IAAI,UAAU,CAAC,yBAAyB,SAAS,CAAC,OAAO,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAC1F,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,UAAU;AACV,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,CAAA"}
@@ -2,8 +2,10 @@
2
2
  * @file Cliente Turso (SQLite Edge)
3
3
  * @description Cliente serverless para Turso - base de datos principal para tareas, mejoras y memorias
4
4
  */
5
- import { type Client } from '@libsql/client';
5
+ import { type Client, type InValue } from '@libsql/client';
6
6
  import type { TaskContent, ImprovementContent } from '../schema/tracking.js';
7
+ import { TursoError } from './errors.js';
8
+ export { TursoError };
7
9
  export interface TursoConfig {
8
10
  url: string;
9
11
  authToken: string;
@@ -35,10 +37,19 @@ export declare function initTurso(config?: TursoConfig): Client;
35
37
  */
36
38
  export declare function getTurso(): Client;
37
39
  /**
38
- * Crear tablas en Turso
40
+ * Crear tablas en Turso usando sistema de migraciones
39
41
  * @throws {TursoError} If schema creation fails
40
42
  */
41
43
  export declare function setupTursoSchema(): Promise<void>;
44
+ export interface TransactionStatement {
45
+ sql: string;
46
+ args: InValue[];
47
+ }
48
+ /**
49
+ * Execute multiple statements in an atomic transaction
50
+ * @throws {TursoError} If transaction fails
51
+ */
52
+ export declare function transaction(statements: TransactionStatement[]): Promise<void>;
42
53
  /**
43
54
  * Crear un nuevo item
44
55
  * @throws {TursoError} If insert fails
@@ -105,7 +116,7 @@ export declare function getActiveTasks(system: string): Promise<Array<{
105
116
  */
106
117
  export declare function updateTaskProgress(taskId: string, updates: Partial<TaskContent>): Promise<void>;
107
118
  /**
108
- * Completar tarea
119
+ * Completar tarea (con transacción atómica)
109
120
  * @throws {NotFoundError} If task not found
110
121
  * @throws {TursoError} If update fails
111
122
  */
@@ -164,6 +175,7 @@ export declare const turso: {
164
175
  update: typeof update;
165
176
  query: typeof query;
166
177
  remove: typeof remove;
178
+ transaction: typeof transaction;
167
179
  createTask: typeof createTask;
168
180
  getActiveTasks: typeof getActiveTasks;
169
181
  updateTaskProgress: typeof updateTaskProgress;
@@ -1 +1 @@
1
- {"version":3,"file":"turso-client.d.ts","sourceRoot":"","sources":["../../src/db/turso-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turso-client.d.ts","sourceRoot":"","sources":["../../src/db/turso-client.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@
5
5
  import { createClient } from '@libsql/client';
6
6
  import { ulid } from 'ulid';
7
7
  import { TursoError, NotFoundError, ConfigError, safeJsonParse } from './errors.js';
8
+ // Re-export TursoError for migrations
9
+ export { TursoError };
8
10
  // Allowed orderBy columns (prevent SQL injection)
9
11
  const ALLOWED_ORDER_COLUMNS = ['created_at', 'updated_at', 'id', 'type', 'status'];
10
12
  const ALLOWED_ORDER_DIRS = ['ASC', 'DESC'];
@@ -53,35 +55,33 @@ export function getTurso() {
53
55
  // Schema Setup
54
56
  // =============================================================================
55
57
  /**
56
- * Crear tablas en Turso
58
+ * Crear tablas en Turso usando sistema de migraciones
57
59
  * @throws {TursoError} If schema creation fails
58
60
  */
59
61
  export async function setupTursoSchema() {
60
62
  try {
61
- const db = getTurso();
62
- // Tabla principal de items (similar a DEV_Items en MySQL)
63
- await db.execute(`
64
- CREATE TABLE IF NOT EXISTS items (
65
- id TEXT PRIMARY KEY,
66
- type TEXT NOT NULL,
67
- status TEXT NOT NULL DEFAULT 'pending',
68
- system TEXT NOT NULL,
69
- content TEXT NOT NULL,
70
- created_at TEXT NOT NULL DEFAULT (datetime('now')),
71
- updated_at TEXT NOT NULL DEFAULT (datetime('now'))
72
- )
73
- `);
74
- // Índices para queries comunes
75
- await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_type ON items(type)`);
76
- await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_status ON items(status)`);
77
- await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_system ON items(system)`);
78
- await db.execute(`CREATE INDEX IF NOT EXISTS idx_items_type_status ON items(type, status)`);
63
+ // Import dynamically to avoid circular deps
64
+ const { runMigrations } = await import('./migrations.js');
65
+ await runMigrations();
79
66
  console.log('✓ Turso schema initialized');
80
67
  }
81
68
  catch (error) {
82
69
  throw new TursoError('Failed to setup Turso schema', error, 'init');
83
70
  }
84
71
  }
72
+ /**
73
+ * Execute multiple statements in an atomic transaction
74
+ * @throws {TursoError} If transaction fails
75
+ */
76
+ export async function transaction(statements) {
77
+ try {
78
+ const db = getTurso();
79
+ await db.batch(statements, 'write');
80
+ }
81
+ catch (error) {
82
+ throw new TursoError('Transaction failed', error, 'update');
83
+ }
84
+ }
85
85
  // =============================================================================
86
86
  // CRUD Operations
87
87
  // =============================================================================
@@ -95,7 +95,7 @@ export async function create(type, system, content, status = 'pending') {
95
95
  const id = ulid();
96
96
  const now = new Date().toISOString();
97
97
  await db.execute({
98
- sql: `INSERT INTO items (id, type, status, system, content, created_at, updated_at)
98
+ sql: `INSERT INTO items (id, type, status, system, content, created_at, updated_at)
99
99
  VALUES (?, ?, ?, ?, ?, ?, ?)`,
100
100
  args: [id, type, status, system, JSON.stringify(content), now, now]
101
101
  });
@@ -295,7 +295,7 @@ export async function updateTaskProgress(taskId, updates) {
295
295
  });
296
296
  }
297
297
  /**
298
- * Completar tarea
298
+ * Completar tarea (con transacción atómica)
299
299
  * @throws {NotFoundError} If task not found
300
300
  * @throws {TursoError} If update fails
301
301
  */
@@ -304,9 +304,11 @@ export async function completeTask(taskId, result) {
304
304
  if (!existing)
305
305
  throw new NotFoundError('Task', taskId);
306
306
  const now = new Date().toISOString();
307
- // Crear mejoras como items separados
307
+ const statements = [];
308
+ // Build improvement insert statements
308
309
  for (const imp of result.improvements) {
309
- await create('improvement', existing.system, {
310
+ const impId = ulid();
311
+ const impContent = {
310
312
  area: imp.area,
311
313
  title: imp.title,
312
314
  description: imp.description,
@@ -315,24 +317,32 @@ export async function completeTask(taskId, result) {
315
317
  detectedAt: now,
316
318
  priority: imp.priority,
317
319
  effort: imp.effort
318
- }, 'pending');
320
+ };
321
+ statements.push({
322
+ sql: `INSERT INTO items (id, type, status, system, content, created_at, updated_at)
323
+ VALUES (?, ?, ?, ?, ?, ?, ?)`,
324
+ args: [impId, 'improvement', 'pending', existing.system, JSON.stringify(impContent), now, now]
325
+ });
319
326
  }
320
- // Actualizar tarea
321
- await update(taskId, {
322
- status: 'completed',
323
- content: {
324
- ...existing.content,
325
- result: result.result,
326
- resultNotes: result.resultNotes,
327
- completedAt: now,
328
- improvements: result.improvements.map((imp, i) => ({
329
- id: `imp_${i}`,
330
- ...imp,
331
- detectedAt: now
332
- })),
333
- lessons: result.lessons || []
334
- }
327
+ // Build task update statement
328
+ const updatedContent = {
329
+ ...existing.content,
330
+ result: result.result,
331
+ resultNotes: result.resultNotes,
332
+ completedAt: now,
333
+ improvements: result.improvements.map((imp, i) => ({
334
+ id: `imp_${i}`,
335
+ ...imp,
336
+ detectedAt: now
337
+ })),
338
+ lessons: result.lessons || []
339
+ };
340
+ statements.push({
341
+ sql: `UPDATE items SET status = ?, content = ?, updated_at = ? WHERE id = ?`,
342
+ args: ['completed', JSON.stringify(updatedContent), now, taskId]
335
343
  });
344
+ // Execute all statements atomically
345
+ await transaction(statements);
336
346
  }
337
347
  // =============================================================================
338
348
  // Improvement Operations
@@ -438,6 +448,7 @@ export const turso = {
438
448
  update,
439
449
  query,
440
450
  remove,
451
+ transaction,
441
452
  // Tasks
442
453
  createTask,
443
454
  getActiveTasks,
@@ -1 +1 @@
1
- {"version":3,"file":"turso-client.js","sourceRoot":"","sources":["../../src/db/turso-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"turso-client.js","sourceRoot":"","sources":["../../src/db/turso-client.ts"],"names":[],"mappings":"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"}
@@ -14,12 +14,12 @@ const rule = {
14
14
  },
15
15
  messages: {
16
16
  noAsyncUseEffect: 'useEffect callback cannot be async. Create an inner async function and call it.',
17
- suggestion: `
18
- useEffect(() => {
19
- const fetchData = async () => {
20
- // your async code
21
- };
22
- fetchData();
17
+ suggestion: `
18
+ useEffect(() => {
19
+ const fetchData = async () => {
20
+ // your async code
21
+ };
22
+ fetchData();
23
23
  }, []);`,
24
24
  },
25
25
  schema: [],