devmind 1.0.2 → 1.1.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 (122) hide show
  1. package/README.md +126 -162
  2. package/dist/cli/handlers.d.ts +2 -0
  3. package/dist/cli/handlers.js +140 -0
  4. package/dist/cli/handlers.js.map +1 -0
  5. package/dist/cli/register-all.d.ts +2 -0
  6. package/dist/cli/register-all.js +11 -0
  7. package/dist/cli/register-all.js.map +1 -0
  8. package/dist/cli/register-analysis.d.ts +2 -0
  9. package/dist/cli/register-analysis.js +137 -0
  10. package/dist/cli/register-analysis.js.map +1 -0
  11. package/dist/cli/register-codebase.d.ts +2 -0
  12. package/dist/cli/register-codebase.js +22 -0
  13. package/dist/cli/register-codebase.js.map +1 -0
  14. package/dist/cli/register-database.d.ts +2 -0
  15. package/dist/cli/register-database.js +44 -0
  16. package/dist/cli/register-database.js.map +1 -0
  17. package/dist/cli/register-memory.d.ts +2 -0
  18. package/dist/cli/register-memory.js +58 -0
  19. package/dist/cli/register-memory.js.map +1 -0
  20. package/dist/cli.js +9 -316
  21. package/dist/cli.js.map +1 -1
  22. package/dist/codebase/index.js +2 -2
  23. package/dist/codebase/index.js.map +1 -1
  24. package/dist/codebase/parsers/typescript.d.ts +1 -0
  25. package/dist/codebase/parsers/typescript.js +3 -0
  26. package/dist/codebase/parsers/typescript.js.map +1 -1
  27. package/dist/codebase/scanners/filesystem.d.ts +1 -0
  28. package/dist/codebase/scanners/filesystem.js +131 -4
  29. package/dist/codebase/scanners/filesystem.js.map +1 -1
  30. package/dist/commands/analyze.d.ts +1 -0
  31. package/dist/commands/analyze.js +166 -24
  32. package/dist/commands/analyze.js.map +1 -1
  33. package/dist/commands/audit-design.d.ts +8 -0
  34. package/dist/commands/audit-design.js +158 -0
  35. package/dist/commands/audit-design.js.map +1 -0
  36. package/dist/commands/audit-report.d.ts +18 -0
  37. package/dist/commands/audit-report.js +30 -0
  38. package/dist/commands/audit-report.js.map +1 -0
  39. package/dist/commands/audit-source.d.ts +21 -0
  40. package/dist/commands/audit-source.js +57 -0
  41. package/dist/commands/audit-source.js.map +1 -0
  42. package/dist/commands/audit.d.ts +1 -0
  43. package/dist/commands/audit.js +174 -73
  44. package/dist/commands/audit.js.map +1 -1
  45. package/dist/commands/claude-plugin.d.ts +8 -0
  46. package/dist/commands/claude-plugin.js +123 -0
  47. package/dist/commands/claude-plugin.js.map +1 -0
  48. package/dist/commands/codex-plugin.d.ts +9 -0
  49. package/dist/commands/codex-plugin.js +145 -0
  50. package/dist/commands/codex-plugin.js.map +1 -0
  51. package/dist/commands/context.js +66 -5
  52. package/dist/commands/context.js.map +1 -1
  53. package/dist/commands/design-system.d.ts +8 -0
  54. package/dist/commands/design-system.js +95 -0
  55. package/dist/commands/design-system.js.map +1 -0
  56. package/dist/commands/extract.d.ts +13 -0
  57. package/dist/commands/extract.js +79 -16
  58. package/dist/commands/extract.js.map +1 -1
  59. package/dist/commands/openclaw-plugin.d.ts +8 -0
  60. package/dist/commands/openclaw-plugin.js +103 -0
  61. package/dist/commands/openclaw-plugin.js.map +1 -0
  62. package/dist/commands/retrieve.d.ts +12 -0
  63. package/dist/commands/retrieve.js +230 -0
  64. package/dist/commands/retrieve.js.map +1 -0
  65. package/dist/commands/status.d.ts +1 -0
  66. package/dist/commands/status.js +54 -18
  67. package/dist/commands/status.js.map +1 -1
  68. package/dist/core/cache-json.d.ts +7 -0
  69. package/dist/core/cache-json.js +60 -0
  70. package/dist/core/cache-json.js.map +1 -0
  71. package/dist/core/errors.d.ts +2 -0
  72. package/dist/core/errors.js +49 -1
  73. package/dist/core/errors.js.map +1 -1
  74. package/dist/core/index.d.ts +4 -0
  75. package/dist/core/index.js +4 -0
  76. package/dist/core/index.js.map +1 -1
  77. package/dist/core/learning-parser.d.ts +6 -0
  78. package/dist/core/learning-parser.js +23 -0
  79. package/dist/core/learning-parser.js.map +1 -0
  80. package/dist/core/profile.d.ts +18 -0
  81. package/dist/core/profile.js +37 -0
  82. package/dist/core/profile.js.map +1 -0
  83. package/dist/core/source-file-cache.d.ts +13 -0
  84. package/dist/core/source-file-cache.js +85 -0
  85. package/dist/core/source-file-cache.js.map +1 -0
  86. package/dist/database/cli/register-all.d.ts +2 -0
  87. package/dist/database/cli/register-all.js +9 -0
  88. package/dist/database/cli/register-all.js.map +1 -0
  89. package/dist/database/cli/register-database.d.ts +2 -0
  90. package/dist/database/cli/register-database.js +44 -0
  91. package/dist/database/cli/register-database.js.map +1 -0
  92. package/dist/database/cli/register-interactive.d.ts +2 -0
  93. package/dist/database/cli/register-interactive.js +29 -0
  94. package/dist/database/cli/register-interactive.js.map +1 -0
  95. package/dist/database/cli/register-memory.d.ts +2 -0
  96. package/dist/database/cli/register-memory.js +47 -0
  97. package/dist/database/cli/register-memory.js.map +1 -0
  98. package/dist/database/cli.js +5 -112
  99. package/dist/database/cli.js.map +1 -1
  100. package/dist/database/commands/checkpoint.js +8 -10
  101. package/dist/database/commands/checkpoint.js.map +1 -1
  102. package/dist/database/commands/generate.js +6 -7
  103. package/dist/database/commands/generate.js.map +1 -1
  104. package/dist/database/commands/handoff.js +9 -8
  105. package/dist/database/commands/handoff.js.map +1 -1
  106. package/dist/database/commands/learn.d.ts +4 -0
  107. package/dist/database/commands/learn.js +245 -43
  108. package/dist/database/commands/learn.js.map +1 -1
  109. package/dist/database/commands/memory.js +1 -1
  110. package/dist/database/commands/validate.js +6 -4
  111. package/dist/database/commands/validate.js.map +1 -1
  112. package/dist/database/commands/watch.js +1 -1
  113. package/dist/database/commands/watch.js.map +1 -1
  114. package/dist/database/generators/templates.js +26 -26
  115. package/dist/database/generators/templates.js.map +1 -1
  116. package/dist/database/utils/json-output.d.ts +4 -0
  117. package/dist/database/utils/json-output.js +7 -0
  118. package/dist/database/utils/json-output.js.map +1 -1
  119. package/dist/generators/unified.d.ts +13 -0
  120. package/dist/generators/unified.js +390 -46
  121. package/dist/generators/unified.js.map +1 -1
  122. package/package.json +2 -2
