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.
- package/CHANGELOG.md +247 -1772
- package/README.md +70 -304
- package/assets/config.example.toml +97 -0
- package/dist/adapters/index.d.ts +11 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +21 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/mysql-adapter.d.ts +31 -0
- package/dist/adapters/mysql-adapter.d.ts.map +1 -0
- package/dist/adapters/mysql-adapter.js +63 -0
- package/dist/adapters/mysql-adapter.js.map +1 -0
- package/dist/adapters/postgresql-adapter.d.ts +31 -0
- package/dist/adapters/postgresql-adapter.d.ts.map +1 -0
- package/dist/adapters/postgresql-adapter.js +63 -0
- package/dist/adapters/postgresql-adapter.js.map +1 -0
- package/dist/adapters/sqlite-adapter.d.ts +37 -0
- package/dist/adapters/sqlite-adapter.d.ts.map +1 -0
- package/dist/adapters/sqlite-adapter.js +129 -0
- package/dist/adapters/sqlite-adapter.js.map +1 -0
- package/dist/adapters/types.d.ts +33 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/cli.js +55 -54
- package/dist/cli.js.map +1 -1
- package/dist/config/example-generator.d.ts +11 -0
- package/dist/config/example-generator.d.ts.map +1 -0
- package/dist/config/example-generator.js +48 -0
- package/dist/config/example-generator.js.map +1 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +4 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +9 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/database.d.ts +44 -122
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +145 -416
- package/dist/database.js.map +1 -1
- package/dist/index.js +215 -185
- package/dist/index.js.map +1 -1
- package/dist/knexfile.d.ts +6 -0
- package/dist/knexfile.d.ts.map +1 -0
- package/dist/knexfile.js +85 -0
- package/dist/knexfile.js.map +1 -0
- package/dist/migrations/add-help-system-tables.d.ts +35 -0
- package/dist/migrations/add-help-system-tables.d.ts.map +1 -0
- package/dist/migrations/add-help-system-tables.js +206 -0
- package/dist/migrations/add-help-system-tables.js.map +1 -0
- package/dist/migrations/add-token-tracking.d.ts +28 -0
- package/dist/migrations/add-token-tracking.d.ts.map +1 -0
- package/dist/migrations/add-token-tracking.js +108 -0
- package/dist/migrations/add-token-tracking.js.map +1 -0
- package/dist/migrations/index.d.ts +25 -12
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +147 -20
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/knex/20251025020452_create_master_tables.d.ts +4 -0
- package/dist/migrations/knex/20251025020452_create_master_tables.d.ts.map +1 -0
- package/dist/migrations/knex/20251025020452_create_master_tables.js +65 -0
- package/dist/migrations/knex/20251025020452_create_master_tables.js.map +1 -0
- package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts +4 -0
- package/dist/migrations/knex/20251025021152_create_transaction_tables.d.ts.map +1 -0
- package/dist/migrations/knex/20251025021152_create_transaction_tables.js +235 -0
- package/dist/migrations/knex/20251025021152_create_transaction_tables.js.map +1 -0
- package/dist/migrations/knex/20251025021351_create_indexes.d.ts +4 -0
- package/dist/migrations/knex/20251025021351_create_indexes.d.ts.map +1 -0
- package/dist/migrations/knex/20251025021351_create_indexes.js +62 -0
- package/dist/migrations/knex/20251025021351_create_indexes.js.map +1 -0
- package/dist/migrations/knex/20251025021416_seed_master_data.d.ts +4 -0
- package/dist/migrations/knex/20251025021416_seed_master_data.d.ts.map +1 -0
- package/dist/migrations/knex/20251025021416_seed_master_data.js +58 -0
- package/dist/migrations/knex/20251025021416_seed_master_data.js.map +1 -0
- package/dist/migrations/knex/20251025070349_create_views.d.ts +4 -0
- package/dist/migrations/knex/20251025070349_create_views.d.ts.map +1 -0
- package/dist/migrations/knex/20251025070349_create_views.js +143 -0
- package/dist/migrations/knex/20251025070349_create_views.js.map +1 -0
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts +4 -0
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.d.ts.map +1 -0
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js +15 -0
- package/dist/migrations/knex/20251025081221_add_link_type_to_task_decision_links.js.map +1 -0
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts +8 -0
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.d.ts.map +1 -0
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js +12 -0
- package/dist/migrations/knex/20251025082220_fix_task_dependencies_columns.js.map +1 -0
- package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts +19 -0
- package/dist/migrations/knex/20251025090000_create_help_system_tables.d.ts.map +1 -0
- package/dist/migrations/knex/20251025090000_create_help_system_tables.js +115 -0
- package/dist/migrations/knex/20251025090000_create_help_system_tables.js.map +1 -0
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts +13 -0
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.d.ts.map +1 -0
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js +377 -0
- package/dist/migrations/knex/20251025090100_seed_help_categories_and_use_cases.js.map +1 -0
- package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts +15 -0
- package/dist/migrations/knex/20251025100000_seed_help_metadata.d.ts.map +1 -0
- package/dist/migrations/knex/20251025100000_seed_help_metadata.js +253 -0
- package/dist/migrations/knex/20251025100000_seed_help_metadata.js.map +1 -0
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts +16 -0
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.d.ts.map +1 -0
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js +276 -0
- package/dist/migrations/knex/20251025100100_seed_remaining_use_cases.js.map +1 -0
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts +8 -0
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.d.ts.map +1 -0
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js +64 -0
- package/dist/migrations/knex/20251025120000_add_cascade_to_task_dependencies.js.map +1 -0
- package/dist/migrations/seed-help-data.d.ts +48 -0
- package/dist/migrations/seed-help-data.d.ts.map +1 -0
- package/dist/migrations/seed-help-data.js +1466 -0
- package/dist/migrations/seed-help-data.js.map +1 -0
- package/dist/migrations/seed-tool-metadata.d.ts +24 -0
- package/dist/migrations/seed-tool-metadata.d.ts.map +1 -0
- package/dist/migrations/seed-tool-metadata.js +392 -0
- package/dist/migrations/seed-tool-metadata.js.map +1 -0
- package/dist/migrations/v3.6.0-help-system-refactor.d.ts +46 -0
- package/dist/migrations/v3.6.0-help-system-refactor.d.ts.map +1 -0
- package/dist/migrations/v3.6.0-help-system-refactor.js +223 -0
- package/dist/migrations/v3.6.0-help-system-refactor.js.map +1 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -1
- package/dist/tests/git-aware-completion.test.js +89 -70
- package/dist/tests/git-aware-completion.test.js.map +1 -1
- package/dist/tests/help-system.test.d.ts +23 -0
- package/dist/tests/help-system.test.d.ts.map +1 -0
- package/dist/tests/help-system.test.js +374 -0
- package/dist/tests/help-system.test.js.map +1 -0
- package/dist/tests/tasks.auto-pruning-decision-link.test.js +92 -78
- package/dist/tests/tasks.auto-pruning-decision-link.test.js.map +1 -1
- package/dist/tests/tasks.auto-pruning-partial.test.js +106 -95
- package/dist/tests/tasks.auto-pruning-partial.test.js.map +1 -1
- package/dist/tests/tasks.auto-pruning-persistence.test.js +115 -97
- package/dist/tests/tasks.auto-pruning-persistence.test.js.map +1 -1
- package/dist/tests/tasks.auto-pruning-safety.test.js +124 -103
- package/dist/tests/tasks.auto-pruning-safety.test.js.map +1 -1
- package/dist/tests/tasks.dependencies.test.js +338 -307
- package/dist/tests/tasks.dependencies.test.js.map +1 -1
- package/dist/tests/tasks.link-file-backward-compat.test.js +116 -104
- package/dist/tests/tasks.link-file-backward-compat.test.js.map +1 -1
- package/dist/tests/tasks.watch-files-action.test.js +122 -101
- package/dist/tests/tasks.watch-files-action.test.js.map +1 -1
- package/dist/tests/tasks.watch-files-parameter.test.js +105 -94
- package/dist/tests/tasks.watch-files-parameter.test.js.map +1 -1
- package/dist/tests/two-step-git-completion.test.js +176 -133
- package/dist/tests/two-step-git-completion.test.js.map +1 -1
- package/dist/tests/vcs-staging.test.js +1 -1
- package/dist/tests/vcs-staging.test.js.map +1 -1
- package/dist/tools/config.d.ts +9 -6
- package/dist/tools/config.d.ts.map +1 -1
- package/dist/tools/config.js +16 -14
- package/dist/tools/config.js.map +1 -1
- package/dist/tools/constraints.d.ts +10 -7
- package/dist/tools/constraints.d.ts.map +1 -1
- package/dist/tools/constraints.js +66 -48
- package/dist/tools/constraints.js.map +1 -1
- package/dist/tools/context.d.ts +36 -33
- package/dist/tools/context.d.ts.map +1 -1
- package/dist/tools/context.js +374 -330
- package/dist/tools/context.js.map +1 -1
- package/dist/tools/files.d.ts +12 -9
- package/dist/tools/files.d.ts.map +1 -1
- package/dist/tools/files.js +173 -95
- package/dist/tools/files.js.map +1 -1
- package/dist/tools/help-queries.d.ts +130 -0
- package/dist/tools/help-queries.d.ts.map +1 -0
- package/dist/tools/help-queries.js +393 -0
- package/dist/tools/help-queries.js.map +1 -0
- package/dist/tools/messaging.d.ts +14 -11
- package/dist/tools/messaging.d.ts.map +1 -1
- package/dist/tools/messaging.js +217 -133
- package/dist/tools/messaging.js.map +1 -1
- package/dist/tools/tasks.d.ts +18 -16
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +513 -439
- package/dist/tools/tasks.js.map +1 -1
- package/dist/tools/utils.d.ts +14 -11
- package/dist/tools/utils.d.ts.map +1 -1
- package/dist/tools/utils.js +86 -121
- package/dist/tools/utils.js.map +1 -1
- package/dist/utils/activity-logging.d.ts +114 -0
- package/dist/utils/activity-logging.d.ts.map +1 -0
- package/dist/utils/activity-logging.js +162 -0
- package/dist/utils/activity-logging.js.map +1 -0
- package/dist/utils/batch.d.ts +2 -2
- package/dist/utils/batch.d.ts.map +1 -1
- package/dist/utils/batch.js +8 -8
- package/dist/utils/batch.js.map +1 -1
- package/dist/utils/cleanup.d.ts +21 -13
- package/dist/utils/cleanup.d.ts.map +1 -1
- package/dist/utils/cleanup.js +31 -24
- package/dist/utils/cleanup.js.map +1 -1
- package/dist/utils/debug-logger.d.ts +44 -0
- package/dist/utils/debug-logger.d.ts.map +1 -0
- package/dist/utils/debug-logger.js +116 -0
- package/dist/utils/debug-logger.js.map +1 -0
- package/dist/utils/help-tracking.d.ts +55 -0
- package/dist/utils/help-tracking.d.ts.map +1 -0
- package/dist/utils/help-tracking.js +88 -0
- package/dist/utils/help-tracking.js.map +1 -0
- package/dist/utils/retention.d.ts +7 -7
- package/dist/utils/retention.d.ts.map +1 -1
- package/dist/utils/retention.js +12 -12
- package/dist/utils/retention.js.map +1 -1
- package/dist/utils/task-stale-detection.d.ts +15 -13
- package/dist/utils/task-stale-detection.d.ts.map +1 -1
- package/dist/utils/task-stale-detection.js +100 -302
- package/dist/utils/task-stale-detection.js.map +1 -1
- package/dist/utils/token-estimation.d.ts +72 -0
- package/dist/utils/token-estimation.d.ts.map +1 -0
- package/dist/utils/token-estimation.js +71 -0
- package/dist/utils/token-estimation.js.map +1 -0
- package/dist/utils/token-logging.d.ts +48 -0
- package/dist/utils/token-logging.d.ts.map +1 -0
- package/dist/utils/token-logging.js +112 -0
- package/dist/utils/token-logging.js.map +1 -0
- package/dist/utils/view-queries.d.ts +34 -0
- package/dist/utils/view-queries.d.ts.map +1 -0
- package/dist/utils/view-queries.js +192 -0
- package/dist/utils/view-queries.js.map +1 -0
- package/dist/watcher/file-watcher.d.ts.map +1 -1
- package/dist/watcher/file-watcher.js +25 -11
- package/dist/watcher/file-watcher.js.map +1 -1
- package/docs/BEST_PRACTICES.md +56 -448
- package/docs/MIGRATION_v3.6.0.md +170 -0
- package/docs/SHARED_CONCEPTS.md +63 -208
- package/docs/TASK_OVERVIEW.md +2 -2
- package/docs/TOOL_SELECTION.md +41 -248
- package/package.json +16 -4
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Help Action Usage Tracking
|
|
3
|
+
*
|
|
4
|
+
* Lightweight logging system to track help/example action invocations
|
|
5
|
+
* for understanding usage patterns and optimizing documentation.
|
|
6
|
+
*
|
|
7
|
+
* Data collected:
|
|
8
|
+
* - tool_name: Which MCP tool invoked help/example
|
|
9
|
+
* - action_name: "help" or "example"
|
|
10
|
+
* - timestamp: When the action was invoked
|
|
11
|
+
* - token_count: Estimated tokens in request + response
|
|
12
|
+
*
|
|
13
|
+
* Storage: Temporary log file in .sqlew/tmp/help-usage.log
|
|
14
|
+
* Format: JSON lines (one JSON object per line for easy parsing)
|
|
15
|
+
* Retention: Manual cleanup after 1-2 week analysis period
|
|
16
|
+
*/
|
|
17
|
+
import { appendFileSync, existsSync, mkdirSync } from 'fs';
|
|
18
|
+
import { resolve } from 'path';
|
|
19
|
+
/**
|
|
20
|
+
* Log file configuration
|
|
21
|
+
*/
|
|
22
|
+
const LOG_DIR = resolve(process.cwd(), '.sqlew', 'tmp');
|
|
23
|
+
const LOG_FILE = resolve(LOG_DIR, 'help-usage.log');
|
|
24
|
+
/**
|
|
25
|
+
* Initialize logging directory
|
|
26
|
+
* Creates .sqlew/tmp/ if it doesn't exist
|
|
27
|
+
*/
|
|
28
|
+
function ensureLogDirectory() {
|
|
29
|
+
if (!existsSync(LOG_DIR)) {
|
|
30
|
+
mkdirSync(LOG_DIR, { recursive: true });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Log a help action invocation
|
|
35
|
+
* Appends JSON line to log file for analysis
|
|
36
|
+
*
|
|
37
|
+
* @param record - Help usage record to log
|
|
38
|
+
*/
|
|
39
|
+
export function logHelpUsage(record) {
|
|
40
|
+
try {
|
|
41
|
+
ensureLogDirectory();
|
|
42
|
+
// Append as JSON line (newline-delimited JSON)
|
|
43
|
+
const jsonLine = JSON.stringify(record) + '\n';
|
|
44
|
+
appendFileSync(LOG_FILE, jsonLine, 'utf8');
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
// Silent failure - don't break tool execution if logging fails
|
|
48
|
+
console.error('[Help Tracking] Failed to log usage:', error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Estimate token count for help/example action
|
|
53
|
+
* Rough estimation based on response length
|
|
54
|
+
*
|
|
55
|
+
* @param toolName - Name of the MCP tool
|
|
56
|
+
* @param actionName - "help" or "example"
|
|
57
|
+
* @param responseLength - Length of response text
|
|
58
|
+
* @returns Estimated token count (request + response)
|
|
59
|
+
*/
|
|
60
|
+
export function estimateHelpTokens(toolName, actionName, responseLength) {
|
|
61
|
+
// Request tokens: tool name + action parameter (~50 tokens)
|
|
62
|
+
const requestTokens = 50;
|
|
63
|
+
// Response tokens: approximate 4 chars per token
|
|
64
|
+
const responseTokens = Math.ceil(responseLength / 4);
|
|
65
|
+
return requestTokens + responseTokens;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Track help action and return the help content
|
|
69
|
+
* Convenience wrapper that logs and returns content
|
|
70
|
+
*
|
|
71
|
+
* @param toolName - Name of the MCP tool
|
|
72
|
+
* @param actionName - "help" or "example"
|
|
73
|
+
* @param content - Help content to return
|
|
74
|
+
* @param context - Optional context about what triggered help
|
|
75
|
+
* @returns The help content (pass-through)
|
|
76
|
+
*/
|
|
77
|
+
export function trackAndReturnHelp(toolName, actionName, content, context) {
|
|
78
|
+
const tokenCount = estimateHelpTokens(toolName, actionName, content.length);
|
|
79
|
+
logHelpUsage({
|
|
80
|
+
tool_name: toolName,
|
|
81
|
+
action_name: actionName,
|
|
82
|
+
timestamp: new Date().toISOString(),
|
|
83
|
+
token_count: tokenCount,
|
|
84
|
+
context
|
|
85
|
+
});
|
|
86
|
+
return content;
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=help-tracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help-tracking.js","sourceRoot":"","sources":["../../src/utils/help-tracking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAa/B;;GAEG;AACH,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;AAEpD;;;GAGG;AACH,SAAS,kBAAkB;IACzB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,MAAuB;IAClD,IAAI,CAAC;QACH,kBAAkB,EAAE,CAAC;QAErB,+CAA+C;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAC/C,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+DAA+D;QAC/D,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,UAA8B,EAC9B,cAAsB;IAEtB,4DAA4D;IAC5D,MAAM,aAAa,GAAG,EAAE,CAAC;IAEzB,iDAAiD;IACjD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IAErD,OAAO,aAAa,GAAG,cAAc,CAAC;AACxC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,UAA8B,EAC9B,OAAe,EACf,OAAgB;IAEhB,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5E,YAAY,CAAC;QACX,SAAS,EAAE,QAAQ;QACnB,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,WAAW,EAAE,UAAU;QACvB,OAAO;KACR,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -2,31 +2,31 @@
|
|
|
2
2
|
* Weekend-aware retention logic for auto-deletion
|
|
3
3
|
* Calculates cutoff timestamps that skip weekends when configured
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { DatabaseAdapter } from '../adapters/index.js';
|
|
6
6
|
/**
|
|
7
7
|
* Calculate cutoff timestamp for message retention
|
|
8
8
|
* Respects weekend-awareness configuration
|
|
9
9
|
*
|
|
10
|
-
* @param
|
|
10
|
+
* @param adapter - Database adapter instance
|
|
11
11
|
* @returns Unix timestamp (seconds) for cutoff
|
|
12
12
|
*/
|
|
13
|
-
export declare function calculateMessageCutoff(
|
|
13
|
+
export declare function calculateMessageCutoff(adapter: DatabaseAdapter): Promise<number>;
|
|
14
14
|
/**
|
|
15
15
|
* Calculate cutoff timestamp for file change retention
|
|
16
16
|
* Respects weekend-awareness configuration
|
|
17
17
|
*
|
|
18
|
-
* @param
|
|
18
|
+
* @param adapter - Database adapter instance
|
|
19
19
|
* @returns Unix timestamp (seconds) for cutoff
|
|
20
20
|
*/
|
|
21
|
-
export declare function calculateFileChangeCutoff(
|
|
21
|
+
export declare function calculateFileChangeCutoff(adapter: DatabaseAdapter): Promise<number>;
|
|
22
22
|
/**
|
|
23
23
|
* Calculate cutoff timestamp for task archive (done → archived)
|
|
24
24
|
* Respects weekend-awareness configuration
|
|
25
25
|
*
|
|
26
|
-
* @param
|
|
26
|
+
* @param adapter - Database adapter instance
|
|
27
27
|
* @returns Unix timestamp (seconds) for cutoff
|
|
28
28
|
*/
|
|
29
|
-
export declare function calculateTaskArchiveCutoff(
|
|
29
|
+
export declare function calculateTaskArchiveCutoff(adapter: DatabaseAdapter): Promise<number>;
|
|
30
30
|
/**
|
|
31
31
|
* Calculate cutoff timestamp with optional weekend-awareness
|
|
32
32
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/utils/retention.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/utils/retention.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIvD;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAKtF;AAED;;;;;;GAMG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAKzF;AAED;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAK1F;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,OAAO,EACvB,IAAI,EAAE,OAAO,GAAG,MAAM,GACrB,MAAM,CAYR;AA4CD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,MAAM,CAavE;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAe9D"}
|
package/dist/utils/retention.js
CHANGED
|
@@ -8,36 +8,36 @@ import { CONFIG_KEYS } from '../constants.js';
|
|
|
8
8
|
* Calculate cutoff timestamp for message retention
|
|
9
9
|
* Respects weekend-awareness configuration
|
|
10
10
|
*
|
|
11
|
-
* @param
|
|
11
|
+
* @param adapter - Database adapter instance
|
|
12
12
|
* @returns Unix timestamp (seconds) for cutoff
|
|
13
13
|
*/
|
|
14
|
-
export function calculateMessageCutoff(
|
|
15
|
-
const ignoreWeekends = getConfigBool(
|
|
16
|
-
const retentionHours = getConfigInt(
|
|
14
|
+
export async function calculateMessageCutoff(adapter) {
|
|
15
|
+
const ignoreWeekends = await getConfigBool(adapter, CONFIG_KEYS.AUTODELETE_IGNORE_WEEKEND, false);
|
|
16
|
+
const retentionHours = await getConfigInt(adapter, CONFIG_KEYS.AUTODELETE_MESSAGE_HOURS, 24);
|
|
17
17
|
return calculateCutoffTimestamp(retentionHours, ignoreWeekends, 'hours');
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
20
|
* Calculate cutoff timestamp for file change retention
|
|
21
21
|
* Respects weekend-awareness configuration
|
|
22
22
|
*
|
|
23
|
-
* @param
|
|
23
|
+
* @param adapter - Database adapter instance
|
|
24
24
|
* @returns Unix timestamp (seconds) for cutoff
|
|
25
25
|
*/
|
|
26
|
-
export function calculateFileChangeCutoff(
|
|
27
|
-
const ignoreWeekends = getConfigBool(
|
|
28
|
-
const retentionDays = getConfigInt(
|
|
26
|
+
export async function calculateFileChangeCutoff(adapter) {
|
|
27
|
+
const ignoreWeekends = await getConfigBool(adapter, CONFIG_KEYS.AUTODELETE_IGNORE_WEEKEND, false);
|
|
28
|
+
const retentionDays = await getConfigInt(adapter, CONFIG_KEYS.AUTODELETE_FILE_HISTORY_DAYS, 7);
|
|
29
29
|
return calculateCutoffTimestamp(retentionDays, ignoreWeekends, 'days');
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Calculate cutoff timestamp for task archive (done → archived)
|
|
33
33
|
* Respects weekend-awareness configuration
|
|
34
34
|
*
|
|
35
|
-
* @param
|
|
35
|
+
* @param adapter - Database adapter instance
|
|
36
36
|
* @returns Unix timestamp (seconds) for cutoff
|
|
37
37
|
*/
|
|
38
|
-
export function calculateTaskArchiveCutoff(
|
|
39
|
-
const ignoreWeekends = getConfigBool(
|
|
40
|
-
const retentionDays = getConfigInt(
|
|
38
|
+
export async function calculateTaskArchiveCutoff(adapter) {
|
|
39
|
+
const ignoreWeekends = await getConfigBool(adapter, CONFIG_KEYS.AUTODELETE_IGNORE_WEEKEND, false);
|
|
40
|
+
const retentionDays = await getConfigInt(adapter, CONFIG_KEYS.AUTO_ARCHIVE_DONE_DAYS, 2); // Default: 2 days (48 hours)
|
|
41
41
|
return calculateCutoffTimestamp(retentionDays, ignoreWeekends, 'days');
|
|
42
42
|
}
|
|
43
43
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/utils/retention.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/utils/retention.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Auto-stale detection for Kanban Task Watcher
|
|
3
3
|
* Automatically transitions abandoned tasks based on time thresholds
|
|
4
|
+
*
|
|
5
|
+
* CONVERTED: Using Knex.js with DatabaseAdapter (async/await)
|
|
4
6
|
*/
|
|
5
|
-
import {
|
|
7
|
+
import { DatabaseAdapter } from '../adapters/index.js';
|
|
6
8
|
/**
|
|
7
9
|
* Detect and transition stale tasks automatically
|
|
8
10
|
*
|
|
9
11
|
* Detection logic:
|
|
10
12
|
* - Tasks in `in_progress` with `updated_ts` older than threshold → move to `waiting_review`
|
|
11
13
|
*
|
|
12
|
-
* @param
|
|
14
|
+
* @param adapter - Database adapter instance
|
|
13
15
|
* @returns Count of transitioned tasks
|
|
14
16
|
*/
|
|
15
|
-
export declare function detectAndTransitionStaleTasks(
|
|
17
|
+
export declare function detectAndTransitionStaleTasks(adapter?: DatabaseAdapter): Promise<number>;
|
|
16
18
|
/**
|
|
17
19
|
* Get current auto-stale configuration
|
|
18
20
|
*
|
|
19
|
-
* @param
|
|
21
|
+
* @param adapter - Database adapter instance
|
|
20
22
|
* @returns Current configuration values
|
|
21
23
|
*/
|
|
22
|
-
export declare function getStaleDetectionConfig(
|
|
24
|
+
export declare function getStaleDetectionConfig(adapter?: DatabaseAdapter): Promise<{
|
|
23
25
|
enabled: boolean;
|
|
24
26
|
inProgressThresholdHours: number;
|
|
25
27
|
waitingReviewThresholdHours: number;
|
|
26
|
-
}
|
|
28
|
+
}>;
|
|
27
29
|
/**
|
|
28
30
|
* Auto-archive old done tasks
|
|
29
31
|
* Archives tasks in 'done' status older than configured threshold
|
|
@@ -32,10 +34,10 @@ export declare function getStaleDetectionConfig(db: Database): {
|
|
|
32
34
|
* Default: 48 hours (2 days)
|
|
33
35
|
* Weekend-aware: Task done Friday → archives Tuesday (skip Sat/Sun)
|
|
34
36
|
*
|
|
35
|
-
* @param
|
|
37
|
+
* @param adapter - Database adapter instance
|
|
36
38
|
* @returns Count of archived tasks
|
|
37
39
|
*/
|
|
38
|
-
export declare function autoArchiveOldDoneTasks(
|
|
40
|
+
export declare function autoArchiveOldDoneTasks(adapter?: DatabaseAdapter): Promise<number>;
|
|
39
41
|
/**
|
|
40
42
|
* Detect and complete tasks in waiting_review or in_progress when all watched files are committed
|
|
41
43
|
*
|
|
@@ -47,10 +49,10 @@ export declare function autoArchiveOldDoneTasks(db: Database): number;
|
|
|
47
49
|
* - Supports multiple VCS: Git, Mercurial, SVN
|
|
48
50
|
* - Gracefully handle non-VCS repos (skip auto-complete)
|
|
49
51
|
*
|
|
50
|
-
* @param
|
|
52
|
+
* @param adapter - Database adapter instance
|
|
51
53
|
* @returns Count of auto-completed tasks
|
|
52
54
|
*/
|
|
53
|
-
export declare function detectAndCompleteReviewedTasks(
|
|
55
|
+
export declare function detectAndCompleteReviewedTasks(adapter?: DatabaseAdapter): Promise<number>;
|
|
54
56
|
/**
|
|
55
57
|
* Detect and auto-complete tasks in waiting_review when all watched files are staged
|
|
56
58
|
* (v3.5.2 - Two-step Git-aware workflow: staging → done)
|
|
@@ -64,7 +66,7 @@ export declare function detectAndCompleteReviewedTasks(db: Database): Promise<nu
|
|
|
64
66
|
* @param db - Database instance
|
|
65
67
|
* @returns Count of auto-completed tasks
|
|
66
68
|
*/
|
|
67
|
-
export declare function detectAndCompleteOnStaging(
|
|
69
|
+
export declare function detectAndCompleteOnStaging(adapter?: DatabaseAdapter): Promise<number>;
|
|
68
70
|
/**
|
|
69
71
|
* Detect and auto-archive tasks in done when all watched files are committed
|
|
70
72
|
* (v3.5.2 - Two-step Git-aware workflow: commit → archived)
|
|
@@ -78,7 +80,7 @@ export declare function detectAndCompleteOnStaging(db: Database): Promise<number
|
|
|
78
80
|
* @param db - Database instance
|
|
79
81
|
* @returns Count of auto-archived tasks
|
|
80
82
|
*/
|
|
81
|
-
export declare function detectAndArchiveOnCommit(
|
|
83
|
+
export declare function detectAndArchiveOnCommit(adapter?: DatabaseAdapter): Promise<number>;
|
|
82
84
|
/**
|
|
83
85
|
* Detect and transition in_progress tasks to waiting_review based on quality gates
|
|
84
86
|
* Database-backed approach that survives restarts
|
|
@@ -92,5 +94,5 @@ export declare function detectAndArchiveOnCommit(db: Database): Promise<number>;
|
|
|
92
94
|
* @param db - Database instance
|
|
93
95
|
* @returns Count of transitioned tasks
|
|
94
96
|
*/
|
|
95
|
-
export declare function detectAndTransitionToReview(
|
|
97
|
+
export declare function detectAndTransitionToReview(adapter?: DatabaseAdapter): Promise<number>;
|
|
96
98
|
//# sourceMappingURL=task-stale-detection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-stale-detection.d.ts","sourceRoot":"","sources":["../../src/utils/task-stale-detection.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"task-stale-detection.d.ts","sourceRoot":"","sources":["../../src/utils/task-stale-detection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAiDvD;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqD9F;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC;IAChF,OAAO,EAAE,OAAO,CAAC;IACjB,wBAAwB,EAAE,MAAM,CAAC;IACjC,2BAA2B,EAAE,MAAM,CAAC;CACrC,CAAC,CAoBD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBxF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,8BAA8B,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAqG/F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ3F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,wBAAwB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAgGzF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5F"}
|