sqlew 3.1.1 ā 3.2.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 +100 -0
- package/README.md +12 -2
- package/assets/schema.sql +28 -1
- package/dist/database.d.ts +65 -0
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +190 -0
- package/dist/database.js.map +1 -1
- package/dist/index.js +36 -6
- package/dist/index.js.map +1 -1
- package/dist/migrations/add-decision-context.d.ts +28 -0
- package/dist/migrations/add-decision-context.d.ts.map +1 -0
- package/dist/migrations/add-decision-context.js +125 -0
- package/dist/migrations/add-decision-context.js.map +1 -0
- package/dist/migrations/add-task-dependencies.d.ts +26 -0
- package/dist/migrations/add-task-dependencies.d.ts.map +1 -0
- package/dist/migrations/add-task-dependencies.js +94 -0
- package/dist/migrations/add-task-dependencies.js.map +1 -0
- package/dist/migrations/index.d.ts +3 -1
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +32 -2
- package/dist/migrations/index.js.map +1 -1
- package/dist/schema.js +2 -2
- package/dist/schema.js.map +1 -1
- package/dist/tests/migrations/test-v3.2-migration.d.ts +6 -0
- package/dist/tests/migrations/test-v3.2-migration.d.ts.map +1 -0
- package/dist/tests/migrations/test-v3.2-migration.js +191 -0
- package/dist/tests/migrations/test-v3.2-migration.js.map +1 -0
- package/dist/tests/tasks.dependencies.test.d.ts +7 -0
- package/dist/tests/tasks.dependencies.test.d.ts.map +1 -0
- package/dist/tests/tasks.dependencies.test.js +613 -0
- package/dist/tests/tasks.dependencies.test.js.map +1 -0
- package/dist/tools/context.d.ts +21 -2
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +110 -3
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/tasks.d.ts +23 -0
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +298 -8
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +44 -21
- package/dist/tools/utils.js.map +1 -1
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -1
- package/docs/AI_AGENT_GUIDE.md +25 -3
- package/docs/DECISION_CONTEXT.md +474 -0
- package/docs/TASK_ACTIONS.md +311 -10
- package/docs/TASK_DEPENDENCIES.md +748 -0
- package/docs/TASK_LINKING.md +188 -8
- package/docs/WORKFLOWS.md +25 -3
- package/package.json +4 -2
package/dist/migrations/index.js
CHANGED
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
import * as tablePrefixes from './add-table-prefixes.js';
|
|
15
15
|
import * as v210Features from './add-v2.1.0-features.js';
|
|
16
16
|
import * as taskTables from './add-task-tables.js';
|
|
17
|
+
import * as taskDependencies from './add-task-dependencies.js';
|
|
18
|
+
import * as decisionContext from './add-decision-context.js';
|
|
17
19
|
/**
|
|
18
20
|
* Registry of all available migrations in execution order
|
|
19
21
|
*/
|
|
@@ -42,6 +44,22 @@ const MIGRATIONS = [
|
|
|
42
44
|
runMigration: taskTables.runMigration,
|
|
43
45
|
getMigrationInfo: taskTables.getMigrationInfo,
|
|
44
46
|
},
|
|
47
|
+
{
|
|
48
|
+
name: 'add-task-dependencies',
|
|
49
|
+
fromVersion: '3.1.x',
|
|
50
|
+
toVersion: '3.2.0',
|
|
51
|
+
needsMigration: taskDependencies.needsTaskDependenciesMigration,
|
|
52
|
+
runMigration: taskDependencies.migrateToTaskDependencies,
|
|
53
|
+
getMigrationInfo: taskDependencies.getTaskDependenciesMigrationInfo,
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'add-decision-context',
|
|
57
|
+
fromVersion: '3.2.0',
|
|
58
|
+
toVersion: '3.2.2',
|
|
59
|
+
needsMigration: decisionContext.needsDecisionContextMigration,
|
|
60
|
+
runMigration: decisionContext.migrateToDecisionContext,
|
|
61
|
+
getMigrationInfo: decisionContext.getDecisionContextMigrationInfo,
|
|
62
|
+
},
|
|
45
63
|
];
|
|
46
64
|
/**
|
|
47
65
|
* Detect current database version by inspecting schema
|
|
@@ -51,17 +69,29 @@ const MIGRATIONS = [
|
|
|
51
69
|
* - v1.1.0: Has prefixed tables but no t_activity_log
|
|
52
70
|
* - v2.0.0: Has t_activity_log but no m_task_statuses
|
|
53
71
|
* - v2.1.0: Has t_activity_log but no m_task_statuses
|
|
54
|
-
* - v3.0.0: Has m_task_statuses
|
|
72
|
+
* - v3.0.0: Has m_task_statuses but no t_task_dependencies
|
|
73
|
+
* - v3.2.0: Has t_task_dependencies but no t_decision_context
|
|
74
|
+
* - v3.2.2: Has t_decision_context
|
|
55
75
|
*
|
|
56
76
|
* @param db - Database connection
|
|
57
77
|
* @returns Detected version string
|
|
58
78
|
*/
|
|
59
79
|
export function detectDatabaseVersion(db) {
|
|
60
80
|
try {
|
|
81
|
+
// Check for decision context table (v3.2.2)
|
|
82
|
+
const hasDecisionContext = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_decision_context'").get();
|
|
83
|
+
if (hasDecisionContext) {
|
|
84
|
+
return '3.2.2';
|
|
85
|
+
}
|
|
86
|
+
// Check for task dependencies table (v3.2.0)
|
|
87
|
+
const hasTaskDependencies = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_task_dependencies'").get();
|
|
88
|
+
if (hasTaskDependencies) {
|
|
89
|
+
return '3.2.0';
|
|
90
|
+
}
|
|
61
91
|
// Check for task tables (v3.0.0)
|
|
62
92
|
const hasTaskTables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='m_task_statuses'").get();
|
|
63
93
|
if (hasTaskTables) {
|
|
64
|
-
return '3.
|
|
94
|
+
return '3.1.x';
|
|
65
95
|
}
|
|
66
96
|
// Check for v2.1.0 features (activity log)
|
|
67
97
|
const hasActivityLog = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_activity_log'").get();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,UAAU,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,gBAAgB,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,eAAe,MAAM,2BAA2B,CAAC;AAiB7D;;GAEG;AACH,MAAM,UAAU,GAAoB;IAClC;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,OAAO;QAClB,cAAc,EAAE,aAAa,CAAC,cAAc;QAC5C,YAAY,EAAE,aAAa,CAAC,YAAY;QACxC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;KACjD;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,OAAO;QAClB,cAAc,EAAE,YAAY,CAAC,cAAc;QAC3C,YAAY,EAAE,YAAY,CAAC,YAAY;QACvC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB;KAChD;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,OAAO;QAClB,cAAc,EAAE,UAAU,CAAC,cAAc;QACzC,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;KAC9C;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,OAAO;QAClB,cAAc,EAAE,gBAAgB,CAAC,8BAA8B;QAC/D,YAAY,EAAE,gBAAgB,CAAC,yBAAyB;QACxD,gBAAgB,EAAE,gBAAgB,CAAC,gCAAgC;KACpE;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,OAAO;QACpB,SAAS,EAAE,OAAO;QAClB,cAAc,EAAE,eAAe,CAAC,6BAA6B;QAC7D,YAAY,EAAE,eAAe,CAAC,wBAAwB;QACtD,gBAAgB,EAAE,eAAe,CAAC,+BAA+B;KAClE;CACF,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAY;IAChD,IAAI,CAAC;QACH,4CAA4C;QAC5C,MAAM,kBAAkB,GAAG,EAAE,CAAC,OAAO,CACnC,iFAAiF,CAClF,CAAC,GAAG,EAAE,CAAC;QAER,IAAI,kBAAkB,EAAE,CAAC;YACvB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,6CAA6C;QAC7C,MAAM,mBAAmB,GAAG,EAAE,CAAC,OAAO,CACpC,kFAAkF,CACnF,CAAC,GAAG,EAAE,CAAC;QAER,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,iCAAiC;QACjC,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAC9B,8EAA8E,CAC/E,CAAC,GAAG,EAAE,CAAC;QAER,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,2CAA2C;QAC3C,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAC/B,6EAA6E,CAC9E,CAAC,GAAG,EAAE,CAAC;QAER,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,sCAAsC;QACtC,MAAM,iBAAiB,GAAG,EAAE,CAAC,OAAO,CAClC,uEAAuE,CACxE,CAAC,GAAG,EAAE,CAAC;QAER,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,OAAO,CAAC,CAAC,iDAAiD;QACnE,CAAC;QAED,2CAA2C;QAC3C,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAC7B,qEAAqE,CACtE,CAAC,GAAG,EAAE,CAAC;QAER,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,mCAAmC;QACnC,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAY;IAC3C,MAAM,IAAI,GAAa,EAAE,CAAC;IAE1B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,WAAW,MAAM,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAY,EAAE,SAAkB,KAAK;IACpE,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,IAAI,CAAC;QACH,yBAAyB;QACzB,MAAM,cAAc,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,kCAAkC,cAAc,EAAE,CAAC,CAAC;QAEhE,qBAAqB;QACrB,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC;oBACN,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,sBAAsB;oBAC/B,OAAO,EAAE,CAAC,oBAAoB,cAAc,EAAE,CAAC;iBAChD,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,MAAM,aAAa,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9F,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,OAAO,CAAC;oBACN,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,mBAAmB;oBAC5B,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,iCAAiC;QACjC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;gBAClC,SAAS;YACX,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,WAAW,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAErB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBAC9B,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;oBAChC,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBACrC,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBAC9B,OAAO,CAAC,KAAK,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;oBAClC,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,wBAAwB;gBACxB,OAAO,CAAC,KAAK,CAAC,mEAAmE,CAAC,CAAC;gBACnF,MAAM;YACR,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,2BAA2B,cAAc,MAAM,YAAY,IAAI,CAAC,CAAC;QAE7E,OAAO,OAAO,CAAC;IAEjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO,CAAC;gBACN,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,kCAAkC,OAAO,EAAE;aACrD,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAqB;IACvD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;IACjE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,SAAS,CAAC,gBAAgB,EAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;KACvB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAY;IAC7C,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAY;IAM7C,MAAM,cAAc,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAElC,OAAO;QACL,cAAc;QACd,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC;QAC3B,iBAAiB,EAAE,IAAI,CAAC,MAAM;QAC9B,aAAa,EAAE,IAAI;KACpB,CAAC;AACJ,CAAC"}
|
package/dist/schema.js
CHANGED
|
@@ -102,11 +102,11 @@ export function verifySchemaIntegrity(db) {
|
|
|
102
102
|
'm_agents', 'm_files', 'm_context_keys', 'm_constraint_categories',
|
|
103
103
|
'm_layers', 'm_tags', 'm_scopes', 'm_config', 'm_task_statuses',
|
|
104
104
|
't_decisions', 't_decisions_numeric', 't_decision_history',
|
|
105
|
-
't_decision_tags', 't_decision_scopes',
|
|
105
|
+
't_decision_tags', 't_decision_scopes', 't_decision_context',
|
|
106
106
|
't_agent_messages', 't_file_changes', 't_constraints', 't_constraint_tags',
|
|
107
107
|
't_activity_log', 't_decision_templates',
|
|
108
108
|
't_tasks', 't_task_details', 't_task_tags', 't_task_decision_links',
|
|
109
|
-
't_task_constraint_links', 't_task_file_links',
|
|
109
|
+
't_task_constraint_links', 't_task_file_links', 't_task_dependencies',
|
|
110
110
|
];
|
|
111
111
|
const requiredViews = [
|
|
112
112
|
'v_tagged_decisions', 'v_active_context', 'v_layer_summary',
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAY;IAC3C,IAAI,CAAC;QACH,mBAAmB;QACnB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEpD,gDAAgD;QAChD,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE7B,IAAI,CAAC;YACH,4BAA4B;YAC5B,yEAAyE;YACzE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEnB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAElB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAY;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,0FAA0F,CAC3F,CAAC,GAAG,EAAE,CAAC;QAER,OAAO,MAAM,KAAK,SAAS,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAAY;IASxC,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,CAAC;QACf,MAAM,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,qBAAqB,EAAE,CAAC;KACzB,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,CAAC,MAAM,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACxG,MAAM,CAAC,KAAK,GAAI,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACtG,MAAM,CAAC,YAAY,GAAI,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACpH,MAAM,CAAC,MAAM,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACxG,MAAM,CAAC,IAAI,GAAI,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACpG,MAAM,CAAC,MAAM,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACxG,MAAM,CAAC,qBAAqB,GAAI,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IACxI,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0CAA0C;IAC5C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAY;IAKhD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,EAAc;QACvB,MAAM,EAAE,EAAc;KACvB,CAAC;IAEF,MAAM,cAAc,GAAG;QACrB,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,yBAAyB;QAClE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB;QAC/D,aAAa,EAAE,qBAAqB,EAAE,oBAAoB;QAC1D,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB;QAC5D,kBAAkB,EAAE,gBAAgB,EAAE,eAAe,EAAE,mBAAmB;QAC1E,gBAAgB,EAAE,sBAAsB;QACxC,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,uBAAuB;QACnE,yBAAyB,EAAE,mBAAmB,EAAE,qBAAqB;KACtE,CAAC;IAEF,MAAM,aAAa,GAAG;QACpB,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB;QAC3D,+BAA+B,EAAE,uBAAuB,EAAE,sBAAsB;QAChF,cAAc;KACf,CAAC;IAEF,MAAM,gBAAgB,GAAG;QACvB,6BAA6B;QAC7B,sBAAsB;QACtB,yBAAyB;QACzB,sBAAsB;QACtB,qBAAqB;QACrB,qBAAqB;QACrB,4BAA4B;QAC5B,2BAA2B;KAC5B,CAAC;IAEF,IAAI,CAAC;QACH,eAAe;QACf,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,8DAA8D,CAC/D,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEb,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,cAAc;QACd,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,6DAA6D,CAC9D,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAEZ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,gEAAgE,CACjE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEf,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;gBACrB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,UAAU,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAC3G,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,UAAU,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,aAAa,GAAI,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAC7H,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,aAAa,EAAE,CAAC,CAAC;YAC7E,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACvG,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,QAAQ,EAAE,CAAC,CAAC;YACnE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,WAAW,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QAC5G,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;YACxE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;QAED,MAAM,eAAe,GAAI,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;QACvH,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,eAAe,EAAE,CAAC,CAAC;YACzE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACvB,CAAC;IAEH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-v3.2-migration.d.ts","sourceRoot":"","sources":["../../../src/tests/migrations/test-v3.2-migration.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Focused Migration Test: v3.1.x ā v3.2.0 (Task Dependencies)
|
|
3
|
+
* Tests the specific task dependencies migration
|
|
4
|
+
*/
|
|
5
|
+
import Database from 'better-sqlite3';
|
|
6
|
+
import { initializeSchema } from '../../schema.js';
|
|
7
|
+
import { needsTaskDependenciesMigration, migrateToTaskDependencies } from '../../migrations/add-task-dependencies.js';
|
|
8
|
+
// Colors
|
|
9
|
+
const GREEN = '\x1b[32m';
|
|
10
|
+
const RED = '\x1b[31m';
|
|
11
|
+
const BLUE = '\x1b[34m';
|
|
12
|
+
const YELLOW = '\x1b[33m';
|
|
13
|
+
const RESET = '\x1b[0m';
|
|
14
|
+
function log(message, color = RESET) {
|
|
15
|
+
console.log(`${color}${message}${RESET}`);
|
|
16
|
+
}
|
|
17
|
+
async function testTaskDependenciesMigration() {
|
|
18
|
+
log('\n' + '='.repeat(70), BLUE);
|
|
19
|
+
log('v3.2.0 MIGRATION TEST: Task Dependencies', BLUE);
|
|
20
|
+
log('='.repeat(70) + '\n', BLUE);
|
|
21
|
+
// Test 1: Fresh database with full schema
|
|
22
|
+
log('TEST 1: Fresh Database (Full Schema Initialization)', YELLOW);
|
|
23
|
+
log('-'.repeat(70), YELLOW);
|
|
24
|
+
const dbFresh = new Database(':memory:');
|
|
25
|
+
try {
|
|
26
|
+
// Initialize full schema (this will create v3.2.0 directly)
|
|
27
|
+
initializeSchema(dbFresh);
|
|
28
|
+
// Check if t_task_dependencies exists
|
|
29
|
+
const hasTable = dbFresh.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_task_dependencies'").get();
|
|
30
|
+
if (hasTable) {
|
|
31
|
+
log('ā
t_task_dependencies table exists in fresh schema', GREEN);
|
|
32
|
+
// Verify structure
|
|
33
|
+
const columns = dbFresh.prepare("PRAGMA table_info(t_task_dependencies)").all();
|
|
34
|
+
log(`ā
Table has ${columns.length} columns`, GREEN);
|
|
35
|
+
// Verify indexes
|
|
36
|
+
const indexes = dbFresh.prepare("SELECT name FROM sqlite_master WHERE type='index' AND tbl_name='t_task_dependencies'").all();
|
|
37
|
+
log(`ā
Table has ${indexes.length} index(es):`, GREEN);
|
|
38
|
+
indexes.forEach((idx) => {
|
|
39
|
+
log(` - ${idx.name}`, GREEN);
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
log('ā t_task_dependencies table NOT found!', RED);
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
dbFresh.close();
|
|
49
|
+
}
|
|
50
|
+
// Test 2: Simulated v3.1.x database (manually remove t_task_dependencies)
|
|
51
|
+
log('\nTEST 2: Upgrade from v3.1.x ā v3.2.0', YELLOW);
|
|
52
|
+
log('-'.repeat(70), YELLOW);
|
|
53
|
+
const dbUpgrade = new Database(':memory:');
|
|
54
|
+
try {
|
|
55
|
+
// Initialize full schema first
|
|
56
|
+
initializeSchema(dbUpgrade);
|
|
57
|
+
// Drop t_task_dependencies to simulate v3.1.x
|
|
58
|
+
dbUpgrade.exec('DROP TABLE IF EXISTS t_task_dependencies');
|
|
59
|
+
log('ā Simulated v3.1.x (removed t_task_dependencies)', YELLOW);
|
|
60
|
+
// Register an agent first (for activity log triggers)
|
|
61
|
+
dbUpgrade.exec(`INSERT OR IGNORE INTO m_agents (id, name) VALUES (1, 'test-agent')`);
|
|
62
|
+
// Add some test tasks (disable triggers temporarily)
|
|
63
|
+
dbUpgrade.exec(`
|
|
64
|
+
INSERT INTO t_tasks (id, title, status_id, priority, created_by_agent_id)
|
|
65
|
+
VALUES
|
|
66
|
+
(1, 'Database Schema', 1, 4, 1),
|
|
67
|
+
(2, 'API Implementation', 1, 3, 1),
|
|
68
|
+
(3, 'Testing', 1, 2, 1);
|
|
69
|
+
`);
|
|
70
|
+
log('ā Created test tasks (3 tasks)', YELLOW);
|
|
71
|
+
// Check if migration is needed
|
|
72
|
+
const needsMigration = needsTaskDependenciesMigration(dbUpgrade);
|
|
73
|
+
log(`ā needsMigration: ${needsMigration}`, needsMigration ? YELLOW : GREEN);
|
|
74
|
+
if (!needsMigration) {
|
|
75
|
+
log('ā Migration should be needed but reports as not needed!', RED);
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
// Run migration
|
|
79
|
+
log('\nš Running migration...', BLUE);
|
|
80
|
+
const result = migrateToTaskDependencies(dbUpgrade);
|
|
81
|
+
if (result.success) {
|
|
82
|
+
log(`ā
${result.message}`, GREEN);
|
|
83
|
+
if (result.details) {
|
|
84
|
+
result.details.forEach((detail) => {
|
|
85
|
+
log(` - ${detail}`, GREEN);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
// Verify table exists
|
|
89
|
+
const hasTable = dbUpgrade.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_task_dependencies'").get();
|
|
90
|
+
if (!hasTable) {
|
|
91
|
+
log('ā Table not created!', RED);
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
// Test adding dependencies
|
|
95
|
+
log('\nā Testing dependency operations:', YELLOW);
|
|
96
|
+
dbUpgrade.exec(`
|
|
97
|
+
INSERT INTO t_task_dependencies (blocker_task_id, blocked_task_id)
|
|
98
|
+
VALUES (1, 2), (2, 3);
|
|
99
|
+
`);
|
|
100
|
+
log(' ā Added dependencies: 1ā2, 2ā3', GREEN);
|
|
101
|
+
// Query dependencies
|
|
102
|
+
const deps = dbUpgrade.prepare('SELECT * FROM t_task_dependencies').all();
|
|
103
|
+
log(` ā Verified ${deps.length} dependencies in table`, GREEN);
|
|
104
|
+
// Test CASCADE deletion
|
|
105
|
+
dbUpgrade.exec('DELETE FROM t_tasks WHERE id = 1');
|
|
106
|
+
const depsAfterDelete = dbUpgrade.prepare('SELECT * FROM t_task_dependencies').all();
|
|
107
|
+
log(` ā CASCADE deletion: ${depsAfterDelete.length} dependencies remaining (was 2)`, GREEN);
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
log(`ā ${result.message}`, RED);
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
dbUpgrade.close();
|
|
116
|
+
}
|
|
117
|
+
// Test 3: Idempotency (running migration twice)
|
|
118
|
+
log('\nTEST 3: Migration Idempotency', YELLOW);
|
|
119
|
+
log('-'.repeat(70), YELLOW);
|
|
120
|
+
const dbIdempotent = new Database(':memory:');
|
|
121
|
+
try {
|
|
122
|
+
// Initialize full schema
|
|
123
|
+
initializeSchema(dbIdempotent);
|
|
124
|
+
// Run migration on already-migrated database
|
|
125
|
+
log('ā Running migration on already-migrated database...', YELLOW);
|
|
126
|
+
const result = migrateToTaskDependencies(dbIdempotent);
|
|
127
|
+
if (result.success && result.message.includes('already exists')) {
|
|
128
|
+
log(`ā
${result.message}`, GREEN);
|
|
129
|
+
log('ā
Migration is idempotent (safe to run multiple times)', GREEN);
|
|
130
|
+
}
|
|
131
|
+
else if (result.success) {
|
|
132
|
+
log('ā ļø Migration ran but should have detected existing table', YELLOW);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
log(`ā ${result.message}`, RED);
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
finally {
|
|
140
|
+
dbIdempotent.close();
|
|
141
|
+
}
|
|
142
|
+
// Test 4: Verify foreign key constraints
|
|
143
|
+
log('\nTEST 4: Foreign Key Constraints', YELLOW);
|
|
144
|
+
log('-'.repeat(70), YELLOW);
|
|
145
|
+
const dbFK = new Database(':memory:');
|
|
146
|
+
try {
|
|
147
|
+
initializeSchema(dbFK);
|
|
148
|
+
dbFK.exec('PRAGMA foreign_keys = ON');
|
|
149
|
+
// Register agent
|
|
150
|
+
dbFK.exec(`INSERT OR IGNORE INTO m_agents (id, name) VALUES (1, 'test-agent')`);
|
|
151
|
+
// Add test tasks
|
|
152
|
+
dbFK.exec(`
|
|
153
|
+
INSERT INTO t_tasks (id, title, status_id, created_by_agent_id) VALUES (1, 'Task A', 1, 1);
|
|
154
|
+
INSERT INTO t_tasks (id, title, status_id, created_by_agent_id) VALUES (2, 'Task B', 1, 1);
|
|
155
|
+
`);
|
|
156
|
+
// Try to add dependency with non-existent task
|
|
157
|
+
try {
|
|
158
|
+
dbFK.exec('INSERT INTO t_task_dependencies (blocker_task_id, blocked_task_id) VALUES (1, 999)');
|
|
159
|
+
log('ā Should have failed FK constraint!', RED);
|
|
160
|
+
return false;
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
log('ā
Foreign key constraint working (rejected invalid task_id)', GREEN);
|
|
164
|
+
}
|
|
165
|
+
// Add valid dependency
|
|
166
|
+
dbFK.exec('INSERT INTO t_task_dependencies (blocker_task_id, blocked_task_id) VALUES (1, 2)');
|
|
167
|
+
log('ā
Valid dependency added successfully', GREEN);
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
dbFK.close();
|
|
171
|
+
}
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
// Run test
|
|
175
|
+
testTaskDependenciesMigration().then(success => {
|
|
176
|
+
log('\n' + '='.repeat(70), BLUE);
|
|
177
|
+
if (success) {
|
|
178
|
+
log('š ALL TESTS PASSED!', GREEN);
|
|
179
|
+
log('='.repeat(70) + '\n', BLUE);
|
|
180
|
+
process.exit(0);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
log('ā TESTS FAILED!', RED);
|
|
184
|
+
log('='.repeat(70) + '\n', BLUE);
|
|
185
|
+
process.exit(1);
|
|
186
|
+
}
|
|
187
|
+
}).catch(error => {
|
|
188
|
+
log(`\nā Fatal error: ${error}`, RED);
|
|
189
|
+
process.exit(1);
|
|
190
|
+
});
|
|
191
|
+
//# sourceMappingURL=test-v3.2-migration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-v3.2-migration.js","sourceRoot":"","sources":["../../../src/tests/migrations/test-v3.2-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks.dependencies.test.d.ts","sourceRoot":"","sources":["../../src/tests/tasks.dependencies.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|