sqlew 3.6.3 → 3.6.6

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 (101) hide show
  1. package/CHANGELOG.md +89 -0
  2. package/LICENSE +52 -52
  3. package/README.md +45 -3
  4. package/assets/config.example.toml +41 -0
  5. package/assets/sample-agents/README.md +38 -0
  6. package/assets/sample-agents/sqlew-architect.md +247 -0
  7. package/assets/sample-agents/sqlew-researcher.md +189 -0
  8. package/assets/sample-agents/sqlew-scrum-master.md +236 -0
  9. package/dist/config/loader.d.ts.map +1 -1
  10. package/dist/config/loader.js +13 -0
  11. package/dist/config/loader.js.map +1 -1
  12. package/dist/config/minimal-generator.d.ts +25 -0
  13. package/dist/config/minimal-generator.d.ts.map +1 -0
  14. package/dist/config/minimal-generator.js +103 -0
  15. package/dist/config/minimal-generator.js.map +1 -0
  16. package/dist/config/types.d.ts +13 -0
  17. package/dist/config/types.d.ts.map +1 -1
  18. package/dist/config/types.js +5 -0
  19. package/dist/config/types.js.map +1 -1
  20. package/dist/database.d.ts +6 -9
  21. package/dist/database.d.ts.map +1 -1
  22. package/dist/database.js +30 -106
  23. package/dist/database.js.map +1 -1
  24. package/dist/index.js +36 -72
  25. package/dist/index.js.map +1 -1
  26. package/dist/init-agents.d.ts +7 -0
  27. package/dist/init-agents.d.ts.map +1 -0
  28. package/dist/init-agents.js +207 -0
  29. package/dist/init-agents.js.map +1 -0
  30. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.d.ts.map +1 -1
  31. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js +49 -34
  32. package/dist/migrations/knex/bootstrap/20251025020452_create_master_tables.js.map +1 -1
  33. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.d.ts.map +1 -1
  34. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js +211 -175
  35. package/dist/migrations/knex/bootstrap/20251025021152_create_transaction_tables.js.map +1 -1
  36. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.d.ts +23 -0
  37. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.d.ts.map +1 -0
  38. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.js +44 -0
  39. package/dist/migrations/knex/enhancements/20251028000000_simplify_agent_system.js.map +1 -0
  40. package/dist/sync-agents.d.ts +13 -0
  41. package/dist/sync-agents.d.ts.map +1 -0
  42. package/dist/sync-agents.js +112 -0
  43. package/dist/sync-agents.js.map +1 -0
  44. package/dist/tests/all-features.test.js +0 -71
  45. package/dist/tests/all-features.test.js.map +1 -1
  46. package/dist/tests/parameter-validation.test.d.ts +8 -0
  47. package/dist/tests/parameter-validation.test.d.ts.map +1 -0
  48. package/dist/tests/parameter-validation.test.js +461 -0
  49. package/dist/tests/parameter-validation.test.js.map +1 -0
  50. package/dist/tools/constraints.d.ts.map +1 -1
  51. package/dist/tools/constraints.js +7 -8
  52. package/dist/tools/constraints.js.map +1 -1
  53. package/dist/tools/context.d.ts.map +1 -1
  54. package/dist/tools/context.js +68 -39
  55. package/dist/tools/context.js.map +1 -1
  56. package/dist/tools/files.d.ts.map +1 -1
  57. package/dist/tools/files.js +9 -7
  58. package/dist/tools/files.js.map +1 -1
  59. package/dist/tools/help-queries.d.ts.map +1 -1
  60. package/dist/tools/help-queries.js +20 -14
  61. package/dist/tools/help-queries.js.map +1 -1
  62. package/dist/tools/messaging.d.ts +4 -0
  63. package/dist/tools/messaging.d.ts.map +1 -1
  64. package/dist/tools/messaging.js +38 -0
  65. package/dist/tools/messaging.js.map +1 -1
  66. package/dist/tools/tasks.d.ts.map +1 -1
  67. package/dist/tools/tasks.js +13 -0
  68. package/dist/tools/tasks.js.map +1 -1
  69. package/dist/tools/utils.d.ts.map +1 -1
  70. package/dist/tools/utils.js +15 -12
  71. package/dist/tools/utils.js.map +1 -1
  72. package/dist/types.d.ts +93 -1
  73. package/dist/types.d.ts.map +1 -1
  74. package/dist/utils/action-specs.d.ts +46 -0
  75. package/dist/utils/action-specs.d.ts.map +1 -0
  76. package/dist/utils/action-specs.js +527 -0
  77. package/dist/utils/action-specs.js.map +1 -0
  78. package/dist/utils/error-handler.d.ts.map +1 -1
  79. package/dist/utils/error-handler.js +41 -24
  80. package/dist/utils/error-handler.js.map +1 -1
  81. package/dist/utils/parameter-validator.d.ts +53 -0
  82. package/dist/utils/parameter-validator.d.ts.map +1 -0
  83. package/dist/utils/parameter-validator.js +286 -0
  84. package/dist/utils/parameter-validator.js.map +1 -0
  85. package/dist/watcher/file-watcher.d.ts +11 -5
  86. package/dist/watcher/file-watcher.d.ts.map +1 -1
  87. package/dist/watcher/file-watcher.js +43 -10
  88. package/dist/watcher/file-watcher.js.map +1 -1
  89. package/docs/BEST_PRACTICES.md +69 -0
  90. package/docs/CONFIGURATION.md +35 -19
  91. package/docs/SPECIALIZED_AGENTS.md +576 -0
  92. package/docs/TOOL_REFERENCE.md +178 -0
  93. package/package.json +86 -85
  94. package/dist/tests/agent-reuse.test.d.ts +0 -6
  95. package/dist/tests/agent-reuse.test.d.ts.map +0 -1
  96. package/dist/tests/agent-reuse.test.js +0 -242
  97. package/dist/tests/agent-reuse.test.js.map +0 -1
  98. package/dist/tools/config.d.ts +0 -50
  99. package/dist/tools/config.d.ts.map +0 -1
  100. package/dist/tools/config.js +0 -170
  101. package/dist/tools/config.js.map +0 -1
