cmp-standards 2.0.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 (238) hide show
  1. package/README.md +541 -0
  2. package/dist/analytics/index.d.ts +5 -0
  3. package/dist/analytics/index.d.ts.map +1 -0
  4. package/dist/analytics/index.js +5 -0
  5. package/dist/analytics/index.js.map +1 -0
  6. package/dist/analytics/tracker.d.ts +107 -0
  7. package/dist/analytics/tracker.d.ts.map +1 -0
  8. package/dist/analytics/tracker.js +333 -0
  9. package/dist/analytics/tracker.js.map +1 -0
  10. package/dist/auto-improve/eslint-generator.d.ts +36 -0
  11. package/dist/auto-improve/eslint-generator.d.ts.map +1 -0
  12. package/dist/auto-improve/eslint-generator.js +280 -0
  13. package/dist/auto-improve/eslint-generator.js.map +1 -0
  14. package/dist/auto-improve/index.d.ts +6 -0
  15. package/dist/auto-improve/index.d.ts.map +1 -0
  16. package/dist/auto-improve/index.js +6 -0
  17. package/dist/auto-improve/index.js.map +1 -0
  18. package/dist/auto-improve/pattern-detector.d.ts +92 -0
  19. package/dist/auto-improve/pattern-detector.d.ts.map +1 -0
  20. package/dist/auto-improve/pattern-detector.js +231 -0
  21. package/dist/auto-improve/pattern-detector.js.map +1 -0
  22. package/dist/cli/index.d.ts +18 -0
  23. package/dist/cli/index.d.ts.map +1 -0
  24. package/dist/cli/index.js +769 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/dashboard/index.d.ts +6 -0
  27. package/dist/dashboard/index.d.ts.map +1 -0
  28. package/dist/dashboard/index.js +6 -0
  29. package/dist/dashboard/index.js.map +1 -0
  30. package/dist/dashboard/server.d.ts +15 -0
  31. package/dist/dashboard/server.d.ts.map +1 -0
  32. package/dist/dashboard/server.js +373 -0
  33. package/dist/dashboard/server.js.map +1 -0
  34. package/dist/dashboard/ui.d.ts +9 -0
  35. package/dist/dashboard/ui.d.ts.map +1 -0
  36. package/dist/dashboard/ui.js +530 -0
  37. package/dist/dashboard/ui.js.map +1 -0
  38. package/dist/db/client.d.ts +66 -0
  39. package/dist/db/client.d.ts.map +1 -0
  40. package/dist/db/client.js +159 -0
  41. package/dist/db/client.js.map +1 -0
  42. package/dist/db/drizzle-client.d.ts +302 -0
  43. package/dist/db/drizzle-client.d.ts.map +1 -0
  44. package/dist/db/drizzle-client.js +404 -0
  45. package/dist/db/drizzle-client.js.map +1 -0
  46. package/dist/db/index.d.ts +5 -0
  47. package/dist/db/index.d.ts.map +1 -0
  48. package/dist/db/index.js +5 -0
  49. package/dist/db/index.js.map +1 -0
  50. package/dist/eslint/config-builder.d.ts +45 -0
  51. package/dist/eslint/config-builder.d.ts.map +1 -0
  52. package/dist/eslint/config-builder.js +128 -0
  53. package/dist/eslint/config-builder.js.map +1 -0
  54. package/dist/eslint/index.d.ts +161 -0
  55. package/dist/eslint/index.d.ts.map +1 -0
  56. package/dist/eslint/index.js +106 -0
  57. package/dist/eslint/index.js.map +1 -0
  58. package/dist/eslint/rules/consistent-error-handling.d.ts +9 -0
  59. package/dist/eslint/rules/consistent-error-handling.d.ts.map +1 -0
  60. package/dist/eslint/rules/consistent-error-handling.js +52 -0
  61. package/dist/eslint/rules/consistent-error-handling.js.map +1 -0
  62. package/dist/eslint/rules/finance-ledger-sync.d.ts +12 -0
  63. package/dist/eslint/rules/finance-ledger-sync.d.ts.map +1 -0
  64. package/dist/eslint/rules/finance-ledger-sync.js +72 -0
  65. package/dist/eslint/rules/finance-ledger-sync.js.map +1 -0
  66. package/dist/eslint/rules/no-async-useeffect.d.ts +10 -0
  67. package/dist/eslint/rules/no-async-useeffect.d.ts.map +1 -0
  68. package/dist/eslint/rules/no-async-useeffect.js +49 -0
  69. package/dist/eslint/rules/no-async-useeffect.js.map +1 -0
  70. package/dist/eslint/rules/no-await-in-loop.d.ts +10 -0
  71. package/dist/eslint/rules/no-await-in-loop.d.ts.map +1 -0
  72. package/dist/eslint/rules/no-await-in-loop.js +51 -0
  73. package/dist/eslint/rules/no-await-in-loop.js.map +1 -0
  74. package/dist/eslint/rules/no-inline-functions-in-jsx.d.ts +10 -0
  75. package/dist/eslint/rules/no-inline-functions-in-jsx.d.ts.map +1 -0
  76. package/dist/eslint/rules/no-inline-functions-in-jsx.js +45 -0
  77. package/dist/eslint/rules/no-inline-functions-in-jsx.js.map +1 -0
  78. package/dist/eslint/rules/no-raw-sql.d.ts +19 -0
  79. package/dist/eslint/rules/no-raw-sql.d.ts.map +1 -0
  80. package/dist/eslint/rules/no-raw-sql.js +136 -0
  81. package/dist/eslint/rules/no-raw-sql.js.map +1 -0
  82. package/dist/eslint/rules/no-sequential-api-calls.d.ts +10 -0
  83. package/dist/eslint/rules/no-sequential-api-calls.d.ts.map +1 -0
  84. package/dist/eslint/rules/no-sequential-api-calls.js +72 -0
  85. package/dist/eslint/rules/no-sequential-api-calls.js.map +1 -0
  86. package/dist/eslint/rules/prefer-server-components.d.ts +10 -0
  87. package/dist/eslint/rules/prefer-server-components.d.ts.map +1 -0
  88. package/dist/eslint/rules/prefer-server-components.js +76 -0
  89. package/dist/eslint/rules/prefer-server-components.js.map +1 -0
  90. package/dist/eslint/rules/require-loading-states.d.ts +9 -0
  91. package/dist/eslint/rules/require-loading-states.d.ts.map +1 -0
  92. package/dist/eslint/rules/require-loading-states.js +85 -0
  93. package/dist/eslint/rules/require-loading-states.js.map +1 -0
  94. package/dist/eslint/rules/require-zod-validation.d.ts +10 -0
  95. package/dist/eslint/rules/require-zod-validation.d.ts.map +1 -0
  96. package/dist/eslint/rules/require-zod-validation.js +70 -0
  97. package/dist/eslint/rules/require-zod-validation.js.map +1 -0
  98. package/dist/eslint/rules/semantic-tokens-only.d.ts +10 -0
  99. package/dist/eslint/rules/semantic-tokens-only.d.ts.map +1 -0
  100. package/dist/eslint/rules/semantic-tokens-only.js +62 -0
  101. package/dist/eslint/rules/semantic-tokens-only.js.map +1 -0
  102. package/dist/feedback/collector.d.ts +74 -0
  103. package/dist/feedback/collector.d.ts.map +1 -0
  104. package/dist/feedback/collector.js +231 -0
  105. package/dist/feedback/collector.js.map +1 -0
  106. package/dist/feedback/index.d.ts +5 -0
  107. package/dist/feedback/index.d.ts.map +1 -0
  108. package/dist/feedback/index.js +5 -0
  109. package/dist/feedback/index.js.map +1 -0
  110. package/dist/hooks/index.d.ts +8 -0
  111. package/dist/hooks/index.d.ts.map +1 -0
  112. package/dist/hooks/index.js +8 -0
  113. package/dist/hooks/index.js.map +1 -0
  114. package/dist/hooks/memory-checkpoint.d.ts +43 -0
  115. package/dist/hooks/memory-checkpoint.d.ts.map +1 -0
  116. package/dist/hooks/memory-checkpoint.js +257 -0
  117. package/dist/hooks/memory-checkpoint.js.map +1 -0
  118. package/dist/hooks/post-tool-use.d.ts +61 -0
  119. package/dist/hooks/post-tool-use.d.ts.map +1 -0
  120. package/dist/hooks/post-tool-use.js +262 -0
  121. package/dist/hooks/post-tool-use.js.map +1 -0
  122. package/dist/hooks/pre-tool-use.d.ts +34 -0
  123. package/dist/hooks/pre-tool-use.d.ts.map +1 -0
  124. package/dist/hooks/pre-tool-use.js +358 -0
  125. package/dist/hooks/pre-tool-use.js.map +1 -0
  126. package/dist/hooks/session-start.d.ts +38 -0
  127. package/dist/hooks/session-start.d.ts.map +1 -0
  128. package/dist/hooks/session-start.js +274 -0
  129. package/dist/hooks/session-start.js.map +1 -0
  130. package/dist/index.d.ts +29 -0
  131. package/dist/index.d.ts.map +1 -0
  132. package/dist/index.js +39 -0
  133. package/dist/index.js.map +1 -0
  134. package/dist/mcp/index.d.ts +5 -0
  135. package/dist/mcp/index.d.ts.map +1 -0
  136. package/dist/mcp/index.js +5 -0
  137. package/dist/mcp/index.js.map +1 -0
  138. package/dist/mcp/server.d.ts +42 -0
  139. package/dist/mcp/server.d.ts.map +1 -0
  140. package/dist/mcp/server.js +599 -0
  141. package/dist/mcp/server.js.map +1 -0
  142. package/dist/registry/embeddings.d.ts +38 -0
  143. package/dist/registry/embeddings.d.ts.map +1 -0
  144. package/dist/registry/embeddings.js +110 -0
  145. package/dist/registry/embeddings.js.map +1 -0
  146. package/dist/registry/generator.d.ts +41 -0
  147. package/dist/registry/generator.d.ts.map +1 -0
  148. package/dist/registry/generator.js +323 -0
  149. package/dist/registry/generator.js.map +1 -0
  150. package/dist/registry/index.d.ts +6 -0
  151. package/dist/registry/index.d.ts.map +1 -0
  152. package/dist/registry/index.js +6 -0
  153. package/dist/registry/index.js.map +1 -0
  154. package/dist/services/IdeaCollector.d.ts +103 -0
  155. package/dist/services/IdeaCollector.d.ts.map +1 -0
  156. package/dist/services/IdeaCollector.js +371 -0
  157. package/dist/services/IdeaCollector.js.map +1 -0
  158. package/dist/services/ProjectScaffold.d.ts +76 -0
  159. package/dist/services/ProjectScaffold.d.ts.map +1 -0
  160. package/dist/services/ProjectScaffold.js +479 -0
  161. package/dist/services/ProjectScaffold.js.map +1 -0
  162. package/dist/services/ProjectScanner.d.ts +81 -0
  163. package/dist/services/ProjectScanner.d.ts.map +1 -0
  164. package/dist/services/ProjectScanner.js +349 -0
  165. package/dist/services/ProjectScanner.js.map +1 -0
  166. package/dist/services/TaskTracker.d.ts +89 -0
  167. package/dist/services/TaskTracker.d.ts.map +1 -0
  168. package/dist/services/TaskTracker.js +324 -0
  169. package/dist/services/TaskTracker.js.map +1 -0
  170. package/dist/services/WorkPlanManager.d.ts +107 -0
  171. package/dist/services/WorkPlanManager.d.ts.map +1 -0
  172. package/dist/services/WorkPlanManager.js +440 -0
  173. package/dist/services/WorkPlanManager.js.map +1 -0
  174. package/dist/services/auto-inject.d.ts +77 -0
  175. package/dist/services/auto-inject.d.ts.map +1 -0
  176. package/dist/services/auto-inject.js +289 -0
  177. package/dist/services/auto-inject.js.map +1 -0
  178. package/dist/services/auto-tag.d.ts +61 -0
  179. package/dist/services/auto-tag.d.ts.map +1 -0
  180. package/dist/services/auto-tag.js +203 -0
  181. package/dist/services/auto-tag.js.map +1 -0
  182. package/dist/services/cross-project-sync.d.ts +76 -0
  183. package/dist/services/cross-project-sync.d.ts.map +1 -0
  184. package/dist/services/cross-project-sync.js +235 -0
  185. package/dist/services/cross-project-sync.js.map +1 -0
  186. package/dist/services/index.d.ts +17 -0
  187. package/dist/services/index.d.ts.map +1 -0
  188. package/dist/services/index.js +23 -0
  189. package/dist/services/index.js.map +1 -0
  190. package/dist/services/memory-consolidation.d.ts +77 -0
  191. package/dist/services/memory-consolidation.d.ts.map +1 -0
  192. package/dist/services/memory-consolidation.js +298 -0
  193. package/dist/services/memory-consolidation.js.map +1 -0
  194. package/dist/services/semantic-search.d.ts +93 -0
  195. package/dist/services/semantic-search.d.ts.map +1 -0
  196. package/dist/services/semantic-search.js +278 -0
  197. package/dist/services/semantic-search.js.map +1 -0
  198. package/dist/services/weekly-digest.d.ts +105 -0
  199. package/dist/services/weekly-digest.d.ts.map +1 -0
  200. package/dist/services/weekly-digest.js +292 -0
  201. package/dist/services/weekly-digest.js.map +1 -0
  202. package/dist/types/index.d.ts +274 -0
  203. package/dist/types/index.d.ts.map +1 -0
  204. package/dist/types/index.js +84 -0
  205. package/dist/types/index.js.map +1 -0
  206. package/dist/utils/config.d.ts +21 -0
  207. package/dist/utils/config.d.ts.map +1 -0
  208. package/dist/utils/config.js +89 -0
  209. package/dist/utils/config.js.map +1 -0
  210. package/dist/utils/index.d.ts +6 -0
  211. package/dist/utils/index.d.ts.map +1 -0
  212. package/dist/utils/index.js +6 -0
  213. package/dist/utils/index.js.map +1 -0
  214. package/dist/utils/paths.d.ts +28 -0
  215. package/dist/utils/paths.d.ts.map +1 -0
  216. package/dist/utils/paths.js +80 -0
  217. package/dist/utils/paths.js.map +1 -0
  218. package/package.json +95 -0
  219. package/templates/agents/architecture-expert.md +61 -0
  220. package/templates/agents/database-expert.md +62 -0
  221. package/templates/agents/documentation-expert.md +57 -0
  222. package/templates/agents/memory-expert.md +88 -0
  223. package/templates/agents/performance-expert.md +61 -0
  224. package/templates/agents/security-expert.md +59 -0
  225. package/templates/agents/ux-expert.md +63 -0
  226. package/templates/agents/worker.md +75 -0
  227. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -0
  228. package/templates/commands/experts.md +138 -0
  229. package/templates/hooks/README.md +158 -0
  230. package/templates/hooks/project.config.json.template +77 -0
  231. package/templates/hooks/settings.local.json.template +57 -0
  232. package/templates/memory-config.json +82 -0
  233. package/templates/memory-config.schema.json +212 -0
  234. package/templates/settings.json +58 -0
  235. package/templates/workflows/business-improvement.md +264 -0
  236. package/templates/workflows/expert-review.md +153 -0
  237. package/templates/workflows/internal-app.md +245 -0
  238. package/templates/workflows/sync-docs.md +187 -0
