sqlew 3.5.3 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/CHANGELOG.md +247 -1772
  2. package/README.md +70 -304
  3. package/assets/config.example.toml +97 -0
  4. package/dist/adapters/index.d.ts +11 -0
  5. package/dist/adapters/index.d.ts.map +1 -0
  6. package/dist/adapters/index.js +21 -0
  7. package/dist/adapters/index.js.map +1 -0
  8. package/dist/adapters/mysql-adapter.d.ts +31 -0
  9. package/dist/adapters/mysql-adapter.d.ts.map +1 -0
  10. package/dist/adapters/mysql-adapter.js +63 -0
  11. package/dist/adapters/mysql-adapter.js.map +1 -0
  12. package/dist/adapters/postgresql-adapter.d.ts +31 -0
  13. package/dist/adapters/postgresql-adapter.d.ts.map +1 -0
  14. package/dist/adapters/postgresql-adapter.js +63 -0
  15. package/dist/adapters/postgresql-adapter.js.map +1 -0
  16. package/dist/adapters/sqlite-adapter.d.ts +37 -0
  17. package/dist/adapters/sqlite-adapter.d.ts.map +1 -0
  18. package/dist/adapters/sqlite-adapter.js +129 -0
  19. package/dist/adapters/sqlite-adapter.js.map +1 -0
  20. package/dist/adapters/types.d.ts +33 -0
  21. package/dist/adapters/types.d.ts.map +1 -0
  22. package/dist/adapters/types.js +2 -0
  23. package/dist/adapters/types.js.map +1 -0
  24. package/dist/cli.js +55 -54
  25. package/dist/cli.js.map +1 -1
  26. package/dist/config/example-generator.d.ts +11 -0
  27. package/dist/config/example-generator.d.ts.map +1 -0
  28. package/dist/config/example-generator.js +48 -0
  29. package/dist/config/example-generator.js.map +1 -0
  30. package/dist/config/loader.d.ts.map +1 -1
  31. package/dist/config/loader.js +4 -0
  32. package/dist/config/loader.js.map +1 -1
  33. package/dist/config/types.d.ts +9 -0
  34. package/dist/config/types.d.ts.map +1 -1
  35. package/dist/config/types.js.map +1 -1
  36. package/dist/database.d.ts +44 -122
  37. package/dist/database.d.ts.map +1 -1
  38. package/dist/database.js +145 -416
  39. package/dist/database.js.map +1 -1
  40. package/dist/index.js +215 -185
  41. package/dist/index.js.map +1 -1
  42. package/dist/knexfile.d.ts +6 -0
  43. package/dist/knexfile.d.ts.map +1 -0
  44. package/dist/knexfile.js +85 -0
  45. package/dist/knexfile.js.map +1 -0
  46. package/dist/migrations/add-help-system-tables.d.ts +35 -0
  47. package/dist/migrations/add-help-system-tables.d.ts.map +1 -0
  48. package/dist/migrations/add-help-system-tables.js +206 -0
  49. package/dist/migrations/add-help-system-tables.js.map +1 -0
  50. package/dist/migrations/add-token-tracking.d.ts +28 -0
  51. package/dist/migrations/add-token-tracking.d.ts.map +1 -0
  52. package/dist/migrations/add-token-tracking.js +108 -0
  53. package/dist/migrations/add-token-tracking.js.map +1 -0
  54. package/dist/migrations/index.d.ts +25 -12
  55. package/dist/migrations/index.d.ts.map +1 -1
  56. package/dist/migrations/index.js +147 -20
  57. package/dist/migrations/index.js.map +1 -1
  58. package/dist/migrations/knex/20251025020452_create_master_tables.d.ts +4 -0
  59. package/dist/migrations/knex/20251025020452_create_master_tables.d.ts.map +1 -0
  60. package/dist/migrations/knex/20251025020452_create_master_tables.js +65 -0
  61. package/dist/migrations/knex/20251025020452_create_master_tables.js.map +1 -0
  62. package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts +4 -0
  63. package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts.map +1 -0
  64. package/dist/migrations/knex/20251025021152_create_transaction_tables.js +235 -0
  65. package/dist/migrations/knex/20251025021152_create_transaction_tables.js.map +1 -0
  66. package/dist/migrations/knex/20251025021351_create_indexes.d.ts +4 -0
  67. package/dist/migrations/knex/20251025021351_create_indexes.d.ts.map +1 -0
  68. package/dist/migrations/knex/20251025021351_create_indexes.js +62 -0
  69. package/dist/migrations/knex/20251025021351_create_indexes.js.map +1 -0
  70. package/dist/migrations/knex/20251025021416_seed_master_data.d.ts +4 -0
  71. package/dist/migrations/knex/20251025021416_seed_master_data.d.ts.map +1 -0
  72. package/dist/migrations/knex/20251025021416_seed_master_data.js +58 -0
  73. package/dist/migrations/knex/20251025021416_seed_master_data.js.map +1 -0
  74. package/dist/migrations/knex/20251025070349_create_views.d.ts +4 -0
  75. package/dist/migrations/knex/20251025070349_create_views.d.ts.map +1 -0
  76. package/dist/migrations/knex/20251025070349_create_views.js +143 -0
  77. package/dist/migrations/knex/20251025070349_create_views.js.map +1 -0
  78. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts +4 -0
  79. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
  80. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js +15 -0
  81. package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
  82. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts +8 -0
  83. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
  84. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js +12 -0
  85. package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js.map +1 -0
  86. package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts +19 -0
  87. package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts.map +1 -0
  88. package/dist/migrations/knex/20251025090000_create_help_system_tables.js +115 -0
  89. package/dist/migrations/knex/20251025090000_create_help_system_tables.js.map +1 -0
  90. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts +13 -0
  91. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
  92. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js +377 -0
  93. package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
  94. package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts +15 -0
  95. package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts.map +1 -0
  96. package/dist/migrations/knex/20251025100000_seed_help_metadata.js +253 -0
  97. package/dist/migrations/knex/20251025100000_seed_help_metadata.js.map +1 -0
  98. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts +16 -0
  99. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
  100. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js +276 -0
  101. package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js.map +1 -0
  102. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts +8 -0
  103. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
  104. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js +64 -0
  105. package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
  106. package/dist/migrations/seed-help-data.d.ts +48 -0
  107. package/dist/migrations/seed-help-data.d.ts.map +1 -0
  108. package/dist/migrations/seed-help-data.js +1466 -0
  109. package/dist/migrations/seed-help-data.js.map +1 -0
  110. package/dist/migrations/seed-tool-metadata.d.ts +24 -0
  111. package/dist/migrations/seed-tool-metadata.d.ts.map +1 -0
  112. package/dist/migrations/seed-tool-metadata.js +392 -0
  113. package/dist/migrations/seed-tool-metadata.js.map +1 -0
  114. package/dist/migrations/v3.6.0-help-system-refactor.d.ts +46 -0
  115. package/dist/migrations/v3.6.0-help-system-refactor.d.ts.map +1 -0
  116. package/dist/migrations/v3.6.0-help-system-refactor.js +223 -0
  117. package/dist/migrations/v3.6.0-help-system-refactor.js.map +1 -0
  118. package/dist/schema.d.ts.map +1 -1
  119. package/dist/schema.js +2 -0
  120. package/dist/schema.js.map +1 -1
  121. package/dist/tests/git-aware-completion.test.js +89 -70
  122. package/dist/tests/git-aware-completion.test.js.map +1 -1
  123. package/dist/tests/help-system.test.d.ts +23 -0
  124. package/dist/tests/help-system.test.d.ts.map +1 -0
  125. package/dist/tests/help-system.test.js +374 -0
  126. package/dist/tests/help-system.test.js.map +1 -0
  127. package/dist/tests/tasks.auto-pruning-decision-link.test.js +92 -78
  128. package/dist/tests/tasks.auto-pruning-decision-link.test.js.map +1 -1
  129. package/dist/tests/tasks.auto-pruning-partial.test.js +106 -95
  130. package/dist/tests/tasks.auto-pruning-partial.test.js.map +1 -1
  131. package/dist/tests/tasks.auto-pruning-persistence.test.js +115 -97
  132. package/dist/tests/tasks.auto-pruning-persistence.test.js.map +1 -1
  133. package/dist/tests/tasks.auto-pruning-safety.test.js +124 -103
  134. package/dist/tests/tasks.auto-pruning-safety.test.js.map +1 -1
  135. package/dist/tests/tasks.dependencies.test.js +338 -307
  136. package/dist/tests/tasks.dependencies.test.js.map +1 -1
  137. package/dist/tests/tasks.link-file-backward-compat.test.js +116 -104
  138. package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
  139. package/dist/tests/tasks.watch-files-action.test.js +122 -101
  140. package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
  141. package/dist/tests/tasks.watch-files-parameter.test.js +105 -94
  142. package/dist/tests/tasks.watch-files-parameter.test.js.map +1 -1
  143. package/dist/tests/two-step-git-completion.test.js +176 -133
  144. package/dist/tests/two-step-git-completion.test.js.map +1 -1
  145. package/dist/tests/vcs-staging.test.js +1 -1
  146. package/dist/tests/vcs-staging.test.js.map +1 -1
  147. package/dist/tools/config.d.ts +9 -6
  148. package/dist/tools/config.d.ts.map +1 -1
  149. package/dist/tools/config.js +16 -14
  150. package/dist/tools/config.js.map +1 -1
  151. package/dist/tools/constraints.d.ts +10 -7
  152. package/dist/tools/constraints.d.ts.map +1 -1
  153. package/dist/tools/constraints.js +66 -48
  154. package/dist/tools/constraints.js.map +1 -1
  155. package/dist/tools/context.d.ts +36 -33
  156. package/dist/tools/context.d.ts.map +1 -1
  157. package/dist/tools/context.js +374 -330
  158. package/dist/tools/context.js.map +1 -1
  159. package/dist/tools/files.d.ts +12 -9
  160. package/dist/tools/files.d.ts.map +1 -1
  161. package/dist/tools/files.js +173 -95
  162. package/dist/tools/files.js.map +1 -1
  163. package/dist/tools/help-queries.d.ts +130 -0
  164. package/dist/tools/help-queries.d.ts.map +1 -0
  165. package/dist/tools/help-queries.js +393 -0
  166. package/dist/tools/help-queries.js.map +1 -0
  167. package/dist/tools/messaging.d.ts +14 -11
  168. package/dist/tools/messaging.d.ts.map +1 -1
  169. package/dist/tools/messaging.js +217 -133
  170. package/dist/tools/messaging.js.map +1 -1
  171. package/dist/tools/tasks.d.ts +18 -16
  172. package/dist/tools/tasks.d.ts.map +1 -1
  173. package/dist/tools/tasks.js +513 -439
  174. package/dist/tools/tasks.js.map +1 -1
  175. package/dist/tools/utils.d.ts +14 -11
  176. package/dist/tools/utils.d.ts.map +1 -1
  177. package/dist/tools/utils.js +86 -121
  178. package/dist/tools/utils.js.map +1 -1
  179. package/dist/utils/activity-logging.d.ts +114 -0
  180. package/dist/utils/activity-logging.d.ts.map +1 -0
  181. package/dist/utils/activity-logging.js +162 -0
  182. package/dist/utils/activity-logging.js.map +1 -0
  183. package/dist/utils/batch.d.ts +2 -2
  184. package/dist/utils/batch.d.ts.map +1 -1
  185. package/dist/utils/batch.js +8 -8
  186. package/dist/utils/batch.js.map +1 -1
  187. package/dist/utils/cleanup.d.ts +21 -13
  188. package/dist/utils/cleanup.d.ts.map +1 -1
  189. package/dist/utils/cleanup.js +31 -24
  190. package/dist/utils/cleanup.js.map +1 -1
  191. package/dist/utils/debug-logger.d.ts +44 -0
  192. package/dist/utils/debug-logger.d.ts.map +1 -0
  193. package/dist/utils/debug-logger.js +116 -0
  194. package/dist/utils/debug-logger.js.map +1 -0
  195. package/dist/utils/help-tracking.d.ts +55 -0
  196. package/dist/utils/help-tracking.d.ts.map +1 -0
  197. package/dist/utils/help-tracking.js +88 -0
  198. package/dist/utils/help-tracking.js.map +1 -0
  199. package/dist/utils/retention.d.ts +7 -7
  200. package/dist/utils/retention.d.ts.map +1 -1
  201. package/dist/utils/retention.js +12 -12
  202. package/dist/utils/retention.js.map +1 -1
  203. package/dist/utils/task-stale-detection.d.ts +15 -13
  204. package/dist/utils/task-stale-detection.d.ts.map +1 -1
  205. package/dist/utils/task-stale-detection.js +100 -302
  206. package/dist/utils/task-stale-detection.js.map +1 -1
  207. package/dist/utils/token-estimation.d.ts +72 -0
  208. package/dist/utils/token-estimation.d.ts.map +1 -0
  209. package/dist/utils/token-estimation.js +71 -0
  210. package/dist/utils/token-estimation.js.map +1 -0
  211. package/dist/utils/token-logging.d.ts +48 -0
  212. package/dist/utils/token-logging.d.ts.map +1 -0
  213. package/dist/utils/token-logging.js +112 -0
  214. package/dist/utils/token-logging.js.map +1 -0
  215. package/dist/utils/view-queries.d.ts +34 -0
  216. package/dist/utils/view-queries.d.ts.map +1 -0
  217. package/dist/utils/view-queries.js +192 -0
  218. package/dist/utils/view-queries.js.map +1 -0
  219. package/dist/watcher/file-watcher.d.ts.map +1 -1
  220. package/dist/watcher/file-watcher.js +25 -11
  221. package/dist/watcher/file-watcher.js.map +1 -1
  222. package/docs/BEST_PRACTICES.md +56 -448
  223. package/docs/MIGRATION_v3.6.0.md +170 -0
  224. package/docs/SHARED_CONCEPTS.md +63 -208
  225. package/docs/TASK_OVERVIEW.md +2 -2
  226. package/docs/TOOL_SELECTION.md +41 -248
  227. package/package.json +16 -4
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Migration: Help System Schema Refactor (v3.5.x -> v3.6.0)
3
+ *
4
+ * This migration refactors the help system schema:
5
+ * 1. Renames tables: t_help_* → m_help_* for static/master data
6
+ * 2. Creates 5 new junction tables for normalized many-to-many relationships
7
+ * 3. Parses JSON action_sequence → normalized m_help_use_case_actions rows
8
+ * 4. Populates m_help_sequences with 10 workflow patterns
9
+ * 5. Generates and normalizes tags from categories/titles
10
+ * 6. Creates indexes on all foreign keys
11
+ * 7. Validates zero data loss (41 use cases preserved)
12
+ *
13
+ * Execution time: <5 seconds
14
+ * Safety: Single transaction with rollback on error
15
+ */
16
+ import * as fs from 'fs';
17
+ import * as path from 'path';
18
+ /**
19
+ * Check if migration is needed
20
+ */
21
+ export function needsMigration(db) {
22
+ // Check if old table exists (t_help_use_cases) with action_sequence column
23
+ const oldTableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='t_help_use_cases'").get();
24
+ // Check if new junction table doesn't exist
25
+ const newTableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='m_help_use_case_actions'").get();
26
+ // Check if t_help_use_cases has action_sequence column
27
+ let hasActionSequenceColumn = false;
28
+ if (oldTableExists) {
29
+ const columns = db.prepare("PRAGMA table_info(t_help_use_cases)").all();
30
+ hasActionSequenceColumn = columns.some(col => col.name === 'action_sequence');
31
+ }
32
+ return oldTableExists !== undefined && newTableExists === undefined && hasActionSequenceColumn;
33
+ }
34
+ /**
35
+ * Run the migration
36
+ */
37
+ export function runMigration(db) {
38
+ const details = [];
39
+ const validationResults = [];
40
+ try {
41
+ // Read SQL migration file
42
+ const sqlPath = path.join(__dirname, 'v3.6.0-help-system-refactor.sql');
43
+ const sql = fs.readFileSync(sqlPath, 'utf-8');
44
+ details.push('Loaded migration SQL from file');
45
+ // Execute migration in a single transaction
46
+ // Note: The SQL file already contains BEGIN/COMMIT
47
+ db.exec(sql);
48
+ details.push('Migration SQL executed successfully');
49
+ // Extract validation results from the database
50
+ // The SQL includes validation queries that output results
51
+ // We'll re-run them to capture the results in TypeScript
52
+ // Validation 1: Use case count
53
+ const useCaseCount = db.prepare('SELECT COUNT(*) as count FROM m_help_use_cases').get();
54
+ validationResults.push({
55
+ test: 'Use Case Count',
56
+ actual: useCaseCount.count,
57
+ expected: 41,
58
+ status: useCaseCount.count === 41 ? 'PASS' : 'FAIL'
59
+ });
60
+ // Validation 2: Use cases with actions
61
+ const useCasesWithActions = db.prepare('SELECT COUNT(DISTINCT use_case_id) as count FROM m_help_use_case_actions').get();
62
+ validationResults.push({
63
+ test: 'Use Cases with Actions',
64
+ actual: useCasesWithActions.count,
65
+ expected: 41,
66
+ status: useCasesWithActions.count === 41 ? 'PASS' : 'FAIL'
67
+ });
68
+ // Validation 3: Sequences with actions
69
+ const sequencesWithActions = db.prepare('SELECT COUNT(DISTINCT sequence_id) as count FROM m_help_sequence_actions').get();
70
+ validationResults.push({
71
+ test: 'Sequences with Actions',
72
+ actual: sequencesWithActions.count,
73
+ expected: 10,
74
+ status: sequencesWithActions.count === 10 ? 'PASS' : 'FAIL'
75
+ });
76
+ // Validation 4: Tag count
77
+ const tagCount = db.prepare('SELECT COUNT(*) as count FROM m_help_tags').get();
78
+ validationResults.push({
79
+ test: 'Tag Count',
80
+ actual: tagCount.count,
81
+ expected: '> 20',
82
+ status: tagCount.count > 20 ? 'PASS' : 'FAIL'
83
+ });
84
+ // Validation 5: FK integrity
85
+ const orphanedRecords = db.prepare(`
86
+ SELECT COUNT(*) as count
87
+ FROM m_help_use_case_actions uca
88
+ LEFT JOIN m_help_actions ha ON uca.action_id = ha.action_id
89
+ WHERE ha.action_id IS NULL
90
+ `).get();
91
+ validationResults.push({
92
+ test: 'FK Integrity (use_case_actions)',
93
+ actual: orphanedRecords.count,
94
+ expected: 0,
95
+ status: orphanedRecords.count === 0 ? 'PASS' : 'FAIL'
96
+ });
97
+ // Validation 6: Index count
98
+ const indexCount = db.prepare("SELECT COUNT(*) as count FROM sqlite_master WHERE type='index' AND name LIKE 'idx_help_%'").get();
99
+ validationResults.push({
100
+ test: 'Index Count',
101
+ actual: indexCount.count,
102
+ expected: '> 15',
103
+ status: indexCount.count > 15 ? 'PASS' : 'FAIL'
104
+ });
105
+ // Check if all validations passed
106
+ const allPassed = validationResults.every(v => v.status === 'PASS');
107
+ if (!allPassed) {
108
+ const failedTests = validationResults.filter(v => v.status === 'FAIL');
109
+ details.push(`WARNING: ${failedTests.length} validation test(s) failed`);
110
+ failedTests.forEach(test => {
111
+ details.push(` - ${test.test}: expected ${test.expected}, got ${test.actual}`);
112
+ });
113
+ }
114
+ // Get migration statistics
115
+ const stats = {
116
+ useCases: useCaseCount.count,
117
+ actionsNormalized: db.prepare('SELECT COUNT(*) as count FROM m_help_use_case_actions').get(),
118
+ sequencesCreated: db.prepare('SELECT COUNT(*) as count FROM m_help_sequences').get(),
119
+ tagsGenerated: tagCount.count,
120
+ indexesCreated: indexCount.count
121
+ };
122
+ details.push('');
123
+ details.push('Migration Statistics:');
124
+ details.push(` - Tables Renamed: 3 (t_ → m_)`);
125
+ details.push(` - New Tables Created: 6`);
126
+ details.push(` - Use Cases Migrated: ${stats.useCases}`);
127
+ details.push(` - Actions Normalized: ${stats.actionsNormalized.count}`);
128
+ details.push(` - Sequences Created: ${stats.sequencesCreated.count}`);
129
+ details.push(` - Tags Generated: ${stats.tagsGenerated}`);
130
+ details.push(` - Indexes Created: ${stats.indexesCreated}`);
131
+ return {
132
+ success: allPassed,
133
+ message: allPassed
134
+ ? 'Migration v3.6.0 completed successfully. All validations passed.'
135
+ : 'Migration v3.6.0 completed with validation warnings. Review details.',
136
+ details,
137
+ validationResults
138
+ };
139
+ }
140
+ catch (error) {
141
+ const message = error instanceof Error ? error.message : String(error);
142
+ details.push(`ERROR: ${message}`);
143
+ return {
144
+ success: false,
145
+ message: `Migration failed: ${message}`,
146
+ details,
147
+ validationResults
148
+ };
149
+ }
150
+ }
151
+ /**
152
+ * Get migration info
153
+ */
154
+ export function getMigrationInfo() {
155
+ return `
156
+ Migration: Help System Schema Refactor (v3.5.x -> v3.6.0)
157
+
158
+ This migration refactors the help system for better normalization and queryability:
159
+
160
+ Schema Changes:
161
+ - Renames 3 tables: t_help_* → m_help_* (static/master data)
162
+ - Creates 6 new tables:
163
+ * m_help_tags (normalized tag master)
164
+ * m_help_sequences (reusable workflow patterns)
165
+ * m_help_use_case_actions (replaces JSON action_sequence)
166
+ * m_help_sequence_actions (sequence steps)
167
+ * m_help_example_tags (example categorization)
168
+ * m_help_use_case_tags (use case categorization)
169
+ * m_help_sequence_tags (sequence categorization)
170
+
171
+ Data Transformations:
172
+ - Parses JSON action_sequence arrays → normalized relational rows
173
+ - Generates 24+ tags from categories, complexity levels, and concepts
174
+ - Populates 10 workflow sequences (task state machine, rich decision flow, etc.)
175
+ - Auto-tags all use cases and sequences
176
+
177
+ Performance Optimizations:
178
+ - Creates 15+ indexes on all foreign keys and junction tables
179
+ - Enables efficient tag-based queries and workflow discovery
180
+
181
+ Safety Guarantees:
182
+ - Single atomic transaction (all-or-nothing)
183
+ - 6 validation tests ensure zero data loss
184
+ - Rollback on any error
185
+ - Execution time: <5 seconds
186
+
187
+ All 41 existing use cases are preserved with enhanced metadata.
188
+ `.trim();
189
+ }
190
+ /**
191
+ * Rollback migration (restore from backup)
192
+ */
193
+ export function rollbackMigration(db, backupPath) {
194
+ const details = [];
195
+ try {
196
+ if (!fs.existsSync(backupPath)) {
197
+ return {
198
+ success: false,
199
+ message: `Backup file not found: ${backupPath}`,
200
+ details
201
+ };
202
+ }
203
+ // Close current database connection
204
+ db.close();
205
+ // Restore backup (this would need to be handled by the caller)
206
+ details.push(`Backup file located: ${backupPath}`);
207
+ details.push('Note: Database restoration must be performed manually by copying the backup file.');
208
+ return {
209
+ success: true,
210
+ message: 'Rollback instructions prepared. Restore the backup file manually.',
211
+ details
212
+ };
213
+ }
214
+ catch (error) {
215
+ const message = error instanceof Error ? error.message : String(error);
216
+ return {
217
+ success: false,
218
+ message: `Rollback failed: ${message}`,
219
+ details
220
+ };
221
+ }
222
+ }
223
+ //# sourceMappingURL=v3.6.0-help-system-refactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v3.6.0-help-system-refactor.js","sourceRoot":"","sources":["../../src/migrations/v3.6.0-help-system-refactor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQ1C;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAyBnD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAUzD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAwBA;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA6GA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAQ1C;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAyBnD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAUzD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,qBAAqB,EAAE,MAAM,CAAC;CAC/B,CAwBA;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CA+GA"}
package/dist/schema.js CHANGED
@@ -107,6 +107,8 @@ export function verifySchemaIntegrity(db) {
107
107
  't_activity_log', 't_decision_templates',
108
108
  't_tasks', 't_task_details', 't_task_tags', 't_task_decision_links',
109
109
  't_task_constraint_links', 't_task_file_links', 't_task_dependencies',
110
+ 'm_help_tools', 'm_help_actions', 't_help_action_params', 't_help_action_examples',
111
+ 'm_help_use_case_categories', 't_help_use_cases', 't_help_action_sequences',
110
112
  ];
