dino-spec 13.6.1 → 14.1.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/README.md +118 -5
- package/dist/commands/hud.d.ts +1 -8
- package/dist/commands/hud.d.ts.map +1 -1
- package/dist/commands/hud.js +4 -18
- package/dist/commands/hud.js.map +1 -1
- package/dist/core/agents/ambiguity-resolver.d.ts +118 -0
- package/dist/core/agents/ambiguity-resolver.d.ts.map +1 -0
- package/dist/core/agents/ambiguity-resolver.js +327 -0
- package/dist/core/agents/ambiguity-resolver.js.map +1 -0
- package/dist/core/agents/confidence-gate.d.ts +99 -0
- package/dist/core/agents/confidence-gate.d.ts.map +1 -0
- package/dist/core/agents/confidence-gate.js +295 -0
- package/dist/core/agents/confidence-gate.js.map +1 -0
- package/dist/core/agents/feedback-collector.d.ts +108 -0
- package/dist/core/agents/feedback-collector.d.ts.map +1 -0
- package/dist/core/agents/feedback-collector.js +313 -0
- package/dist/core/agents/feedback-collector.js.map +1 -0
- package/dist/core/agents/parallel-reviewer.d.ts +88 -0
- package/dist/core/agents/parallel-reviewer.d.ts.map +1 -0
- package/dist/core/agents/parallel-reviewer.js +459 -0
- package/dist/core/agents/parallel-reviewer.js.map +1 -0
- package/dist/core/agents/reviewer-loop.d.ts +102 -0
- package/dist/core/agents/reviewer-loop.d.ts.map +1 -0
- package/dist/core/agents/reviewer-loop.js +373 -0
- package/dist/core/agents/reviewer-loop.js.map +1 -0
- package/dist/core/agents/skill-auditor.d.ts +82 -0
- package/dist/core/agents/skill-auditor.d.ts.map +1 -0
- package/dist/core/agents/skill-auditor.js +278 -0
- package/dist/core/agents/skill-auditor.js.map +1 -0
- package/dist/core/config/feature-flags.d.ts +25 -1
- package/dist/core/config/feature-flags.d.ts.map +1 -1
- package/dist/core/config/feature-flags.js +7 -1
- package/dist/core/config/feature-flags.js.map +1 -1
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts +5 -0
- package/dist/core/context/__tests__/budget-thresholds.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js +223 -0
- package/dist/core/context/__tests__/budget-thresholds.test.js.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts +5 -0
- package/dist/core/context/__tests__/compaction-engine.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/compaction-engine.test.js +474 -0
- package/dist/core/context/__tests__/compaction-engine.test.js.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts +5 -0
- package/dist/core/context/__tests__/output-persistence.test.d.ts.map +1 -0
- package/dist/core/context/__tests__/output-persistence.test.js +246 -0
- package/dist/core/context/__tests__/output-persistence.test.js.map +1 -0
- package/dist/core/context/auto-injection-engine.d.ts +10 -1
- package/dist/core/context/auto-injection-engine.d.ts.map +1 -1
- package/dist/core/context/auto-injection-engine.js +45 -2
- package/dist/core/context/auto-injection-engine.js.map +1 -1
- package/dist/core/context/budget-thresholds.d.ts +167 -0
- package/dist/core/context/budget-thresholds.d.ts.map +1 -0
- package/dist/core/context/budget-thresholds.js +234 -0
- package/dist/core/context/budget-thresholds.js.map +1 -0
- package/dist/core/context/compaction-engine.d.ts +193 -0
- package/dist/core/context/compaction-engine.d.ts.map +1 -0
- package/dist/core/context/compaction-engine.js +376 -0
- package/dist/core/context/compaction-engine.js.map +1 -0
- package/dist/core/context/context-health.d.ts +27 -2
- package/dist/core/context/context-health.d.ts.map +1 -1
- package/dist/core/context/context-health.js +98 -12
- package/dist/core/context/context-health.js.map +1 -1
- package/dist/core/context/focus-resource-loader.d.ts +143 -0
- package/dist/core/context/focus-resource-loader.d.ts.map +1 -0
- package/dist/core/context/focus-resource-loader.js +305 -0
- package/dist/core/context/focus-resource-loader.js.map +1 -0
- package/dist/core/context/index.d.ts +10 -5
- package/dist/core/context/index.d.ts.map +1 -1
- package/dist/core/context/index.js +40 -5
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/lazy-loader.d.ts +44 -1
- package/dist/core/context/lazy-loader.d.ts.map +1 -1
- package/dist/core/context/lazy-loader.js +59 -1
- package/dist/core/context/lazy-loader.js.map +1 -1
- package/dist/core/context/output-persistence.d.ts +142 -0
- package/dist/core/context/output-persistence.d.ts.map +1 -0
- package/dist/core/context/output-persistence.js +242 -0
- package/dist/core/context/output-persistence.js.map +1 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.d.ts +7 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.d.ts.map +1 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.js +335 -0
- package/dist/core/context-repl/__tests__/repl-environment.test.js.map +1 -0
- package/dist/core/context-repl/context-window-monitor.d.ts +181 -0
- package/dist/core/context-repl/context-window-monitor.d.ts.map +1 -0
- package/dist/core/context-repl/context-window-monitor.js +309 -0
- package/dist/core/context-repl/context-window-monitor.js.map +1 -0
- package/dist/core/context-repl/index.d.ts +8 -3
- package/dist/core/context-repl/index.d.ts.map +1 -1
- package/dist/core/context-repl/index.js +11 -3
- package/dist/core/context-repl/index.js.map +1 -1
- package/dist/core/context-repl/repl-environment.d.ts +66 -0
- package/dist/core/context-repl/repl-environment.d.ts.map +1 -0
- package/dist/core/context-repl/repl-environment.js +795 -0
- package/dist/core/context-repl/repl-environment.js.map +1 -0
- package/dist/core/context-repl/types.d.ts +277 -1
- package/dist/core/context-repl/types.d.ts.map +1 -1
- package/dist/core/context-repl/types.js +52 -1
- package/dist/core/context-repl/types.js.map +1 -1
- package/dist/core/environment/__tests__/pre-verify.test.d.ts +5 -0
- package/dist/core/environment/__tests__/pre-verify.test.d.ts.map +1 -0
- package/dist/core/environment/__tests__/pre-verify.test.js +343 -0
- package/dist/core/environment/__tests__/pre-verify.test.js.map +1 -0
- package/dist/core/environment/index.d.ts +8 -0
- package/dist/core/environment/index.d.ts.map +1 -0
- package/dist/core/environment/index.js +7 -0
- package/dist/core/environment/index.js.map +1 -0
- package/dist/core/environment/pre-verify.d.ts +63 -0
- package/dist/core/environment/pre-verify.d.ts.map +1 -0
- package/dist/core/environment/pre-verify.js +221 -0
- package/dist/core/environment/pre-verify.js.map +1 -0
- package/dist/core/environment/types.d.ts +37 -0
- package/dist/core/environment/types.d.ts.map +1 -0
- package/dist/core/environment/types.js +5 -0
- package/dist/core/environment/types.js.map +1 -0
- package/dist/core/generator/claude-md.js +1 -1
- package/dist/core/intelligence/context-budget.d.ts +10 -5
- package/dist/core/intelligence/context-budget.d.ts.map +1 -1
- package/dist/core/intelligence/context-budget.js +12 -5
- package/dist/core/intelligence/context-budget.js.map +1 -1
- package/dist/core/provider/storage.d.ts.map +1 -1
- package/dist/core/provider/storage.js +1 -2
- package/dist/core/provider/storage.js.map +1 -1
- package/dist/hooks/post-edit.js +73 -0
- package/dist/hooks/post-edit.js.map +1 -1
- package/dist/hooks/session-start.js +115 -0
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/hooks/types.js +1 -1
- package/dist/hooks/user-prompt-submit.js +100 -0
- package/dist/hooks/user-prompt-submit.js.map +1 -1
- package/dist/hud/config.d.ts +3 -28
- package/dist/hud/config.d.ts.map +1 -1
- package/dist/hud/config.js +8 -60
- package/dist/hud/config.js.map +1 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +0 -1
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/render/budget-bar.d.ts +0 -2
- package/dist/hud/render/budget-bar.d.ts.map +1 -1
- package/dist/hud/render/budget-bar.js +5 -8
- package/dist/hud/render/budget-bar.js.map +1 -1
- package/dist/hud/stdin.d.ts +0 -3
- package/dist/hud/stdin.d.ts.map +1 -1
- package/dist/hud/stdin.js +2 -29
- package/dist/hud/stdin.js.map +1 -1
- package/dist/hud/types.d.ts +0 -2
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts +5 -0
- package/dist/mcp/__tests__/dynamic-updates.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js +314 -0
- package/dist/mcp/__tests__/dynamic-updates.test.js.map +1 -0
- package/dist/mcp/dynamic-updates.d.ts +167 -0
- package/dist/mcp/dynamic-updates.d.ts.map +1 -0
- package/dist/mcp/dynamic-updates.js +313 -0
- package/dist/mcp/dynamic-updates.js.map +1 -0
- package/dist/mcp/focus-filter.d.ts +74 -0
- package/dist/mcp/focus-filter.d.ts.map +1 -0
- package/dist/mcp/focus-filter.js +229 -0
- package/dist/mcp/focus-filter.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -2
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +5 -2
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/registry.d.ts +4 -4
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +17 -16
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/server.d.ts +2 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +12 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-tiers.d.ts.map +1 -1
- package/dist/mcp/tool-tiers.js +5 -0
- package/dist/mcp/tool-tiers.js.map +1 -1
- package/dist/mcp/tools/__tests__/environment.test.d.ts +5 -0
- package/dist/mcp/tools/__tests__/environment.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/environment.test.js +219 -0
- package/dist/mcp/tools/__tests__/environment.test.js.map +1 -0
- package/dist/mcp/tools/auto-inject.d.ts +36 -0
- package/dist/mcp/tools/auto-inject.d.ts.map +1 -0
- package/dist/mcp/tools/auto-inject.js +143 -0
- package/dist/mcp/tools/auto-inject.js.map +1 -0
- package/dist/mcp/tools/auto-unload.d.ts +29 -0
- package/dist/mcp/tools/auto-unload.d.ts.map +1 -0
- package/dist/mcp/tools/auto-unload.js +151 -0
- package/dist/mcp/tools/auto-unload.js.map +1 -0
- package/dist/mcp/tools/context-repl.d.ts +48 -0
- package/dist/mcp/tools/context-repl.d.ts.map +1 -0
- package/dist/mcp/tools/context-repl.js +290 -0
- package/dist/mcp/tools/context-repl.js.map +1 -0
- package/dist/mcp/tools/environment.d.ts +27 -0
- package/dist/mcp/tools/environment.d.ts.map +1 -0
- package/dist/mcp/tools/environment.js +97 -0
- package/dist/mcp/tools/environment.js.map +1 -0
- package/dist/mcp/tools/feedback.d.ts +63 -0
- package/dist/mcp/tools/feedback.d.ts.map +1 -0
- package/dist/mcp/tools/feedback.js +255 -0
- package/dist/mcp/tools/feedback.js.map +1 -0
- package/dist/mcp/tools/health.d.ts +29 -0
- package/dist/mcp/tools/health.d.ts.map +1 -0
- package/dist/mcp/tools/health.js +171 -0
- package/dist/mcp/tools/health.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +9 -2
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +37 -2
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/output-persistence.d.ts +44 -0
- package/dist/mcp/tools/output-persistence.d.ts.map +1 -0
- package/dist/mcp/tools/output-persistence.js +208 -0
- package/dist/mcp/tools/output-persistence.js.map +1 -0
- package/dist/mcp-server.d.ts +2 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +36 -7
- package/dist/mcp-server.js.map +1 -1
- package/dist/rules/index.js +2 -2
- package/dist/utils/exec.js +2 -2
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/gitignore.d.ts.map +1 -1
- package/dist/utils/gitignore.js +5 -0
- package/dist/utils/gitignore.js.map +1 -1
- package/package.json +76 -77
- package/dist/hud/config-tui.d.ts +0 -25
- package/dist/hud/config-tui.d.ts.map +0 -1
- package/dist/hud/config-tui.js +0 -199
- package/dist/hud/config-tui.js.map +0 -1
- package/dist/hud/models.d.ts +0 -58
- package/dist/hud/models.d.ts.map +0 -1
- package/dist/hud/models.js +0 -124
- package/dist/hud/models.js.map +0 -1
- package/dist/hud/token-estimator.d.ts +0 -79
- package/dist/hud/token-estimator.d.ts.map +0 -1
- package/dist/hud/token-estimator.js +0 -126
- package/dist/hud/token-estimator.js.map +0 -1
|
@@ -23,10 +23,9 @@ const MINI_EMPTY = '\u2592'; // Mini bar empty (▒)
|
|
|
23
23
|
*
|
|
24
24
|
* @example
|
|
25
25
|
* "[████████░░] 78%"
|
|
26
|
-
* "[████████░░] ~78%" (with tilde for estimated values)
|
|
27
26
|
*/
|
|
28
27
|
export function renderBudgetBar(budget, config, health) {
|
|
29
|
-
const { percentage, status
|
|
28
|
+
const { percentage, status } = budget;
|
|
30
29
|
const { thresholds } = config;
|
|
31
30
|
const { useColors } = config.format;
|
|
32
31
|
// Calculate bar segments (10 total)
|
|
@@ -47,8 +46,8 @@ export function renderBudgetBar(budget, config, health) {
|
|
|
47
46
|
else {
|
|
48
47
|
coloredBar = filledBar + emptyBar;
|
|
49
48
|
}
|
|
50
|
-
// Format percentage
|
|
51
|
-
const pctStr =
|
|
49
|
+
// Format percentage
|
|
50
|
+
const pctStr = `${percentage}%`;
|
|
52
51
|
return `[${coloredBar}] ${pctStr}`;
|
|
53
52
|
}
|
|
54
53
|
/**
|
|
@@ -75,10 +74,9 @@ function getDirectionIndicator(direction, useColors) {
|
|
|
75
74
|
*
|
|
76
75
|
* @example
|
|
77
76
|
* "████████▒▒▒▒ 45%↑" (8 segments default) or just "45%" if colors disabled
|
|
78
|
-
* "████████▒▒▒▒ ~45%↑" (with tilde for estimated values)
|
|
79
77
|
*/
|
|
80
78
|
export function renderBudgetCompact(budget, config, health) {
|
|
81
|
-
const { percentage, status, direction
|
|
79
|
+
const { percentage, status, direction } = budget;
|
|
82
80
|
const { thresholds } = config;
|
|
83
81
|
const { useColors, budgetBarWidth } = config.format;
|
|
84
82
|
// Build mini bar using configurable width (default 8)
|
|
@@ -87,8 +85,7 @@ export function renderBudgetCompact(budget, config, health) {
|
|
|
87
85
|
const empty = barLength - filled;
|
|
88
86
|
const filledBar = MINI_FILLED.repeat(filled);
|
|
89
87
|
const emptyBar = MINI_EMPTY.repeat(empty);
|
|
90
|
-
|
|
91
|
-
const pctStr = isEstimated ? `~${percentage}%` : `${percentage}%`;
|
|
88
|
+
const pctStr = `${percentage}%`;
|
|
92
89
|
const dirIndicator = getDirectionIndicator(direction, useColors);
|
|
93
90
|
if (!useColors) {
|
|
94
91
|
return `${filledBar}${emptyBar} ${pctStr}${dirIndicator}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"budget-bar.js","sourceRoot":"","sources":["../../../src/hud/render/budget-bar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;GAEG;AACH,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAE,iBAAiB;AAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAG,kBAAkB;AAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAE,kBAAkB;AACjD,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAG,qBAAqB;AAEpD
|
|
1
|
+
{"version":3,"file":"budget-bar.js","sourceRoot":"","sources":["../../../src/hud/render/budget-bar.ts"],"names":[],"mappings":"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"}
|
package/dist/hud/stdin.d.ts
CHANGED
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Reads and parses JSON data from Claude Code stdin when running
|
|
5
5
|
* as a statusline script. Handles both nested (new) and flat (old) formats.
|
|
6
|
-
*
|
|
7
|
-
* For non-Anthropic models (GLM, MiniMax), provides fallback detection
|
|
8
|
-
* to trigger token estimation when native percentage is unavailable.
|
|
9
6
|
*/
|
|
10
7
|
import type { ClaudeCodeInput } from './types.js';
|
|
11
8
|
/**
|
package/dist/hud/stdin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../../src/hud/stdin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stdin.d.ts","sourceRoot":"","sources":["../../src/hud/stdin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,YAAY,CAAC;AAgOhF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,CA4C3D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,CAWlE"}
|
package/dist/hud/stdin.js
CHANGED
|
@@ -3,13 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Reads and parses JSON data from Claude Code stdin when running
|
|
5
5
|
* as a statusline script. Handles both nested (new) and flat (old) formats.
|
|
6
|
-
*
|
|
7
|
-
* For non-Anthropic models (GLM, MiniMax), provides fallback detection
|
|
8
|
-
* to trigger token estimation when native percentage is unavailable.
|
|
9
6
|
*/
|
|
10
7
|
import { appendFileSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
11
8
|
import { join } from 'node:path';
|
|
12
|
-
import { isNonAnthropicModel } from './models.js';
|
|
13
9
|
/**
|
|
14
10
|
* Debug logging for stdin data
|
|
15
11
|
* Enable with: DINO_HUD_DEBUG=1
|
|
@@ -192,43 +188,20 @@ function extractModelId(raw) {
|
|
|
192
188
|
}
|
|
193
189
|
return raw.model;
|
|
194
190
|
}
|
|
195
|
-
/**
|
|
196
|
-
* Check if estimation is needed for this model
|
|
197
|
-
*
|
|
198
|
-
* Returns true when:
|
|
199
|
-
* - Model is non-Anthropic (GLM, MiniMax, etc.)
|
|
200
|
-
* - AND native percentage is missing or zero
|
|
201
|
-
*/
|
|
202
|
-
function needsTokenEstimation(modelName, percentage) {
|
|
203
|
-
// If we have native percentage, no estimation needed
|
|
204
|
-
if (percentage > 0) {
|
|
205
|
-
return false;
|
|
206
|
-
}
|
|
207
|
-
// If model is non-Anthropic, estimation is needed
|
|
208
|
-
return isNonAnthropicModel(modelName);
|
|
209
|
-
}
|
|
210
191
|
/**
|
|
211
192
|
* Normalize raw Claude Code input to our standard format
|
|
212
|
-
*
|
|
213
|
-
* For non-Anthropic models without native percentage data,
|
|
214
|
-
* marks the input for token estimation.
|
|
215
193
|
*/
|
|
216
194
|
function normalizeInput(raw) {
|
|
217
|
-
const model = extractModelName(raw);
|
|
218
|
-
const percentage = extractPercentage(raw);
|
|
219
|
-
// Check if this is a non-Anthropic model needing estimation
|
|
220
|
-
const isEstimated = needsTokenEstimation(model, percentage);
|
|
221
195
|
return {
|
|
222
|
-
model,
|
|
196
|
+
model: extractModelName(raw),
|
|
223
197
|
modelId: extractModelId(raw),
|
|
224
198
|
context_window_size: extractContextWindowSize(raw),
|
|
225
199
|
token_usage: extractTokenUsage(raw),
|
|
226
|
-
percentage,
|
|
200
|
+
percentage: extractPercentage(raw),
|
|
227
201
|
sessionId: raw.session_id,
|
|
228
202
|
transcriptPath: raw.transcript_path,
|
|
229
203
|
version: raw.version,
|
|
230
204
|
cost: extractCost(raw),
|
|
231
|
-
isEstimated,
|
|
232
205
|
};
|
|
233
206
|
}
|
|
234
207
|
/**
|
package/dist/hud/stdin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdin.js","sourceRoot":"","sources":["../../src/hud/stdin.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"stdin.js","sourceRoot":"","sources":["../../src/hud/stdin.ts"],"names":[],"mappings":"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"}
|
package/dist/hud/types.d.ts
CHANGED
|
@@ -124,7 +124,6 @@ export interface ClaudeCodeInput {
|
|
|
124
124
|
version?: string;
|
|
125
125
|
cost?: CostInfo;
|
|
126
126
|
plan?: SubscriptionPlan;
|
|
127
|
-
isEstimated?: boolean;
|
|
128
127
|
}
|
|
129
128
|
/**
|
|
130
129
|
* Git branch information
|
|
@@ -293,7 +292,6 @@ export interface BudgetInfo {
|
|
|
293
292
|
status: 'good' | 'reminder' | 'warning' | 'critical';
|
|
294
293
|
direction?: 'up' | 'down' | 'stable';
|
|
295
294
|
lastUpdated?: string;
|
|
296
|
-
isEstimated?: boolean;
|
|
297
295
|
}
|
|
298
296
|
/**
|
|
299
297
|
* File cache statistics (from file-cache.ts)
|
package/dist/hud/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hud/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/hud/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-updates.test.d.ts","sourceRoot":"","sources":["../../../src/mcp/__tests__/dynamic-updates.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic MCP Tool Updates Tests - v14.0.0
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
5
|
+
import { DynamicUpdateHandler, dynamicUpdateHandler, notifyPhaseTransition, notifyFeatureFlagChange, notifyToolRegistration, notifyFocusChange, manualRefresh, createListChangedNotification, formatDynamicUpdateResult, DYNAMIC_UPDATES_FEATURE_FLAG, MIN_UPDATE_INTERVAL_MS, DEFAULT_DEBOUNCE_MS, } from '../dynamic-updates.js';
|
|
6
|
+
describe('Dynamic MCP Tool Updates', () => {
|
|
7
|
+
let handler;
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
handler = new DynamicUpdateHandler();
|
|
10
|
+
});
|
|
11
|
+
afterEach(() => {
|
|
12
|
+
handler.reset();
|
|
13
|
+
dynamicUpdateHandler.reset();
|
|
14
|
+
});
|
|
15
|
+
describe('Constants', () => {
|
|
16
|
+
it('should have correct feature flag name', () => {
|
|
17
|
+
expect(DYNAMIC_UPDATES_FEATURE_FLAG).toBe('enableDynamicToolUpdates');
|
|
18
|
+
});
|
|
19
|
+
it('should have minimum update interval', () => {
|
|
20
|
+
expect(MIN_UPDATE_INTERVAL_MS).toBe(100);
|
|
21
|
+
});
|
|
22
|
+
it('should have default debounce delay', () => {
|
|
23
|
+
expect(DEFAULT_DEBOUNCE_MS).toBe(50);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
describe('DynamicUpdateHandler', () => {
|
|
27
|
+
describe('enabled state', () => {
|
|
28
|
+
it('should be enabled by default', () => {
|
|
29
|
+
expect(handler.isEnabled()).toBe(true);
|
|
30
|
+
});
|
|
31
|
+
it('should allow enabling and disabling', () => {
|
|
32
|
+
handler.setEnabled(false);
|
|
33
|
+
expect(handler.isEnabled()).toBe(false);
|
|
34
|
+
handler.setEnabled(true);
|
|
35
|
+
expect(handler.isEnabled()).toBe(true);
|
|
36
|
+
});
|
|
37
|
+
it('should not execute updates when disabled', async () => {
|
|
38
|
+
handler.setEnabled(false);
|
|
39
|
+
const result = await handler.forceUpdate('manual_refresh');
|
|
40
|
+
expect(result.toolsRefreshed).toBe(0);
|
|
41
|
+
expect(result.cachesCleared).toEqual([]);
|
|
42
|
+
expect(result.durationMs).toBe(0);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe('handleListChanged', () => {
|
|
46
|
+
it('should execute update with phase_transition trigger', async () => {
|
|
47
|
+
const result = await handler.handleListChanged('phase_transition');
|
|
48
|
+
expect(result.toolsRefreshed).toBeGreaterThanOrEqual(0);
|
|
49
|
+
expect(result.cachesCleared).toContain('phase_cache');
|
|
50
|
+
expect(result.durationMs).toBeGreaterThanOrEqual(0);
|
|
51
|
+
});
|
|
52
|
+
it('should execute update with feature_flag_change trigger', async () => {
|
|
53
|
+
const result = await handler.handleListChanged('feature_flag_change');
|
|
54
|
+
expect(result.cachesCleared).toContain('phase_cache');
|
|
55
|
+
});
|
|
56
|
+
it('should execute update with tool_registration trigger', async () => {
|
|
57
|
+
const result = await handler.handleListChanged('tool_registration');
|
|
58
|
+
expect(result.cachesCleared).toContain('phase_cache');
|
|
59
|
+
});
|
|
60
|
+
it('should execute update with focus_change trigger', async () => {
|
|
61
|
+
const result = await handler.handleListChanged('focus_change');
|
|
62
|
+
expect(result.cachesCleared).toContain('phase_cache');
|
|
63
|
+
});
|
|
64
|
+
it('should debounce rapid updates', async () => {
|
|
65
|
+
// With debouncing, the last call wins and all previous promises resolve with its result
|
|
66
|
+
// We test that rapid calls don't cause errors and eventually resolve
|
|
67
|
+
const results = [];
|
|
68
|
+
// Create promises that will all resolve when the debounced update completes
|
|
69
|
+
const promise1 = handler.handleListChanged('phase_transition').then(r => { results.push(r); return r; });
|
|
70
|
+
const promise2 = handler.handleListChanged('feature_flag_change').then(r => { results.push(r); return r; });
|
|
71
|
+
const promise3 = handler.handleListChanged('tool_registration').then(r => { results.push(r); return r; });
|
|
72
|
+
// Wait for debounce timeout plus a buffer
|
|
73
|
+
await new Promise(resolve => setTimeout(resolve, DEFAULT_DEBOUNCE_MS + 50));
|
|
74
|
+
// The last promise should have resolved by now
|
|
75
|
+
const result3 = await promise3;
|
|
76
|
+
// All results should be the same (the debounced result)
|
|
77
|
+
expect(result3.cachesCleared.length).toBeGreaterThanOrEqual(0);
|
|
78
|
+
}, 5000); // Explicit shorter timeout
|
|
79
|
+
});
|
|
80
|
+
describe('forceUpdate', () => {
|
|
81
|
+
it('should execute update immediately', async () => {
|
|
82
|
+
const result = await handler.forceUpdate('manual_refresh');
|
|
83
|
+
expect(result.cachesCleared).toContain('phase_cache');
|
|
84
|
+
expect(result.durationMs).toBeGreaterThanOrEqual(0);
|
|
85
|
+
});
|
|
86
|
+
it('should respect minimum interval', async () => {
|
|
87
|
+
// First update
|
|
88
|
+
const result1 = await handler.forceUpdate('manual_refresh');
|
|
89
|
+
expect(result1.cachesCleared).toContain('phase_cache');
|
|
90
|
+
// Immediate second update should be throttled
|
|
91
|
+
const result2 = await handler.forceUpdate('manual_refresh');
|
|
92
|
+
expect(result2.toolsRefreshed).toBe(0);
|
|
93
|
+
expect(result2.cachesCleared).toEqual([]);
|
|
94
|
+
});
|
|
95
|
+
it('should execute after minimum interval passes', async () => {
|
|
96
|
+
// First update
|
|
97
|
+
await handler.forceUpdate('manual_refresh');
|
|
98
|
+
// Wait for minimum interval
|
|
99
|
+
await new Promise(resolve => setTimeout(resolve, MIN_UPDATE_INTERVAL_MS + 10));
|
|
100
|
+
// Second update should execute
|
|
101
|
+
const result = await handler.forceUpdate('manual_refresh');
|
|
102
|
+
expect(result.cachesCleared).toContain('phase_cache');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
describe('notification callback', () => {
|
|
106
|
+
it('should call notification callback when set', async () => {
|
|
107
|
+
const callback = vi.fn();
|
|
108
|
+
handler.setNotificationCallback(callback);
|
|
109
|
+
await handler.forceUpdate('manual_refresh');
|
|
110
|
+
expect(callback).toHaveBeenCalledTimes(1);
|
|
111
|
+
expect(callback).toHaveBeenCalledWith(expect.objectContaining({
|
|
112
|
+
type: 'tools/list_changed',
|
|
113
|
+
timestamp: expect.any(String),
|
|
114
|
+
}));
|
|
115
|
+
});
|
|
116
|
+
it('should not send notification when callback not set', async () => {
|
|
117
|
+
const result = await handler.forceUpdate('manual_refresh');
|
|
118
|
+
expect(result.notificationSent).toBe(false);
|
|
119
|
+
});
|
|
120
|
+
it('should indicate notification sent when callback is set', async () => {
|
|
121
|
+
handler.setNotificationCallback(() => { });
|
|
122
|
+
const result = await handler.forceUpdate('manual_refresh');
|
|
123
|
+
expect(result.notificationSent).toBe(true);
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
describe('listeners', () => {
|
|
127
|
+
it('should notify listeners on update', async () => {
|
|
128
|
+
const listener = vi.fn();
|
|
129
|
+
handler.addListener(listener);
|
|
130
|
+
await handler.forceUpdate('manual_refresh');
|
|
131
|
+
expect(listener).toHaveBeenCalledTimes(1);
|
|
132
|
+
expect(listener).toHaveBeenCalledWith(expect.objectContaining({
|
|
133
|
+
cachesCleared: expect.arrayContaining(['phase_cache']),
|
|
134
|
+
}));
|
|
135
|
+
});
|
|
136
|
+
it('should support multiple listeners', async () => {
|
|
137
|
+
const listener1 = vi.fn();
|
|
138
|
+
const listener2 = vi.fn();
|
|
139
|
+
handler.addListener(listener1);
|
|
140
|
+
handler.addListener(listener2);
|
|
141
|
+
await handler.forceUpdate('manual_refresh');
|
|
142
|
+
expect(listener1).toHaveBeenCalledTimes(1);
|
|
143
|
+
expect(listener2).toHaveBeenCalledTimes(1);
|
|
144
|
+
});
|
|
145
|
+
it('should allow removing listeners', async () => {
|
|
146
|
+
const listener = vi.fn();
|
|
147
|
+
handler.addListener(listener);
|
|
148
|
+
handler.removeListener(listener);
|
|
149
|
+
await handler.forceUpdate('manual_refresh');
|
|
150
|
+
expect(listener).not.toHaveBeenCalled();
|
|
151
|
+
});
|
|
152
|
+
it('should handle listener errors gracefully', async () => {
|
|
153
|
+
const errorListener = vi.fn(() => {
|
|
154
|
+
throw new Error('Listener error');
|
|
155
|
+
});
|
|
156
|
+
const normalListener = vi.fn();
|
|
157
|
+
handler.addListener(errorListener);
|
|
158
|
+
handler.addListener(normalListener);
|
|
159
|
+
// Should not throw
|
|
160
|
+
await handler.forceUpdate('manual_refresh');
|
|
161
|
+
expect(errorListener).toHaveBeenCalled();
|
|
162
|
+
expect(normalListener).toHaveBeenCalled();
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
describe('history', () => {
|
|
166
|
+
it('should record updates in history', async () => {
|
|
167
|
+
await handler.forceUpdate('manual_refresh');
|
|
168
|
+
const history = handler.getHistory();
|
|
169
|
+
expect(history.length).toBe(1);
|
|
170
|
+
expect(history[0].trigger).toBe('manual_refresh');
|
|
171
|
+
expect(history[0].timestamp).toBeTruthy();
|
|
172
|
+
});
|
|
173
|
+
it('should record multiple updates', async () => {
|
|
174
|
+
await handler.forceUpdate('manual_refresh');
|
|
175
|
+
await new Promise(resolve => setTimeout(resolve, MIN_UPDATE_INTERVAL_MS + 10));
|
|
176
|
+
await handler.forceUpdate('phase_transition');
|
|
177
|
+
const history = handler.getHistory();
|
|
178
|
+
expect(history.length).toBe(2);
|
|
179
|
+
expect(history[0].trigger).toBe('manual_refresh');
|
|
180
|
+
expect(history[1].trigger).toBe('phase_transition');
|
|
181
|
+
});
|
|
182
|
+
it('should limit history size', async () => {
|
|
183
|
+
// Force many updates
|
|
184
|
+
for (let i = 0; i < 60; i++) {
|
|
185
|
+
await handler.forceUpdate('manual_refresh');
|
|
186
|
+
// Need to wait for minimum interval
|
|
187
|
+
await new Promise(resolve => setTimeout(resolve, MIN_UPDATE_INTERVAL_MS + 5));
|
|
188
|
+
}
|
|
189
|
+
const history = handler.getHistory();
|
|
190
|
+
expect(history.length).toBeLessThanOrEqual(50);
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
describe('getTimeSinceLastUpdate', () => {
|
|
194
|
+
it('should return Infinity when no updates', () => {
|
|
195
|
+
expect(handler.getTimeSinceLastUpdate()).toBe(Infinity);
|
|
196
|
+
});
|
|
197
|
+
it('should return time since last update', async () => {
|
|
198
|
+
await handler.forceUpdate('manual_refresh');
|
|
199
|
+
// Wait a bit
|
|
200
|
+
await new Promise(resolve => setTimeout(resolve, 50));
|
|
201
|
+
const timeSince = handler.getTimeSinceLastUpdate();
|
|
202
|
+
expect(timeSince).toBeGreaterThanOrEqual(50);
|
|
203
|
+
expect(timeSince).toBeLessThan(1000);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
describe('getStats', () => {
|
|
207
|
+
it('should return correct stats', async () => {
|
|
208
|
+
await handler.forceUpdate('manual_refresh');
|
|
209
|
+
await new Promise(resolve => setTimeout(resolve, MIN_UPDATE_INTERVAL_MS + 10));
|
|
210
|
+
await handler.forceUpdate('phase_transition');
|
|
211
|
+
const stats = handler.getStats();
|
|
212
|
+
expect(stats.enabled).toBe(true);
|
|
213
|
+
expect(stats.historyCount).toBe(2);
|
|
214
|
+
expect(stats.triggerCounts.manual_refresh).toBe(1);
|
|
215
|
+
expect(stats.triggerCounts.phase_transition).toBe(1);
|
|
216
|
+
});
|
|
217
|
+
it('should track listener count', () => {
|
|
218
|
+
const listener = vi.fn();
|
|
219
|
+
handler.addListener(listener);
|
|
220
|
+
const stats = handler.getStats();
|
|
221
|
+
expect(stats.listenerCount).toBe(1);
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
describe('reset', () => {
|
|
225
|
+
it('should clear all state', async () => {
|
|
226
|
+
handler.addListener(() => { });
|
|
227
|
+
handler.setNotificationCallback(() => { });
|
|
228
|
+
await handler.forceUpdate('manual_refresh');
|
|
229
|
+
handler.reset();
|
|
230
|
+
const stats = handler.getStats();
|
|
231
|
+
expect(stats.historyCount).toBe(0);
|
|
232
|
+
expect(stats.listenerCount).toBe(0);
|
|
233
|
+
expect(handler.getTimeSinceLastUpdate()).toBe(Infinity);
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
describe('Helper Functions', () => {
|
|
238
|
+
describe('notifyPhaseTransition', () => {
|
|
239
|
+
it('should trigger update with phase_transition', async () => {
|
|
240
|
+
const result = await notifyPhaseTransition();
|
|
241
|
+
expect(result.cachesCleared.length).toBeGreaterThanOrEqual(0);
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
describe('notifyFeatureFlagChange', () => {
|
|
245
|
+
it('should trigger update with feature_flag_change', async () => {
|
|
246
|
+
const result = await notifyFeatureFlagChange();
|
|
247
|
+
expect(result.cachesCleared.length).toBeGreaterThanOrEqual(0);
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
describe('notifyToolRegistration', () => {
|
|
251
|
+
it('should trigger update with tool_registration', async () => {
|
|
252
|
+
const result = await notifyToolRegistration();
|
|
253
|
+
expect(result.cachesCleared.length).toBeGreaterThanOrEqual(0);
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
describe('notifyFocusChange', () => {
|
|
257
|
+
it('should trigger update with focus_change', async () => {
|
|
258
|
+
const result = await notifyFocusChange();
|
|
259
|
+
expect(result.cachesCleared.length).toBeGreaterThanOrEqual(0);
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
describe('manualRefresh', () => {
|
|
263
|
+
it('should trigger immediate update', async () => {
|
|
264
|
+
const result = await manualRefresh();
|
|
265
|
+
expect(result.cachesCleared.length).toBeGreaterThanOrEqual(0);
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
describe('createListChangedNotification', () => {
|
|
269
|
+
it('should create valid notification', () => {
|
|
270
|
+
const notification = createListChangedNotification();
|
|
271
|
+
expect(notification.type).toBe('tools/list_changed');
|
|
272
|
+
expect(notification.timestamp).toBeTruthy();
|
|
273
|
+
expect(new Date(notification.timestamp)).toBeInstanceOf(Date);
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
describe('formatDynamicUpdateResult', () => {
|
|
277
|
+
it('should format result correctly', () => {
|
|
278
|
+
const result = {
|
|
279
|
+
toolsRefreshed: 42,
|
|
280
|
+
cachesCleared: ['phase_cache', 'tool_cache'],
|
|
281
|
+
durationMs: 15,
|
|
282
|
+
notificationSent: true,
|
|
283
|
+
};
|
|
284
|
+
const formatted = formatDynamicUpdateResult(result);
|
|
285
|
+
expect(formatted).toContain('Dynamic Update Result');
|
|
286
|
+
expect(formatted).toContain('Tools refreshed: 42');
|
|
287
|
+
expect(formatted).toContain('phase_cache, tool_cache');
|
|
288
|
+
expect(formatted).toContain('Duration: 15ms');
|
|
289
|
+
expect(formatted).toContain('Notification sent: yes');
|
|
290
|
+
});
|
|
291
|
+
it('should handle empty caches', () => {
|
|
292
|
+
const result = {
|
|
293
|
+
toolsRefreshed: 0,
|
|
294
|
+
cachesCleared: [],
|
|
295
|
+
durationMs: 0,
|
|
296
|
+
notificationSent: false,
|
|
297
|
+
};
|
|
298
|
+
const formatted = formatDynamicUpdateResult(result);
|
|
299
|
+
expect(formatted).toContain('Caches cleared: none');
|
|
300
|
+
expect(formatted).toContain('Notification sent: no');
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
describe('Global Instance', () => {
|
|
305
|
+
it('should expose global dynamicUpdateHandler', () => {
|
|
306
|
+
expect(dynamicUpdateHandler).toBeInstanceOf(DynamicUpdateHandler);
|
|
307
|
+
});
|
|
308
|
+
it('should allow using global instance', async () => {
|
|
309
|
+
const result = await dynamicUpdateHandler.forceUpdate('manual_refresh');
|
|
310
|
+
expect(result.cachesCleared.length).toBeGreaterThanOrEqual(0);
|
|
311
|
+
});
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
//# sourceMappingURL=dynamic-updates.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic-updates.test.js","sourceRoot":"","sources":["../../../src/mcp/__tests__/dynamic-updates.test.ts"],"names":[],"mappings":"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"}
|