sqlew 3.7.2 → 3.7.4

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 (117) hide show
  1. package/CHANGELOG.md +237 -0
  2. package/LICENSE +0 -0
  3. package/README.md +2 -2
  4. package/assets/config.example.toml +0 -0
  5. package/assets/kanban-style.png +0 -0
  6. package/assets/sample-agents/README.md +0 -0
  7. package/assets/sample-agents/sqlew-architect.md +0 -0
  8. package/assets/sample-agents/sqlew-researcher.md +0 -0
  9. package/assets/sample-agents/sqlew-scrum-master.md +0 -0
  10. package/assets/schema.sql +0 -0
  11. package/assets/sqlew-logo.png +0 -0
  12. package/dist/cli/db-export.d.ts +29 -0
  13. package/dist/cli/db-export.d.ts.map +1 -0
  14. package/dist/cli/db-export.js +251 -0
  15. package/dist/cli/db-export.js.map +1 -0
  16. package/dist/cli/db-import.d.ts +31 -0
  17. package/dist/cli/db-import.d.ts.map +1 -0
  18. package/dist/cli/db-import.js +258 -0
  19. package/dist/cli/db-import.js.map +1 -0
  20. package/dist/cli.js +24 -2
  21. package/dist/cli.js.map +1 -1
  22. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -1
  23. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js +12 -3
  24. package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -1
  25. package/dist/config/knex/enhancements/20251106000000_fix_master_tables_project_id_v3_7_3.d.ts +29 -0
  26. package/dist/config/knex/enhancements/20251106000000_fix_master_tables_project_id_v3_7_3.d.ts.map +1 -0
  27. package/dist/config/knex/enhancements/20251106000000_fix_master_tables_project_id_v3_7_3.js +556 -0
  28. package/dist/config/knex/enhancements/20251106000000_fix_master_tables_project_id_v3_7_3.js.map +1 -0
  29. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -1
  30. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +110 -9
  31. package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -1
  32. package/dist/database.d.ts +3 -3
  33. package/dist/database.d.ts.map +1 -1
  34. package/dist/database.js +30 -12
  35. package/dist/database.js.map +1 -1
  36. package/dist/tests/migration-idempotency.test.js +11 -10
  37. package/dist/tests/migration-idempotency.test.js.map +1 -1
  38. package/dist/tests/migration-upgrade-paths.test.js +6 -5
  39. package/dist/tests/migration-upgrade-paths.test.js.map +1 -1
  40. package/dist/tests/migrations/test-all-versions-real.js +3 -2
  41. package/dist/tests/migrations/test-all-versions-real.js.map +1 -1
  42. package/dist/tests/project-detector.test.d.ts +10 -0
  43. package/dist/tests/project-detector.test.d.ts.map +1 -0
  44. package/dist/tests/project-detector.test.js +156 -0
  45. package/dist/tests/project-detector.test.js.map +1 -0
  46. package/dist/tests/tasks.auto-pruning-partial.test.js +1 -1
  47. package/dist/tests/tasks.auto-pruning-partial.test.js.map +1 -1
  48. package/dist/tests/tasks.link-file-backward-compat.test.js +3 -3
  49. package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
  50. package/dist/tests/tasks.watch-files-action.test.js +1 -1
  51. package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
  52. package/dist/tests/tasks.watch-files-parameter.test.js +2 -2
  53. package/dist/tests/tasks.watch-files-parameter.test.js.map +1 -1
  54. package/dist/tools/constraints.js +1 -1
  55. package/dist/tools/constraints.js.map +1 -1
  56. package/dist/tools/context.js +2 -2
  57. package/dist/tools/context.js.map +1 -1
  58. package/dist/tools/files.js +2 -2
  59. package/dist/tools/files.js.map +1 -1
  60. package/dist/tools/tasks.d.ts.map +1 -1
  61. package/dist/tools/tasks.js +7 -5
  62. package/dist/tools/tasks.js.map +1 -1
  63. package/dist/types.d.ts +121 -0
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/utils/exporter/export.d.ts +100 -0
  66. package/dist/utils/exporter/export.d.ts.map +1 -0
  67. package/dist/utils/exporter/export.js +363 -0
  68. package/dist/utils/exporter/export.js.map +1 -0
  69. package/dist/utils/importer/import.d.ts +29 -0
  70. package/dist/utils/importer/import.d.ts.map +1 -0
  71. package/dist/utils/importer/import.js +514 -0
  72. package/dist/utils/importer/import.js.map +1 -0
  73. package/dist/utils/importer/master-tables.d.ts +18 -0
  74. package/dist/utils/importer/master-tables.d.ts.map +1 -0
  75. package/dist/utils/importer/master-tables.js +255 -0
  76. package/dist/utils/importer/master-tables.js.map +1 -0
  77. package/dist/utils/importer/topological-sort.d.ts +61 -0
  78. package/dist/utils/importer/topological-sort.d.ts.map +1 -0
  79. package/dist/utils/importer/topological-sort.js +143 -0
  80. package/dist/utils/importer/topological-sort.js.map +1 -0
  81. package/dist/utils/project-detector.d.ts +42 -0
  82. package/dist/utils/project-detector.d.ts.map +1 -0
  83. package/dist/utils/project-detector.js +130 -0
  84. package/dist/utils/project-detector.js.map +1 -0
  85. package/docs/ACCEPTANCE_CRITERIA.md +0 -0
  86. package/docs/AI_AGENT_GUIDE.md +0 -0
  87. package/docs/ARCHITECTURE.md +0 -0
  88. package/docs/AUTO_FILE_TRACKING.md +0 -1
  89. package/docs/BEST_PRACTICES.md +0 -0
  90. package/docs/CONFIGURATION.md +0 -0
  91. package/docs/DATABASE_AUTH.md +1 -2
  92. package/docs/DECISION_CONTEXT.md +0 -0
  93. package/docs/DECISION_TO_TASK_MIGRATION_GUIDE.md +0 -0
  94. package/docs/GIT_AWARE_AUTO_COMPLETE.md +0 -0
  95. package/docs/SHARED_CONCEPTS.md +0 -0
  96. package/docs/SPECIALIZED_AGENTS.md +0 -0
  97. package/docs/TASK_ACTIONS.md +0 -0
  98. package/docs/TASK_DEPENDENCIES.md +0 -0
  99. package/docs/TASK_LINKING.md +0 -0
  100. package/docs/TASK_MIGRATION.md +0 -0
  101. package/docs/TASK_OVERVIEW.md +0 -0
  102. package/docs/TASK_PRUNING.md +0 -0
  103. package/docs/TASK_SYSTEM.md +0 -0
  104. package/docs/TOOL_REFERENCE.md +0 -2
  105. package/docs/TOOL_SELECTION.md +0 -0
  106. package/docs/WORKFLOWS.md +0 -0
  107. package/docs/{DATABASE_MIGRATION.md → cli/DATABASE_MIGRATION.md} +71 -32
  108. package/docs/cli/DATA_EXPORT_IMPORT.md +400 -0
  109. package/docs/cli/README.md +227 -0
  110. package/package.json +3 -2
  111. package/docs/BASEADAPTER_IMPLEMENTATION.md +0 -399
  112. package/docs/HELP_PREVIEW_COMPARISON.md +0 -259
  113. package/docs/MIGRATION_CHAIN.md +0 -293
  114. package/docs/MIGRATION_v2.md +0 -538
  115. package/docs/MIGRATION_v3.3.md +0 -602
  116. package/docs/MIGRATION_v3.6.0.md +0 -170
  117. package/docs/MULTI_PROJECT_ARCHITECTURE.md +0 -497
