sqlew 3.6.1 → 3.6.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 +403 -376
- package/dist/knexfile.d.ts.map +1 -1
- package/dist/knexfile.js +15 -3
- package/dist/knexfile.js.map +1 -1
- package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -0
- package/dist/migrations/knex/{20251025020452_create_master_tables.js → bootstrap/20251025020452_create_master_tables.js} +15 -12
- package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -0
- package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -0
- package/dist/migrations/knex/{20251025021152_create_transaction_tables.js → bootstrap/20251025021152_create_transaction_tables.js} +19 -19
- package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -0
- package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.d.ts.map +1 -0
- package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js +93 -0
- package/dist/migrations/knex/bootstrap/20251025021351_create_indexes.js.map +1 -0
- package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.d.ts.map +1 -0
- package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js +64 -0
- package/dist/migrations/knex/bootstrap/20251025021416_seed_master_data.js.map +1 -0
- package/dist/migrations/knex/bootstrap/20251025070349_create_views.d.ts.map +1 -0
- package/dist/migrations/knex/bootstrap/20251025070349_create_views.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251025082220_fix_task_dependencies_columns.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251025090000_create_help_system_tables.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251025100000_seed_help_metadata.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251025100100_seed_remaining_use_cases.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251027000000_add_agent_reuse_system.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251027010000_add_task_constraint_to_decision_context.js.map +1 -0
- package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.d.ts.map +1 -0
- package/dist/migrations/knex/enhancements/20251027020000_update_agent_reusability.js.map +1 -0
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts +13 -0
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.d.ts.map +1 -0
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js +70 -0
- package/dist/migrations/knex/upgrades/20251024010000_upgrade_v1_0_to_v1_1.js.map +1 -0
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts +11 -0
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.d.ts.map +1 -0
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js +36 -0
- package/dist/migrations/knex/upgrades/20251024020000_upgrade_v2_0_to_v2_1.js.map +1 -0
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts +14 -0
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.d.ts.map +1 -0
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js +84 -0
- package/dist/migrations/knex/upgrades/20251024030000_upgrade_v2_1_to_v3_0.js.map +1 -0
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts +9 -0
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.d.ts.map +1 -0
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js +37 -0
- package/dist/migrations/knex/upgrades/20251024040000_upgrade_v3_0_to_v3_2.js.map +1 -0
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts +9 -0
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.d.ts.map +1 -0
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js +41 -0
- package/dist/migrations/knex/upgrades/20251024050000_upgrade_v3_2_0_to_v3_2_2.js.map +1 -0
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts +9 -0
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.d.ts.map +1 -0
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js +36 -0
- package/dist/migrations/knex/upgrades/20251024060000_upgrade_v3_4_to_v3_5.js.map +1 -0
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts +10 -0
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.d.ts.map +1 -0
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js +28 -0
- package/dist/migrations/knex/upgrades/20251024070000_upgrade_v3_5_to_v3_6.js.map +1 -0
- package/dist/tests/migrations/test-all-versions-real.d.ts +8 -0
- package/dist/tests/migrations/test-all-versions-real.d.ts.map +1 -0
- package/dist/tests/migrations/test-all-versions-real.js +234 -0
- package/dist/tests/migrations/test-all-versions-real.js.map +1 -0
- package/dist/tests/migrations/test-all-versions.d.ts +14 -0
- package/dist/tests/migrations/test-all-versions.d.ts.map +1 -0
- package/dist/tests/migrations/test-all-versions.js +521 -0
- package/dist/tests/migrations/test-all-versions.js.map +1 -0
- package/docs/MIGRATION_CHAIN.md +293 -280
- package/package.json +85 -82
- package/dist/migrations/add-decision-context.d.ts +0 -28
- package/dist/migrations/add-decision-context.d.ts.map +0 -1
- package/dist/migrations/add-decision-context.js +0 -125
- package/dist/migrations/add-decision-context.js.map +0 -1
- package/dist/migrations/add-help-system-tables.d.ts +0 -35
- package/dist/migrations/add-help-system-tables.d.ts.map +0 -1
- package/dist/migrations/add-help-system-tables.js +0 -206
- package/dist/migrations/add-help-system-tables.js.map +0 -1
- package/dist/migrations/add-table-prefixes.d.ts +0 -29
- package/dist/migrations/add-table-prefixes.d.ts.map +0 -1
- package/dist/migrations/add-table-prefixes.js +0 -150
- package/dist/migrations/add-table-prefixes.js.map +0 -1
- package/dist/migrations/add-task-dependencies.d.ts +0 -26
- package/dist/migrations/add-task-dependencies.d.ts.map +0 -1
- package/dist/migrations/add-task-dependencies.js +0 -94
- package/dist/migrations/add-task-dependencies.js.map +0 -1
- package/dist/migrations/add-task-tables.d.ts +0 -47
- package/dist/migrations/add-task-tables.d.ts.map +0 -1
- package/dist/migrations/add-task-tables.js +0 -285
- package/dist/migrations/add-task-tables.js.map +0 -1
- package/dist/migrations/add-token-tracking.d.ts +0 -28
- package/dist/migrations/add-token-tracking.d.ts.map +0 -1
- package/dist/migrations/add-token-tracking.js +0 -108
- package/dist/migrations/add-token-tracking.js.map +0 -1
- package/dist/migrations/add-v2.1.0-features.d.ts +0 -29
- package/dist/migrations/add-v2.1.0-features.d.ts.map +0 -1
- package/dist/migrations/add-v2.1.0-features.js +0 -198
- package/dist/migrations/add-v2.1.0-features.js.map +0 -1
- package/dist/migrations/add-v3.5.0-pruned-files.d.ts +0 -26
- package/dist/migrations/add-v3.5.0-pruned-files.d.ts.map +0 -1
- package/dist/migrations/add-v3.5.0-pruned-files.js +0 -107
- package/dist/migrations/add-v3.5.0-pruned-files.js.map +0 -1
- package/dist/migrations/index.d.ts +0 -112
- package/dist/migrations/index.d.ts.map +0 -1
- package/dist/migrations/index.js +0 -411
- package/dist/migrations/index.js.map +0 -1
- package/dist/migrations/knex/20251025020452_create_master_tables.d.ts.map +0 -1
- package/dist/migrations/knex/20251025020452_create_master_tables.js.map +0 -1
- package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts.map +0 -1
- package/dist/migrations/knex/20251025021152_create_transaction_tables.js.map +0 -1
- package/dist/migrations/knex/20251025021351_create_indexes.d.ts.map +0 -1
- package/dist/migrations/knex/20251025021351_create_indexes.js +0 -62
- package/dist/migrations/knex/20251025021351_create_indexes.js.map +0 -1
- package/dist/migrations/knex/20251025021416_seed_master_data.d.ts.map +0 -1
- package/dist/migrations/knex/20251025021416_seed_master_data.js +0 -58
- package/dist/migrations/knex/20251025021416_seed_master_data.js.map +0 -1
- package/dist/migrations/knex/20251025070349_create_views.d.ts.map +0 -1
- package/dist/migrations/knex/20251025070349_create_views.js.map +0 -1
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts.map +0 -1
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js.map +0 -1
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts.map +0 -1
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js.map +0 -1
- package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts.map +0 -1
- package/dist/migrations/knex/20251025090000_create_help_system_tables.js.map +0 -1
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts.map +0 -1
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js.map +0 -1
- package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts.map +0 -1
- package/dist/migrations/knex/20251025100000_seed_help_metadata.js.map +0 -1
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts.map +0 -1
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js.map +0 -1
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts.map +0 -1
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js.map +0 -1
- package/dist/migrations/knex/20251027000000_add_agent_reuse_system.d.ts.map +0 -1
- package/dist/migrations/knex/20251027000000_add_agent_reuse_system.js.map +0 -1
- package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.d.ts.map +0 -1
- package/dist/migrations/knex/20251027010000_add_task_constraint_to_decision_context.js.map +0 -1
- package/dist/migrations/knex/20251027020000_update_agent_reusability.d.ts.map +0 -1
- package/dist/migrations/knex/20251027020000_update_agent_reusability.js.map +0 -1
- package/dist/migrations/migrate-decisions-to-tasks.d.ts +0 -61
- package/dist/migrations/migrate-decisions-to-tasks.d.ts.map +0 -1
- package/dist/migrations/migrate-decisions-to-tasks.js +0 -442
- package/dist/migrations/migrate-decisions-to-tasks.js.map +0 -1
- package/dist/migrations/seed-help-data.d.ts +0 -48
- package/dist/migrations/seed-help-data.d.ts.map +0 -1
- package/dist/migrations/seed-help-data.js +0 -1466
- package/dist/migrations/seed-help-data.js.map +0 -1
- package/dist/migrations/seed-tool-metadata.d.ts +0 -24
- package/dist/migrations/seed-tool-metadata.d.ts.map +0 -1
- package/dist/migrations/seed-tool-metadata.js +0 -392
- package/dist/migrations/seed-tool-metadata.js.map +0 -1
- package/dist/migrations/v3.6.0-help-system-refactor.d.ts +0 -46
- package/dist/migrations/v3.6.0-help-system-refactor.d.ts.map +0 -1
- package/dist/migrations/v3.6.0-help-system-refactor.js +0 -223
- package/dist/migrations/v3.6.0-help-system-refactor.js.map +0 -1
- package/dist/tests/migrations/test-v3.2-migration.d.ts +0 -6
- package/dist/tests/migrations/test-v3.2-migration.d.ts.map +0 -1
- package/dist/tests/migrations/test-v3.2-migration.js +0 -191
- package/dist/tests/migrations/test-v3.2-migration.js.map +0 -1
- /package/dist/migrations/knex/{20251025020452_create_master_tables.d.ts → bootstrap/20251025020452_create_master_tables.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025021152_create_transaction_tables.d.ts → bootstrap/20251025021152_create_transaction_tables.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025021351_create_indexes.d.ts → bootstrap/20251025021351_create_indexes.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025021416_seed_master_data.d.ts → bootstrap/20251025021416_seed_master_data.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025070349_create_views.d.ts → bootstrap/20251025070349_create_views.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025070349_create_views.js → bootstrap/20251025070349_create_views.js} +0 -0
- /package/dist/migrations/knex/{20251025081221_add_link_type_to_task_decision_links.d.ts → enhancements/20251025081221_add_link_type_to_task_decision_links.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025081221_add_link_type_to_task_decision_links.js → enhancements/20251025081221_add_link_type_to_task_decision_links.js} +0 -0
- /package/dist/migrations/knex/{20251025082220_fix_task_dependencies_columns.d.ts → enhancements/20251025082220_fix_task_dependencies_columns.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025082220_fix_task_dependencies_columns.js → enhancements/20251025082220_fix_task_dependencies_columns.js} +0 -0
- /package/dist/migrations/knex/{20251025090000_create_help_system_tables.d.ts → enhancements/20251025090000_create_help_system_tables.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025090000_create_help_system_tables.js → enhancements/20251025090000_create_help_system_tables.js} +0 -0
- /package/dist/migrations/knex/{20251025090100_seed_help_categories_and_use_cases.d.ts → enhancements/20251025090100_seed_help_categories_and_use_cases.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025090100_seed_help_categories_and_use_cases.js → enhancements/20251025090100_seed_help_categories_and_use_cases.js} +0 -0
- /package/dist/migrations/knex/{20251025100000_seed_help_metadata.d.ts → enhancements/20251025100000_seed_help_metadata.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025100000_seed_help_metadata.js → enhancements/20251025100000_seed_help_metadata.js} +0 -0
- /package/dist/migrations/knex/{20251025100100_seed_remaining_use_cases.d.ts → enhancements/20251025100100_seed_remaining_use_cases.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025100100_seed_remaining_use_cases.js → enhancements/20251025100100_seed_remaining_use_cases.js} +0 -0
- /package/dist/migrations/knex/{20251025120000_add_cascade_to_task_dependencies.d.ts → enhancements/20251025120000_add_cascade_to_task_dependencies.d.ts} +0 -0
- /package/dist/migrations/knex/{20251025120000_add_cascade_to_task_dependencies.js → enhancements/20251025120000_add_cascade_to_task_dependencies.js} +0 -0
- /package/dist/migrations/knex/{20251027000000_add_agent_reuse_system.d.ts → enhancements/20251027000000_add_agent_reuse_system.d.ts} +0 -0
- /package/dist/migrations/knex/{20251027000000_add_agent_reuse_system.js → enhancements/20251027000000_add_agent_reuse_system.js} +0 -0
- /package/dist/migrations/knex/{20251027010000_add_task_constraint_to_decision_context.d.ts → enhancements/20251027010000_add_task_constraint_to_decision_context.d.ts} +0 -0
- /package/dist/migrations/knex/{20251027010000_add_task_constraint_to_decision_context.js → enhancements/20251027010000_add_task_constraint_to_decision_context.js} +0 -0
- /package/dist/migrations/knex/{20251027020000_update_agent_reusability.d.ts → enhancements/20251027020000_update_agent_reusability.d.ts} +0 -0
- /package/dist/migrations/knex/{20251027020000_update_agent_reusability.js → enhancements/20251027020000_update_agent_reusability.js} +0 -0
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration: Add Token Tracking Table (v3.6.0)
|
|
3
|
-
*
|
|
4
|
-
* Creates table for tracking help system token usage to measure efficiency gains.
|
|
5
|
-
*
|
|
6
|
-
* Table Created:
|
|
7
|
-
* - t_help_token_usage: Tracks token consumption per query type
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Check if migration is needed
|
|
11
|
-
*/
|
|
12
|
-
export function needsTokenTrackingMigration(db) {
|
|
13
|
-
// Check if token tracking table doesn't exist yet
|
|
14
|
-
const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_help_token_usage'").get();
|
|
15
|
-
return tableExists === undefined;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Run the migration
|
|
19
|
-
*/
|
|
20
|
-
export function migrateToTokenTracking(db) {
|
|
21
|
-
const details = [];
|
|
22
|
-
try {
|
|
23
|
-
// Start transaction
|
|
24
|
-
db.exec('BEGIN TRANSACTION');
|
|
25
|
-
// Create t_help_token_usage table
|
|
26
|
-
db.exec(`
|
|
27
|
-
CREATE TABLE IF NOT EXISTS t_help_token_usage (
|
|
28
|
-
usage_id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
29
|
-
query_type TEXT NOT NULL,
|
|
30
|
-
tool_name TEXT,
|
|
31
|
-
action_name TEXT,
|
|
32
|
-
estimated_tokens INTEGER NOT NULL,
|
|
33
|
-
actual_chars INTEGER NOT NULL,
|
|
34
|
-
timestamp INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
|
|
35
|
-
)
|
|
36
|
-
`);
|
|
37
|
-
details.push('Created table: t_help_token_usage');
|
|
38
|
-
// Create indexes for analysis queries
|
|
39
|
-
db.exec(`
|
|
40
|
-
CREATE INDEX IF NOT EXISTS idx_help_token_usage_query_type
|
|
41
|
-
ON t_help_token_usage(query_type)
|
|
42
|
-
`);
|
|
43
|
-
details.push('Created index: idx_help_token_usage_query_type');
|
|
44
|
-
db.exec(`
|
|
45
|
-
CREATE INDEX IF NOT EXISTS idx_help_token_usage_timestamp
|
|
46
|
-
ON t_help_token_usage(timestamp DESC)
|
|
47
|
-
`);
|
|
48
|
-
details.push('Created index: idx_help_token_usage_timestamp');
|
|
49
|
-
db.exec(`
|
|
50
|
-
CREATE INDEX IF NOT EXISTS idx_help_token_usage_tool_action
|
|
51
|
-
ON t_help_token_usage(tool_name, action_name)
|
|
52
|
-
`);
|
|
53
|
-
details.push('Created index: idx_help_token_usage_tool_action');
|
|
54
|
-
// Commit transaction
|
|
55
|
-
db.exec('COMMIT');
|
|
56
|
-
return {
|
|
57
|
-
success: true,
|
|
58
|
-
message: 'Token tracking migration completed successfully (v3.6.0)',
|
|
59
|
-
details
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
// Rollback on error
|
|
64
|
-
db.exec('ROLLBACK');
|
|
65
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
66
|
-
return {
|
|
67
|
-
success: false,
|
|
68
|
-
message: `Token tracking migration failed: ${message}`,
|
|
69
|
-
details
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Get migration info
|
|
75
|
-
*/
|
|
76
|
-
export function getTokenTrackingMigrationInfo() {
|
|
77
|
-
return `
|
|
78
|
-
Migration: Add Token Tracking Table (v3.6.0)
|
|
79
|
-
|
|
80
|
-
This migration creates 1 new table for tracking help system token usage:
|
|
81
|
-
|
|
82
|
-
Transaction Table (t_ prefix):
|
|
83
|
-
1. t_help_token_usage - Token consumption metrics per query
|
|
84
|
-
|
|
85
|
-
Fields:
|
|
86
|
-
- usage_id: Auto-incrementing primary key
|
|
87
|
-
- query_type: Type of query (help_action, help_params, etc.)
|
|
88
|
-
- tool_name: Tool name (if applicable)
|
|
89
|
-
- action_name: Action name (if applicable)
|
|
90
|
-
- estimated_tokens: Estimated token count
|
|
91
|
-
- actual_chars: Actual character count
|
|
92
|
-
- timestamp: Unix epoch timestamp
|
|
93
|
-
|
|
94
|
-
Indexes:
|
|
95
|
-
- idx_help_token_usage_query_type (query_type)
|
|
96
|
-
- idx_help_token_usage_timestamp (timestamp DESC)
|
|
97
|
-
- idx_help_token_usage_tool_action (tool_name, action_name)
|
|
98
|
-
|
|
99
|
-
Benefits:
|
|
100
|
-
- Track actual token consumption for help queries
|
|
101
|
-
- Measure efficiency gains vs legacy help system
|
|
102
|
-
- Analyze usage patterns and optimize responses
|
|
103
|
-
- Validate token reduction claims
|
|
104
|
-
|
|
105
|
-
This migration is safe and additive (no data loss).
|
|
106
|
-
`.trim();
|
|
107
|
-
}
|
|
108
|
-
//# sourceMappingURL=add-token-tracking.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-token-tracking.js","sourceRoot":"","sources":["../../src/migrations/add-token-tracking.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,EAAY;IACtD,kDAAkD;IAClD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,iFAAiF,CAClF,CAAC,GAAG,EAAE,CAAC;IAER,OAAO,WAAW,KAAK,SAAS,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAY;IACjD,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,oBAAoB;QACpB,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE7B,kCAAkC;QAClC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;KAUP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAElD,sCAAsC;QACtC,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAE/D,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAE9D,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAEhE,qBAAqB;QACrB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,0DAA0D;YACnE,OAAO;SACR,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oBAAoB;QACpB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,oCAAoC,OAAO,EAAE;YACtD,OAAO;SACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BN,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration: Add v2.1.0 features (v2.0.0 -> v2.1.0)
|
|
3
|
-
*
|
|
4
|
-
* Migrates database from v2.0.0 to v2.1.0:
|
|
5
|
-
* - Adds t_activity_log table (FR-001)
|
|
6
|
-
* - Adds t_decision_templates table (FR-006)
|
|
7
|
-
* - Adds 4 activity logging triggers
|
|
8
|
-
* - Adds 5 built-in decision templates
|
|
9
|
-
*/
|
|
10
|
-
import { Database } from 'better-sqlite3';
|
|
11
|
-
interface MigrationResult {
|
|
12
|
-
success: boolean;
|
|
13
|
-
message: string;
|
|
14
|
-
details?: string[];
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Check if migration is needed
|
|
18
|
-
*/
|
|
19
|
-
export declare function needsMigration(db: Database): boolean;
|
|
20
|
-
/**
|
|
21
|
-
* Run the migration
|
|
22
|
-
*/
|
|
23
|
-
export declare function runMigration(db: Database): MigrationResult;
|
|
24
|
-
/**
|
|
25
|
-
* Get migration info
|
|
26
|
-
*/
|
|
27
|
-
export declare function getMigrationInfo(): string;
|
|
28
|
-
export {};
|
|
29
|
-
//# sourceMappingURL=add-v2.1.0-features.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-v2.1.0-features.d.ts","sourceRoot":"","sources":["../../src/migrations/add-v2.1.0-features.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAWpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG,eAAe,CA6L1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CA0BzC"}
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration: Add v2.1.0 features (v2.0.0 -> v2.1.0)
|
|
3
|
-
*
|
|
4
|
-
* Migrates database from v2.0.0 to v2.1.0:
|
|
5
|
-
* - Adds t_activity_log table (FR-001)
|
|
6
|
-
* - Adds t_decision_templates table (FR-006)
|
|
7
|
-
* - Adds 4 activity logging triggers
|
|
8
|
-
* - Adds 5 built-in decision templates
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Check if migration is needed
|
|
12
|
-
*/
|
|
13
|
-
export function needsMigration(db) {
|
|
14
|
-
// Check if new tables don't exist yet
|
|
15
|
-
const activityLogExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_activity_log'").get();
|
|
16
|
-
const templatesExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_decision_templates'").get();
|
|
17
|
-
return activityLogExists === undefined || templatesExists === undefined;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Run the migration
|
|
21
|
-
*/
|
|
22
|
-
export function runMigration(db) {
|
|
23
|
-
const details = [];
|
|
24
|
-
try {
|
|
25
|
-
// Start transaction
|
|
26
|
-
db.exec('BEGIN TRANSACTION');
|
|
27
|
-
// 1. Add t_activity_log table (FR-001)
|
|
28
|
-
const activityLogExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_activity_log'").get();
|
|
29
|
-
if (!activityLogExists) {
|
|
30
|
-
db.exec(`
|
|
31
|
-
CREATE TABLE t_activity_log (
|
|
32
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
33
|
-
ts INTEGER DEFAULT (unixepoch()),
|
|
34
|
-
agent_id INTEGER NOT NULL REFERENCES m_agents(id),
|
|
35
|
-
action_type TEXT NOT NULL,
|
|
36
|
-
target TEXT NOT NULL,
|
|
37
|
-
layer_id INTEGER REFERENCES m_layers(id),
|
|
38
|
-
details TEXT
|
|
39
|
-
);
|
|
40
|
-
`);
|
|
41
|
-
details.push('Created table: t_activity_log (FR-001)');
|
|
42
|
-
// Add indexes
|
|
43
|
-
db.exec(`
|
|
44
|
-
CREATE INDEX IF NOT EXISTS idx_activity_log_ts ON t_activity_log(ts DESC);
|
|
45
|
-
CREATE INDEX IF NOT EXISTS idx_activity_log_agent ON t_activity_log(agent_id);
|
|
46
|
-
CREATE INDEX IF NOT EXISTS idx_activity_log_action ON t_activity_log(action_type);
|
|
47
|
-
`);
|
|
48
|
-
details.push('Created indexes for t_activity_log');
|
|
49
|
-
}
|
|
50
|
-
// 2. Add t_decision_templates table (FR-006)
|
|
51
|
-
const templatesExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_decision_templates'").get();
|
|
52
|
-
if (!templatesExists) {
|
|
53
|
-
db.exec(`
|
|
54
|
-
CREATE TABLE t_decision_templates (
|
|
55
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
56
|
-
name TEXT UNIQUE NOT NULL,
|
|
57
|
-
defaults TEXT NOT NULL,
|
|
58
|
-
required_fields TEXT,
|
|
59
|
-
created_by INTEGER REFERENCES m_agents(id),
|
|
60
|
-
ts INTEGER DEFAULT (unixepoch())
|
|
61
|
-
);
|
|
62
|
-
`);
|
|
63
|
-
details.push('Created table: t_decision_templates (FR-006)');
|
|
64
|
-
// Insert built-in templates
|
|
65
|
-
const insertTemplate = db.prepare(`
|
|
66
|
-
INSERT OR IGNORE INTO t_decision_templates (name, defaults, required_fields, created_by, ts)
|
|
67
|
-
VALUES (?, ?, ?, NULL, unixepoch())
|
|
68
|
-
`);
|
|
69
|
-
insertTemplate.run('breaking_change', '{"layer":"business","status":"active","tags":["breaking"]}', null);
|
|
70
|
-
insertTemplate.run('security_vulnerability', '{"layer":"infrastructure","status":"active","tags":["security","vulnerability"]}', '["cve_id","severity"]');
|
|
71
|
-
insertTemplate.run('performance_optimization', '{"layer":"business","status":"active","tags":["performance","optimization"]}', null);
|
|
72
|
-
insertTemplate.run('deprecation', '{"layer":"business","status":"active","tags":["deprecation"]}', null);
|
|
73
|
-
insertTemplate.run('architecture_decision', '{"layer":"infrastructure","status":"active","tags":["architecture","adr"]}', null);
|
|
74
|
-
details.push('Inserted 5 built-in decision templates');
|
|
75
|
-
}
|
|
76
|
-
// 3. Add activity logging triggers (FR-001)
|
|
77
|
-
const triggerNames = [
|
|
78
|
-
'trg_log_decision_set',
|
|
79
|
-
'trg_log_decision_update',
|
|
80
|
-
'trg_log_message_send',
|
|
81
|
-
'trg_log_file_record'
|
|
82
|
-
];
|
|
83
|
-
let triggersCreated = 0;
|
|
84
|
-
// Check if triggers exist
|
|
85
|
-
for (const triggerName of triggerNames) {
|
|
86
|
-
const exists = db.prepare("SELECT name FROM sqlite_master WHERE type='trigger' AND name=?").get(triggerName);
|
|
87
|
-
if (!exists) {
|
|
88
|
-
triggersCreated++;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
if (triggersCreated > 0) {
|
|
92
|
-
// Create triggers
|
|
93
|
-
db.exec(`
|
|
94
|
-
-- Decision Addition Log
|
|
95
|
-
CREATE TRIGGER IF NOT EXISTS trg_log_decision_set
|
|
96
|
-
AFTER INSERT ON t_decisions
|
|
97
|
-
BEGIN
|
|
98
|
-
INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
|
|
99
|
-
SELECT
|
|
100
|
-
COALESCE(NEW.agent_id, (SELECT id FROM m_agents WHERE name = 'system' LIMIT 1)),
|
|
101
|
-
'decision_set',
|
|
102
|
-
(SELECT key FROM m_context_keys WHERE id = NEW.key_id),
|
|
103
|
-
NEW.layer_id,
|
|
104
|
-
json_object('value', NEW.value, 'version', NEW.version, 'status', NEW.status);
|
|
105
|
-
END;
|
|
106
|
-
|
|
107
|
-
-- Decision Update Log
|
|
108
|
-
CREATE TRIGGER IF NOT EXISTS trg_log_decision_update
|
|
109
|
-
AFTER UPDATE ON t_decisions
|
|
110
|
-
WHEN OLD.value != NEW.value OR OLD.version != NEW.version OR OLD.status != NEW.status
|
|
111
|
-
BEGIN
|
|
112
|
-
INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
|
|
113
|
-
SELECT
|
|
114
|
-
COALESCE(NEW.agent_id, (SELECT id FROM m_agents WHERE name = 'system' LIMIT 1)),
|
|
115
|
-
'decision_update',
|
|
116
|
-
(SELECT key FROM m_context_keys WHERE id = NEW.key_id),
|
|
117
|
-
NEW.layer_id,
|
|
118
|
-
json_object('old_value', OLD.value, 'new_value', NEW.value, 'old_version', OLD.version, 'new_version', NEW.version, 'old_status', OLD.status, 'new_status', NEW.status);
|
|
119
|
-
END;
|
|
120
|
-
|
|
121
|
-
-- Message Send Log
|
|
122
|
-
CREATE TRIGGER IF NOT EXISTS trg_log_message_send
|
|
123
|
-
AFTER INSERT ON t_agent_messages
|
|
124
|
-
BEGIN
|
|
125
|
-
INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
|
|
126
|
-
SELECT
|
|
127
|
-
NEW.from_agent_id,
|
|
128
|
-
'message_send',
|
|
129
|
-
'msg_id:' || NEW.id,
|
|
130
|
-
NULL,
|
|
131
|
-
json_object('to_agent_id', NEW.to_agent_id, 'msg_type', NEW.msg_type, 'priority', NEW.priority);
|
|
132
|
-
END;
|
|
133
|
-
|
|
134
|
-
-- File Change Log
|
|
135
|
-
CREATE TRIGGER IF NOT EXISTS trg_log_file_record
|
|
136
|
-
AFTER INSERT ON t_file_changes
|
|
137
|
-
BEGIN
|
|
138
|
-
INSERT INTO t_activity_log (agent_id, action_type, target, layer_id, details)
|
|
139
|
-
SELECT
|
|
140
|
-
NEW.agent_id,
|
|
141
|
-
'file_record',
|
|
142
|
-
(SELECT path FROM m_files WHERE id = NEW.file_id),
|
|
143
|
-
NEW.layer_id,
|
|
144
|
-
json_object('change_type', NEW.change_type, 'description', NEW.description);
|
|
145
|
-
END;
|
|
146
|
-
`);
|
|
147
|
-
details.push(`Created ${triggersCreated} activity logging triggers`);
|
|
148
|
-
}
|
|
149
|
-
// Commit transaction
|
|
150
|
-
db.exec('COMMIT');
|
|
151
|
-
return {
|
|
152
|
-
success: true,
|
|
153
|
-
message: 'Migration to v2.1.0 completed successfully.',
|
|
154
|
-
details
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
// Rollback on error
|
|
159
|
-
db.exec('ROLLBACK');
|
|
160
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
161
|
-
return {
|
|
162
|
-
success: false,
|
|
163
|
-
message: `Migration failed: ${message}`,
|
|
164
|
-
details
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Get migration info
|
|
170
|
-
*/
|
|
171
|
-
export function getMigrationInfo() {
|
|
172
|
-
return `
|
|
173
|
-
Migration: Add v2.1.0 Features (v2.0.0 -> v2.1.0)
|
|
174
|
-
|
|
175
|
-
This migration adds new features from the v2.1.0 release:
|
|
176
|
-
|
|
177
|
-
**FR-001: Activity Log**
|
|
178
|
-
- New table: t_activity_log
|
|
179
|
-
- 3 new indexes for performance
|
|
180
|
-
- 4 new triggers for automatic logging
|
|
181
|
-
|
|
182
|
-
**FR-006: Decision Templates**
|
|
183
|
-
- New table: t_decision_templates
|
|
184
|
-
- 5 built-in templates (breaking_change, security_vulnerability, performance_optimization, deprecation, architecture_decision)
|
|
185
|
-
|
|
186
|
-
**New Features:**
|
|
187
|
-
- Activity logging for all major operations
|
|
188
|
-
- Template-based decision creation
|
|
189
|
-
- Advanced query capabilities (FR-004)
|
|
190
|
-
- Batch operations (FR-005)
|
|
191
|
-
- Smart defaults with inference (FR-002)
|
|
192
|
-
- Lightweight update polling (FR-003)
|
|
193
|
-
- Standalone CLI query tool (FR-007)
|
|
194
|
-
|
|
195
|
-
This migration is safe and reversible via backup restoration.
|
|
196
|
-
`.trim();
|
|
197
|
-
}
|
|
198
|
-
//# sourceMappingURL=add-v2.1.0-features.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-v2.1.0-features.js","sourceRoot":"","sources":["../../src/migrations/add-v2.1.0-features.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration: Add pruned files tracking (v3.4.x -> v3.5.0)
|
|
3
|
-
*
|
|
4
|
-
* Adds t_task_pruned_files table for audit trail of auto-pruned non-existent files.
|
|
5
|
-
* This enables project archaeology when files were planned but never created.
|
|
6
|
-
*/
|
|
7
|
-
import { Database } from 'better-sqlite3';
|
|
8
|
-
interface MigrationResult {
|
|
9
|
-
success: boolean;
|
|
10
|
-
message: string;
|
|
11
|
-
details?: string[];
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Check if migration is needed
|
|
15
|
-
*/
|
|
16
|
-
export declare function needsPrunedFilesMigration(db: Database): boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Run the migration to add pruned files tracking
|
|
19
|
-
*/
|
|
20
|
-
export declare function migrateToPrunedFiles(db: Database): MigrationResult;
|
|
21
|
-
/**
|
|
22
|
-
* Get migration info
|
|
23
|
-
*/
|
|
24
|
-
export declare function getPrunedFilesMigrationInfo(): string;
|
|
25
|
-
export {};
|
|
26
|
-
//# sourceMappingURL=add-v3.5.0-pruned-files.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-v3.5.0-pruned-files.d.ts","sourceRoot":"","sources":["../../src/migrations/add-v3.5.0-pruned-files.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAO/D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,GAAG,eAAe,CAuElE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAuBpD"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration: Add pruned files tracking (v3.4.x -> v3.5.0)
|
|
3
|
-
*
|
|
4
|
-
* Adds t_task_pruned_files table for audit trail of auto-pruned non-existent files.
|
|
5
|
-
* This enables project archaeology when files were planned but never created.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Check if migration is needed
|
|
9
|
-
*/
|
|
10
|
-
export function needsPrunedFilesMigration(db) {
|
|
11
|
-
// Check if t_task_pruned_files table doesn't exist yet
|
|
12
|
-
const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_task_pruned_files'").get();
|
|
13
|
-
return tableExists === undefined;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Run the migration to add pruned files tracking
|
|
17
|
-
*/
|
|
18
|
-
export function migrateToPrunedFiles(db) {
|
|
19
|
-
const details = [];
|
|
20
|
-
try {
|
|
21
|
-
// Start transaction for atomicity
|
|
22
|
-
db.exec('BEGIN TRANSACTION');
|
|
23
|
-
// Check if table already exists
|
|
24
|
-
const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_task_pruned_files'").get();
|
|
25
|
-
if (tableExists) {
|
|
26
|
-
db.exec('COMMIT');
|
|
27
|
-
return {
|
|
28
|
-
success: true,
|
|
29
|
-
message: 't_task_pruned_files table already exists, migration skipped',
|
|
30
|
-
details: ['Table already exists - no migration needed']
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
// Create t_task_pruned_files table
|
|
34
|
-
db.exec(`
|
|
35
|
-
CREATE TABLE IF NOT EXISTS t_task_pruned_files (
|
|
36
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
37
|
-
task_id INTEGER NOT NULL REFERENCES t_tasks(id) ON DELETE CASCADE,
|
|
38
|
-
file_path TEXT NOT NULL,
|
|
39
|
-
pruned_ts INTEGER DEFAULT (unixepoch()),
|
|
40
|
-
linked_decision_key_id INTEGER REFERENCES m_context_keys(id) ON DELETE SET NULL
|
|
41
|
-
);
|
|
42
|
-
`);
|
|
43
|
-
details.push('Created table: t_task_pruned_files');
|
|
44
|
-
// Create index for task lookup
|
|
45
|
-
db.exec(`
|
|
46
|
-
CREATE INDEX IF NOT EXISTS idx_pruned_task
|
|
47
|
-
ON t_task_pruned_files(task_id);
|
|
48
|
-
`);
|
|
49
|
-
details.push('Created index: idx_pruned_task');
|
|
50
|
-
// Create index for decision linking
|
|
51
|
-
db.exec(`
|
|
52
|
-
CREATE INDEX IF NOT EXISTS idx_pruned_decision
|
|
53
|
-
ON t_task_pruned_files(linked_decision_key_id);
|
|
54
|
-
`);
|
|
55
|
-
details.push('Created index: idx_pruned_decision');
|
|
56
|
-
// Commit transaction
|
|
57
|
-
db.exec('COMMIT');
|
|
58
|
-
return {
|
|
59
|
-
success: true,
|
|
60
|
-
message: 'Migration to v3.5.0 completed successfully',
|
|
61
|
-
details
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
// Rollback on error
|
|
66
|
-
try {
|
|
67
|
-
db.exec('ROLLBACK');
|
|
68
|
-
}
|
|
69
|
-
catch (rollbackError) {
|
|
70
|
-
// Ignore rollback errors
|
|
71
|
-
}
|
|
72
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
73
|
-
return {
|
|
74
|
-
success: false,
|
|
75
|
-
message: `Migration failed: ${message}`,
|
|
76
|
-
details
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get migration info
|
|
82
|
-
*/
|
|
83
|
-
export function getPrunedFilesMigrationInfo() {
|
|
84
|
-
return `
|
|
85
|
-
Migration: Add Pruned Files Tracking (v3.4.x -> v3.5.0)
|
|
86
|
-
|
|
87
|
-
This migration adds audit trail for auto-pruned non-existent watched files:
|
|
88
|
-
- New table: t_task_pruned_files
|
|
89
|
-
- Tracks files removed when transitioning to 'waiting_review'
|
|
90
|
-
- Optional decision linking for WHY reasoning
|
|
91
|
-
- Enables project archaeology
|
|
92
|
-
|
|
93
|
-
Schema:
|
|
94
|
-
- id: Auto-incrementing primary key
|
|
95
|
-
- task_id: Task that watched this file (CASCADE on delete)
|
|
96
|
-
- file_path: Raw file path string (not normalized to m_files)
|
|
97
|
-
- pruned_ts: Unix timestamp when file was pruned
|
|
98
|
-
- linked_decision_key_id: Optional decision key explaining why file was never created
|
|
99
|
-
|
|
100
|
-
Indexes:
|
|
101
|
-
- idx_pruned_task: Fast lookup of pruned files for a task
|
|
102
|
-
- idx_pruned_decision: Fast lookup of pruned files linked to decisions
|
|
103
|
-
|
|
104
|
-
This migration is idempotent and safe to run multiple times.
|
|
105
|
-
`.trim();
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=add-v3.5.0-pruned-files.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"add-v3.5.0-pruned-files.js","sourceRoot":"","sources":["../../src/migrations/add-v3.5.0-pruned-files.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,MAAM,UAAU,yBAAyB,CAAC,EAAY;IACpD,uDAAuD;IACvD,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,kFAAkF,CACnF,CAAC,GAAG,EAAE,CAAC;IAER,OAAO,WAAW,KAAK,SAAS,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAY;IAC/C,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,kCAAkC;QAClC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAE7B,gCAAgC;QAChC,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,kFAAkF,CACnF,CAAC,GAAG,EAAE,CAAC;QAER,IAAI,WAAW,EAAE,CAAC;YAChB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,6DAA6D;gBACtE,OAAO,EAAE,CAAC,4CAA4C,CAAC;aACxD,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,EAAE,CAAC,IAAI,CAAC;;;;;;;;KAQP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAEnD,+BAA+B;QAC/B,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAE/C,oCAAoC;QACpC,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAEnD,qBAAqB;QACrB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,4CAA4C;YACrD,OAAO;SACR,CAAC;IAEJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oBAAoB;QACpB,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,aAAa,EAAE,CAAC;YACvB,yBAAyB;QAC3B,CAAC;QAED,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,qBAAqB,OAAO,EAAE;YACvC,OAAO;SACR,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;;;;;;;;;;;;;;;;;;;;;GAqBN,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Migration Orchestrator (v4.0.0 - Hybrid Support)
|
|
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
|
-
* - Hybrid support: better-sqlite3 (Database) OR Knex.js (DatabaseAdapter)
|
|
14
|
-
*
|
|
15
|
-
* Migration Strategy (v4.0.0+):
|
|
16
|
-
* - Knex migrations: Run automatically via initializeDatabase() → knex.migrate.latest()
|
|
17
|
-
* - Custom migrations: Legacy orchestrator for v1.x-v3.x upgrades (this file)
|
|
18
|
-
* - New deployments: Use Knex migrations only (src/migrations/knex/*)
|
|
19
|
-
* - Old upgrades: Use custom migrations first, then Knex migrations
|
|
20
|
-
*/
|
|
21
|
-
import { Database } from 'better-sqlite3';
|
|
22
|
-
import { DatabaseAdapter } from '../adapters/index.js';
|
|
23
|
-
export interface MigrationResult {
|
|
24
|
-
success: boolean;
|
|
25
|
-
message: string;
|
|
26
|
-
details?: string[];
|
|
27
|
-
}
|
|
28
|
-
export interface MigrationInfo {
|
|
29
|
-
name: string;
|
|
30
|
-
fromVersion: string;
|
|
31
|
-
toVersion: string;
|
|
32
|
-
needsMigration: (db: Database) => boolean;
|
|
33
|
-
runMigration: (db: Database) => MigrationResult;
|
|
34
|
-
getMigrationInfo: () => string;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Detect current database version by inspecting schema
|
|
38
|
-
*
|
|
39
|
-
* Version Detection Logic:
|
|
40
|
-
* - v1.0.0: Has unprefixed tables (agents, not m_agents)
|
|
41
|
-
* - v1.1.0: Has prefixed tables but no t_activity_log
|
|
42
|
-
* - v2.0.0: Has t_activity_log but no m_task_statuses
|
|
43
|
-
* - v2.1.0: Has t_activity_log but no m_task_statuses
|
|
44
|
-
* - v3.0.0: Has m_task_statuses but no t_task_dependencies
|
|
45
|
-
* - v3.2.0: Has t_task_dependencies but no t_decision_context
|
|
46
|
-
* - v3.2.2: Has t_decision_context but no t_task_pruned_files
|
|
47
|
-
* - v3.5.0: Has t_task_pruned_files but no m_help_tools
|
|
48
|
-
* - v3.6.0: Has m_help_tools (help system tables)
|
|
49
|
-
* - v4.0.0: Has knex_migrations table (Knex migration system)
|
|
50
|
-
*
|
|
51
|
-
* @param dbOrAdapter - Database connection or DatabaseAdapter
|
|
52
|
-
* @returns Detected version string
|
|
53
|
-
*/
|
|
54
|
-
export declare function detectDatabaseVersion(dbOrAdapter: Database | DatabaseAdapter): string;
|
|
55
|
-
/**
|
|
56
|
-
* Get migration plan for current database
|
|
57
|
-
*
|
|
58
|
-
* @param dbOrAdapter - Database connection or DatabaseAdapter
|
|
59
|
-
* @returns Array of migration names that need to run
|
|
60
|
-
*/
|
|
61
|
-
export declare function getMigrationPlan(dbOrAdapter: Database | DatabaseAdapter): string[];
|
|
62
|
-
/**
|
|
63
|
-
* Run all pending migrations in sequence
|
|
64
|
-
*
|
|
65
|
-
* This function:
|
|
66
|
-
* 1. Detects current database version
|
|
67
|
-
* 2. Identifies which migrations are needed
|
|
68
|
-
* 3. Executes migrations in correct order
|
|
69
|
-
* 4. Stops on first failure (rollback already handled by individual migrations)
|
|
70
|
-
* 5. Returns combined results
|
|
71
|
-
*
|
|
72
|
-
* NOTE (v4.0.0+): This function runs custom migrations (v1.x-v3.x upgrades only).
|
|
73
|
-
* Knex migrations run automatically via initializeDatabase() → knex.migrate.latest().
|
|
74
|
-
*
|
|
75
|
-
* @param dbOrAdapter - Database connection or DatabaseAdapter
|
|
76
|
-
* @param dryRun - If true, only show plan without executing (default: false)
|
|
77
|
-
* @returns Array of migration results
|
|
78
|
-
*/
|
|
79
|
-
export declare function runAllMigrations(dbOrAdapter: Database | DatabaseAdapter, dryRun?: boolean): MigrationResult[];
|
|
80
|
-
/**
|
|
81
|
-
* Get detailed info about a specific migration
|
|
82
|
-
*
|
|
83
|
-
* @param migrationName - Name of the migration
|
|
84
|
-
* @returns Migration info text or null if not found
|
|
85
|
-
*/
|
|
86
|
-
export declare function getMigrationDetails(migrationName: string): string | null;
|
|
87
|
-
/**
|
|
88
|
-
* Get list of all available migrations
|
|
89
|
-
*
|
|
90
|
-
* @returns Array of migration info objects
|
|
91
|
-
*/
|
|
92
|
-
export declare function listAllMigrations(): Omit<MigrationInfo, 'needsMigration' | 'runMigration' | 'getMigrationInfo'>[];
|
|
93
|
-
/**
|
|
94
|
-
* Check if database needs any migrations
|
|
95
|
-
*
|
|
96
|
-
* @param dbOrAdapter - Database connection or DatabaseAdapter
|
|
97
|
-
* @returns true if migrations are needed
|
|
98
|
-
*/
|
|
99
|
-
export declare function needsAnyMigrations(dbOrAdapter: Database | DatabaseAdapter): boolean;
|
|
100
|
-
/**
|
|
101
|
-
* Get summary of migration status
|
|
102
|
-
*
|
|
103
|
-
* @param dbOrAdapter - Database connection or DatabaseAdapter
|
|
104
|
-
* @returns Summary object
|
|
105
|
-
*/
|
|
106
|
-
export declare function getMigrationStatus(dbOrAdapter: Database | DatabaseAdapter): {
|
|
107
|
-
currentVersion: string;
|
|
108
|
-
upToDate: boolean;
|
|
109
|
-
pendingMigrations: number;
|
|
110
|
-
migrationPlan: string[];
|
|
111
|
-
};
|
|
112
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAavD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,CAAC;IAC1C,YAAY,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,eAAe,CAAC;IAChD,gBAAgB,EAAE,MAAM,MAAM,CAAC;CAChC;AA4JD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG,MAAM,CAiFrF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG,MAAM,EAAE,CAWlF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,EAAE,MAAM,GAAE,OAAe,GAAG,eAAe,EAAE,CAyFpH;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAAC,aAAa,EAAE,gBAAgB,GAAG,cAAc,GAAG,kBAAkB,CAAC,EAAE,CAMjH;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG,OAAO,CAGnF;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,QAAQ,GAAG,eAAe,GAAG;IAC3E,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,CAUA"}
|