@@ -1,50 +0,0 @@
1
- /**
2
- * Configuration management tools for MCP Shared Context Server
3
- * Provides tools to get and update auto-deletion configuration
4
- *
5
- * CONVERTED: Using Knex.js with DatabaseAdapter (async/await)
6
- */
7
- import { DatabaseAdapter } from '../adapters/index.js';
8
- /**
9
- * Get current configuration settings
10
- *
11
- * @param adapter - Optional database adapter (for testing)
12
- * @returns Current configuration values
13
- */
14
- export declare function getConfig(adapter?: DatabaseAdapter): Promise<{
15
- ignoreWeekend: boolean;
16
- messageRetentionHours: number;
17
- fileHistoryRetentionDays: number;
18
- }>;
19
- /**
20
- * Update configuration settings
21
- * Validates values before updating
22
- *
23
- * @param params - Configuration parameters to update
24
- * @param adapter - Optional database adapter (for testing)
25
- * @returns Updated configuration
26
- */
27
- export declare function updateConfig(params: {
28
- ignoreWeekend?: boolean;
29
- messageRetentionHours?: number;
30
- fileHistoryRetentionDays?: number;
31
- }, adapter?: DatabaseAdapter): Promise<{
32
- success: boolean;
33
- config: {
34
- ignoreWeekend: boolean;
35
- messageRetentionHours: number;
36
- fileHistoryRetentionDays: number;
37
- };
38
- message: string;
39
- }>;
40
- /**
41
- * Get help documentation for config tool
42
- * @returns Help documentation object
43
- */
44
- export declare function configHelp(): any;
45
- /**
46
- * Get comprehensive examples for config tool
47
- * @returns Examples documentation object
48
- */
49
- export declare function configExample(): any;
50
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IAClE,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wBAAwB,EAAE,MAAM,CAAC;CAClC,CAAC,CAYD;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE;QACN,aAAa,EAAE,OAAO,CAAC;QACvB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAqCD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,GAAG,CAmBhC;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,GAAG,CA4EnC"}
@@ -1,170 +0,0 @@
1
- /**
2
- * Configuration management tools for MCP Shared Context Server
3
- * Provides tools to get and update auto-deletion configuration
4
- *
5
- * CONVERTED: Using Knex.js with DatabaseAdapter (async/await)
6
- */
7
- import { getAdapter, getConfigBool, getConfigInt, setConfigValue } from '../database.js';
8
- import { CONFIG_KEYS } from '../constants.js';
9
- /**
10
- * Get current configuration settings
11
- *
12
- * @param adapter - Optional database adapter (for testing)
13
- * @returns Current configuration values
14
- */
15
- export async function getConfig(adapter) {
16
- const actualAdapter = adapter ?? getAdapter();
17
- const ignoreWeekend = await getConfigBool(actualAdapter, CONFIG_KEYS.AUTODELETE_IGNORE_WEEKEND, false);
18
- const messageRetentionHours = await getConfigInt(actualAdapter, CONFIG_KEYS.AUTODELETE_MESSAGE_HOURS, 24);
19
- const fileHistoryRetentionDays = await getConfigInt(actualAdapter, CONFIG_KEYS.AUTODELETE_FILE_HISTORY_DAYS, 7);
20
- return {
21
- ignoreWeekend,
22
- messageRetentionHours,
23
- fileHistoryRetentionDays,
24
- };
25
- }
26
- /**
27
- * Update configuration settings
28
- * Validates values before updating
29
- *
30
- * @param params - Configuration parameters to update
31
- * @param adapter - Optional database adapter (for testing)
32
- * @returns Updated configuration
33
- */
34
- export async function updateConfig(params, adapter) {
35
- const actualAdapter = adapter ?? getAdapter();
36
- // Validate values
37
- if (params.messageRetentionHours !== undefined) {
38
- if (params.messageRetentionHours < 1 || params.messageRetentionHours > 168) {
39
- throw new Error('messageRetentionHours must be between 1 and 168 (1 week)');
40
- }
41
- }
42
- if (params.fileHistoryRetentionDays !== undefined) {
43
- if (params.fileHistoryRetentionDays < 1 || params.fileHistoryRetentionDays > 90) {
44
- throw new Error('fileHistoryRetentionDays must be between 1 and 90 days');
45
- }
46
- }
47
- // Update values
48
- if (params.ignoreWeekend !== undefined) {
49
- await setConfigValue(actualAdapter, CONFIG_KEYS.AUTODELETE_IGNORE_WEEKEND, params.ignoreWeekend ? '1' : '0');
50
- }
51
- if (params.messageRetentionHours !== undefined) {
52
- await setConfigValue(actualAdapter, CONFIG_KEYS.AUTODELETE_MESSAGE_HOURS, String(params.messageRetentionHours));
53
- }
54
- if (params.fileHistoryRetentionDays !== undefined) {
55
- await setConfigValue(actualAdapter, CONFIG_KEYS.AUTODELETE_FILE_HISTORY_DAYS, String(params.fileHistoryRetentionDays));
56
- }
57
- // Get updated config
58
- const updatedConfig = await getConfig(actualAdapter);
59
- return {
60
- success: true,
61
- config: updatedConfig,
62
- message: 'Configuration updated successfully',
63
- };
64
- }
65
- /**
66
- * Get help documentation for config tool
67
- * @returns Help documentation object
68
- */
69
- export function configHelp() {
70
- return {
71
- tool: 'config',
72
- description: 'Manage auto-deletion configuration (weekend-aware retention)',
73
- note: '💡 TIP: Use action: "example" to see comprehensive usage scenarios and real-world examples for all config actions.',
74
- actions: {
75
- get: 'Get current config. No params required',
76
- update: 'Update config. Params: ignoreWeekend, messageRetentionHours (1-168), fileHistoryRetentionDays (1-90)'
77
- },
78
- examples: {
79
- get: '{ action: "get" }',
80
- update: '{ action: "update", ignoreWeekend: true, messageRetentionHours: 48 }'
81
- },
82
- documentation: {
83
- shared_concepts: 'docs/SHARED_CONCEPTS.md - Weekend-aware retention behavior explained (339 lines, ~17k tokens)',
84
- best_practices: 'docs/BEST_PRACTICES.md - Retention strategies, cleanup timing (345 lines, ~17k tokens)',
85
- architecture: 'docs/ARCHITECTURE.md - Auto-cleanup architecture, configuration system'
86
- }
87
- };
88
- }
89
- /**
90
- * Get comprehensive examples for config tool
91
- * @returns Examples documentation object
92
- */
93
- export function configExample() {
94
- return {
95
- tool: 'config',
96
- description: 'Configuration management examples',
97
- scenarios: {
98
- view_config: {
99
- title: 'Current Configuration',
100
- example: {
101
- request: '{ action: "get" }',
102
- response: '{ ignoreWeekend: boolean, messageRetentionHours: number, fileHistoryRetentionDays: number }',
103
- explanation: 'View current auto-deletion settings'
104
- }
105
- },
106
- standard_retention: {
107
- title: 'Standard Time-Based Retention',
108
- example: {
109
- request: '{ action: "update", ignoreWeekend: false, messageRetentionHours: 24, fileHistoryRetentionDays: 7 }',
110
- explanation: 'Messages deleted after 24 hours, file history after 7 days (strict time-based)'
111
- }
112
- },
113
- weekend_aware: {
114
- title: 'Weekend-Aware Retention',
115
- example: {
116
- request: '{ action: "update", ignoreWeekend: true, messageRetentionHours: 24, fileHistoryRetentionDays: 7 }',
117
- explanation: 'On Monday, 24h retention = Friday (skips weekend)',
118
- scenario: 'Useful for business-hour contexts where weekend messages should persist'
119
- }
120
- },
121
- extended_retention: {
122
- title: 'Long-Term Project Retention',
123
- example: {
124
- request: '{ action: "update", messageRetentionHours: 168, fileHistoryRetentionDays: 90 }',
125
- explanation: '1 week message retention, 90 days file history (max allowed)',
126
- use_case: 'Long-running projects needing extended context'
127
- }
128
- }
129
- },
130
- retention_behavior: {
131
- ignoreWeekend_false: {
132
- description: 'Standard time-based retention',
133
- examples: [
134
- '24h on Monday = 24 hours ago (Sunday)',
135
- '24h on Friday = 24 hours ago (Thursday)',
136
- 'Straightforward chronological deletion'
137
- ]
138
- },
139
- ignoreWeekend_true: {
140
- description: 'Business-hours retention (skips Sat/Sun)',
141
- examples: [
142
- '24h on Monday = Friday (skips Sat/Sun)',
143
- '24h on Tuesday = Monday',
144
- '24h on Friday = Thursday',
145
- '24h on Saturday/Sunday = Friday',
146
- 'Preserves weekend messages until Monday cleanup'
147
- ]
148
- }
149
- },
150
- best_practices: {
151
- choosing_retention: [
152
- 'Short projects: 24h messages, 7d file history',
153
- 'Medium projects: 72h messages, 14d file history',
154
- 'Long projects: 168h (1 week) messages, 30-90d file history',
155
- 'Use ignoreWeekend=true for business-hour focused work'
156
- ],
157
- limits: [
158
- 'messageRetentionHours: 1-168 (1 hour to 1 week)',
159
- 'fileHistoryRetentionDays: 1-90',
160
- 'Choose based on your projects needs and database size constraints'
161
- ],
162
- cli_override: [
163
- 'Can override config at server startup via CLI args',
164
- '--autodelete-ignore-weekend, --autodelete-message-hours, --autodelete-file-history-days',
165
- 'Runtime updates via config tool take precedence over CLI'
166
- ]
167
- }
168
- };
169
- }
170
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/tools/config.ts"],"names":[],"mappings":"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"}