111
113
  const requiredViews = [
112
114
  'v_tagged_decisions', 'v_active_context', 'v_layer_summary',
@@ -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":"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"}
@@ -4,60 +4,67 @@
4
4
  */
5
5
  import { describe, it, before, after } from 'node:test';
6
6
  import assert from 'node:assert';
7
- import Database from 'better-sqlite3';
8
- import { unlinkSync, existsSync, mkdirSync } from 'fs';
7
+ import { mkdirSync, rmSync, existsSync } from 'fs';
9
8
  import { join } from 'path';
10
9
  import { execSync } from 'child_process';
11
- import { initializeSchema } from '../schema.js';
10
+ import { initializeDatabase, closeDatabase } from '../database.js';
12
11
  import { detectAndCompleteReviewedTasks } from '../utils/task-stale-detection.js';
13
- const TEST_DB_PATH = join(process.cwd(), 'test-git-aware.db');
14
12
  const TEST_DIR = join(process.cwd(), 'test-tracking');
15
- // Helper to clean up test database
16
- function cleanupTestDb() {
17
- if (existsSync(TEST_DB_PATH)) {
18
- unlinkSync(TEST_DB_PATH);
13
+ // Helper to clean up test directory
14
+ function cleanupTestDir() {
15
+ if (existsSync(TEST_DIR)) {
16
+ rmSync(TEST_DIR, { recursive: true, force: true });
19
17
  }
20
18
  }
21
19
  describe('Git-Aware Auto-Complete', () => {
22
20
  let db;
23
- before(() => {
21
+ before(async () => {
24
22
  // Clean up before tests
25
- cleanupTestDb();
26
- // Create test database
27
- db = new Database(TEST_DB_PATH);
28
- db.pragma('foreign_keys = ON');
29
- // Initialize schema
30
- initializeSchema(db);
23
+ cleanupTestDir();
24
+ // Create test database (in-memory)
25
+ db = await initializeDatabase({
26
+ databaseType: 'sqlite',
27
+ connection: {
28
+ filename: ':memory:'
29
+ }
30
+ });
31
+ const knex = db.getKnex();
31
32
  // Add test config for git auto-complete
32
- db.prepare('INSERT OR REPLACE INTO m_config (key, value) VALUES (?, ?)').run('git_auto_complete_enabled', '1');
33
- db.prepare('INSERT OR REPLACE INTO m_config (key, value) VALUES (?, ?)').run('require_all_files_committed', '1');
33
+ await knex('m_config').insert({ key: 'git_auto_complete_enabled', value: '1' })
34
+ .onConflict('key').merge();
35
+ await knex('m_config').insert({ key: 'require_all_files_committed', value: '1' })
36
+ .onConflict('key').merge();
34
37
  // Create test directory
35
38
  if (!existsSync(TEST_DIR)) {
36
39
  mkdirSync(TEST_DIR, { recursive: true });
37
40
  }
38
41
  });
39
- after(() => {
42
+ after(async () => {
40
43
  // Close database
41
44
  if (db) {
42
- db.close();
45
+ await closeDatabase();
43
46
  }
44
- // Clean up test database and directory
45
- cleanupTestDb();
47
+ // Clean up test directory
48
+ cleanupTestDir();
46
49
  });
47
50
  it('should auto-complete task when all watched files are committed', async () => {
51
+ const knex = db.getKnex();
48
52
  // 1. Create a task in waiting_review status with watched files
49
- const agentId = db.prepare('INSERT INTO m_agents (name) VALUES (?)').run('test-agent').lastInsertRowid;
50
- const statusId = db.prepare('SELECT id FROM m_task_statuses WHERE name = ?').get('waiting_review');
51
- const taskId = db.prepare(`
52
- INSERT INTO t_tasks (assigned_agent_id, status_id, priority, created_ts, updated_ts)
53
- VALUES (?, ?, 2, unixepoch(), unixepoch())
54
- `).run(agentId, statusId.id).lastInsertRowid;
55
- db.prepare('INSERT INTO t_task_details (task_id, title) VALUES (?, ?)').run(taskId, 'Test git-aware task');
53
+ const [agentId] = await knex('m_agents').insert({ name: 'test-agent' });
54
+ const statusRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
55
+ const [taskId] = await knex('t_tasks').insert({
56
+ assigned_agent_id: agentId,
57
+ status_id: statusRow.id,
58
+ priority: 2,
59
+ created_ts: Math.floor(Date.now() / 1000),
60
+ updated_ts: Math.floor(Date.now() / 1000)
61
+ });
62
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Test git-aware task' });
56
63
  // 2. Add watched files
57
- const file1Id = db.prepare('INSERT INTO m_files (path) VALUES (?)').run('test-tracking/file1.ts').lastInsertRowid;
58
- const file2Id = db.prepare('INSERT INTO m_files (path) VALUES (?)').run('test-tracking/file2.ts').lastInsertRowid;
59
- db.prepare('INSERT INTO t_task_file_links (task_id, file_id, link_type) VALUES (?, ?, ?)').run(taskId, file1Id, 'watch');
60
- db.prepare('INSERT INTO t_task_file_links (task_id, file_id, link_type) VALUES (?, ?, ?)').run(taskId, file2Id, 'watch');
64
+ const [file1Id] = await knex('m_files').insert({ path: 'test-tracking/file1.ts' });
65
+ const [file2Id] = await knex('m_files').insert({ path: 'test-tracking/file2.ts' });
66
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: file1Id, link_type: 'watch' });
67
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: file2Id, link_type: 'watch' });
61
68
  // 3. Commit the files to git
62
69
  execSync(`touch ${TEST_DIR}/file1.ts`);
63
70
  execSync(`touch ${TEST_DIR}/file2.ts`);
@@ -67,24 +74,28 @@ describe('Git-Aware Auto-Complete', () => {
67
74
  const completedCount = await detectAndCompleteReviewedTasks(db);
68
75
  // 5. Verify task was auto-completed
69
76
  assert.strictEqual(completedCount, 1, 'Should auto-complete 1 task');
70
- const task = db.prepare('SELECT status_id FROM t_tasks WHERE id = ?').get(taskId);
71
- const doneStatusId = db.prepare('SELECT id FROM m_task_statuses WHERE name = ?').get('done');
72
- assert.strictEqual(task.status_id, doneStatusId.id, 'Task should be in done status');
77
+ const task = await knex('t_tasks').where({ id: taskId }).first('status_id');
78
+ const doneStatus = await knex('m_task_statuses').where({ name: 'done' }).first('id');
79
+ assert.strictEqual(task.status_id, doneStatus.id, 'Task should be in done status');
73
80
  });
74
81
  it('should NOT auto-complete task when only some files are committed', async () => {
82
+ const knex = db.getKnex();
75
83
  // 1. Create a task in waiting_review
76
- const agentId = db.prepare('SELECT id FROM m_agents WHERE name = ?').get('test-agent');
77
- const statusId = db.prepare('SELECT id FROM m_task_statuses WHERE name = ?').get('waiting_review');
78
- const taskId = db.prepare(`
79
- INSERT INTO t_tasks (assigned_agent_id, status_id, priority, created_ts, updated_ts)
80
- VALUES (?, ?, 2, unixepoch(), unixepoch())
81
- `).run(agentId.id, statusId.id).lastInsertRowid;
82
- db.prepare('INSERT INTO t_task_details (task_id, title) VALUES (?, ?)').run(taskId, 'Partial commit task');
84
+ const agent = await knex('m_agents').where({ name: 'test-agent' }).first('id');
85
+ const statusRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
86
+ const [taskId] = await knex('t_tasks').insert({
87
+ assigned_agent_id: agent.id,
88
+ status_id: statusRow.id,
89
+ priority: 2,
90
+ created_ts: Math.floor(Date.now() / 1000),
91
+ updated_ts: Math.floor(Date.now() / 1000)
92
+ });
93
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Partial commit task' });
83
94
  // 2. Add watched files
84
- const file3Id = db.prepare('INSERT INTO m_files (path) VALUES (?)').run('test-tracking/file3.ts').lastInsertRowid;
85
- const file4Id = db.prepare('INSERT INTO m_files (path) VALUES (?)').run('test-tracking/file4.ts').lastInsertRowid;
86
- db.prepare('INSERT INTO t_task_file_links (task_id, file_id, link_type) VALUES (?, ?, ?)').run(taskId, file3Id, 'watch');
87
- db.prepare('INSERT INTO t_task_file_links (task_id, file_id, link_type) VALUES (?, ?, ?)').run(taskId, file4Id, 'watch');
95
+ const [file3Id] = await knex('m_files').insert({ path: 'test-tracking/file3.ts' });
96
+ const [file4Id] = await knex('m_files').insert({ path: 'test-tracking/file4.ts' });
97
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: file3Id, link_type: 'watch' });
98
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: file4Id, link_type: 'watch' });
88
99
  // 3. Commit only ONE file
89
100
  execSync(`touch ${TEST_DIR}/file3.ts`);
90
101
  execSync(`git add ${TEST_DIR}/file3.ts`);
@@ -93,40 +104,48 @@ describe('Git-Aware Auto-Complete', () => {
93
104
  const completedCount = await detectAndCompleteReviewedTasks(db);
94
105
  // 5. Verify task was NOT auto-completed (still in waiting_review)
95
106
  assert.strictEqual(completedCount, 0, 'Should NOT auto-complete task with partial commits');
96
- const task = db.prepare('SELECT status_id FROM t_tasks WHERE id = ?').get(taskId);
97
- const waitingReviewStatusId = db.prepare('SELECT id FROM m_task_statuses WHERE name = ?').get('waiting_review');
98
- assert.strictEqual(task.status_id, waitingReviewStatusId.id, 'Task should still be in waiting_review status');
107
+ const task = await knex('t_tasks').where({ id: taskId }).first('status_id');
108
+ const waitingReviewStatus = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
109
+ assert.strictEqual(task.status_id, waitingReviewStatus.id, 'Task should still be in waiting_review status');
99
110
  });
100
111
  it('should skip tasks with no watched files', async () => {
112
+ const knex = db.getKnex();
101
113
  // 1. Create a task in waiting_review with NO watched files
102
- const agentId = db.prepare('SELECT id FROM m_agents WHERE name = ?').get('test-agent');
103
- const statusId = db.prepare('SELECT id FROM m_task_statuses WHERE name = ?').get('waiting_review');
104
- const taskId = db.prepare(`
105
- INSERT INTO t_tasks (assigned_agent_id, status_id, priority, created_ts, updated_ts)
106
- VALUES (?, ?, 2, unixepoch(), unixepoch())
107
- `).run(agentId.id, statusId.id).lastInsertRowid;
108
- db.prepare('INSERT INTO t_task_details (task_id, title) VALUES (?, ?)').run(taskId, 'No watched files task');
114
+ const agent = await knex('m_agents').where({ name: 'test-agent' }).first('id');
115
+ const statusRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
116
+ const [taskId] = await knex('t_tasks').insert({
117
+ assigned_agent_id: agent.id,
118
+ status_id: statusRow.id,
119
+ priority: 2,
120
+ created_ts: Math.floor(Date.now() / 1000),
121
+ updated_ts: Math.floor(Date.now() / 1000)
122
+ });
123
+ await knex('t_task_details').insert({ task_id: taskId, title: 'No watched files task' });
109
124
  // 2. Run git-aware auto-complete
110
125
  const completedCount = await detectAndCompleteReviewedTasks(db);
111
126
  // 3. Verify no tasks were auto-completed
112
127
  assert.strictEqual(completedCount, 0, 'Should skip tasks with no watched files');
113
- const task = db.prepare('SELECT status_id FROM t_tasks WHERE id = ?').get(taskId);
114
- const waitingReviewStatusId = db.prepare('SELECT id FROM m_task_statuses WHERE name = ?').get('waiting_review');
115
- assert.strictEqual(task.status_id, waitingReviewStatusId.id, 'Task should still be in waiting_review status');
128
+ const task = await knex('t_tasks').where({ id: taskId }).first('status_id');
129
+ const waitingReviewStatus = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
130
+ assert.strictEqual(task.status_id, waitingReviewStatus.id, 'Task should still be in waiting_review status');
116
131
  });
117
132
  it('should respect git_auto_complete_enabled config', async () => {
133
+ const knex = db.getKnex();
118
134
  // 1. Disable git auto-complete
119
- db.prepare('UPDATE m_config SET value = ? WHERE key = ?').run('0', 'git_auto_complete_enabled');
135
+ await knex('m_config').where({ key: 'git_auto_complete_enabled' }).update({ value: '0' });
120
136
  // 2. Create a task with all files committed
121
- const agentId = db.prepare('SELECT id FROM m_agents WHERE name = ?').get('test-agent');
122
- const statusId = db.prepare('SELECT id FROM m_task_statuses WHERE name = ?').get('waiting_review');
123
- const taskId = db.prepare(`
124
- INSERT INTO t_tasks (assigned_agent_id, status_id, priority, created_ts, updated_ts)
125
- VALUES (?, ?, 2, unixepoch(), unixepoch())
126
- `).run(agentId.id, statusId.id).lastInsertRowid;
127
- db.prepare('INSERT INTO t_task_details (task_id, title) VALUES (?, ?)').run(taskId, 'Config disabled task');
128
- const file5Id = db.prepare('INSERT INTO m_files (path) VALUES (?)').run('test-tracking/file5.ts').lastInsertRowid;
129
- db.prepare('INSERT INTO t_task_file_links (task_id, file_id, link_type) VALUES (?, ?, ?)').run(taskId, file5Id, 'watch');
137
+ const agent = await knex('m_agents').where({ name: 'test-agent' }).first('id');
138
+ const statusRow = await knex('m_task_statuses').where({ name: 'waiting_review' }).first('id');
139
+ const [taskId] = await knex('t_tasks').insert({
140
+ assigned_agent_id: agent.id,
141
+ status_id: statusRow.id,
142
+ priority: 2,
143
+ created_ts: Math.floor(Date.now() / 1000),
144
+ updated_ts: Math.floor(Date.now() / 1000)
145
+ });
146
+ await knex('t_task_details').insert({ task_id: taskId, title: 'Config disabled task' });
147
+ const [file5Id] = await knex('m_files').insert({ path: 'test-tracking/file5.ts' });
148
+ await knex('t_task_file_links').insert({ task_id: taskId, file_id: file5Id, link_type: 'watch' });
130
149
  execSync(`touch ${TEST_DIR}/file5.ts`);
131
150
  execSync(`git add ${TEST_DIR}/file5.ts`);
132
151
  execSync(`git commit -m "Test with config disabled"`);
@@ -135,7 +154,7 @@ describe('Git-Aware Auto-Complete', () => {
135
154
  // 4. Verify no tasks were auto-completed
136
155
  assert.strictEqual(completedCount, 0, 'Should respect disabled config');
137
156
  // Re-enable for other tests
138
- db.prepare('UPDATE m_config SET value = ? WHERE key = ?').run('1', 'git_auto_complete_enabled');
157
+ await knex('m_config').where({ key: 'git_auto_complete_enabled' }).update({ value: '1' });
139
158
  });
140
159
  });
141
160
  //# sourceMappingURL=git-aware-completion.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-aware-completion.test.js","sourceRoot":"","sources":["../../src/tests/git-aware-completion.test.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;AAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;AAEtD,mCAAmC;AACnC,SAAS,aAAa;IACpB,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,UAAU,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,IAAI,EAAqB,CAAC;IAE1B,MAAM,CAAC,GAAG,EAAE;QACV,wBAAwB;QACxB,aAAa,EAAE,CAAC;QAEhB,uBAAuB;QACvB,EAAE,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAE/B,oBAAoB;QACpB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAErB,wCAAwC;QACxC,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAC/G,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAEjH,wBAAwB;QACxB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE;QACT,iBAAiB;QACjB,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;QAED,uCAAuC;QACvC,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,+DAA+D;QAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,eAAe,CAAC;QACvG,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAmB,CAAC;QACrH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGzB,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC;QAE7C,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAE3G,uBAAuB;QACvB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,eAAe,CAAC;QAClH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,eAAe,CAAC;QAElH,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACzH,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzH,6BAA6B;QAC7B,QAAQ,CAAC,SAAS,QAAQ,WAAW,CAAC,CAAC;QACvC,QAAQ,CAAC,SAAS,QAAQ,WAAW,CAAC,CAAC;QACvC,QAAQ,CAAC,WAAW,QAAQ,aAAa,QAAQ,WAAW,CAAC,CAAC;QAC9D,QAAQ,CAAC,sDAAsD,CAAC,CAAC;QAEjE,iCAAiC;QACjC,MAAM,cAAc,GAAG,MAAM,8BAA8B,CAAC,EAAE,CAAC,CAAC;QAEhE,oCAAoC;QACpC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,6BAA6B,CAAC,CAAC;QAErE,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,MAAM,CAA0B,CAAC;QAC3G,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAmB,CAAC;QAE/G,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,qCAAqC;QACrC,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAmB,CAAC;QACzG,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAmB,CAAC;QACrH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGzB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC;QAEhD,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;QAE3G,uBAAuB;QACvB,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,eAAe,CAAC;QAClH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,eAAe,CAAC;QAElH,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACzH,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzH,0BAA0B;QAC1B,QAAQ,CAAC,SAAS,QAAQ,WAAW,CAAC,CAAC;QACvC,QAAQ,CAAC,WAAW,QAAQ,WAAW,CAAC,CAAC;QACzC,QAAQ,CAAC,6CAA6C,CAAC,CAAC;QAExD,iCAAiC;QACjC,MAAM,cAAc,GAAG,MAAM,8BAA8B,CAAC,EAAE,CAAC,CAAC;QAEhE,kEAAkE;QAClE,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,oDAAoD,CAAC,CAAC;QAE5F,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,MAAM,CAA0B,CAAC;QAC3G,MAAM,qBAAqB,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAmB,CAAC;QAElI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,EAAE,+CAA+C,CAAC,CAAC;IAChH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,2DAA2D;QAC3D,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAmB,CAAC;QACzG,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAmB,CAAC;QACrH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGzB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC;QAEhD,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;QAE7G,iCAAiC;QACjC,MAAM,cAAc,GAAG,MAAM,8BAA8B,CAAC,EAAE,CAAC,CAAC;QAEhE,yCAAyC;QACzC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,yCAAyC,CAAC,CAAC;QAEjF,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,4CAA4C,CAAC,CAAC,GAAG,CAAC,MAAM,CAA0B,CAAC;QAC3G,MAAM,qBAAqB,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAmB,CAAC;QAElI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE,EAAE,+CAA+C,CAAC,CAAC;IAChH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,+BAA+B;QAC/B,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;QAEhG,4CAA4C;QAC5C,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,YAAY,CAAmB,CAAC;QACzG,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAmB,CAAC;QACrH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;;KAGzB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC;QAEhD,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAE5G,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,eAAe,CAAC;QAClH,EAAE,CAAC,OAAO,CAAC,8EAA8E,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEzH,QAAQ,CAAC,SAAS,QAAQ,WAAW,CAAC,CAAC;QACvC,QAAQ,CAAC,WAAW,QAAQ,WAAW,CAAC,CAAC;QACzC,QAAQ,CAAC,2CAA2C,CAAC,CAAC;QAEtD,6DAA6D;QAC7D,MAAM,cAAc,GAAG,MAAM,8BAA8B,CAAC,EAAE,CAAC,CAAC;QAEhE,yCAAyC;QACzC,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,EAAE,gCAAgC,CAAC,CAAC;QAExE,4BAA4B;QAC5B,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"git-aware-completion.test.js","sourceRoot":"","sources":["../../src/tests/git-aware-completion.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Help System Test Suite
3
+ *
4
+ * Comprehensive tests for all help query actions to ensure:
5
+ * 1. All help queries return valid data
6
+ * 2. Error handling works correctly
7
+ * 3. Token efficiency targets are met
8
+ * 4. Database queries are performant
9
+ */
10
+ /**
11
+ * Test Suite Runner
12
+ */
13
+ export declare function runHelpSystemTests(): Promise<{
14
+ passed: number;
15
+ failed: number;
16
+ results: Array<{
17
+ test: string;
18
+ status: 'PASS' | 'FAIL';
19
+ message?: string;
20
+ tokens?: number;
21
+ }>;
22
+ }>;
23
+ //# sourceMappingURL=help-system.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help-system.test.d.ts","sourceRoot":"","sources":["../../src/tests/help-system.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA0BH;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9F,CAAC,CAyVD"}