@@ -3,88 +3,290 @@
3
3
  * Add a learning to the accumulated knowledge
4
4
  */
5
5
  import * as path from 'path';
6
- import { logger, ensureDir, writeFileSafe, readFileSafe } from '../../core/index.js';
6
+ import { createHash } from 'crypto';
7
+ import { jsonSuccess, outputJson, isJsonMode, outputJsonError } from '../utils/json-output.js';
8
+ import * as fs from 'fs/promises';
9
+ import { logger, ensureDir, writeFileSafe, readFileSafe, readCacheJson, writeCacheJson, failCommand, } from '../../core/index.js';
10
+ import { parseLearningEntries } from '../../core/learning-parser.js';
11
+ const LEARN_HEADER = '# Project Learnings\n\n> Accumulated technical learnings, architectural decisions, and discovered patterns.\n\n';
12
+ const LEARN_LOCK_TIMEOUT_MS = 2000;
13
+ const LEARN_LOCK_RETRY_MS = 50;
7
14
  export async function learn(learning, options) {
8
15
  const outputDir = options.output || '.devmind';
9
- const learningsDir = path.join(outputDir, 'memory', 'learnings');
16
+ const jsonMode = isJsonMode(options);
10
17
  // List learnings
11
18
  if (options.list) {
12
- await listLearnings(outputDir);
19
+ await listLearnings(outputDir, jsonMode, {
20
+ category: options.category,
21
+ top: options.top,
22
+ contains: options.contains,
23
+ since: options.since,
24
+ compact: options.compact,
25
+ });
13
26
  return;
14
27
  }
15
28
  if (!learning) {
16
- logger.error('Please provide a learning.');
29
+ const errorMessage = 'Please provide a learning.';
30
+ if (jsonMode) {
31
+ outputJsonError(errorMessage);
32
+ return;
33
+ }
34
+ logger.error(errorMessage);
17
35
  logger.info('');
18
36
  logger.info('Usage:');
19
37
  logger.info(' devmind learn "Always use indexes on foreign keys"');
20
38
  logger.info(' devmind learn "Batch inserts are 5x faster" --category=performance');
21
39
  return;
22
40
  }
23
- const category = options.category || 'general';
41
+ const category = normalizeCategory(options.category || 'general');
42
+ const normalizedLearning = normalizeLearning(learning);
43
+ if (!normalizedLearning) {
44
+ const errorMessage = 'Learning content is empty after normalization.';
45
+ if (jsonMode) {
46
+ outputJsonError(errorMessage);
47
+ return;
48
+ }
49
+ logger.error(errorMessage);
50
+ return;
51
+ }
24
52
  const timestamp = new Date().toISOString();
53
+ const fingerprint = createFingerprint(category, normalizedLearning);
25
54
  // Create learning content
26
- const content = `## ${timestamp} - ${category}
27
-
28
- ${learning}
29
-
30
- ---
55
+ const content = `## ${timestamp} - ${category}
56
+
57
+ ${normalizedLearning}
58
+
59
+ ---
31
60
  `;
32
61
  const learningsPath = path.join(outputDir, 'memory', 'LEARN.md');
62
+ const indexPath = path.join(outputDir, 'memory', 'learn-index.json');
63
+ const lockPath = path.join(outputDir, 'memory', '.learn.lock');
33
64
  try {
34
65
  await ensureDir(path.dirname(learningsPath));
35
- let existing = '';
66
+ await withFileLock(lockPath, async () => {
67
+ const loaded = await loadOrRebuildLearnIndex(indexPath, learningsPath, timestamp);
68
+ const index = loaded.index;
69
+ if (loaded.rebuilt) {
70
+ await writeCacheJson(indexPath, index, { pretty: false, compressAboveBytes: 512 * 1024 });
71
+ }
72
+ const existingAt = index.fingerprints[fingerprint];
73
+ if (existingAt) {
74
+ if (jsonMode) {
75
+ outputJson(jsonSuccess({
76
+ added: false,
77
+ duplicate: true,
78
+ fingerprint,
79
+ existingAt,
80
+ }));
81
+ return;
82
+ }
83
+ logger.info('Learning already exists. Skipping duplicate entry.');
84
+ logger.info(` Fingerprint: ${fingerprint}`);
85
+ logger.info(` First seen: ${existingAt}`);
86
+ return;
87
+ }
88
+ try {
89
+ await fs.access(learningsPath);
90
+ }
91
+ catch {
92
+ await writeFileSafe(learningsPath, LEARN_HEADER);
93
+ }
94
+ await fs.appendFile(learningsPath, content, 'utf-8');
95
+ index.fingerprints[fingerprint] = timestamp;
96
+ index.updatedAt = timestamp;
97
+ await writeCacheJson(indexPath, index, { pretty: false, compressAboveBytes: 512 * 1024 });
98
+ if (jsonMode) {
99
+ outputJson(jsonSuccess({
100
+ added: true,
101
+ duplicate: false,
102
+ category,
103
+ content: normalizedLearning,
104
+ fingerprint,
105
+ file: learningsPath,
106
+ index: indexPath,
107
+ }));
108
+ return;
109
+ }
110
+ logger.success('Learning added successfully!');
111
+ logger.info(` Category: ${category}`);
112
+ logger.info(` Content: ${normalizedLearning}`);
113
+ logger.info(` File: ${learningsPath}`);
114
+ });
115
+ }
116
+ catch (error) {
117
+ if (jsonMode) {
118
+ outputJsonError(error);
119
+ return;
120
+ }
121
+ failCommand('Failed to save learning:', error);
122
+ return;
123
+ }
124
+ }
125
+ async function withFileLock(lockPath, fn) {
126
+ const start = Date.now();
127
+ while (true) {
36
128
  try {
37
- existing = await readFileSafe(learningsPath);
129
+ const handle = await fs.open(lockPath, 'wx');
130
+ try {
131
+ return await fn();
132
+ }
133
+ finally {
134
+ await handle.close();
135
+ await fs.rm(lockPath, { force: true });
136
+ }
38
137
  }
39
- catch {
40
- existing =
41
- '# Project Learnings\n\n> Accumulated technical learnings, architectural decisions, and discovered patterns.\n\n';
138
+ catch (error) {
139
+ const err = error;
140
+ if (err.code !== 'EEXIST')
141
+ throw error;
142
+ if (Date.now() - start >= LEARN_LOCK_TIMEOUT_MS) {
143
+ throw new Error(`Timed out waiting for learn lock: ${lockPath}`);
144
+ }
145
+ await new Promise((resolve) => setTimeout(resolve, LEARN_LOCK_RETRY_MS));
42
146
  }
43
- await writeFileSafe(learningsPath, existing + content);
44
- logger.success('Learning added successfully!');
45
- logger.info(` Category: ${category}`);
46
- logger.info(` Content: ${learning}`);
47
- logger.info(` File: ${learningsPath}`);
48
147
  }
49
- catch (error) {
50
- logger.error('Failed to save learning:');
51
- logger.error(error.message);
52
- process.exit(1);
148
+ }
149
+ function normalizeCategory(input) {
150
+ return input.trim().toLowerCase().replace(/\s+/g, '-');
151
+ }
152
+ function normalizeLearning(input) {
153
+ return input.trim().replace(/\r\n/g, '\n').replace(/[ \t]+/g, ' ').replace(/\n{3,}/g, '\n\n');
154
+ }
155
+ function createFingerprint(category, content) {
156
+ return createHash('sha256').update(`${category}\n${content}`, 'utf8').digest('hex').slice(0, 16);
157
+ }
158
+ function isValidLearnIndex(value) {
159
+ if (!value || typeof value !== 'object')
160
+ return false;
161
+ const typed = value;
162
+ return (typed.version === 1 &&
163
+ typeof typed.updatedAt === 'string' &&
164
+ !!typed.fingerprints &&
165
+ typeof typed.fingerprints === 'object');
166
+ }
167
+ async function loadOrRebuildLearnIndex(indexPath, learningsPath, nowIso) {
168
+ const loaded = await readCacheJson(indexPath);
169
+ if (isValidLearnIndex(loaded)) {
170
+ return { index: loaded, rebuilt: false };
171
+ }
172
+ let rebuilt = {
173
+ version: 1,
174
+ updatedAt: nowIso,
175
+ fingerprints: {},
176
+ };
177
+ try {
178
+ const learnContent = await readFileSafe(learningsPath);
179
+ const parsed = parseLearningEntries(learnContent);
180
+ for (const item of parsed) {
181
+ const fingerprint = createFingerprint(normalizeCategory(item.category || 'general'), normalizeLearning(item.content || ''));
182
+ const existingAt = rebuilt.fingerprints[fingerprint];
183
+ if (!existingAt || item.timestamp < existingAt) {
184
+ rebuilt.fingerprints[fingerprint] = item.timestamp;
185
+ }
186
+ }
53
187
  }
188
+ catch {
189
+ // Missing or unreadable LEARN.md means we start from an empty index.
190
+ }
191
+ return { index: rebuilt, rebuilt: true };
192
+ }
193
+ function parseTop(topRaw) {
194
+ if (topRaw === undefined)
195
+ return null;
196
+ const parsed = Number(topRaw);
197
+ if (!Number.isFinite(parsed) || parsed <= 0)
198
+ return null;
199
+ return Math.floor(parsed);
54
200
  }
55
- async function listLearnings(outputDir) {
201
+ async function listLearnings(outputDir, jsonMode, filters) {
56
202
  const learningsPath = path.join(outputDir, 'memory', 'LEARN.md');
57
203
  try {
58
204
  const content = await readFileSafe(learningsPath);
59
- const learnings = content.split('---').filter((l) => l.trim().length > 0);
60
- logger.info('Accumulated Learnings:');
61
- logger.info('');
62
- // Skip header
63
- const items = learnings.slice(1);
64
- if (items.length === 0) {
205
+ const items = parseLearningEntries(content).sort((a, b) => Date.parse(b.timestamp) - Date.parse(a.timestamp));
206
+ const normalizedCategory = filters.category ? normalizeCategory(filters.category) : null;
207
+ const top = parseTop(filters.top);
208
+ const contains = (filters.contains || '').trim().toLowerCase();
209
+ const sinceTimestamp = filters.since ? Date.parse(filters.since) : null;
210
+ if (filters.since && (sinceTimestamp === null || Number.isNaN(sinceTimestamp))) {
211
+ const error = new Error(`Invalid --since date: ${filters.since}`);
212
+ if (jsonMode) {
213
+ outputJsonError(error);
214
+ return;
215
+ }
216
+ logger.error(error.message);
217
+ return;
218
+ }
219
+ let filteredItems = items;
220
+ if (normalizedCategory) {
221
+ filteredItems = filteredItems.filter((item) => normalizeCategory(item.category) === normalizedCategory);
222
+ }
223
+ if (contains) {
224
+ filteredItems = filteredItems.filter((item) => `${item.category}\n${item.content}`.toLowerCase().includes(contains));
225
+ }
226
+ if (sinceTimestamp !== null && !Number.isNaN(sinceTimestamp)) {
227
+ filteredItems = filteredItems.filter((item) => {
228
+ const ts = Date.parse(item.timestamp);
229
+ return !Number.isNaN(ts) && ts >= sinceTimestamp;
230
+ });
231
+ }
232
+ if (top !== null) {
233
+ filteredItems = filteredItems.slice(0, top);
234
+ }
235
+ if (jsonMode) {
236
+ const compactItems = filteredItems.map((item) => ({
237
+ timestamp: item.timestamp,
238
+ category: item.category,
239
+ fingerprint: createFingerprint(normalizeCategory(item.category || 'general'), item.content || ''),
240
+ }));
241
+ outputJson(jsonSuccess({
242
+ total: filteredItems.length,
243
+ filters: {
244
+ category: normalizedCategory,
245
+ top,
246
+ contains: contains || null,
247
+ since: filters.since || null,
248
+ compact: !!filters.compact,
249
+ },
250
+ items: filters.compact ? compactItems : filteredItems,
251
+ }));
252
+ return;
253
+ }
254
+ if (filteredItems.length === 0) {
65
255
  logger.info('No learnings recorded yet.');
66
256
  return;
67
257
  }
68
- items.forEach((item) => {
69
- const lines = item.trim().split('\n');
70
- const header = lines[0].replace('## ', '');
71
- let [datePart, ...catParts] = header.split(' - ');
72
- const categoryPart = catParts.join(' - '); // Rejoin in case category has " - "
73
- const text = lines.slice(1).join('\n').trim();
74
- const currentDate = datePart ? datePart.trim() : 'Unknown Date';
75
- const currentCategory = categoryPart ? categoryPart.trim() : 'general';
76
- const currentLearning = text || '(No content)';
77
- logger.success(` ${currentDate}`);
78
- logger.info(` Category: ${currentCategory}`);
79
- logger.info(` ${currentLearning}`);
258
+ logger.info(`Accumulated Learnings (${filteredItems.length}):`);
259
+ logger.info('');
260
+ filteredItems.forEach((item) => {
261
+ logger.success(` ${item.timestamp}`);
262
+ logger.info(` Category: ${item.category || 'general'}`);
263
+ logger.info(` ${item.content || '(No content)'}`);
80
264
  logger.info('');
81
265
  });
82
266
  }
83
267
  catch (error) {
84
268
  if (error.code === 'ENOENT') {
269
+ if (jsonMode) {
270
+ outputJson(jsonSuccess({
271
+ total: 0,
272
+ filters: {
273
+ category: filters.category ? normalizeCategory(filters.category) : null,
274
+ top: parseTop(filters.top),
275
+ contains: (filters.contains || '').trim() || null,
276
+ since: filters.since || null,
277
+ compact: !!filters.compact,
278
+ },
279
+ items: [],
280
+ }));
281
+ return;
282
+ }
85
283
  logger.info('No learnings found.');
86
284
  }
87
285
  else {
286
+ if (jsonMode) {
287
+ outputJsonError(error);
288
+ return;
289
+ }
88
290
  logger.error('Failed to list learnings:');
89
291
  logger.error(error.message);
90
292
  }
@@ -1 +1 @@
1
- {"version":3,"file":"learn.js","sourceRoot":"","sources":["../../../src/database/commands/learn.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"learn.js","sourceRoot":"","sources":["../../../src/database/commands/learn.ts"],"names":[],"mappings":"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"}
@@ -231,7 +231,7 @@ ${schema.tables.map((t) => `- ${t.name} (${t.columns.length} columns)`).join('\n
231
231
  sessionId: `session-${Date.now()}`,
232
232
  timestamp: new Date().toISOString(),
233
233
  schemaHash: this.calculateSchemaHash(schema),
234
- schemaVersion: '1.0.2',
234
+ schemaVersion: '1.1.0',
235
235
  recentChanges: [],
236
236
  pendingQueries: [],
237
237
  discoveries: [
@@ -3,7 +3,7 @@
3
3
  * Validates generated context against database
4
4
  */
5
5
  import * as path from 'path';
6
- import { logger, readFileSafe } from '../../core/index.js';
6
+ import { logger, readFileSafe, failCommand } from '../../core/index.js';
7
7
  import { createExtractor, UnifiedSchemaConverter, } from '../extractors/index.js';
8
8
  import * as fs from 'fs'; // Keep fs for existsSync checks
9
9
  async function extractDocumentedTablesFromFile(filePath) {
@@ -189,7 +189,8 @@ export async function validate(options) {
189
189
  }
190
190
  if (options.strict && (result.errors.length > 0 || result.warnings.length > 0)) {
191
191
  logger.error('Validation failed in strict mode');
192
- process.exit(1);
192
+ process.exitCode = 1;
193
+ return;
193
194
  }
194
195
  }
195
196
  // Summary
@@ -200,10 +201,11 @@ export async function validate(options) {
200
201
  logger.info(` Warnings: ${result.warnings.length}`);
201
202
  }
202
203
  catch (error) {
203
- logger.error('Validation failed:', error);
204
204
  if (options.strict) {
205
- process.exit(1);
205
+ failCommand('Validation failed:', error);
206
+ return;
206
207
  }
208
+ logger.error('Validation failed:', error);
207
209
  }
208
210
  }
209
211
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/database/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/database/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -71,7 +71,7 @@ export async function watch(options) {
71
71
  logger.info('');
72
72
  logger.info('Stopping watch mode...');
73
73
  watchers.forEach((watcher) => watcher.close());
74
- process.exit(0);
74
+ process.exitCode = 0;
75
75
  });
76
76
  }
77
77
  //# sourceMappingURL=watch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/database/commands/watch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/database/commands/watch.ts"],"names":[],"mappings":"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"}
@@ -308,7 +308,7 @@ export class TemplateGenerator {
308
308
  const contextDir = path.join(fullOutputPath, 'context');
309
309
  await fs.promises.mkdir(contextDir, { recursive: true });
310
310
  await fs.promises.writeFile(path.join(contextDir, 'SESSION_CONTEXT.json'), JSON.stringify({
311
- version: '1.0.2',
311
+ version: '1.1.0',
312
312
  session: {
313
313
  id: 'sess_TEMPLATE',
314
314
  agentId: 'agent_TEMPLATE',
@@ -350,7 +350,7 @@ export class TemplateGenerator {
350
350
  unique: idx.unique,
351
351
  purpose: this.getIndexPurpose(idx, table),
352
352
  })),
353
- relations: table.relations.map((rel) => `- \`${rel.fromColumn}\` \`${rel.toTable}\` (${rel.cardinality})`),
353
+ relations: table.relations.map((rel) => `- \`${rel.fromColumn}\` → \`${rel.toTable}\` (${rel.cardinality})`),
354
354
  primaryKey: table.primaryKey.join(', ') || 'N/A',
