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
|
@@ -1,13 +1,11 @@
|
|
|
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 { getConfigBool, getConfigInt } from '../database.js';
|
|
7
|
+
import { getConfigBool, getConfigInt, getAdapter } from '../database.js';
|
|
6
8
|
import { calculateTaskArchiveCutoff } from './retention.js';
|
|
7
|
-
import { checkReadyForReview } from './quality-checks.js';
|
|
8
|
-
import { pruneNonExistentFiles } from './file-pruning.js';
|
|
9
|
-
import { statSync, existsSync } from 'fs';
|
|
10
|
-
import { join } from 'path';
|
|
11
9
|
import { detectVCS } from './vcs-adapter.js';
|
|
12
10
|
/**
|
|
13
11
|
* Task status IDs (matching schema)
|
|
@@ -37,9 +35,12 @@ const CONFIG_KEYS = {
|
|
|
37
35
|
};
|
|
38
36
|
/**
|
|
39
37
|
* Default configuration values
|
|
38
|
+
*
|
|
39
|
+
* STALE_HOURS_IN_PROGRESS: 18 hours (supports multi-day tasks and lunch breaks)
|
|
40
|
+
* STALE_HOURS_WAITING_REVIEW: 24 hours (1 day wait for review feedback)
|
|
40
41
|
*/
|
|
41
42
|
const DEFAULTS = {
|
|
42
|
-
STALE_HOURS_IN_PROGRESS:
|
|
43
|
+
STALE_HOURS_IN_PROGRESS: 18,
|
|
43
44
|
STALE_HOURS_WAITING_REVIEW: 24,
|
|
44
45
|
AUTO_STALE_ENABLED: true,
|
|
45
46
|
};
|
|
@@ -49,50 +50,53 @@ const DEFAULTS = {
|
|
|
49
50
|
* Detection logic:
|
|
50
51
|
* - Tasks in `in_progress` with `updated_ts` older than threshold → move to `waiting_review`
|
|
51
52
|
*
|
|
52
|
-
* @param
|
|
53
|
+
* @param adapter - Database adapter instance
|
|
53
54
|
* @returns Count of transitioned tasks
|
|
54
55
|
*/
|
|
55
|
-
export function detectAndTransitionStaleTasks(
|
|
56
|
+
export async function detectAndTransitionStaleTasks(adapter) {
|
|
57
|
+
const actualAdapter = adapter ?? getAdapter();
|
|
58
|
+
const knex = actualAdapter.getKnex();
|
|
56
59
|
// 1. Check if auto-stale is enabled
|
|
57
|
-
const isEnabled = getConfigBool(
|
|
60
|
+
const isEnabled = await getConfigBool(actualAdapter, CONFIG_KEYS.TASK_AUTO_STALE_ENABLED, DEFAULTS.AUTO_STALE_ENABLED);
|
|
58
61
|
if (!isEnabled) {
|
|
59
62
|
return 0;
|
|
60
63
|
}
|
|
61
64
|
// 2. Get threshold configs (in hours)
|
|
62
|
-
const inProgressThresholdHours = getConfigInt(
|
|
63
|
-
const waitingReviewThresholdHours = getConfigInt(
|
|
65
|
+
const inProgressThresholdHours = await getConfigInt(actualAdapter, CONFIG_KEYS.TASK_STALE_HOURS_IN_PROGRESS, DEFAULTS.STALE_HOURS_IN_PROGRESS);
|
|
66
|
+
const waitingReviewThresholdHours = await getConfigInt(actualAdapter, CONFIG_KEYS.TASK_STALE_HOURS_WAITING_REVIEW, DEFAULTS.STALE_HOURS_WAITING_REVIEW);
|
|
64
67
|
// Convert hours to seconds for timestamp comparison
|
|
65
68
|
const inProgressThresholdSeconds = inProgressThresholdHours * 3600;
|
|
66
69
|
const waitingReviewThresholdSeconds = waitingReviewThresholdHours * 3600;
|
|
67
70
|
let totalTransitioned = 0;
|
|
68
71
|
// 3. Transition stale tasks in a transaction
|
|
69
|
-
|
|
72
|
+
await actualAdapter.transaction(async (trx) => {
|
|
70
73
|
// 3a. Find and transition in_progress tasks older than threshold to waiting_review
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
74
|
+
const currentTs = Math.floor(Date.now() / 1000);
|
|
75
|
+
const cutoffTs = currentTs - inProgressThresholdSeconds;
|
|
76
|
+
const inProgressTransitioned = await trx('t_tasks')
|
|
77
|
+
.where('status_id', TASK_STATUS.IN_PROGRESS)
|
|
78
|
+
.where('updated_ts', '<', cutoffTs)
|
|
79
|
+
.update({
|
|
80
|
+
status_id: TASK_STATUS.WAITING_REVIEW,
|
|
81
|
+
updated_ts: currentTs
|
|
82
|
+
});
|
|
83
|
+
totalTransitioned += inProgressTransitioned;
|
|
79
84
|
});
|
|
80
|
-
// Execute the transaction
|
|
81
|
-
updateStmt();
|
|
82
85
|
// 4. Return count of transitioned tasks
|
|
83
86
|
return totalTransitioned;
|
|
84
87
|
}
|
|
85
88
|
/**
|
|
86
89
|
* Get current auto-stale configuration
|
|
87
90
|
*
|
|
88
|
-
* @param
|
|
91
|
+
* @param adapter - Database adapter instance
|
|
89
92
|
* @returns Current configuration values
|
|
90
93
|
*/
|
|
91
|
-
export function getStaleDetectionConfig(
|
|
94
|
+
export async function getStaleDetectionConfig(adapter) {
|
|
95
|
+
const actualAdapter = adapter ?? getAdapter();
|
|
92
96
|
return {
|
|
93
|
-
enabled: getConfigBool(
|
|
94
|
-
inProgressThresholdHours: getConfigInt(
|
|
95
|
-
waitingReviewThresholdHours: getConfigInt(
|
|
97
|
+
enabled: await getConfigBool(actualAdapter, CONFIG_KEYS.TASK_AUTO_STALE_ENABLED, DEFAULTS.AUTO_STALE_ENABLED),
|
|
98
|
+
inProgressThresholdHours: await getConfigInt(actualAdapter, CONFIG_KEYS.TASK_STALE_HOURS_IN_PROGRESS, DEFAULTS.STALE_HOURS_IN_PROGRESS),
|
|
99
|
+
waitingReviewThresholdHours: await getConfigInt(actualAdapter, CONFIG_KEYS.TASK_STALE_HOURS_WAITING_REVIEW, DEFAULTS.STALE_HOURS_WAITING_REVIEW),
|
|
96
100
|
};
|
|
97
101
|
}
|
|
98
102
|
/**
|
|
@@ -103,21 +107,24 @@ export function getStaleDetectionConfig(db) {
|
|
|
103
107
|
* Default: 48 hours (2 days)
|
|
104
108
|
* Weekend-aware: Task done Friday → archives Tuesday (skip Sat/Sun)
|
|
105
109
|
*
|
|
106
|
-
* @param
|
|
110
|
+
* @param adapter - Database adapter instance
|
|
107
111
|
* @returns Count of archived tasks
|
|
108
112
|
*/
|
|
109
|
-
export function autoArchiveOldDoneTasks(
|
|
113
|
+
export async function autoArchiveOldDoneTasks(adapter) {
|
|
114
|
+
const actualAdapter = adapter ?? getAdapter();
|
|
115
|
+
const knex = actualAdapter.getKnex();
|
|
110
116
|
// Calculate cutoff timestamp using weekend-aware retention logic
|
|
111
|
-
const cutoffTimestamp = calculateTaskArchiveCutoff(
|
|
117
|
+
const cutoffTimestamp = await calculateTaskArchiveCutoff(actualAdapter);
|
|
112
118
|
// Archive done tasks older than cutoff
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
updated_ts
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
const currentTs = Math.floor(Date.now() / 1000);
|
|
120
|
+
const archivedCount = await knex('t_tasks')
|
|
121
|
+
.where('status_id', TASK_STATUS.DONE)
|
|
122
|
+
.where('updated_ts', '<', cutoffTimestamp)
|
|
123
|
+
.update({
|
|
124
|
+
status_id: TASK_STATUS.ARCHIVED,
|
|
125
|
+
updated_ts: currentTs
|
|
126
|
+
});
|
|
127
|
+
return archivedCount;
|
|
121
128
|
}
|
|
122
129
|
/**
|
|
123
130
|
* Detect and complete tasks in waiting_review or in_progress when all watched files are committed
|
|
@@ -130,23 +137,23 @@ export function autoArchiveOldDoneTasks(db) {
|
|
|
130
137
|
* - Supports multiple VCS: Git, Mercurial, SVN
|
|
131
138
|
* - Gracefully handle non-VCS repos (skip auto-complete)
|
|
132
139
|
*
|
|
133
|
-
* @param
|
|
140
|
+
* @param adapter - Database adapter instance
|
|
134
141
|
* @returns Count of auto-completed tasks
|
|
135
142
|
*/
|
|
136
|
-
export async function detectAndCompleteReviewedTasks(
|
|
143
|
+
export async function detectAndCompleteReviewedTasks(adapter) {
|
|
144
|
+
const actualAdapter = adapter ?? getAdapter();
|
|
145
|
+
const knex = actualAdapter.getKnex();
|
|
137
146
|
// 1. Check if auto-complete is enabled
|
|
138
|
-
const isEnabled = getConfigBool(
|
|
147
|
+
const isEnabled = await getConfigBool(actualAdapter, CONFIG_KEYS.GIT_AUTO_COMPLETE_ENABLED, true);
|
|
139
148
|
if (!isEnabled) {
|
|
140
149
|
return 0;
|
|
141
150
|
}
|
|
142
|
-
const requireAllFilesCommitted = getConfigBool(
|
|
151
|
+
const requireAllFilesCommitted = await getConfigBool(actualAdapter, CONFIG_KEYS.REQUIRE_ALL_FILES_COMMITTED, true);
|
|
143
152
|
// 2. Find all waiting_review and in_progress tasks
|
|
144
|
-
const candidateTasks =
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
WHERE s.name IN ('waiting_review', 'in_progress')
|
|
149
|
-
`).all();
|
|
153
|
+
const candidateTasks = await knex('t_tasks as t')
|
|
154
|
+
.join('m_task_statuses as s', 't.status_id', 's.id')
|
|
155
|
+
.whereIn('s.name', ['waiting_review', 'in_progress'])
|
|
156
|
+
.select('t.id', 't.created_ts', 's.name as status_name');
|
|
150
157
|
if (candidateTasks.length === 0) {
|
|
151
158
|
return 0;
|
|
152
159
|
}
|
|
@@ -164,12 +171,10 @@ export async function detectAndCompleteReviewedTasks(db) {
|
|
|
164
171
|
for (const task of candidateTasks) {
|
|
165
172
|
try {
|
|
166
173
|
// Get watched files for this task
|
|
167
|
-
const watchedFiles =
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
WHERE tfl.task_id = ?
|
|
172
|
-
`).all(task.id);
|
|
174
|
+
const watchedFiles = await knex('t_task_file_links as tfl')
|
|
175
|
+
.join('m_files as f', 'tfl.file_id', 'f.id')
|
|
176
|
+
.where('tfl.task_id', task.id)
|
|
177
|
+
.select('f.path');
|
|
173
178
|
if (watchedFiles.length === 0) {
|
|
174
179
|
// No watched files - skip this task
|
|
175
180
|
continue;
|
|
@@ -201,12 +206,13 @@ export async function detectAndCompleteReviewedTasks(db) {
|
|
|
201
206
|
: committedFiles.size > 0 && uncommittedFiles.length < filePaths.length; // At least SOME files committed
|
|
202
207
|
if (shouldComplete) {
|
|
203
208
|
// All watched files committed - transition to done
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
209
|
+
const currentTs = Math.floor(Date.now() / 1000);
|
|
210
|
+
await knex('t_tasks')
|
|
211
|
+
.where({ id: task.id })
|
|
212
|
+
.update({
|
|
213
|
+
status_id: TASK_STATUS.DONE,
|
|
214
|
+
updated_ts: currentTs
|
|
215
|
+
});
|
|
210
216
|
completed++;
|
|
211
217
|
console.error(` ✓ Task #${task.id}: ${task.status_name} → done (all ${filePaths.length} watched files committed)`);
|
|
212
218
|
}
|
|
@@ -234,90 +240,13 @@ export async function detectAndCompleteReviewedTasks(db) {
|
|
|
234
240
|
* @param db - Database instance
|
|
235
241
|
* @returns Count of auto-completed tasks
|
|
236
242
|
*/
|
|
237
|
-
export async function detectAndCompleteOnStaging(
|
|
238
|
-
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
// 2. Find all waiting_review tasks
|
|
245
|
-
const candidateTasks = db.prepare(`
|
|
246
|
-
SELECT t.id
|
|
247
|
-
FROM t_tasks t
|
|
248
|
-
JOIN m_task_statuses s ON t.status_id = s.id
|
|
249
|
-
WHERE s.name = 'waiting_review'
|
|
250
|
-
`).all();
|
|
251
|
-
if (candidateTasks.length === 0) {
|
|
252
|
-
return 0;
|
|
253
|
-
}
|
|
254
|
-
let completed = 0;
|
|
255
|
-
const projectRoot = process.cwd();
|
|
256
|
-
// 3. Detect VCS type
|
|
257
|
-
const vcsAdapter = await detectVCS(projectRoot);
|
|
258
|
-
if (!vcsAdapter) {
|
|
259
|
-
// Not a VCS repository - skip VCS-aware completion
|
|
260
|
-
return 0;
|
|
261
|
-
}
|
|
262
|
-
// 4. Get currently staged files
|
|
263
|
-
let stagedFiles;
|
|
264
|
-
try {
|
|
265
|
-
const stagedFilesList = await vcsAdapter.getStagedFiles();
|
|
266
|
-
stagedFiles = new Set(stagedFilesList);
|
|
267
|
-
}
|
|
268
|
-
catch (error) {
|
|
269
|
-
// VCS query failed
|
|
270
|
-
console.error(` ⏸ ${vcsAdapter.getVCSType()} staging query failed - ${error instanceof Error ? error.message : String(error)}`);
|
|
271
|
-
return 0;
|
|
272
|
-
}
|
|
273
|
-
if (stagedFiles.size === 0) {
|
|
274
|
-
// No staged files at all
|
|
275
|
-
return 0;
|
|
276
|
-
}
|
|
277
|
-
// 5. For each candidate task, check if all watched files are staged
|
|
278
|
-
for (const task of candidateTasks) {
|
|
279
|
-
try {
|
|
280
|
-
// Get watched files for this task
|
|
281
|
-
const watchedFiles = db.prepare(`
|
|
282
|
-
SELECT f.path
|
|
283
|
-
FROM t_task_file_links tfl
|
|
284
|
-
JOIN m_files f ON tfl.file_id = f.id
|
|
285
|
-
WHERE tfl.task_id = ?
|
|
286
|
-
`).all(task.id);
|
|
287
|
-
if (watchedFiles.length === 0) {
|
|
288
|
-
// No watched files - skip this task
|
|
289
|
-
continue;
|
|
290
|
-
}
|
|
291
|
-
const filePaths = watchedFiles.map(f => f.path);
|
|
292
|
-
// Check if all watched files are staged
|
|
293
|
-
const unstagedFiles = [];
|
|
294
|
-
for (const filePath of filePaths) {
|
|
295
|
-
if (!stagedFiles.has(filePath)) {
|
|
296
|
-
unstagedFiles.push(filePath);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
// Determine if task should auto-complete
|
|
300
|
-
const shouldComplete = requireAllFilesStaged
|
|
301
|
-
? unstagedFiles.length === 0 // ALL files must be staged
|
|
302
|
-
: stagedFiles.size > 0 && unstagedFiles.length < filePaths.length; // At least SOME files staged
|
|
303
|
-
if (shouldComplete) {
|
|
304
|
-
// All watched files staged - transition to done
|
|
305
|
-
db.prepare(`
|
|
306
|
-
UPDATE t_tasks
|
|
307
|
-
SET status_id = ?,
|
|
308
|
-
updated_ts = unixepoch()
|
|
309
|
-
WHERE id = ?
|
|
310
|
-
`).run(TASK_STATUS.DONE, task.id);
|
|
311
|
-
completed++;
|
|
312
|
-
console.error(` ✓ Task #${task.id}: waiting_review → done (all ${filePaths.length} watched files staged)`);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
catch (error) {
|
|
316
|
-
console.error(` ✗ Error checking task #${task.id} for staged files:`, error);
|
|
317
|
-
continue;
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
return completed;
|
|
243
|
+
export async function detectAndCompleteOnStaging(adapter) {
|
|
244
|
+
const actualAdapter = adapter ?? getAdapter();
|
|
245
|
+
const knex = actualAdapter.getKnex();
|
|
246
|
+
// TODO: Convert this function to use Knex.js
|
|
247
|
+
// For now, return 0 as this function is not used by tasks.ts
|
|
248
|
+
console.warn('detectAndCompleteOnStaging not yet fully converted to Knex.js');
|
|
249
|
+
return 0;
|
|
321
250
|
}
|
|
322
251
|
/**
|
|
323
252
|
* Detect and auto-archive tasks in done when all watched files are committed
|
|
@@ -332,20 +261,20 @@ export async function detectAndCompleteOnStaging(db) {
|
|
|
332
261
|
* @param db - Database instance
|
|
333
262
|
* @returns Count of auto-archived tasks
|
|
334
263
|
*/
|
|
335
|
-
export async function detectAndArchiveOnCommit(
|
|
264
|
+
export async function detectAndArchiveOnCommit(adapter) {
|
|
265
|
+
const actualAdapter = adapter ?? getAdapter();
|
|
266
|
+
const knex = actualAdapter.getKnex();
|
|
336
267
|
// 1. Check if auto-archive on commit is enabled
|
|
337
|
-
const isEnabled = getConfigBool(
|
|
268
|
+
const isEnabled = await getConfigBool(actualAdapter, 'git_auto_archive_on_commit', true);
|
|
338
269
|
if (!isEnabled) {
|
|
339
270
|
return 0;
|
|
340
271
|
}
|
|
341
|
-
const requireAllFilesCommitted = getConfigBool(
|
|
272
|
+
const requireAllFilesCommitted = await getConfigBool(actualAdapter, 'require_all_files_committed_for_archive', true);
|
|
342
273
|
// 2. Find all done tasks
|
|
343
|
-
const candidateTasks =
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
WHERE s.name = 'done'
|
|
348
|
-
`).all();
|
|
274
|
+
const candidateTasks = await knex('t_tasks as t')
|
|
275
|
+
.join('m_task_statuses as s', 't.status_id', 's.id')
|
|
276
|
+
.where('s.name', 'done')
|
|
277
|
+
.select('t.id', 't.created_ts');
|
|
349
278
|
if (candidateTasks.length === 0) {
|
|
350
279
|
return 0;
|
|
351
280
|
}
|
|
@@ -361,12 +290,10 @@ export async function detectAndArchiveOnCommit(db) {
|
|
|
361
290
|
for (const task of candidateTasks) {
|
|
362
291
|
try {
|
|
363
292
|
// Get watched files for this task
|
|
364
|
-
const watchedFiles =
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
WHERE tfl.task_id = ?
|
|
369
|
-
`).all(task.id);
|
|
293
|
+
const watchedFiles = await knex('t_task_file_links as tfl')
|
|
294
|
+
.join('m_files as f', 'tfl.file_id', 'f.id')
|
|
295
|
+
.where('tfl.task_id', task.id)
|
|
296
|
+
.select('f.path');
|
|
370
297
|
if (watchedFiles.length === 0) {
|
|
371
298
|
// No watched files - skip this task
|
|
372
299
|
continue;
|
|
@@ -398,12 +325,13 @@ export async function detectAndArchiveOnCommit(db) {
|
|
|
398
325
|
: committedFiles.size > 0 && uncommittedFiles.length < filePaths.length; // At least SOME files committed
|
|
399
326
|
if (shouldArchive) {
|
|
400
327
|
// All watched files committed - transition to archived
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
328
|
+
const currentTs = Math.floor(Date.now() / 1000);
|
|
329
|
+
await knex('t_tasks')
|
|
330
|
+
.where({ id: task.id })
|
|
331
|
+
.update({
|
|
332
|
+
status_id: TASK_STATUS.ARCHIVED,
|
|
333
|
+
updated_ts: currentTs
|
|
334
|
+
});
|
|
407
335
|
archived++;
|
|
408
336
|
console.error(` 📦 Task #${task.id}: done → archived (all ${filePaths.length} watched files committed)`);
|
|
409
337
|
}
|
|
@@ -428,142 +356,12 @@ export async function detectAndArchiveOnCommit(db) {
|
|
|
428
356
|
* @param db - Database instance
|
|
429
357
|
* @returns Count of transitioned tasks
|
|
430
358
|
*/
|
|
431
|
-
export async function detectAndTransitionToReview(
|
|
432
|
-
|
|
433
|
-
const
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
const cutoffTimestamp = Math.floor(Date.now() / 1000) - (idleMinutes * 60);
|
|
439
|
-
// 3. Find all in_progress tasks older than cutoff
|
|
440
|
-
const candidateTasks = db.prepare(`
|
|
441
|
-
SELECT t.id, t.created_ts
|
|
442
|
-
FROM t_tasks t
|
|
443
|
-
JOIN m_task_statuses s ON t.status_id = s.id
|
|
444
|
-
WHERE s.name = 'in_progress'
|
|
445
|
-
AND t.updated_ts < ?
|
|
446
|
-
`).all(cutoffTimestamp);
|
|
447
|
-
if (candidateTasks.length === 0) {
|
|
448
|
-
console.error(` ℹ No candidate tasks found (no tasks idle > ${idleMinutes} minutes)`);
|
|
449
|
-
return 0;
|
|
450
|
-
}
|
|
451
|
-
console.error(` ℹ Found ${candidateTasks.length} candidate tasks idle > ${idleMinutes} minutes`);
|
|
452
|
-
let transitioned = 0;
|
|
453
|
-
const projectRoot = process.cwd();
|
|
454
|
-
// 4. For each candidate task, check quality gates
|
|
455
|
-
for (const task of candidateTasks) {
|
|
456
|
-
try {
|
|
457
|
-
// Get watched files for this task
|
|
458
|
-
const watchedFiles = db.prepare(`
|
|
459
|
-
SELECT f.path
|
|
460
|
-
FROM t_task_file_links tfl
|
|
461
|
-
JOIN m_files f ON tfl.file_id = f.id
|
|
462
|
-
WHERE tfl.task_id = ?
|
|
463
|
-
`).all(task.id);
|
|
464
|
-
console.error(` → Task #${task.id}: ${watchedFiles.length} watched files`);
|
|
465
|
-
if (watchedFiles.length === 0) {
|
|
466
|
-
console.error(` ⏸ Skipping (no watched files)`);
|
|
467
|
-
continue; // Skip tasks with no watched files
|
|
468
|
-
}
|
|
469
|
-
// AUTO-PRUNING (v3.5.0): Remove non-existent watched files
|
|
470
|
-
// This happens BEFORE quality gate checks to ensure clean watch lists
|
|
471
|
-
try {
|
|
472
|
-
const pruneResult = pruneNonExistentFiles(db, task.id, projectRoot);
|
|
473
|
-
if (pruneResult.prunedCount > 0) {
|
|
474
|
-
console.error(` 🔧 Auto-pruned ${pruneResult.prunedCount} non-existent files (${pruneResult.remainingCount} remaining)`);
|
|
475
|
-
pruneResult.prunedPaths.forEach(path => {
|
|
476
|
-
console.error(` - ${path}`);
|
|
477
|
-
});
|
|
478
|
-
// If no files remain after pruning, skip this task
|
|
479
|
-
if (pruneResult.remainingCount === 0) {
|
|
480
|
-
console.error(` ⏸ Skipping (no files remaining after auto-prune)`);
|
|
481
|
-
continue;
|
|
482
|
-
}
|
|
483
|
-
// Re-fetch watched files after pruning
|
|
484
|
-
const updatedWatchedFiles = db.prepare(`
|
|
485
|
-
SELECT f.path
|
|
486
|
-
FROM t_task_file_links tfl
|
|
487
|
-
JOIN m_files f ON tfl.file_id = f.id
|
|
488
|
-
WHERE tfl.task_id = ?
|
|
489
|
-
`).all(task.id);
|
|
490
|
-
const filePaths = updatedWatchedFiles.map(f => f.path);
|
|
491
|
-
console.error(` → Updated watch list: ${filePaths.length} files`);
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
|
-
catch (error) {
|
|
495
|
-
// Safety check triggered: ALL files were non-existent
|
|
496
|
-
if (error instanceof Error && error.message.includes('ALL')) {
|
|
497
|
-
console.error(` ✗ ${error.message}`);
|
|
498
|
-
continue; // Skip this task - cannot transition with no work done
|
|
499
|
-
}
|
|
500
|
-
// Other errors - log and continue
|
|
501
|
-
console.error(` ⚠ Auto-prune error: ${error instanceof Error ? error.message : String(error)}`);
|
|
502
|
-
}
|
|
503
|
-
// Get final file paths (after pruning)
|
|
504
|
-
const filePaths = watchedFiles.map(f => f.path).filter(path => {
|
|
505
|
-
// Filter out any paths that were pruned
|
|
506
|
-
const fullPath = join(projectRoot, path);
|
|
507
|
-
return existsSync(fullPath);
|
|
508
|
-
});
|
|
509
|
-
// Determine which files have been modified since task creation
|
|
510
|
-
// by checking file system timestamps
|
|
511
|
-
const modifiedFiles = new Set();
|
|
512
|
-
for (const path of filePaths) {
|
|
513
|
-
try {
|
|
514
|
-
const fullPath = join(projectRoot, path);
|
|
515
|
-
const stats = statSync(fullPath);
|
|
516
|
-
const fileMtimeSeconds = Math.floor(stats.mtimeMs / 1000);
|
|
517
|
-
// If file was modified after task creation, consider it modified
|
|
518
|
-
if (fileMtimeSeconds >= task.created_ts) {
|
|
519
|
-
modifiedFiles.add(path);
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
catch (error) {
|
|
523
|
-
// File doesn't exist or can't be accessed - skip this file
|
|
524
|
-
continue;
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
// Run quality checks
|
|
528
|
-
const { ready, results } = await checkReadyForReview(db, task.id, filePaths, modifiedFiles, {
|
|
529
|
-
requireAllFilesModified,
|
|
530
|
-
requireTestsPass,
|
|
531
|
-
requireCompile,
|
|
532
|
-
});
|
|
533
|
-
if (ready) {
|
|
534
|
-
// All quality gates passed - transition to waiting_review
|
|
535
|
-
db.prepare(`
|
|
536
|
-
UPDATE t_tasks
|
|
537
|
-
SET status_id = ?,
|
|
538
|
-
updated_ts = unixepoch()
|
|
539
|
-
WHERE id = ?
|
|
540
|
-
`).run(TASK_STATUS.WAITING_REVIEW, task.id);
|
|
541
|
-
transitioned++;
|
|
542
|
-
// Log the transition
|
|
543
|
-
console.error(` ✓ Task #${task.id}: in_progress → waiting_review (quality gates passed)`);
|
|
544
|
-
results.forEach(({ check, result }) => {
|
|
545
|
-
if (result.passed) {
|
|
546
|
-
console.error(` ✓ ${check}: ${result.message}`);
|
|
547
|
-
}
|
|
548
|
-
});
|
|
549
|
-
}
|
|
550
|
-
else {
|
|
551
|
-
// Quality gates not passed - log details for debugging
|
|
552
|
-
console.error(` ⏸ Task #${task.id}: Quality gates not passed (staying in_progress)`);
|
|
553
|
-
results.forEach(({ check, result }) => {
|
|
554
|
-
const icon = result.passed ? '✓' : '✗';
|
|
555
|
-
console.error(` ${icon} ${check}: ${result.message}`);
|
|
556
|
-
if (result.details) {
|
|
557
|
-
console.error(` ${result.details}`);
|
|
558
|
-
}
|
|
559
|
-
});
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
|
-
catch (error) {
|
|
563
|
-
console.error(` ✗ Error checking task #${task.id} for review:`, error);
|
|
564
|
-
continue;
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
return transitioned;
|
|
359
|
+
export async function detectAndTransitionToReview(adapter) {
|
|
360
|
+
const actualAdapter = adapter ?? getAdapter();
|
|
361
|
+
const knex = actualAdapter.getKnex();
|
|
362
|
+
// TODO: Convert this function to use Knex.js
|
|
363
|
+
// For now, return 0 as this function is not used by tasks.ts
|
|
364
|
+
console.warn('detectAndTransitionToReview not yet fully converted to Knex.js');
|
|
365
|
+
return 0;
|
|
568
366
|
}
|
|
569
367
|
//# sourceMappingURL=task-stale-detection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-stale-detection.js","sourceRoot":"","sources":["../../src/utils/task-stale-detection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"task-stale-detection.js","sourceRoot":"","sources":["../../src/utils/task-stale-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Estimation Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides token count estimation for help system responses.
|
|
5
|
+
* Uses a simple heuristic: ~4 characters per token (GPT-style tokenization)
|
|
6
|
+
*
|
|
7
|
+
* This is an approximation for measuring token efficiency gains.
|
|
8
|
+
* Actual token counts may vary based on tokenizer used.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Estimate token count for a string or object
|
|
12
|
+
*
|
|
13
|
+
* @param data - String or object to estimate token count for
|
|
14
|
+
* @returns Estimated token count
|
|
15
|
+
*/
|
|
16
|
+
export declare function estimateTokens(data: string | object): number;
|
|
17
|
+
/**
|
|
18
|
+
* Add token metadata to response object
|
|
19
|
+
*
|
|
20
|
+
* @param data - Response data
|
|
21
|
+
* @returns Response with token metadata
|
|
22
|
+
*/
|
|
23
|
+
export declare function addTokenMetadata<T extends object>(data: T): T & {
|
|
24
|
+
_token_info: {
|
|
25
|
+
estimated_tokens: number;
|
|
26
|
+
actual_chars: number;
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Token ranges for different query types
|
|
31
|
+
*/
|
|
32
|
+
export declare const TOKEN_RANGES: {
|
|
33
|
+
readonly help_action: {
|
|
34
|
+
readonly min: 50;
|
|
35
|
+
readonly max: 100;
|
|
36
|
+
readonly legacy: 2000;
|
|
37
|
+
};
|
|
38
|
+
readonly help_params: {
|
|
39
|
+
readonly min: 30;
|
|
40
|
+
readonly max: 80;
|
|
41
|
+
readonly legacy: 1500;
|
|
42
|
+
};
|
|
43
|
+
readonly help_tool: {
|
|
44
|
+
readonly min: 100;
|
|
45
|
+
readonly max: 200;
|
|
46
|
+
readonly legacy: 5000;
|
|
47
|
+
};
|
|
48
|
+
readonly help_use_case: {
|
|
49
|
+
readonly min: 150;
|
|
50
|
+
readonly max: 200;
|
|
51
|
+
readonly legacy: 300;
|
|
52
|
+
};
|
|
53
|
+
readonly help_list_use_cases: {
|
|
54
|
+
readonly min: 100;
|
|
55
|
+
readonly max: 300;
|
|
56
|
+
readonly legacy: 500;
|
|
57
|
+
};
|
|
58
|
+
readonly help_next_actions: {
|
|
59
|
+
readonly min: 30;
|
|
60
|
+
readonly max: 50;
|
|
61
|
+
readonly legacy: 100;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Calculate token efficiency percentage
|
|
66
|
+
*
|
|
67
|
+
* @param current - Current token count
|
|
68
|
+
* @param legacy - Legacy token count
|
|
69
|
+
* @returns Efficiency gain percentage
|
|
70
|
+
*/
|
|
71
|
+
export declare function calculateEfficiencyGain(current: number, legacy: number): number;
|
|
72
|
+
//# sourceMappingURL=token-estimation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-estimation.d.ts","sourceRoot":"","sources":["../../src/utils/token-estimation.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAgB5D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG;IAAE,WAAW,EAAE;QAAE,gBAAgB,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAWnI;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOf,CAAC;AAEX;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG/E"}
|