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.
- package/CHANGELOG.md +237 -0
- package/LICENSE +0 -0
- package/README.md +2 -2
- package/assets/config.example.toml +0 -0
- package/assets/kanban-style.png +0 -0
- package/assets/sample-agents/README.md +0 -0
- package/assets/sample-agents/sqlew-architect.md +0 -0
- package/assets/sample-agents/sqlew-researcher.md +0 -0
- package/assets/sample-agents/sqlew-scrum-master.md +0 -0
- package/assets/schema.sql +0 -0
- package/assets/sqlew-logo.png +0 -0
- package/dist/cli/db-export.d.ts +29 -0
- package/dist/cli/db-export.d.ts.map +1 -0
- package/dist/cli/db-export.js +251 -0
- package/dist/cli/db-export.js.map +1 -0
- package/dist/cli/db-import.d.ts +31 -0
- package/dist/cli/db-import.d.ts.map +1 -0
- package/dist/cli/db-import.js +258 -0
- package/dist/cli/db-import.js.map +1 -0
- package/dist/cli.js +24 -2
- package/dist/cli.js.map +1 -1
- package/dist/config/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -1
- package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js +12 -3
- package/dist/config/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -1
- package/dist/config/knex/enhancements/20251106000000_fix_master_tables_project_id_v3_7_3.d.ts +29 -0
- package/dist/config/knex/enhancements/20251106000000_fix_master_tables_project_id_v3_7_3.d.ts.map +1 -0
- package/dist/config/knex/enhancements/20251106000000_fix_master_tables_project_id_v3_7_3.js +556 -0
- package/dist/config/knex/enhancements/20251106000000_fix_master_tables_project_id_v3_7_3.js.map +1 -0
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.d.ts.map +1 -1
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js +110 -9
- package/dist/config/knex/upgrades/20251104000000_add_multi_project_v3_7_0.js.map +1 -1
- package/dist/database.d.ts +3 -3
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +30 -12
- package/dist/database.js.map +1 -1
- package/dist/tests/migration-idempotency.test.js +11 -10
- package/dist/tests/migration-idempotency.test.js.map +1 -1
- package/dist/tests/migration-upgrade-paths.test.js +6 -5
- package/dist/tests/migration-upgrade-paths.test.js.map +1 -1
- package/dist/tests/migrations/test-all-versions-real.js +3 -2
- package/dist/tests/migrations/test-all-versions-real.js.map +1 -1
- package/dist/tests/project-detector.test.d.ts +10 -0
- package/dist/tests/project-detector.test.d.ts.map +1 -0
- package/dist/tests/project-detector.test.js +156 -0
- package/dist/tests/project-detector.test.js.map +1 -0
- package/dist/tests/tasks.auto-pruning-partial.test.js +1 -1
- package/dist/tests/tasks.auto-pruning-partial.test.js.map +1 -1
- package/dist/tests/tasks.link-file-backward-compat.test.js +3 -3
- package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
- package/dist/tests/tasks.watch-files-action.test.js +1 -1
- package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
- package/dist/tests/tasks.watch-files-parameter.test.js +2 -2
- package/dist/tests/tasks.watch-files-parameter.test.js.map +1 -1
- package/dist/tools/constraints.js +1 -1
- package/dist/tools/constraints.js.map +1 -1
- package/dist/tools/context.js +2 -2
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/files.js +2 -2
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +7 -5
- package/dist/tools/tasks.js.map +1 -1
- package/dist/types.d.ts +121 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/exporter/export.d.ts +100 -0
- package/dist/utils/exporter/export.d.ts.map +1 -0
- package/dist/utils/exporter/export.js +363 -0
- package/dist/utils/exporter/export.js.map +1 -0
- package/dist/utils/importer/import.d.ts +29 -0
- package/dist/utils/importer/import.d.ts.map +1 -0
- package/dist/utils/importer/import.js +514 -0
- package/dist/utils/importer/import.js.map +1 -0
- package/dist/utils/importer/master-tables.d.ts +18 -0
- package/dist/utils/importer/master-tables.d.ts.map +1 -0
- package/dist/utils/importer/master-tables.js +255 -0
- package/dist/utils/importer/master-tables.js.map +1 -0
- package/dist/utils/importer/topological-sort.d.ts +61 -0
- package/dist/utils/importer/topological-sort.d.ts.map +1 -0
- package/dist/utils/importer/topological-sort.js +143 -0
- package/dist/utils/importer/topological-sort.js.map +1 -0
- package/dist/utils/project-detector.d.ts +42 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/project-detector.js +130 -0
- package/dist/utils/project-detector.js.map +1 -0
- package/docs/ACCEPTANCE_CRITERIA.md +0 -0
- package/docs/AI_AGENT_GUIDE.md +0 -0
- package/docs/ARCHITECTURE.md +0 -0
- package/docs/AUTO_FILE_TRACKING.md +0 -1
- package/docs/BEST_PRACTICES.md +0 -0
- package/docs/CONFIGURATION.md +0 -0
- package/docs/DATABASE_AUTH.md +1 -2
- package/docs/DECISION_CONTEXT.md +0 -0
- package/docs/DECISION_TO_TASK_MIGRATION_GUIDE.md +0 -0
- package/docs/GIT_AWARE_AUTO_COMPLETE.md +0 -0
- package/docs/SHARED_CONCEPTS.md +0 -0
- package/docs/SPECIALIZED_AGENTS.md +0 -0
- package/docs/TASK_ACTIONS.md +0 -0
- package/docs/TASK_DEPENDENCIES.md +0 -0
- package/docs/TASK_LINKING.md +0 -0
- package/docs/TASK_MIGRATION.md +0 -0
- package/docs/TASK_OVERVIEW.md +0 -0
- package/docs/TASK_PRUNING.md +0 -0
- package/docs/TASK_SYSTEM.md +0 -0
- package/docs/TOOL_REFERENCE.md +0 -2
- package/docs/TOOL_SELECTION.md +0 -0
- package/docs/WORKFLOWS.md +0 -0
- package/docs/{DATABASE_MIGRATION.md → cli/DATABASE_MIGRATION.md} +71 -32
- package/docs/cli/DATA_EXPORT_IMPORT.md +400 -0
- package/docs/cli/README.md +227 -0
- package/package.json +3 -2
- package/docs/BASEADAPTER_IMPLEMENTATION.md +0 -399
- package/docs/HELP_PREVIEW_COMPARISON.md +0 -259
- package/docs/MIGRATION_CHAIN.md +0 -293
- package/docs/MIGRATION_v2.md +0 -538
- package/docs/MIGRATION_v3.3.md +0 -602
- package/docs/MIGRATION_v3.6.0.md +0 -170
- 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"}
|