@@ -0,0 +1,514 @@
1
+ /**
2
+ * JSON Import Main Orchestrator
3
+ *
4
+ * Coordinates the entire import process with transaction atomicity.
5
+ * Implements architectural decisions #247-259 for safe multi-project data migration.
6
+ *
7
+ * Import Order:
8
+ * 1. Validate JSON schema
9
+ * 2. Check project name conflict (skip if exists)
10
+ * 3. Create new project
11
+ * 4. Import master tables → ID mappings
12
+ * 5. Import transaction data with remapped IDs
13
+ * 6. Import junction tables with remapped IDs
14
+ */
15
+ import { importMasterTables } from './master-tables.js';
16
+ import { sortTasksByDependencies } from './topological-sort.js';
17
+ /**
18
+ * Main import function
19
+ *
20
+ * Architectural Decision #256: Transaction atomicity
21
+ * All imports wrapped in transaction, rollback on error
22
+ *
23
+ * @param knex - Knex database instance
24
+ * @param jsonData - Parsed JSON export data
25
+ * @param options - Import options
26
+ * @returns Import result with statistics
27
+ */
28
+ export async function importJsonData(knex, jsonData, options = {}) {
29
+ const { targetProjectName, skipIfExists = true, dryRun = false } = options;
30
+ // Step 1: Extract project name
31
+ const projectName = targetProjectName || jsonData.project?.name || jsonData.projects?.[0]?.name;
32
+ if (!projectName) {
33
+ return {
34
+ success: false,
35
+ error: 'No project name specified and none found in JSON export'
36
+ };
37
+ }
38
+ console.error(`\nImporting project: ${projectName}`);
39
+ // Step 2: Check for project name conflict
40
+ const existingProject = await knex('m_projects')
41
+ .where({ name: projectName })
42
+ .first();
43
+ if (existingProject && skipIfExists) {
44
+ console.error(`⚠️ Project "${projectName}" already exists (ID: ${existingProject.id})`);
45
+ console.error(` Skipping import to avoid conflicts`);
46
+ return {
47
+ success: true,
48
+ skipped: true,
49
+ skip_reason: 'project_exists',
50
+ project_name: projectName
51
+ };
52
+ }
53
+ if (dryRun) {
54
+ console.error(`✓ Dry run: Validation passed, would import to new project "${projectName}"`);
55
+ return {
56
+ success: true,
57
+ project_name: projectName
58
+ };
59
+ }
60
+ // Step 3: Perform import in transaction
61
+ try {
62
+ const result = await knex.transaction(async (trx) => {
63
+ return await performImport(trx, jsonData, projectName);
64
+ });
65
+ console.error(`\n✓ Import complete: ${result.stats.transaction_tables.tasks_created} tasks, ${result.stats.transaction_tables.decisions_created} decisions`);
66
+ return result;
67
+ }
68
+ catch (error) {
69
+ console.error(`\n❌ Import failed: ${error instanceof Error ? error.message : String(error)}`);
70
+ console.error(` Transaction rolled back, no data imported`);
71
+ return {
72
+ success: false,
73
+ error: error instanceof Error ? error.message : String(error)
74
+ };
75
+ }
76
+ }
77
+ /**
78
+ * Perform import within transaction
79
+ */
80
+ async function performImport(trx, jsonData, projectName) {
81
+ // Step 1: Create new project
82
+ const projectData = jsonData.project || jsonData.projects?.[0];
83
+ const [projectId] = await trx('m_projects').insert({
84
+ name: projectName,
85
+ display_name: projectData?.display_name || projectName,
86
+ detection_source: projectData?.detection_source || 'import',
87
+ project_root_path: projectData?.project_root_path || null,
88
+ created_ts: Math.floor(Date.now() / 1000),
89
+ last_active_ts: Math.floor(Date.now() / 1000),
90
+ metadata: JSON.stringify({
91
+ imported_at: new Date().toISOString(),
92
+ source_version: jsonData.metadata?.sqlew_version || jsonData.version,
93
+ source_export_mode: jsonData.metadata?.export_mode || jsonData.export_mode
94
+ })
95
+ });
96
+ console.error(` ✓ Created project "${projectName}" (ID: ${projectId})`);
97
+ // Step 2: Initialize import context
98
+ const ctx = {
99
+ knex: trx,
100
+ projectId,
101
+ jsonData,
102
+ options: {},
103
+ mappings: {
104
+ projects: new Map(),
105
+ agents: new Map(),
106
+ files: new Map(),
107
+ context_keys: new Map(),
108
+ tags: new Map(),
109
+ scopes: new Map(),
110
+ constraint_categories: new Map(),
111
+ layers: new Map(),
112
+ task_statuses: new Map(),
113
+ tasks: new Map()
114
+ },
115
+ stats: initializeStats()
116
+ };
117
+ ctx.stats.project_created = true;
118
+ // Step 3: Import master tables
119
+ await importMasterTables(ctx);
120
+ // Step 4: Import transaction tables
121
+ await importTransactionTables(ctx);
122
+ // Step 5: Import junction tables
123
+ await importJunctionTables(ctx);
124
+ return {
125
+ success: true,
126
+ project_id: projectId,
127
+ project_name: projectName,
128
+ stats: ctx.stats
129
+ };
130
+ }
131
+ /**
132
+ * Import transaction tables with ID remapping
133
+ */
134
+ async function importTransactionTables(ctx) {
135
+ console.error(' Importing transaction tables...');
136
+ // Import in dependency order
137
+ await importDecisions(ctx);
138
+ await importDecisionsNumeric(ctx);
139
+ await importDecisionHistory(ctx);
140
+ await importDecisionContext(ctx);
141
+ await importFileChanges(ctx);
142
+ await importConstraints(ctx);
143
+ await importTasks(ctx); // Uses topological sort internally
144
+ await importTaskDetails(ctx);
145
+ await importActivityLog(ctx);
146
+ console.error(` ✓ Transaction tables imported`);
147
+ }
148
+ /**
149
+ * Import t_decisions with remapped context_key IDs
150
+ */
151
+ async function importDecisions(ctx) {
152
+ const decisions = ctx.jsonData.transaction_tables.decisions || [];
153
+ for (const decision of decisions) {
154
+ const newKeyId = ctx.mappings.context_keys.get(decision.key_id);
155
+ if (!newKeyId)
156
+ continue;
157
+ await ctx.knex('t_decisions').insert({
158
+ key_id: newKeyId,
159
+ value: decision.value,
160
+ agent_id: ctx.mappings.agents.get(decision.agent_id) || null,
161
+ layer_id: ctx.mappings.layers.get(decision.layer_id) || null,
162
+ version: decision.version,
163
+ status: decision.status,
164
+ ts: decision.ts,
165
+ project_id: ctx.projectId
166
+ });
167
+ }
168
+ ctx.stats.transaction_tables.decisions_created = decisions.length;
169
+ }
170
+ /**
171
+ * Import t_decisions_numeric with remapped context_key IDs
172
+ */
173
+ async function importDecisionsNumeric(ctx) {
174
+ const decisions = ctx.jsonData.transaction_tables.decisions_numeric || [];
175
+ for (const decision of decisions) {
176
+ const newKeyId = ctx.mappings.context_keys.get(decision.key_id);
177
+ if (!newKeyId)
178
+ continue;
179
+ await ctx.knex('t_decisions_numeric').insert({
180
+ key_id: newKeyId,
181
+ value: decision.value,
182
+ agent_id: ctx.mappings.agents.get(decision.agent_id) || null,
183
+ layer_id: ctx.mappings.layers.get(decision.layer_id) || null,
184
+ version: decision.version,
185
+ status: decision.status,
186
+ ts: decision.ts,
187
+ project_id: ctx.projectId
188
+ });
189
+ }
190
+ ctx.stats.transaction_tables.decisions_numeric_created = decisions.length;
191
+ }
192
+ /**
193
+ * Import t_decision_history with remapped context_key IDs
194
+ */
195
+ async function importDecisionHistory(ctx) {
196
+ const history = ctx.jsonData.transaction_tables.decision_history || [];
197
+ for (const entry of history) {
198
+ const newKeyId = ctx.mappings.context_keys.get(entry.key_id);
199
+ if (!newKeyId)
200
+ continue;
201
+ await ctx.knex('t_decision_history').insert({
202
+ key_id: newKeyId,
203
+ version: entry.version,
204
+ value: entry.value,
205
+ agent_id: ctx.mappings.agents.get(entry.agent_id) || null,
206
+ ts: entry.ts,
207
+ project_id: ctx.projectId
208
+ });
209
+ }
210
+ ctx.stats.transaction_tables.decision_history_created = history.length;
211
+ }
212
+ /**
213
+ * Import t_decision_context with remapped IDs
214
+ */
215
+ async function importDecisionContext(ctx) {
216
+ const contexts = ctx.jsonData.transaction_tables.decision_context || [];
217
+ for (const context of contexts) {
218
+ const newKeyId = ctx.mappings.context_keys.get(context.decision_key_id);
219
+ if (!newKeyId)
220
+ continue;
221
+ await ctx.knex('t_decision_context').insert({
222
+ decision_key_id: newKeyId,
223
+ rationale: context.rationale,
224
+ alternatives_considered: context.alternatives_considered,
225
+ tradeoffs: context.tradeoffs,
226
+ decision_date: context.decision_date,
227
+ agent_id: ctx.mappings.agents.get(context.agent_id) || null,
228
+ related_task_id: null, // Will be updated later if task exists
229
+ related_constraint_id: null,
230
+ project_id: ctx.projectId
231
+ });
232
+ }
233
+ ctx.stats.transaction_tables.decision_context_created = contexts.length;
234
+ }
235
+ /**
236
+ * Import t_file_changes with remapped IDs
237
+ */
238
+ async function importFileChanges(ctx) {
239
+ const changes = ctx.jsonData.transaction_tables.file_changes || [];
240
+ for (const change of changes) {
241
+ const newFileId = ctx.mappings.files.get(change.file_id);
242
+ if (!newFileId)
243
+ continue;
244
+ await ctx.knex('t_file_changes').insert({
245
+ file_id: newFileId,
246
+ change_type: change.change_type,
247
+ agent_id: ctx.mappings.agents.get(change.agent_id) || null,
248
+ layer_id: ctx.mappings.layers.get(change.layer_id) || null,
249
+ description: change.description,
250
+ ts: change.ts,
251
+ project_id: ctx.projectId
252
+ });
253
+ }
254
+ ctx.stats.transaction_tables.file_changes_created = changes.length;
255
+ }
256
+ /**
257
+ * Import t_constraints with remapped IDs
258
+ */
259
+ async function importConstraints(ctx) {
260
+ const constraints = ctx.jsonData.transaction_tables.constraints || [];
261
+ for (const constraint of constraints) {
262
+ await ctx.knex('t_constraints').insert({
263
+ category_id: ctx.mappings.constraint_categories.get(constraint.category_id) || constraint.category_id,
264
+ constraint_text: constraint.constraint_text,
265
+ priority: constraint.priority,
266
+ active: constraint.active,
267
+ agent_id: ctx.mappings.agents.get(constraint.agent_id) || null,
268
+ layer_id: ctx.mappings.layers.get(constraint.layer_id) || null,
269
+ ts: constraint.ts,
270
+ project_id: ctx.projectId
271
+ });
272
+ }
273
+ ctx.stats.transaction_tables.constraints_created = constraints.length;
274
+ }
275
+ /**
276
+ * Import t_tasks with topological sort for dependencies
277
+ */
278
+ async function importTasks(ctx) {
279
+ const tasks = ctx.jsonData.transaction_tables.tasks || [];
280
+ const dependencies = ctx.jsonData.transaction_tables.task_dependencies || [];
281
+ // Sort tasks by dependency order
282
+ const sortedTasks = sortTasksByDependencies(tasks, dependencies);
283
+ for (const task of sortedTasks) {
284
+ const [newTaskId] = await ctx.knex('t_tasks').insert({
285
+ title: task.title,
286
+ status_id: ctx.mappings.task_statuses.get(task.status_id) || task.status_id,
287
+ assigned_agent_id: ctx.mappings.agents.get(task.assigned_agent_id) || null,
288
+ created_by_agent_id: ctx.mappings.agents.get(task.created_by_agent_id) || null,
289
+ priority: task.priority,
290
+ layer_id: ctx.mappings.layers.get(task.layer_id) || null,
291
+ created_ts: task.created_ts,
292
+ updated_ts: task.updated_ts,
293
+ completed_ts: task.completed_ts,
294
+ project_id: ctx.projectId
295
+ });
296
+ ctx.mappings.tasks.set(task.id, newTaskId);
297
+ }
298
+ ctx.stats.transaction_tables.tasks_created = tasks.length;
299
+ }
300
+ /**
301
+ * Import t_task_details with remapped task IDs
302
+ */
303
+ async function importTaskDetails(ctx) {
304
+ const details = ctx.jsonData.transaction_tables.task_details || [];
305
+ for (const detail of details) {
306
+ const newTaskId = ctx.mappings.tasks.get(detail.task_id);
307
+ if (!newTaskId)
308
+ continue;
309
+ await ctx.knex('t_task_details').insert({
310
+ task_id: newTaskId,
311
+ description: detail.description,
312
+ acceptance_criteria: detail.acceptance_criteria,
313
+ notes: detail.notes,
314
+ project_id: ctx.projectId
315
+ });
316
+ }
317
+ ctx.stats.transaction_tables.task_details_created = details.length;
318
+ }
319
+ /**
320
+ * Import t_activity_log with remapped IDs
321
+ */
322
+ async function importActivityLog(ctx) {
323
+ const activities = ctx.jsonData.transaction_tables.activity_log || [];
324
+ for (const activity of activities) {
325
+ await ctx.knex('t_activity_log').insert({
326
+ ts: activity.ts,
327
+ agent_id: ctx.mappings.agents.get(activity.agent_id) || null,
328
+ action_type: activity.action_type,
329
+ target: activity.target,
330
+ layer_id: ctx.mappings.layers.get(activity.layer_id) || null,
331
+ details: activity.details,
332
+ project_id: ctx.projectId
333
+ });
334
+ }
335
+ ctx.stats.transaction_tables.activity_log_created = activities.length;
336
+ }
337
+ /**
338
+ * Import junction tables with remapped IDs
339
+ */
340
+ async function importJunctionTables(ctx) {
341
+ console.error(' Importing junction tables...');
342
+ await importDecisionTags(ctx);
343
+ await importDecisionScopes(ctx);
344
+ await importConstraintTags(ctx);
345
+ await importTaskTags(ctx);
346
+ await importTaskFileLinks(ctx);
347
+ await importTaskDecisionLinks(ctx);
348
+ await importTaskDependencies(ctx);
349
+ console.error(` ✓ Junction tables imported`);
350
+ }
351
+ /**
352
+ * Import t_decision_tags with remapped IDs
353
+ */
354
+ async function importDecisionTags(ctx) {
355
+ const tags = ctx.jsonData.transaction_tables.decision_tags || [];
356
+ for (const tag of tags) {
357
+ const newKeyId = ctx.mappings.context_keys.get(tag.decision_key_id);
358
+ const newTagId = ctx.mappings.tags.get(tag.tag_id);
359
+ if (!newKeyId || !newTagId)
360
+ continue;
361
+ await ctx.knex('t_decision_tags').insert({
362
+ decision_key_id: newKeyId,
363
+ tag_id: newTagId,
364
+ project_id: ctx.projectId
365
+ });
366
+ }
367
+ ctx.stats.junction_tables.decision_tags_created = tags.length;
368
+ }
369
+ /**
370
+ * Import t_decision_scopes with remapped IDs
371
+ */
372
+ async function importDecisionScopes(ctx) {
373
+ const scopes = ctx.jsonData.transaction_tables.decision_scopes || [];
374
+ for (const scope of scopes) {
375
+ const newKeyId = ctx.mappings.context_keys.get(scope.decision_key_id);
376
+ const newScopeId = ctx.mappings.scopes.get(scope.scope_id);
377
+ if (!newKeyId || !newScopeId)
378
+ continue;
379
+ await ctx.knex('t_decision_scopes').insert({
380
+ decision_key_id: newKeyId,
381
+ scope_id: newScopeId,
382
+ project_id: ctx.projectId
383
+ });
384
+ }
385
+ ctx.stats.junction_tables.decision_scopes_created = scopes.length;
386
+ }
387
+ /**
388
+ * Import t_constraint_tags with remapped IDs
389
+ */
390
+ async function importConstraintTags(ctx) {
391
+ const tags = ctx.jsonData.transaction_tables.constraint_tags || [];
392
+ for (const tag of tags) {
393
+ const newTagId = ctx.mappings.tags.get(tag.tag_id);
394
+ if (!newTagId)
395
+ continue;
396
+ // Note: constraint_id is not remapped as constraints are imported sequentially
397
+ // and the IDs may not match. This is a limitation of the current implementation.
398
+ // For now, we skip importing constraint tags.
399
+ }
400
+ ctx.stats.junction_tables.constraint_tags_created = 0;
401
+ }
402
+ /**
403
+ * Import t_task_tags with remapped IDs
404
+ */
405
+ async function importTaskTags(ctx) {
406
+ const tags = ctx.jsonData.transaction_tables.task_tags || [];
407
+ for (const tag of tags) {
408
+ const newTaskId = ctx.mappings.tasks.get(tag.task_id);
409
+ const newTagId = ctx.mappings.tags.get(tag.tag_id);
410
+ if (!newTaskId || !newTagId)
411
+ continue;
412
+ await ctx.knex('t_task_tags').insert({
413
+ task_id: newTaskId,
414
+ tag_id: newTagId,
415
+ project_id: ctx.projectId
416
+ });
417
+ }
418
+ ctx.stats.junction_tables.task_tags_created = tags.length;
419
+ }
420
+ /**
421
+ * Import t_task_file_links with remapped IDs
422
+ */
423
+ async function importTaskFileLinks(ctx) {
424
+ const links = ctx.jsonData.transaction_tables.task_file_links || [];
425
+ for (const link of links) {
426
+ const newTaskId = ctx.mappings.tasks.get(link.task_id);
427
+ const newFileId = ctx.mappings.files.get(link.file_id);
428
+ if (!newTaskId || !newFileId)
429
+ continue;
430
+ await ctx.knex('t_task_file_links').insert({
431
+ task_id: newTaskId,
432
+ file_id: newFileId,
433
+ project_id: ctx.projectId
434
+ });
435
+ }
436
+ ctx.stats.junction_tables.task_file_links_created = links.length;
437
+ }
438
+ /**
439
+ * Import t_task_decision_links with remapped IDs
440
+ */
441
+ async function importTaskDecisionLinks(ctx) {
442
+ const links = ctx.jsonData.transaction_tables.task_decision_links || [];
443
+ for (const link of links) {
444
+ const newTaskId = ctx.mappings.tasks.get(link.task_id);
445
+ const newKeyId = ctx.mappings.context_keys.get(link.decision_key_id);
446
+ if (!newTaskId || !newKeyId)
447
+ continue;
448
+ await ctx.knex('t_task_decision_links').insert({
449
+ task_id: newTaskId,
450
+ decision_key_id: newKeyId,
451
+ project_id: ctx.projectId,
452
+ link_type: link.link_type || 'implements'
453
+ });
454
+ }
455
+ ctx.stats.junction_tables.task_decision_links_created = links.length;
456
+ }
457
+ /**
458
+ * Import t_task_dependencies with remapped task IDs
459
+ */
460
+ async function importTaskDependencies(ctx) {
461
+ const dependencies = ctx.jsonData.transaction_tables.task_dependencies || [];
462
+ for (const dep of dependencies) {
463
+ const newBlockerId = ctx.mappings.tasks.get(dep.blocker_task_id);
464
+ const newBlockedId = ctx.mappings.tasks.get(dep.blocked_task_id);
465
+ if (!newBlockerId || !newBlockedId)
466
+ continue;
467
+ await ctx.knex('t_task_dependencies').insert({
468
+ blocker_task_id: newBlockerId,
469
+ blocked_task_id: newBlockedId,
470
+ created_ts: dep.created_ts,
471
+ project_id: ctx.projectId
472
+ });
473
+ }
474
+ ctx.stats.junction_tables.task_dependencies_created = dependencies.length;
475
+ }
476
+ /**
477
+ * Initialize empty statistics
478
+ */
479
+ function initializeStats() {
480
+ return {
481
+ project_created: false,
482
+ master_tables: {
483
+ agents_created: 0,
484
+ files_created: 0,
485
+ files_reused: 0,
486
+ context_keys_created: 0,
487
+ tags_created: 0,
488
+ tags_reused: 0,
489
+ scopes_created: 0,
490
+ scopes_reused: 0
491
+ },
492
+ transaction_tables: {
493
+ decisions_created: 0,
494
+ decisions_numeric_created: 0,
495
+ decision_history_created: 0,
496
+ decision_context_created: 0,
497
+ file_changes_created: 0,
498
+ constraints_created: 0,
499
+ tasks_created: 0,
500
+ task_details_created: 0,
501
+ activity_log_created: 0
502
+ },
503
+ junction_tables: {
504
+ decision_tags_created: 0,
505
+ decision_scopes_created: 0,
506
+ constraint_tags_created: 0,
507
+ task_tags_created: 0,
508
+ task_file_links_created: 0,
509
+ task_decision_links_created: 0,
510
+ task_dependencies_created: 0
511
+ }
512
+ };
513
+ }
514
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/utils/importer/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Master Table Import with Smart Merge
3
+ *
4
+ * Handles importing master tables with intelligent ID remapping:
5
+ * - Project-scoped tables (m_files, m_tags, m_scopes): Smart merge on UNIQUE (project_id, name/path)
6
+ * - Global tables (m_agents, m_context_keys, etc.): Always create new IDs
7
+ *
8
+ * Architectural Decision: Decision #253 - Smart merge for project-scoped master tables
9
+ */
10
+ import type { ImportContext } from '../../types.js';
11
+ /**
12
+ * Import master tables and build ID mappings
13
+ *
14
+ * @param ctx - Import context with target project ID
15
+ * @returns Updated context with ID mappings populated
16
+ */
17
+ export declare function importMasterTables(ctx: ImportContext): Promise<ImportContext>;
18
+ //# sourceMappingURL=master-tables.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"master-tables.d.ts","sourceRoot":"","sources":["../../../src/utils/importer/master-tables.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,gBAAgB,CAAC;AAE/D;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAenF"}