@@ -0,0 +1,159 @@
1
+ /**
2
+ * Database client for memory operations
3
+ *
4
+ * Provides a lightweight client for DEV_Items operations.
5
+ * Can work with Drizzle ORM or direct MySQL queries.
6
+ */
7
+ import { ulid } from 'ulid';
8
+ // =============================================================================
9
+ // MEMORY CLIENT FACTORY
10
+ // =============================================================================
11
+ /**
12
+ * Create a memory client with Drizzle ORM
13
+ */
14
+ export function createMemoryClient(config) {
15
+ const { db, system, table } = config;
16
+ // Type assertion for Drizzle operations
17
+ const drizzleDb = db;
18
+ return {
19
+ // =========================================================================
20
+ // READ OPERATIONS
21
+ // =========================================================================
22
+ async list(options) {
23
+ // This is a simplified implementation
24
+ // Real implementation would use Drizzle's query builder
25
+ const limit = options?.limit ?? 50;
26
+ const type = options?.type;
27
+ // For now, return empty - actual implementation needs Drizzle setup
28
+ console.log(`[MemoryClient] list called with system=${system}, type=${type}, limit=${limit}`);
29
+ return [];
30
+ },
31
+ async get(id) {
32
+ console.log(`[MemoryClient] get called with id=${id}, system=${system}`);
33
+ return null;
34
+ },
35
+ async search(query, options) {
36
+ console.log(`[MemoryClient] search called with query=${query}, system=${system}`);
37
+ return [];
38
+ },
39
+ // =========================================================================
40
+ // WRITE OPERATIONS
41
+ // =========================================================================
42
+ async create(data) {
43
+ const id = ulid();
44
+ console.log(`[MemoryClient] create called:`, {
45
+ id,
46
+ system,
47
+ type: data.type,
48
+ status: data.status,
49
+ });
50
+ // Actual implementation would insert into DB
51
+ return { id };
52
+ },
53
+ async update(id, data) {
54
+ console.log(`[MemoryClient] update called for id=${id}`, data);
55
+ },
56
+ async delete(id) {
57
+ console.log(`[MemoryClient] delete called for id=${id}, system=${system}`);
58
+ },
59
+ // =========================================================================
60
+ // MEMORY-SPECIFIC OPERATIONS
61
+ // =========================================================================
62
+ async createMemory(content, tags) {
63
+ return this.create({
64
+ type: 'memory',
65
+ status: 'active',
66
+ priority: 'medium',
67
+ content: content,
68
+ tags: [...(tags ?? []), content.source ?? 'system'],
69
+ });
70
+ },
71
+ async getMemories(domain, limit = 50) {
72
+ return this.list({
73
+ type: 'memory',
74
+ limit,
75
+ // Domain filtering would be done in post-processing
76
+ });
77
+ },
78
+ // =========================================================================
79
+ // PATTERN OPERATIONS
80
+ // =========================================================================
81
+ async createPattern(content) {
82
+ return this.create({
83
+ type: 'pattern',
84
+ status: 'active',
85
+ priority: content.severity,
86
+ content: content,
87
+ tags: ['pattern', `pattern:${content.patternId}`],
88
+ });
89
+ },
90
+ async getPatterns(threshold = 3) {
91
+ const patterns = await this.list({ type: 'pattern' });
92
+ // Filter by occurrence threshold
93
+ return patterns.filter(p => {
94
+ const content = p.content;
95
+ return content && content.occurrences >= threshold;
96
+ });
97
+ },
98
+ async incrementPattern(patternId) {
99
+ // Get existing pattern
100
+ const patterns = await this.list({
101
+ type: 'pattern',
102
+ tags: [`pattern:${patternId}`],
103
+ limit: 1,
104
+ });
105
+ if (patterns.length > 0) {
106
+ const existing = patterns[0];
107
+ const content = existing.content;
108
+ const newCount = content.occurrences + 1;
109
+ await this.update(existing.id, {
110
+ content: {
111
+ ...content,
112
+ occurrences: newCount,
113
+ lastSeen: new Date().toISOString(),
114
+ },
115
+ });
116
+ return newCount;
117
+ }
118
+ // Pattern doesn't exist yet
119
+ return 0;
120
+ },
121
+ };
122
+ }
123
+ // =============================================================================
124
+ // STANDALONE FUNCTIONS (for use without client)
125
+ // =============================================================================
126
+ /**
127
+ * Generate a new ULID for items
128
+ */
129
+ export function generateId() {
130
+ return ulid();
131
+ }
132
+ /**
133
+ * Create memory content object
134
+ */
135
+ export function createMemoryContent(title, body, options) {
136
+ return {
137
+ title,
138
+ body,
139
+ source: 'system',
140
+ ...options,
141
+ };
142
+ }
143
+ /**
144
+ * Create pattern content object
145
+ */
146
+ export function createPatternContent(patternId, description, options) {
147
+ const now = new Date().toISOString();
148
+ return {
149
+ patternId,
150
+ description,
151
+ occurrences: 1,
152
+ files: [],
153
+ severity: 'medium',
154
+ firstSeen: now,
155
+ lastSeen: now,
156
+ ...options,
157
+ };
158
+ }
159
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,302 @@
1
+ /**
2
+ * Drizzle Database Client
3
+ *
4
+ * Real implementation that connects to DEV_Items table.
5
+ * Works with any MySQL database that has the DEV_Items table.
6
+ */
7
+ import { drizzle } from 'drizzle-orm/mysql2';
8
+ import type { DevItem, DevSystem, MemoryContent } from '../types/index.js';
9
+ /**
10
+ * DEV_Items table schema (mirrors the actual table)
11
+ */
12
+ export declare const devItems: import("drizzle-orm/mysql-core").MySqlTableWithColumns<{
13
+ name: "DEV_Items";
14
+ schema: undefined;
15
+ columns: {
16
+ id: import("drizzle-orm/mysql-core").MySqlColumn<{
17
+ name: "id";
18
+ tableName: "DEV_Items";
19
+ dataType: "string";
20
+ columnType: "MySqlVarChar";
21
+ data: string;
22
+ driverParam: string | number;
23
+ notNull: true;
24
+ hasDefault: false;
25
+ isPrimaryKey: true;
26
+ isAutoincrement: false;
27
+ hasRuntimeDefault: false;
28
+ enumValues: [string, ...string[]];
29
+ baseColumn: never;
30
+ identity: undefined;
31
+ generated: undefined;
32
+ }, {}, {}>;
33
+ system: import("drizzle-orm/mysql-core").MySqlColumn<{
34
+ name: "system";
35
+ tableName: "DEV_Items";
36
+ dataType: "string";
37
+ columnType: "MySqlVarChar";
38
+ data: string;
39
+ driverParam: string | number;
40
+ notNull: true;
41
+ hasDefault: false;
42
+ isPrimaryKey: false;
43
+ isAutoincrement: false;
44
+ hasRuntimeDefault: false;
45
+ enumValues: [string, ...string[]];
46
+ baseColumn: never;
47
+ identity: undefined;
48
+ generated: undefined;
49
+ }, {}, {}>;
50
+ type: import("drizzle-orm/mysql-core").MySqlColumn<{
51
+ name: "type";
52
+ tableName: "DEV_Items";
53
+ dataType: "string";
54
+ columnType: "MySqlVarChar";
55
+ data: string;
56
+ driverParam: string | number;
57
+ notNull: true;
58
+ hasDefault: false;
59
+ isPrimaryKey: false;
60
+ isAutoincrement: false;
61
+ hasRuntimeDefault: false;
62
+ enumValues: [string, ...string[]];
63
+ baseColumn: never;
64
+ identity: undefined;
65
+ generated: undefined;
66
+ }, {}, {}>;
67
+ status: import("drizzle-orm/mysql-core").MySqlColumn<{
68
+ name: "status";
69
+ tableName: "DEV_Items";
70
+ dataType: "string";
71
+ columnType: "MySqlVarChar";
72
+ data: string;
73
+ driverParam: string | number;
74
+ notNull: false;
75
+ hasDefault: false;
76
+ isPrimaryKey: false;
77
+ isAutoincrement: false;
78
+ hasRuntimeDefault: false;
79
+ enumValues: [string, ...string[]];
80
+ baseColumn: never;
81
+ identity: undefined;
82
+ generated: undefined;
83
+ }, {}, {}>;
84
+ priority: import("drizzle-orm/mysql-core").MySqlColumn<{
85
+ name: "priority";
86
+ tableName: "DEV_Items";
87
+ dataType: "string";
88
+ columnType: "MySqlVarChar";
89
+ data: string;
90
+ driverParam: string | number;
91
+ notNull: false;
92
+ hasDefault: false;
93
+ isPrimaryKey: false;
94
+ isAutoincrement: false;
95
+ hasRuntimeDefault: false;
96
+ enumValues: [string, ...string[]];
97
+ baseColumn: never;
98
+ identity: undefined;
99
+ generated: undefined;
100
+ }, {}, {}>;
101
+ content: import("drizzle-orm/mysql-core").MySqlColumn<{
102
+ name: "content";
103
+ tableName: "DEV_Items";
104
+ dataType: "json";
105
+ columnType: "MySqlJson";
106
+ data: unknown;
107
+ driverParam: string;
108
+ notNull: false;
109
+ hasDefault: false;
110
+ isPrimaryKey: false;
111
+ isAutoincrement: false;
112
+ hasRuntimeDefault: false;
113
+ enumValues: undefined;
114
+ baseColumn: never;
115
+ identity: undefined;
116
+ generated: undefined;
117
+ }, {}, {}>;
118
+ tags: import("drizzle-orm/mysql-core").MySqlColumn<{
119
+ name: "tags";
120
+ tableName: "DEV_Items";
121
+ dataType: "json";
122
+ columnType: "MySqlJson";
123
+ data: unknown;
124
+ driverParam: string;
125
+ notNull: false;
126
+ hasDefault: false;
127
+ isPrimaryKey: false;
128
+ isAutoincrement: false;
129
+ hasRuntimeDefault: false;
130
+ enumValues: undefined;
131
+ baseColumn: never;
132
+ identity: undefined;
133
+ generated: undefined;
134
+ }, {}, {}>;
135
+ createdAt: import("drizzle-orm/mysql-core").MySqlColumn<{
136
+ name: "created_at";
137
+ tableName: "DEV_Items";
138
+ dataType: "date";
139
+ columnType: "MySqlTimestamp";
140
+ data: Date;
141
+ driverParam: string | number;
142
+ notNull: false;
143
+ hasDefault: true;
144
+ isPrimaryKey: false;
145
+ isAutoincrement: false;
146
+ hasRuntimeDefault: false;
147
+ enumValues: undefined;
148
+ baseColumn: never;
149
+ identity: undefined;
150
+ generated: undefined;
151
+ }, {}, {}>;
152
+ updatedAt: import("drizzle-orm/mysql-core").MySqlColumn<{
153
+ name: "updated_at";
154
+ tableName: "DEV_Items";
155
+ dataType: "date";
156
+ columnType: "MySqlTimestamp";
157
+ data: Date;
158
+ driverParam: string | number;
159
+ notNull: false;
160
+ hasDefault: true;
161
+ isPrimaryKey: false;
162
+ isAutoincrement: false;
163
+ hasRuntimeDefault: false;
164
+ enumValues: undefined;
165
+ baseColumn: never;
166
+ identity: undefined;
167
+ generated: undefined;
168
+ }, {}, {}>;
169
+ };
170
+ dialect: "mysql";
171
+ }>;
172
+ export interface DatabaseConfig {
173
+ host: string;
174
+ port: number;
175
+ user: string;
176
+ password: string;
177
+ database: string;
178
+ }
179
+ /**
180
+ * Get database configuration from environment
181
+ */
182
+ export declare function getDatabaseConfig(): DatabaseConfig;
183
+ /**
184
+ * Initialize database connection
185
+ */
186
+ export declare function initDatabase(config?: DatabaseConfig): Promise<void>;
187
+ /**
188
+ * Get database instance
189
+ */
190
+ export declare function getDatabase(): ReturnType<typeof drizzle>;
191
+ /**
192
+ * Close database connection
193
+ */
194
+ export declare function closeDatabase(): Promise<void>;
195
+ export interface DrizzleClientConfig {
196
+ system: DevSystem;
197
+ databaseConfig?: DatabaseConfig;
198
+ }
199
+ export declare class DrizzleMemoryClient {
200
+ private system;
201
+ private initialized;
202
+ constructor(config: DrizzleClientConfig);
203
+ /**
204
+ * Ensure database is initialized
205
+ */
206
+ private ensureInitialized;
207
+ /**
208
+ * List items with filters
209
+ */
210
+ list(options?: {
211
+ type?: string;
212
+ status?: string;
213
+ limit?: number;
214
+ offset?: number;
215
+ tags?: string[];
216
+ }): Promise<DevItem[]>;
217
+ /**
218
+ * Get single item by ID
219
+ */
220
+ get(id: string): Promise<DevItem | null>;
221
+ /**
222
+ * Search items by content
223
+ */
224
+ search(query: string, options?: {
225
+ type?: string;
226
+ limit?: number;
227
+ }): Promise<DevItem[]>;
228
+ /**
229
+ * Create new item
230
+ */
231
+ create(data: {
232
+ type: string;
233
+ status?: string;
234
+ priority?: string;
235
+ content: Record<string, unknown>;
236
+ tags?: string[];
237
+ }): Promise<{
238
+ id: string;
239
+ }>;
240
+ /**
241
+ * Update existing item
242
+ */
243
+ update(id: string, data: {
244
+ status?: string;
245
+ priority?: string;
246
+ content?: Record<string, unknown>;
247
+ tags?: string[];
248
+ }): Promise<void>;
249
+ /**
250
+ * Delete item
251
+ */
252
+ delete(id: string): Promise<void>;
253
+ /**
254
+ * Create memory entry
255
+ */
256
+ createMemory(content: MemoryContent, tags?: string[]): Promise<{
257
+ id: string;
258
+ }>;
259
+ /**
260
+ * Get memories by domain
261
+ */
262
+ getMemories(domain?: string, limit?: number): Promise<DevItem[]>;
263
+ /**
264
+ * Get recent memories for session context
265
+ */
266
+ getRecentMemories(limit?: number): Promise<DevItem[]>;
267
+ /**
268
+ * Create or increment pattern
269
+ */
270
+ trackPattern(patternId: string, file: string, line: number, code: string, severity?: 'critical' | 'high' | 'medium' | 'low'): Promise<{
271
+ id: string;
272
+ count: number;
273
+ }>;
274
+ /**
275
+ * Get patterns above threshold
276
+ */
277
+ getTriggeredPatterns(threshold?: number): Promise<DevItem[]>;
278
+ /**
279
+ * Start a new session
280
+ */
281
+ startSession(module?: string, context?: Record<string, unknown>): Promise<{
282
+ sessionId: string;
283
+ }>;
284
+ /**
285
+ * End a session
286
+ */
287
+ endSession(sessionId: string, summary?: string): Promise<void>;
288
+ /**
289
+ * Get statistics
290
+ */
291
+ getStats(): Promise<{
292
+ totalMemories: number;
293
+ totalPatterns: number;
294
+ triggeredPatterns: number;
295
+ recentSessions: number;
296
+ }>;
297
+ }
298
+ /**
299
+ * Create a Drizzle memory client
300
+ */
301
+ export declare function createDrizzleClient(system: DevSystem, dbConfig?: DatabaseConfig): DrizzleMemoryClient;
302
+ //# sourceMappingURL=drizzle-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drizzle-client.d.ts","sourceRoot":"","sources":["../../src/db/drizzle-client.ts"],"names":[],"mappings":"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"}