agentic-qe 3.6.15 → 3.6.17

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 (113) hide show
  1. package/.claude/agents/v3/qe-queen-coordinator.md +9 -3
  2. package/.claude/skills/skills-manifest.json +1 -1
  3. package/package.json +1 -1
  4. package/v3/CHANGELOG.md +45 -0
  5. package/v3/assets/agents/v3/qe-queen-coordinator.md +9 -3
  6. package/v3/dist/cli/bundle.js +1944 -685
  7. package/v3/dist/cli/commands/sync.d.ts.map +1 -1
  8. package/v3/dist/cli/commands/sync.js +83 -1
  9. package/v3/dist/cli/commands/sync.js.map +1 -1
  10. package/v3/dist/cli/completions/index.d.ts +1 -1
  11. package/v3/dist/cli/completions/index.d.ts.map +1 -1
  12. package/v3/dist/cli/completions/index.js +1 -1
  13. package/v3/dist/cli/completions/index.js.map +1 -1
  14. package/v3/dist/cli/wizards/test-wizard.d.ts +1 -1
  15. package/v3/dist/cli/wizards/test-wizard.d.ts.map +1 -1
  16. package/v3/dist/cli/wizards/test-wizard.js +8 -1
  17. package/v3/dist/cli/wizards/test-wizard.js.map +1 -1
  18. package/v3/dist/coordination/task-executor.js.map +1 -1
  19. package/v3/dist/domains/test-generation/factories/test-generator-factory.d.ts.map +1 -1
  20. package/v3/dist/domains/test-generation/factories/test-generator-factory.js +4 -1
  21. package/v3/dist/domains/test-generation/factories/test-generator-factory.js.map +1 -1
  22. package/v3/dist/domains/test-generation/generators/base-test-generator.d.ts.map +1 -1
  23. package/v3/dist/domains/test-generation/generators/base-test-generator.js +26 -1
  24. package/v3/dist/domains/test-generation/generators/base-test-generator.js.map +1 -1
  25. package/v3/dist/domains/test-generation/generators/index.d.ts +1 -0
  26. package/v3/dist/domains/test-generation/generators/index.d.ts.map +1 -1
  27. package/v3/dist/domains/test-generation/generators/index.js +1 -0
  28. package/v3/dist/domains/test-generation/generators/index.js.map +1 -1
  29. package/v3/dist/domains/test-generation/generators/jest-vitest-generator.d.ts.map +1 -1
  30. package/v3/dist/domains/test-generation/generators/jest-vitest-generator.js +26 -2
  31. package/v3/dist/domains/test-generation/generators/jest-vitest-generator.js.map +1 -1
  32. package/v3/dist/domains/test-generation/generators/mocha-generator.d.ts.map +1 -1
  33. package/v3/dist/domains/test-generation/generators/mocha-generator.js +50 -5
  34. package/v3/dist/domains/test-generation/generators/mocha-generator.js.map +1 -1
  35. package/v3/dist/domains/test-generation/generators/node-test-generator.d.ts +54 -0
  36. package/v3/dist/domains/test-generation/generators/node-test-generator.d.ts.map +1 -0
  37. package/v3/dist/domains/test-generation/generators/node-test-generator.js +222 -0
  38. package/v3/dist/domains/test-generation/generators/node-test-generator.js.map +1 -0
  39. package/v3/dist/domains/test-generation/generators/pytest-generator.d.ts.map +1 -1
  40. package/v3/dist/domains/test-generation/generators/pytest-generator.js +47 -5
  41. package/v3/dist/domains/test-generation/generators/pytest-generator.js.map +1 -1
  42. package/v3/dist/domains/test-generation/interfaces/test-generator.interface.d.ts +1 -1
  43. package/v3/dist/domains/test-generation/interfaces/test-generator.interface.d.ts.map +1 -1
  44. package/v3/dist/domains/test-generation/interfaces.d.ts +2 -2
  45. package/v3/dist/domains/test-generation/interfaces.d.ts.map +1 -1
  46. package/v3/dist/domains/test-generation/plugin.js.map +1 -1
  47. package/v3/dist/domains/test-generation/services/pattern-matcher.js +32 -6
  48. package/v3/dist/domains/test-generation/services/pattern-matcher.js.map +1 -1
  49. package/v3/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
  50. package/v3/dist/domains/test-generation/services/test-generator.js +31 -6
  51. package/v3/dist/domains/test-generation/services/test-generator.js.map +1 -1
  52. package/v3/dist/mcp/bundle.js +666 -46
  53. package/v3/dist/mcp/handlers/agent-handlers.d.ts +3 -0
  54. package/v3/dist/mcp/handlers/agent-handlers.d.ts.map +1 -1
  55. package/v3/dist/mcp/handlers/agent-handlers.js +16 -9
  56. package/v3/dist/mcp/handlers/agent-handlers.js.map +1 -1
  57. package/v3/dist/mcp/handlers/core-handlers.d.ts +32 -0
  58. package/v3/dist/mcp/handlers/core-handlers.d.ts.map +1 -1
  59. package/v3/dist/mcp/handlers/core-handlers.js +45 -1
  60. package/v3/dist/mcp/handlers/core-handlers.js.map +1 -1
  61. package/v3/dist/mcp/handlers/handler-factory.d.ts +9 -1
  62. package/v3/dist/mcp/handlers/handler-factory.d.ts.map +1 -1
  63. package/v3/dist/mcp/handlers/handler-factory.js +94 -2
  64. package/v3/dist/mcp/handlers/handler-factory.js.map +1 -1
  65. package/v3/dist/mcp/handlers/memory-handlers.d.ts +2 -0
  66. package/v3/dist/mcp/handlers/memory-handlers.d.ts.map +1 -1
  67. package/v3/dist/mcp/handlers/memory-handlers.js +90 -1
  68. package/v3/dist/mcp/handlers/memory-handlers.js.map +1 -1
  69. package/v3/dist/mcp/protocol-server.d.ts +7 -0
  70. package/v3/dist/mcp/protocol-server.d.ts.map +1 -1
  71. package/v3/dist/mcp/protocol-server.js +56 -2
  72. package/v3/dist/mcp/protocol-server.js.map +1 -1
  73. package/v3/dist/mcp/tools/test-generation/generate.d.ts +1 -1
  74. package/v3/dist/mcp/tools/test-generation/generate.d.ts.map +1 -1
  75. package/v3/dist/mcp/tools/test-generation/generate.js.map +1 -1
  76. package/v3/dist/mcp/transport/stdio.d.ts +18 -0
  77. package/v3/dist/mcp/transport/stdio.d.ts.map +1 -1
  78. package/v3/dist/mcp/transport/stdio.js +72 -5
  79. package/v3/dist/mcp/transport/stdio.js.map +1 -1
  80. package/v3/dist/mcp/types.d.ts +2 -0
  81. package/v3/dist/mcp/types.d.ts.map +1 -1
  82. package/v3/dist/sync/cloud/index.d.ts +1 -0
  83. package/v3/dist/sync/cloud/index.d.ts.map +1 -1
  84. package/v3/dist/sync/cloud/index.js +1 -0
  85. package/v3/dist/sync/cloud/index.js.map +1 -1
  86. package/v3/dist/sync/cloud/postgres-reader.d.ts +63 -0
  87. package/v3/dist/sync/cloud/postgres-reader.d.ts.map +1 -0
  88. package/v3/dist/sync/cloud/postgres-reader.js +225 -0
  89. package/v3/dist/sync/cloud/postgres-reader.js.map +1 -0
  90. package/v3/dist/sync/index.d.ts +5 -2
  91. package/v3/dist/sync/index.d.ts.map +1 -1
  92. package/v3/dist/sync/index.js +7 -2
  93. package/v3/dist/sync/index.js.map +1 -1
  94. package/v3/dist/sync/interfaces.d.ts +49 -0
  95. package/v3/dist/sync/interfaces.d.ts.map +1 -1
  96. package/v3/dist/sync/interfaces.js +160 -0
  97. package/v3/dist/sync/interfaces.js.map +1 -1
  98. package/v3/dist/sync/pull-agent.d.ts +102 -0
  99. package/v3/dist/sync/pull-agent.d.ts.map +1 -0
  100. package/v3/dist/sync/pull-agent.js +354 -0
  101. package/v3/dist/sync/pull-agent.js.map +1 -0
  102. package/v3/dist/sync/sync-agent.d.ts.map +1 -1
  103. package/v3/dist/sync/sync-agent.js +9 -0
  104. package/v3/dist/sync/sync-agent.js.map +1 -1
  105. package/v3/dist/sync/writers/index.d.ts +7 -0
  106. package/v3/dist/sync/writers/index.d.ts.map +1 -0
  107. package/v3/dist/sync/writers/index.js +7 -0
  108. package/v3/dist/sync/writers/index.js.map +1 -0
  109. package/v3/dist/sync/writers/sqlite-writer.d.ts +69 -0
  110. package/v3/dist/sync/writers/sqlite-writer.d.ts.map +1 -0
  111. package/v3/dist/sync/writers/sqlite-writer.js +249 -0
  112. package/v3/dist/sync/writers/sqlite-writer.js.map +1 -0
  113. package/v3/package.json +1 -1
