sqlew 2.1.3 → 3.0.2
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 +891 -535
- package/README.md +302 -613
- package/assets/kanban-style.png +0 -0
- package/assets/schema.sql +531 -402
- package/dist/database.d.ts +9 -0
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +33 -34
- package/dist/database.js.map +1 -1
- package/dist/index.js +1024 -21
- package/dist/index.js.map +1 -1
- package/dist/migrations/add-task-tables.d.ts +47 -0
- package/dist/migrations/add-task-tables.d.ts.map +1 -0
- package/dist/migrations/add-task-tables.js +285 -0
- package/dist/migrations/add-task-tables.js.map +1 -0
- package/dist/migrations/index.d.ts +96 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +239 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/migrate-decisions-to-tasks.d.ts +61 -0
- package/dist/migrations/migrate-decisions-to-tasks.d.ts.map +1 -0
- package/dist/migrations/migrate-decisions-to-tasks.js +442 -0
- package/dist/migrations/migrate-decisions-to-tasks.js.map +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +14 -3
- package/dist/schema.js.map +1 -1
- package/dist/tools/constraints.d.ts +4 -0
- package/dist/tools/constraints.d.ts.map +1 -1
- package/dist/tools/constraints.js +6 -27
- package/dist/tools/constraints.js.map +1 -1
- package/dist/tools/context.d.ts +17 -1
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +195 -190
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +113 -166
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/messaging.d.ts +2 -9
- package/dist/tools/messaging.d.ts.map +1 -1
- package/dist/tools/messaging.js +67 -126
- package/dist/tools/messaging.js.map +1 -1
- package/dist/tools/tasks.d.ts +90 -0
- package/dist/tools/tasks.d.ts.map +1 -0
- package/dist/tools/tasks.js +732 -0
- package/dist/tools/tasks.js.map +1 -0
- package/dist/tools/utils.d.ts +8 -1
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +50 -21
- package/dist/tools/utils.js.map +1 -1
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/batch.d.ts +69 -0
- package/dist/utils/batch.d.ts.map +1 -0
- package/dist/utils/batch.js +148 -0
- package/dist/utils/batch.js.map +1 -0
- package/dist/utils/query-builder.d.ts +68 -0
- package/dist/utils/query-builder.d.ts.map +1 -0
- package/dist/utils/query-builder.js +116 -0
- package/dist/utils/query-builder.js.map +1 -0
- package/dist/utils/task-stale-detection.d.ts +28 -0
- package/dist/utils/task-stale-detection.d.ts.map +1 -0
- package/dist/utils/task-stale-detection.js +92 -0
- package/dist/utils/task-stale-detection.js.map +1 -0
- package/dist/utils/validators.d.ts +57 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +117 -0
- package/dist/utils/validators.js.map +1 -0
- package/docs/AI_AGENT_GUIDE.md +1471 -0
- package/{ARCHITECTURE.md → docs/ARCHITECTURE.md} +636 -636
- package/docs/BEST_PRACTICES.md +481 -0
- package/docs/DECISION_TO_TASK_MIGRATION_GUIDE.md +457 -0
- package/docs/MIGRATION_CHAIN.md +280 -0
- package/{MIGRATION_v2.md → docs/MIGRATION_v2.md} +538 -538
- package/docs/SHARED_CONCEPTS.md +339 -0
- package/docs/TASK_ACTIONS.md +854 -0
- package/docs/TASK_LINKING.md +729 -0
- package/docs/TASK_MIGRATION.md +701 -0
- package/docs/TASK_OVERVIEW.md +363 -0
- package/docs/TASK_SYSTEM.md +1244 -0
- package/docs/TOOL_REFERENCE.md +471 -0
- package/docs/TOOL_SELECTION.md +279 -0
- package/docs/WORKFLOWS.md +602 -0
- package/docs/refactoring-summary-2025-10-17.md +365 -0
- package/docs/requirement-2025-10-17.md +508 -0
- package/package.json +64 -63
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Coordinates automatic sequential execution of all database migrations.
|
|
5
|
+
* Supports upgrading from any previous version to the latest version in a single run.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Automatic version detection
|
|
9
|
+
* - Migration chain construction
|
|
10
|
+
* - Sequential execution with transaction safety
|
|
11
|
+
* - Detailed logging and error reporting
|
|
12
|
+
* - Dry-run mode support
|
|
13
|
+
*/
|
|
14
|
+
import * as tablePrefixes from './add-table-prefixes.js';
|
|
15
|
+
import * as v210Features from './add-v2.1.0-features.js';
|
|
16
|
+
import * as taskTables from './add-task-tables.js';
|
|
17
|
+
/**
|
|
18
|
+
* Registry of all available migrations in execution order
|
|
19
|
+
*/
|
|
20
|
+
const MIGRATIONS = [
|
|
21
|
+
{
|
|
22
|
+
name: 'add-table-prefixes',
|
|
23
|
+
fromVersion: '1.0.x',
|
|
24
|
+
toVersion: '1.1.0',
|
|
25
|
+
needsMigration: tablePrefixes.needsMigration,
|
|
26
|
+
runMigration: tablePrefixes.runMigration,
|
|
27
|
+
getMigrationInfo: tablePrefixes.getMigrationInfo,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'add-v2.1.0-features',
|
|
31
|
+
fromVersion: '2.0.0',
|
|
32
|
+
toVersion: '2.1.0',
|
|
33
|
+
needsMigration: v210Features.needsMigration,
|
|
34
|
+
runMigration: v210Features.runMigration,
|
|
35
|
+
getMigrationInfo: v210Features.getMigrationInfo,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'add-task-tables',
|
|
39
|
+
fromVersion: '2.1.x',
|
|
40
|
+
toVersion: '3.0.0',
|
|
41
|
+
needsMigration: taskTables.needsMigration,
|
|
42
|
+
runMigration: taskTables.runMigration,
|
|
43
|
+
getMigrationInfo: taskTables.getMigrationInfo,
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
/**
|
|
47
|
+
* Detect current database version by inspecting schema
|
|
48
|
+
*
|
|
49
|
+
* Version Detection Logic:
|
|
50
|
+
* - v1.0.0: Has unprefixed tables (agents, not m_agents)
|
|
51
|
+
* - v1.1.0: Has prefixed tables but no t_activity_log
|
|
52
|
+
* - v2.0.0: Has t_activity_log but no m_task_statuses
|
|
53
|
+
* - v2.1.0: Has t_activity_log but no m_task_statuses
|
|
54
|
+
* - v3.0.0: Has m_task_statuses
|
|
55
|
+
*
|
|
56
|
+
* @param db - Database connection
|
|
57
|
+
* @returns Detected version string
|
|
58
|
+
*/
|
|
59
|
+
export function detectDatabaseVersion(db) {
|
|
60
|
+
try {
|
|
61
|
+
// Check for task tables (v3.0.0)
|
|
62
|
+
const hasTaskTables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='m_task_statuses'").get();
|
|
63
|
+
if (hasTaskTables) {
|
|
64
|
+
return '3.0.0';
|
|
65
|
+
}
|
|
66
|
+
// Check for v2.1.0 features (activity log)
|
|
67
|
+
const hasActivityLog = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_activity_log'").get();
|
|
68
|
+
if (hasActivityLog) {
|
|
69
|
+
return '2.1.x';
|
|
70
|
+
}
|
|
71
|
+
// Check for prefixed tables (v1.1.0+)
|
|
72
|
+
const hasPrefixedTables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='m_agents'").get();
|
|
73
|
+
if (hasPrefixedTables) {
|
|
74
|
+
return '2.0.0'; // Could be 1.1.0 or 2.0.0, both have same schema
|
|
75
|
+
}
|
|
76
|
+
// Check for old unprefixed tables (v1.0.0)
|
|
77
|
+
const hasOldTables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").get();
|
|
78
|
+
if (hasOldTables) {
|
|
79
|
+
return '1.0.0';
|
|
80
|
+
}
|
|
81
|
+
// No tables found - fresh database
|
|
82
|
+
return 'fresh';
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
86
|
+
throw new Error(`Failed to detect database version: ${message}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get migration plan for current database
|
|
91
|
+
*
|
|
92
|
+
* @param db - Database connection
|
|
93
|
+
* @returns Array of migration names that need to run
|
|
94
|
+
*/
|
|
95
|
+
export function getMigrationPlan(db) {
|
|
96
|
+
const plan = [];
|
|
97
|
+
for (const migration of MIGRATIONS) {
|
|
98
|
+
if (migration.needsMigration(db)) {
|
|
99
|
+
plan.push(`${migration.name} (${migration.fromVersion} → ${migration.toVersion})`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return plan;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Run all pending migrations in sequence
|
|
106
|
+
*
|
|
107
|
+
* This function:
|
|
108
|
+
* 1. Detects current database version
|
|
109
|
+
* 2. Identifies which migrations are needed
|
|
110
|
+
* 3. Executes migrations in correct order
|
|
111
|
+
* 4. Stops on first failure (rollback already handled by individual migrations)
|
|
112
|
+
* 5. Returns combined results
|
|
113
|
+
*
|
|
114
|
+
* @param db - Database connection
|
|
115
|
+
* @param dryRun - If true, only show plan without executing (default: false)
|
|
116
|
+
* @returns Array of migration results
|
|
117
|
+
*/
|
|
118
|
+
export function runAllMigrations(db, dryRun = false) {
|
|
119
|
+
const results = [];
|
|
120
|
+
try {
|
|
121
|
+
// Detect current version
|
|
122
|
+
const currentVersion = detectDatabaseVersion(db);
|
|
123
|
+
console.log(`\n📊 Current database version: ${currentVersion}`);
|
|
124
|
+
// Get migration plan
|
|
125
|
+
const plan = getMigrationPlan(db);
|
|
126
|
+
if (plan.length === 0) {
|
|
127
|
+
console.log('✅ Database is up to date, no migrations needed.\n');
|
|
128
|
+
return [{
|
|
129
|
+
success: true,
|
|
130
|
+
message: 'No migrations needed',
|
|
131
|
+
details: [`Current version: ${currentVersion}`]
|
|
132
|
+
}];
|
|
133
|
+
}
|
|
134
|
+
console.log(`\n📋 Migration plan (${plan.length} migration${plan.length === 1 ? '' : 's'}):`);
|
|
135
|
+
plan.forEach((step, i) => {
|
|
136
|
+
console.log(` ${i + 1}. ${step}`);
|
|
137
|
+
});
|
|
138
|
+
if (dryRun) {
|
|
139
|
+
console.log('\n🏃 Dry-run mode: No changes will be made.\n');
|
|
140
|
+
return [{
|
|
141
|
+
success: true,
|
|
142
|
+
message: 'Dry-run completed',
|
|
143
|
+
details: plan
|
|
144
|
+
}];
|
|
145
|
+
}
|
|
146
|
+
console.log('');
|
|
147
|
+
// Execute migrations in sequence
|
|
148
|
+
for (const migration of MIGRATIONS) {
|
|
149
|
+
if (!migration.needsMigration(db)) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
console.log(`\n🔄 Running migration: ${migration.name}`);
|
|
153
|
+
console.log(` ${migration.fromVersion} → ${migration.toVersion}`);
|
|
154
|
+
const result = migration.runMigration(db);
|
|
155
|
+
results.push(result);
|
|
156
|
+
if (result.success) {
|
|
157
|
+
console.log(`✅ ${result.message}`);
|
|
158
|
+
if (result.details && result.details.length > 0) {
|
|
159
|
+
result.details.forEach(detail => {
|
|
160
|
+
console.log(` - ${detail}`);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
console.error(`❌ ${result.message}`);
|
|
166
|
+
if (result.details && result.details.length > 0) {
|
|
167
|
+
result.details.forEach(detail => {
|
|
168
|
+
console.error(` - ${detail}`);
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
// Stop on first failure
|
|
172
|
+
console.error('\n⚠️ Migration failed. Database rolled back to previous state.\n');
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Detect final version
|
|
177
|
+
const finalVersion = detectDatabaseVersion(db);
|
|
178
|
+
console.log(`\n✅ Migration complete: ${currentVersion} → ${finalVersion}\n`);
|
|
179
|
+
return results;
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
183
|
+
return [{
|
|
184
|
+
success: false,
|
|
185
|
+
message: `Migration orchestrator failed: ${message}`,
|
|
186
|
+
}];
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get detailed info about a specific migration
|
|
191
|
+
*
|
|
192
|
+
* @param migrationName - Name of the migration
|
|
193
|
+
* @returns Migration info text or null if not found
|
|
194
|
+
*/
|
|
195
|
+
export function getMigrationDetails(migrationName) {
|
|
196
|
+
const migration = MIGRATIONS.find(m => m.name === migrationName);
|
|
197
|
+
if (!migration) {
|
|
198
|
+
return null;
|
|
199
|
+
}
|
|
200
|
+
return migration.getMigrationInfo();
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get list of all available migrations
|
|
204
|
+
*
|
|
205
|
+
* @returns Array of migration info objects
|
|
206
|
+
*/
|
|
207
|
+
export function listAllMigrations() {
|
|
208
|
+
return MIGRATIONS.map(m => ({
|
|
209
|
+
name: m.name,
|
|
210
|
+
fromVersion: m.fromVersion,
|
|
211
|
+
toVersion: m.toVersion,
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Check if database needs any migrations
|
|
216
|
+
*
|
|
217
|
+
* @param db - Database connection
|
|
218
|
+
* @returns true if migrations are needed
|
|
219
|
+
*/
|
|
220
|
+
export function needsAnyMigrations(db) {
|
|
221
|
+
return MIGRATIONS.some(m => m.needsMigration(db));
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get summary of migration status
|
|
225
|
+
*
|
|
226
|
+
* @param db - Database connection
|
|
227
|
+
* @returns Summary object
|
|
228
|
+
*/
|
|
229
|
+
export function getMigrationStatus(db) {
|
|
230
|
+
const currentVersion = detectDatabaseVersion(db);
|
|
231
|
+
const plan = getMigrationPlan(db);
|
|
232
|
+
return {
|
|
233
|
+
currentVersion,
|
|
234
|
+
upToDate: plan.length === 0,
|
|
235
|
+
pendingMigrations: plan.length,
|
|
236
|
+
migrationPlan: plan,
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration: Convert Task-Like Decisions to Tasks
|
|
3
|
+
*
|
|
4
|
+
* This migration detects decisions being used for task/todo tracking
|
|
5
|
+
* and migrates them to the dedicated task management system.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Heuristic detection of task-like decisions
|
|
9
|
+
* - Dry-run mode to preview before executing
|
|
10
|
+
* - Confidence scoring for each detection
|
|
11
|
+
* - Links tasks to original decisions for traceability
|
|
12
|
+
* - Optional deprecation of original decisions
|
|
13
|
+
*
|
|
14
|
+
* Detection Heuristics:
|
|
15
|
+
* - Keys containing: task_, _task, todo_, _todo, wip_, _wip, implement_, fix_
|
|
16
|
+
* - Tags containing: task, todo, in_progress, wip, blocked, done
|
|
17
|
+
* - Values containing: TODO:, WIP:, DONE:, BLOCKED:, [ ], [x]
|
|
18
|
+
* - Status indicators in value (e.g., "Status: in_progress")
|
|
19
|
+
*/
|
|
20
|
+
import { Database } from 'better-sqlite3';
|
|
21
|
+
export interface DecisionTaskMapping {
|
|
22
|
+
decisionKey: string;
|
|
23
|
+
taskTitle: string;
|
|
24
|
+
description: string;
|
|
25
|
+
status: string;
|
|
26
|
+
priority: string;
|
|
27
|
+
tags: string[];
|
|
28
|
+
layer: string | null;
|
|
29
|
+
assignee: string | null;
|
|
30
|
+
confidence: number;
|
|
31
|
+
detectionReasons: string[];
|
|
32
|
+
}
|
|
33
|
+
export interface MigrationResult {
|
|
34
|
+
success: boolean;
|
|
35
|
+
message: string;
|
|
36
|
+
details?: string[];
|
|
37
|
+
mappings?: DecisionTaskMapping[];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Detect all task-like decisions in the database
|
|
41
|
+
*
|
|
42
|
+
* @param db - Database connection
|
|
43
|
+
* @param minConfidence - Minimum confidence threshold (0-100, default: 50)
|
|
44
|
+
* @returns Array of decision-task mappings
|
|
45
|
+
*/
|
|
46
|
+
export declare function detectTaskLikeDecisions(db: Database, minConfidence?: number): DecisionTaskMapping[];
|
|
47
|
+
/**
|
|
48
|
+
* Migrate decisions to tasks
|
|
49
|
+
*
|
|
50
|
+
* @param db - Database connection
|
|
51
|
+
* @param dryRun - If true, only preview without executing (default: true)
|
|
52
|
+
* @param minConfidence - Minimum confidence threshold (default: 50)
|
|
53
|
+
* @param deprecateOriginal - If true, mark original decisions as deprecated (default: false)
|
|
54
|
+
* @returns Migration result with mappings
|
|
55
|
+
*/
|
|
56
|
+
export declare function migrateDecisionsToTasks(db: Database, dryRun?: boolean, minConfidence?: number, deprecateOriginal?: boolean): MigrationResult;
|
|
57
|
+
/**
|
|
58
|
+
* Get migration info
|
|
59
|
+
*/
|
|
60
|
+
export declare function getMigrationInfo(): string;
|
|
61
|
+
//# sourceMappingURL=migrate-decisions-to-tasks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate-decisions-to-tasks.d.ts","sourceRoot":"","sources":["../../src/migrations/migrate-decisions-to-tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAuMD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,EACZ,aAAa,GAAE,MAAW,GACzB,mBAAmB,EAAE,CAmEvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,EAAE,EAAE,QAAQ,EACZ,MAAM,GAAE,OAAc,EACtB,aAAa,GAAE,MAAW,EAC1B,iBAAiB,GAAE,OAAe,GACjC,eAAe,CA2JjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CA8BzC"}
|