355
355
  foreignKeyCount: table.relations.length,
356
356
  columnList: table.columns.map((c) => c.name + ': ' + c.type).join('\n'),
@@ -370,7 +370,7 @@ export class TemplateGenerator {
370
370
  ownershipRules: this.getOwnershipRules(schema),
371
371
  typeMappings: TYPE_MAPPINGS,
372
372
  performanceTips: this.getPerformanceTips(schema),
373
- version: '1.0.2',
373
+ version: '1.1.0',
374
374
  };
375
375
  }
376
376
  buildRelationships(schema) {
@@ -830,9 +830,9 @@ COMMIT;
830
830
  output += '## Required Patterns\n\n';
831
831
  output += '### LIMIT Required\n';
832
832
  output += '```sql\n';
833
- output += '-- CORRECT: Always use LIMIT\n';
833
+ output += '-- ✓ CORRECT: Always use LIMIT\n';
834
834
  output += `SELECT * FROM ${data.tables[0]?.name || 'table'} LIMIT 100;\n`;
835
- output += '-- WRONG: No LIMIT on potential large tables\n';
835
+ output += '-- ✗ WRONG: No LIMIT on potential large tables\n';
836
836
  output += `SELECT * FROM ${data.tables[0]?.name || 'table'};\n`;
837
837
  output += '```\n\n';
838
838
  // Check if tables have organization_id
@@ -840,9 +840,9 @@ COMMIT;
840
840
  if (hasOrgIsolation) {
841
841
  output += '### Organization Isolation Required\n';
842
842
  output += '```sql\n';
843
- output += '-- CORRECT: Organization check included\n';
843
+ output += '-- ✓ CORRECT: Organization check included\n';
844
844
  output += `SELECT * FROM ${data.tables[0]?.name || 'users'} WHERE organization_id = $1;\n`;
845
- output += '-- WRONG: Missing organization_id (security risk!)\n';
845
+ output += '-- ✗ WRONG: Missing organization_id (security risk!)\n';
846
846
  output += `SELECT * FROM ${data.tables[0]?.name || 'users'};\n`;
847
847
  output += '```\n\n';
848
848
  }
@@ -990,16 +990,16 @@ describe('${tableName} Edge Cases', () => {
990
990
  ' relationships')
991
991
  .join('\n');
992
992
  return ('# Memory & Checkpoint Patterns\n\n' +
993
- '> AUTO-GENERATED by cohere-db. Pattern version: 1.0.2\n\n' +
993
+ '> AUTO-GENERATED by cohere-db. Pattern version: 1.1.0\n\n' +
994
994
  '## Directory Structure\n\n' +
995
995
  '```\n' +
996
996
  '.ai/\n' +
997
- '├── memory/\n' +
998
- ' ├── checkpoints/ # Session checkpoints\n' +
999
- ' └── checkpoint-{timestamp}.json\n' +
1000
- ' ├── accumulated-learnings.md # Cross-session knowledge\n' +
1001
- ' ├── edge-cases.md # Documented edge cases\n' +
1002
- ' └── session-history.md # Recent session notes\n' +
997
+ '├── memory/\n' +
998
+ '│ ├── checkpoints/ # Session checkpoints\n' +
999
+ '│ │ └── checkpoint-{timestamp}.json\n' +
1000
+ '│ ├── accumulated-learnings.md # Cross-session knowledge\n' +
1001
+ '│ ├── edge-cases.md # Documented edge cases\n' +
1002
+ '│ └── session-history.md # Recent session notes\n' +
1003
1003
  '```\n\n' +
1004
1004
  '## Checkpoint Interface\n\n' +
1005
1005
  '```typescript\n' +
@@ -1115,23 +1115,23 @@ describe('${tableName} Edge Cases', () => {
1115
1115
 
1116
1116
  | Step | Action | Result |
1117
1117
  |------|--------|--------|
1118
- | 1 | Action description | Success / Failed |
1119
- | 2 | Action description | Success / Failed |
1120
- | 3 | Action description | ⏸️ Paused |
1118
+ | 1 | Action description | ✅ Success / ❌ Failed |
1119
+ | 2 | Action description | ✅ Success / ❌ Failed |
1120
+ | 3 | Action description | ⏸️ Paused |
1121
1121
 
1122
1122
  ---
1123
1123
 
1124
1124
  ## What Succeeded
1125
1125
 
1126
- - Success item 1
1127
- - Success item 2
1126
+ - ✅ Success item 1
1127
+ - ✅ Success item 2
1128
1128
 
1129
1129
  ---
1130
1130
 
1131
1131
  ## What Failed
1132
1132
 
1133
- - Failed item 1
1134
- - Failed item 2 with error: \`{error}\`
1133
+ - ❌ Failed item 1
1134
+ - ❌ Failed item 2 with error: \`{error}\`
1135
1135
 
1136
1136
  ### Error Details
1137
1137
  \`\`\`
@@ -1337,15 +1337,15 @@ ${tablesList}
1337
1337
 
1338
1338
  \`\`\`
1339
1339
  Agent A (in progress)
1340
-
1340
+ ↓
1341
1341
  cohere-db handoff --record --status paused
1342
-
1342
+ ↓
1343
1343
  Agent B receives files
1344
-
1344
+ ↓
1345
1345
  cohere-db handoff --resume sess_abc123
1346
-
1346
+ ↓
1347
1347
  Agent B continues work
1348
-
1348
+ ↓
1349
1349
  cohere-db handoff --record --status completed
1350
1350
  \`\`\`
1351
1351
  `;