@@ -0,0 +1,249 @@
1
+ /**
2
+ * SQLite Local Writer
3
+ *
4
+ * Writes records into local SQLite database with upsert (INSERT OR REPLACE) semantics.
5
+ * Used by PullSyncAgent for cloud → local data flow.
6
+ */
7
+ import { openDatabase } from '../../shared/safe-db.js';
8
+ import { validateTableName, validateIdentifier } from '../../shared/sql-safety.js';
9
+ import { toErrorMessage } from '../../shared/error-utils.js';
10
+ import { LoggerFactory } from '../../logging/index.js';
11
+ import * as fs from 'fs';
12
+ const logger = LoggerFactory.create('sqlite-writer');
13
+ /**
14
+ * SQLite writer for local database
15
+ */
16
+ export class SQLiteWriter {
17
+ db = null;
18
+ dbPath;
19
+ batchSize;
20
+ constructor(config) {
21
+ this.dbPath = config.dbPath;
22
+ this.batchSize = config.batchSize || 500;
23
+ }
24
+ /**
25
+ * Connect to (open) the local SQLite database
26
+ */
27
+ async connect() {
28
+ if (this.db)
29
+ return;
30
+ if (!fs.existsSync(this.dbPath)) {
31
+ throw new Error(`SQLite database not found: ${this.dbPath}. Run 'aqe init' to create it.`);
32
+ }
33
+ try {
34
+ this.db = openDatabase(this.dbPath);
35
+ this.db.pragma('journal_mode = WAL');
36
+ this.db.pragma('synchronous = NORMAL');
37
+ logger.debug(`Opened SQLite database: ${this.dbPath}`);
38
+ }
39
+ catch (error) {
40
+ throw new Error(`Failed to open SQLite database ${this.dbPath}: ${toErrorMessage(error)}`);
41
+ }
42
+ }
43
+ /**
44
+ * Upsert records into a local table using INSERT OR REPLACE.
45
+ * Returns the number of records written.
46
+ */
47
+ async upsert(table, records) {
48
+ if (!this.db)
49
+ throw new Error('Not connected');
50
+ if (records.length === 0)
51
+ return 0;
52
+ const safeTable = validateTableName(table);
53
+ // Verify table exists — warn loudly so callers know data was dropped
54
+ if (!this.tableExists(table)) {
55
+ console.warn(`[SQLiteWriter] Table '${table}' does not exist in local database — ${records.length} records skipped. Run 'aqe init' to create schema.`);
56
+ return 0;
57
+ }
58
+ // Get actual local columns to filter records
59
+ const localColumns = this.getTableColumns(table);
60
+ if (localColumns.length === 0) {
61
+ logger.debug(`No columns found for table ${table}`);
62
+ return 0;
63
+ }
64
+ const localColumnSet = new Set(localColumns);
65
+ let totalWritten = 0;
66
+ // Process in batches
67
+ for (let i = 0; i < records.length; i += this.batchSize) {
68
+ const batch = records.slice(i, i + this.batchSize);
69
+ try {
70
+ const written = this.upsertBatch(safeTable, batch, localColumnSet);
71
+ totalWritten += written;
72
+ }
73
+ catch (error) {
74
+ // Retry individually on batch failure
75
+ const batchNum = Math.floor(i / this.batchSize) + 1;
76
+ logger.debug(`Batch ${batchNum} failed for ${table}, retrying individually`, {
77
+ error: toErrorMessage(error),
78
+ });
79
+ let recovered = 0;
80
+ for (const record of batch) {
81
+ try {
82
+ recovered += this.upsertBatch(safeTable, [record], localColumnSet);
83
+ }
84
+ catch (retryError) {
85
+ const recordId = record['id'] || record['key'] || '?';
86
+ logger.debug(`Skipped record ${String(recordId).slice(0, 50)} in ${table}`, {
87
+ error: toErrorMessage(retryError),
88
+ });
89
+ }
90
+ }
91
+ totalWritten += recovered;
92
+ }
93
+ }
94
+ return totalWritten;
95
+ }
96
+ /**
97
+ * Get the record count for a table
98
+ */
99
+ async count(table) {
100
+ if (!this.db)
101
+ throw new Error('Not connected');
102
+ if (!this.tableExists(table))
103
+ return 0;
104
+ try {
105
+ const safeTable = validateTableName(table);
106
+ const row = this.db.prepare(`SELECT COUNT(*) as count FROM ${safeTable}`).get();
107
+ return row.count;
108
+ }
109
+ catch {
110
+ return 0;
111
+ }
112
+ }
113
+ /**
114
+ * Close the database connection
115
+ */
116
+ async close() {
117
+ if (this.db) {
118
+ this.db.close();
119
+ this.db = null;
120
+ logger.debug('SQLite writer closed');
121
+ }
122
+ }
123
+ /**
124
+ * Check if a table exists
125
+ */
126
+ tableExists(table) {
127
+ if (!this.db)
128
+ return false;
129
+ try {
130
+ const result = this.db.prepare(`SELECT name FROM sqlite_master WHERE type='table' AND name=?`).get(table);
131
+ return !!result;
132
+ }
133
+ catch {
134
+ return false;
135
+ }
136
+ }
137
+ /**
138
+ * Get column names for a table
139
+ */
140
+ getTableColumns(table) {
141
+ if (!this.db)
142
+ return [];
143
+ try {
144
+ const safeTable = validateTableName(table);
145
+ const columns = this.db.prepare(`PRAGMA table_info(${safeTable})`).all();
146
+ return columns.map(c => c.name);
147
+ }
148
+ catch {
149
+ return [];
150
+ }
151
+ }
152
+ /**
153
+ * Get the primary key column(s) for a table
154
+ */
155
+ getPrimaryKeyColumns(table) {
156
+ if (!this.db)
157
+ return [];
158
+ try {
159
+ const safeTable = validateTableName(table);
160
+ const columns = this.db.prepare(`PRAGMA table_info(${safeTable})`).all();
161
+ const pkCols = columns.filter(c => c.pk > 0).sort((a, b) => a.pk - b.pk).map(c => c.name);
162
+ return pkCols;
163
+ }
164
+ catch {
165
+ return [];
166
+ }
167
+ }
168
+ /**
169
+ * Upsert a batch of records.
170
+ * Uses INSERT ... ON CONFLICT(pk) DO UPDATE SET for mapped columns only,
171
+ * preserving any local columns not present in the cloud record.
172
+ * Falls back to INSERT OR IGNORE when no primary key is found (append-mode tables).
173
+ */
174
+ upsertBatch(safeTable, records, localColumnSet) {
175
+ if (!this.db || records.length === 0)
176
+ return 0;
177
+ // Filter record keys to only include columns that exist in the local table
178
+ const firstRecord = records[0];
179
+ const columns = Object.keys(firstRecord).filter(k => localColumnSet.has(k));
180
+ if (columns.length === 0)
181
+ return 0;
182
+ const safeColumns = columns.map(validateIdentifier);
183
+ const placeholders = columns.map(() => '?').join(', ');
184
+ // Determine primary key for ON CONFLICT clause
185
+ // Extract raw table name from potentially validated identifier
186
+ const rawTable = safeTable.replace(/"/g, '');
187
+ const pkColumns = this.getPrimaryKeyColumns(rawTable);
188
+ let sql;
189
+ if (pkColumns.length > 0) {
190
+ const safePkColumns = pkColumns.map(validateIdentifier);
191
+ // ON CONFLICT: only update the columns we're providing, leave others intact
192
+ const updateColumns = columns.filter(c => !pkColumns.includes(c));
193
+ if (updateColumns.length > 0) {
194
+ const updateSet = updateColumns.map(c => `${validateIdentifier(c)} = excluded.${validateIdentifier(c)}`).join(', ');
195
+ sql = `INSERT INTO ${safeTable} (${safeColumns.join(', ')}) VALUES (${placeholders}) ON CONFLICT(${safePkColumns.join(', ')}) DO UPDATE SET ${updateSet}`;
196
+ }
197
+ else {
198
+ // All columns are PK columns — just ignore duplicates
199
+ sql = `INSERT OR IGNORE INTO ${safeTable} (${safeColumns.join(', ')}) VALUES (${placeholders})`;
200
+ }
201
+ }
202
+ else {
203
+ // No primary key found — use INSERT OR IGNORE to avoid duplicates
204
+ sql = `INSERT OR IGNORE INTO ${safeTable} (${safeColumns.join(', ')}) VALUES (${placeholders})`;
205
+ }
206
+ const stmt = this.db.prepare(sql);
207
+ const insertMany = this.db.transaction((recs) => {
208
+ let count = 0;
209
+ for (const record of recs) {
210
+ const values = columns.map(col => this.serializeValue(record[col]));
211
+ stmt.run(...values);
212
+ count++;
213
+ }
214
+ return count;
215
+ });
216
+ return insertMany(records);
217
+ }
218
+ /**
219
+ * Serialize a value for SQLite insertion
220
+ */
221
+ serializeValue(value) {
222
+ if (value === null || value === undefined)
223
+ return null;
224
+ // Objects/arrays → JSON string
225
+ if (typeof value === 'object' && !Buffer.isBuffer(value) && !(value instanceof Date)) {
226
+ return JSON.stringify(value);
227
+ }
228
+ // Date → ISO string
229
+ if (value instanceof Date) {
230
+ return value.toISOString();
231
+ }
232
+ // Boolean → integer
233
+ if (typeof value === 'boolean') {
234
+ return value ? 1 : 0;
235
+ }
236
+ // Buffer (BLOB) stays as-is
237
+ if (Buffer.isBuffer(value)) {
238
+ return value;
239
+ }
240
+ return value;
241
+ }
242
+ }
243
+ /**
244
+ * Create a SQLite writer
245
+ */
246
+ export function createSQLiteWriter(config) {
247
+ return new SQLiteWriter(config);
248
+ }
249
+ //# sourceMappingURL=sqlite-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-writer.js","sourceRoot":"","sources":["../../../src/sync/writers/sqlite-writer.ts"],"names":[],"mappings":"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"}
package/v3/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentic-qe/v3",
3
- "version": "3.6.15",
3
+ "version": "3.6.17",
4
4
  "description": "Agentic QE v3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 59 specialized QE agents",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",