@windagency/valora 2.2.1 → 2.3.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 +45 -19
- package/data/agents/secops-engineer.md +74 -7
- package/data/commands/_meta/schema.json +3 -1
- package/data/commands/assert.md +1 -1
- package/data/commands/generate-all-documentation.md +1 -1
- package/data/commands/generate-docs.md +1 -1
- package/data/commands/plan-architecture.md +1 -1
- package/data/commands/plan-implementation.md +1 -1
- package/data/commands/plan.md +1 -1
- package/data/commands/refine-task.md +1 -1
- package/data/commands/registry.json +11 -11
- package/data/commands/review-code.md +1 -1
- package/data/commands/review-functional.md +1 -1
- package/data/prompts/01_onboard/analyze-patterns.md +1 -0
- package/data/prompts/01_onboard/collect-clarifications.md +1 -0
- package/data/prompts/01_onboard/map-dependencies.md +1 -0
- package/data/prompts/02_context/analyze-change-scope.md +1 -0
- package/data/prompts/02_context/analyze-changes-for-review.md +1 -0
- package/data/prompts/02_context/analyze-codebase-changes.md +1 -0
- package/data/prompts/02_context/analyze-command-execution.md +1 -0
- package/data/prompts/02_context/analyze-commits-for-pr.md +1 -0
- package/data/prompts/02_context/analyze-functional-scope.md +1 -0
- package/data/prompts/02_context/analyze-git-branch.md +1 -0
- package/data/prompts/02_context/analyze-git-status.md +1 -0
- package/data/prompts/02_context/analyze-task-context.md +1 -0
- package/data/prompts/02_context/extract-ticket-info.md +1 -0
- package/data/prompts/02_context/extract-ticket-references.md +1 -0
- package/data/prompts/02_context/gather-git-metrics.md +1 -0
- package/data/prompts/02_context/identify-completed-workflow.md +1 -0
- package/data/prompts/02_context/load-and-analyze-parallel.md +1 -0
- package/data/prompts/02_context/load-commit-template.md +1 -0
- package/data/prompts/02_context/load-implementation-context.md +1 -0
- package/data/prompts/02_context/load-plan-context.md +1 -0
- package/data/prompts/02_context/load-pr-template.md +1 -0
- package/data/prompts/02_context/scan-codebase.md +1 -0
- package/data/prompts/02_context/use-modern-cli-tools.md +1 -0
- package/data/prompts/03_plan/assess-complexity.md +1 -0
- package/data/prompts/03_plan/assess-risks.md +1 -0
- package/data/prompts/03_plan/breakdown-implementation.md +1 -0
- package/data/prompts/03_plan/define-architecture.md +1 -0
- package/data/prompts/03_plan/identify-dependencies.md +1 -0
- package/data/prompts/04_code/calculate-version-bump.md +1 -0
- package/data/prompts/04_code/create-version-tag.md +1 -0
- package/data/prompts/04_code/determine-commit-strategy.md +1 -0
- package/data/prompts/04_code/determine-labels.md +1 -0
- package/data/prompts/04_code/determine-reviewers.md +1 -0
- package/data/prompts/04_code/generate-commit-messages.md +1 -0
- package/data/prompts/04_code/generate-pr-description.md +1 -0
- package/data/prompts/04_code/generate-pr-title.md +1 -0
- package/data/prompts/04_code/implement-changes.md +1 -0
- package/data/prompts/04_code/implement-tests.md +1 -0
- package/data/prompts/04_code/interactive-review.md +1 -0
- package/data/prompts/04_code/push-and-create-pr.md +1 -0
- package/data/prompts/04_code/stage-and-commit.md +1 -0
- package/data/prompts/04_code/validate-prerequisites.md +1 -0
- package/data/prompts/04_code/verify-implementation.md +1 -0
- package/data/prompts/05_review/assess-code-quality.md +1 -0
- package/data/prompts/05_review/assess-constraints.md +1 -0
- package/data/prompts/05_review/evaluate-quality-outcomes.md +1 -0
- package/data/prompts/05_review/generate-commit-insights.md +1 -0
- package/data/prompts/05_review/identify-improvement-areas.md +1 -0
- package/data/prompts/05_review/synthesize-plan-assessment.md +1 -0
- package/data/prompts/05_review/synthesize-validation-report.md +1 -0
- package/data/prompts/05_review/validate-functional-requirements.md +1 -0
- package/data/prompts/05_review/validate-maintainability.md +1 -0
- package/data/prompts/05_review/validate-performance.md +1 -0
- package/data/prompts/05_review/validate-pr-creation.md +1 -0
- package/data/prompts/05_review/validate-pr-readiness.md +1 -0
- package/data/prompts/05_review/validate-risk-coverage.md +1 -0
- package/data/prompts/05_review/validate-step-quality.md +1 -0
- package/data/prompts/05_review/validate-technical-feasibility.md +1 -0
- package/data/prompts/05_review/validate-test-strategy.md +1 -0
- package/data/prompts/05_review/verify-commits.md +1 -0
- package/data/prompts/06_test/analyze-results.md +1 -0
- package/data/prompts/06_test/analyze-test-infrastructure.md +1 -0
- package/data/prompts/06_test/execute-tests.md +1 -0
- package/data/prompts/07_documentation/generate-all-domains-parallel.md +1 -0
- package/data/prompts/07_documentation/generate-code-review-report.md +1 -0
- package/data/prompts/07_documentation/generate-feedback-report.md +1 -0
- package/data/prompts/07_documentation/generate-feedback-summary.md +1 -0
- package/data/prompts/07_documentation/generate-functional-review-report.md +1 -0
- package/data/prompts/07_documentation/generate-prd.md +1 -0
- package/data/prompts/07_documentation/review-and-persist-parallel.md +1 -0
- package/data/prompts/07_documentation/update-changelog.md +1 -0
- package/data/prompts/07_documentation/update-inline-docs.md +1 -0
- package/data/prompts/07_documentation/update-knowledge-base.md +1 -0
- package/data/prompts/_meta/schema.json +4 -0
- package/data/prompts/registry.json +72 -72
- package/dist/ast/ast-context.service.d.ts +32 -0
- package/dist/ast/ast-context.service.d.ts.map +1 -0
- package/dist/ast/ast-context.service.js +220 -0
- package/dist/ast/ast-context.service.js.map +1 -0
- package/dist/ast/ast-index-watcher.service.d.ts +40 -0
- package/dist/ast/ast-index-watcher.service.d.ts.map +1 -0
- package/dist/ast/ast-index-watcher.service.js +124 -0
- package/dist/ast/ast-index-watcher.service.js.map +1 -0
- package/dist/ast/ast-index.service.d.ts +111 -0
- package/dist/ast/ast-index.service.d.ts.map +1 -0
- package/dist/ast/ast-index.service.js +437 -0
- package/dist/ast/ast-index.service.js.map +1 -0
- package/dist/ast/ast-parser.service.d.ts +31 -0
- package/dist/ast/ast-parser.service.d.ts.map +1 -0
- package/dist/ast/ast-parser.service.js +524 -0
- package/dist/ast/ast-parser.service.js.map +1 -0
- package/dist/ast/ast-query.service.d.ts +34 -0
- package/dist/ast/ast-query.service.d.ts.map +1 -0
- package/dist/ast/ast-query.service.js +203 -0
- package/dist/ast/ast-query.service.js.map +1 -0
- package/dist/ast/ast-tools.service.d.ts +39 -0
- package/dist/ast/ast-tools.service.d.ts.map +1 -0
- package/dist/ast/ast-tools.service.js +187 -0
- package/dist/ast/ast-tools.service.js.map +1 -0
- package/dist/ast/ast.types.d.ts +195 -0
- package/dist/ast/ast.types.d.ts.map +1 -0
- package/dist/ast/ast.types.js +8 -0
- package/dist/ast/ast.types.js.map +1 -0
- package/dist/ast/grammars/grammar-loader.d.ts +23 -0
- package/dist/ast/grammars/grammar-loader.d.ts.map +1 -0
- package/dist/ast/grammars/grammar-loader.js +28 -0
- package/dist/ast/grammars/grammar-loader.js.map +1 -0
- package/dist/ast/grammars/language-map.d.ts +28 -0
- package/dist/ast/grammars/language-map.d.ts.map +1 -0
- package/dist/ast/grammars/language-map.js +65 -0
- package/dist/ast/grammars/language-map.js.map +1 -0
- package/dist/ast/grammars/tree-sitter-adapter.d.ts +39 -0
- package/dist/ast/grammars/tree-sitter-adapter.d.ts.map +1 -0
- package/dist/ast/grammars/tree-sitter-adapter.interface.d.ts +84 -0
- package/dist/ast/grammars/tree-sitter-adapter.interface.d.ts.map +1 -0
- package/dist/ast/grammars/tree-sitter-adapter.interface.js +48 -0
- package/dist/ast/grammars/tree-sitter-adapter.interface.js.map +1 -0
- package/dist/ast/grammars/tree-sitter-adapter.js +91 -0
- package/dist/ast/grammars/tree-sitter-adapter.js.map +1 -0
- package/dist/cli/autocomplete.d.ts.map +1 -1
- package/dist/cli/autocomplete.js +6 -6
- package/dist/cli/autocomplete.js.map +1 -1
- package/dist/cli/command-executor.d.ts +10 -0
- package/dist/cli/command-executor.d.ts.map +1 -1
- package/dist/cli/command-executor.js +85 -11
- package/dist/cli/command-executor.js.map +1 -1
- package/dist/cli/command-wizard.d.ts.map +1 -1
- package/dist/cli/command-wizard.js +8 -2
- package/dist/cli/command-wizard.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +5 -2
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/first-run-setup.d.ts.map +1 -1
- package/dist/cli/first-run-setup.js +3 -1
- package/dist/cli/first-run-setup.js.map +1 -1
- package/dist/cli/provider-resolver.d.ts.map +1 -1
- package/dist/cli/provider-resolver.js +11 -0
- package/dist/cli/provider-resolver.js.map +1 -1
- package/dist/config/constants.d.ts +18 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +18 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/interactive-wizard.d.ts +7 -0
- package/dist/config/interactive-wizard.d.ts.map +1 -1
- package/dist/config/interactive-wizard.js +24 -19
- package/dist/config/interactive-wizard.js.map +1 -1
- package/dist/config/loader.d.ts +5 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +24 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/providers.config.d.ts.map +1 -1
- package/dist/config/providers.config.js +17 -1
- package/dist/config/providers.config.js.map +1 -1
- package/dist/config/schema.d.ts +194 -6
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +1 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/config/validation-helpers.d.ts.map +1 -1
- package/dist/config/validation-helpers.js +84 -41
- package/dist/config/validation-helpers.js.map +1 -1
- package/dist/di/container.d.ts +5 -0
- package/dist/di/container.d.ts.map +1 -1
- package/dist/di/container.js +17 -0
- package/dist/di/container.js.map +1 -1
- package/dist/executor/message-builder.service.d.ts +2 -0
- package/dist/executor/message-builder.service.d.ts.map +1 -1
- package/dist/executor/message-builder.service.js +6 -1
- package/dist/executor/message-builder.service.js.map +1 -1
- package/dist/executor/stage-executor.d.ts.map +1 -1
- package/dist/executor/stage-executor.js +35 -8
- package/dist/executor/stage-executor.js.map +1 -1
- package/dist/executor/stage-output-cache.d.ts +3 -3
- package/dist/executor/stage-output-cache.d.ts.map +1 -1
- package/dist/executor/stage-output-cache.js +6 -6
- package/dist/executor/stage-output-cache.js.map +1 -1
- package/dist/executor/tool-execution.service.d.ts +2 -0
- package/dist/executor/tool-execution.service.d.ts.map +1 -1
- package/dist/executor/tool-execution.service.js +230 -2
- package/dist/executor/tool-execution.service.js.map +1 -1
- package/dist/executor/tools/search-tools.service.d.ts +1 -1
- package/dist/executor/tools/search-tools.service.d.ts.map +1 -1
- package/dist/executor/tools/search-tools.service.js +25 -3
- package/dist/executor/tools/search-tools.service.js.map +1 -1
- package/dist/executor/variables.d.ts.map +1 -1
- package/dist/executor/variables.js +5 -0
- package/dist/executor/variables.js.map +1 -1
- package/dist/llm/model-mapping-registry.d.ts.map +1 -1
- package/dist/llm/model-mapping-registry.js +11 -3
- package/dist/llm/model-mapping-registry.js.map +1 -1
- package/dist/llm/providers/anthropic.provider.d.ts.map +1 -1
- package/dist/llm/providers/anthropic.provider.js +5 -1
- package/dist/llm/providers/anthropic.provider.js.map +1 -1
- package/dist/llm/providers/index.d.ts +2 -0
- package/dist/llm/providers/index.d.ts.map +1 -1
- package/dist/llm/providers/index.js +2 -0
- package/dist/llm/providers/index.js.map +1 -1
- package/dist/llm/providers/local.provider.d.ts +27 -0
- package/dist/llm/providers/local.provider.d.ts.map +1 -0
- package/dist/llm/providers/local.provider.js +179 -0
- package/dist/llm/providers/local.provider.js.map +1 -0
- package/dist/llm/providers/openai.provider.d.ts.map +1 -1
- package/dist/llm/providers/openai.provider.js +1 -0
- package/dist/llm/providers/openai.provider.js.map +1 -1
- package/dist/lsp/lsp-client-manager.service.d.ts +47 -0
- package/dist/lsp/lsp-client-manager.service.d.ts.map +1 -0
- package/dist/lsp/lsp-client-manager.service.js +117 -0
- package/dist/lsp/lsp-client-manager.service.js.map +1 -0
- package/dist/lsp/lsp-client.d.ts +45 -0
- package/dist/lsp/lsp-client.d.ts.map +1 -0
- package/dist/lsp/lsp-client.js +147 -0
- package/dist/lsp/lsp-client.js.map +1 -0
- package/dist/lsp/lsp-context-enricher.d.ts +15 -0
- package/dist/lsp/lsp-context-enricher.d.ts.map +1 -0
- package/dist/lsp/lsp-context-enricher.js +72 -0
- package/dist/lsp/lsp-context-enricher.js.map +1 -0
- package/dist/lsp/lsp-language-registry.d.ts +24 -0
- package/dist/lsp/lsp-language-registry.d.ts.map +1 -0
- package/dist/lsp/lsp-language-registry.js +108 -0
- package/dist/lsp/lsp-language-registry.js.map +1 -0
- package/dist/lsp/lsp-lifecycle.service.d.ts +34 -0
- package/dist/lsp/lsp-lifecycle.service.d.ts.map +1 -0
- package/dist/lsp/lsp-lifecycle.service.js +57 -0
- package/dist/lsp/lsp-lifecycle.service.js.map +1 -0
- package/dist/lsp/lsp-protocol-adapter.d.ts +32 -0
- package/dist/lsp/lsp-protocol-adapter.d.ts.map +1 -0
- package/dist/lsp/lsp-protocol-adapter.interface.d.ts +93 -0
- package/dist/lsp/lsp-protocol-adapter.interface.d.ts.map +1 -0
- package/dist/lsp/lsp-protocol-adapter.interface.js +50 -0
- package/dist/lsp/lsp-protocol-adapter.interface.js.map +1 -0
- package/dist/lsp/lsp-protocol-adapter.js +69 -0
- package/dist/lsp/lsp-protocol-adapter.js.map +1 -0
- package/dist/lsp/lsp-result-cache.d.ts +43 -0
- package/dist/lsp/lsp-result-cache.d.ts.map +1 -0
- package/dist/lsp/lsp-result-cache.js +87 -0
- package/dist/lsp/lsp-result-cache.js.map +1 -0
- package/dist/lsp/lsp-tools.service.d.ts +68 -0
- package/dist/lsp/lsp-tools.service.d.ts.map +1 -0
- package/dist/lsp/lsp-tools.service.js +310 -0
- package/dist/lsp/lsp-tools.service.js.map +1 -0
- package/dist/lsp/lsp.types.d.ts +122 -0
- package/dist/lsp/lsp.types.d.ts.map +1 -0
- package/dist/lsp/lsp.types.js +7 -0
- package/dist/lsp/lsp.types.js.map +1 -0
- package/dist/mcp/mcp-client-manager.service.d.ts.map +1 -1
- package/dist/mcp/mcp-client-manager.service.js +32 -6
- package/dist/mcp/mcp-client-manager.service.js.map +1 -1
- package/dist/mcp/mcp-tool-handler.d.ts.map +1 -1
- package/dist/mcp/mcp-tool-handler.js +17 -1
- package/dist/mcp/mcp-tool-handler.js.map +1 -1
- package/dist/package.json +4 -1
- package/dist/security/command-guard.d.ts +58 -0
- package/dist/security/command-guard.d.ts.map +1 -0
- package/dist/security/command-guard.js +249 -0
- package/dist/security/command-guard.js.map +1 -0
- package/dist/security/credential-guard.d.ts +42 -0
- package/dist/security/credential-guard.d.ts.map +1 -0
- package/dist/security/credential-guard.js +181 -0
- package/dist/security/credential-guard.js.map +1 -0
- package/dist/security/index.d.ts +22 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +17 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/prompt-injection-detector.d.ts +55 -0
- package/dist/security/prompt-injection-detector.d.ts.map +1 -0
- package/dist/security/prompt-injection-detector.js +233 -0
- package/dist/security/prompt-injection-detector.js.map +1 -0
- package/dist/security/security-event.types.d.ts +19 -0
- package/dist/security/security-event.types.d.ts.map +1 -0
- package/dist/security/security-event.types.js +13 -0
- package/dist/security/security-event.types.js.map +1 -0
- package/dist/security/tool-definition-validator.d.ts +55 -0
- package/dist/security/tool-definition-validator.d.ts.map +1 -0
- package/dist/security/tool-definition-validator.js +221 -0
- package/dist/security/tool-definition-validator.js.map +1 -0
- package/dist/security/tool-integrity-monitor.d.ts +67 -0
- package/dist/security/tool-integrity-monitor.d.ts.map +1 -0
- package/dist/security/tool-integrity-monitor.js +155 -0
- package/dist/security/tool-integrity-monitor.js.map +1 -0
- package/dist/tsconfig.json +3 -0
- package/dist/types/command.types.d.ts +3 -1
- package/dist/types/command.types.d.ts.map +1 -1
- package/dist/types/command.types.js.map +1 -1
- package/dist/types/llm.types.d.ts +2 -0
- package/dist/types/llm.types.d.ts.map +1 -1
- package/dist/types/provider-names.types.d.ts +3 -0
- package/dist/types/provider-names.types.d.ts.map +1 -1
- package/dist/types/provider-names.types.js +3 -0
- package/dist/types/provider-names.types.js.map +1 -1
- package/dist/ui/dashboard/detail-panels/spending-panel.d.ts.map +1 -1
- package/dist/ui/dashboard/detail-panels/spending-panel.js +8 -3
- package/dist/ui/dashboard/detail-panels/spending-panel.js.map +1 -1
- package/dist/ui/dashboard/detail-panels/token-usage-panel.d.ts.map +1 -1
- package/dist/ui/dashboard/detail-panels/token-usage-panel.js +37 -13
- package/dist/ui/dashboard/detail-panels/token-usage-panel.js.map +1 -1
- package/dist/ui/dashboard/views/agent-analytics-view.js +1 -1
- package/dist/ui/dashboard/views/agent-analytics-view.js.map +1 -1
- package/dist/ui/dashboard/views/cache-stats-view.js +1 -1
- package/dist/ui/dashboard/views/cache-stats-view.js.map +1 -1
- package/dist/ui/dashboard/views/performance-view.js +1 -1
- package/dist/ui/dashboard/views/performance-view.js.map +1 -1
- package/dist/utils/spending-tracker.d.ts +22 -0
- package/dist/utils/spending-tracker.d.ts.map +1 -1
- package/dist/utils/spending-tracker.js +33 -1
- package/dist/utils/spending-tracker.js.map +1 -1
- package/dist/utils/token-estimator.d.ts +21 -5
- package/dist/utils/token-estimator.d.ts.map +1 -1
- package/dist/utils/token-estimator.js +74 -28
- package/dist/utils/token-estimator.js.map +1 -1
- package/package.json +4 -1
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Integrity Monitor
|
|
3
|
+
*
|
|
4
|
+
* Detects tool-set drift (rug pull attacks) by fingerprinting MCP server
|
|
5
|
+
* tool definitions and comparing them across connections.
|
|
6
|
+
*/
|
|
7
|
+
import type { ExternalMCPTool } from '../types/mcp-client.types.js';
|
|
8
|
+
import { type SecurityEvent } from './security-event.types.js';
|
|
9
|
+
export interface IntegrityCheckResult {
|
|
10
|
+
changed: boolean;
|
|
11
|
+
currentFingerprint: string;
|
|
12
|
+
diff?: ToolSetDiff;
|
|
13
|
+
previousFingerprint?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ToolSetDiff {
|
|
16
|
+
added: string[];
|
|
17
|
+
changed: string[];
|
|
18
|
+
removed: string[];
|
|
19
|
+
}
|
|
20
|
+
export declare class ToolIntegrityMonitor {
|
|
21
|
+
private events;
|
|
22
|
+
private fingerprints;
|
|
23
|
+
private toolSnapshots;
|
|
24
|
+
/**
|
|
25
|
+
* Compute a SHA-256 fingerprint of a tool set.
|
|
26
|
+
* Sorted by name for deterministic output.
|
|
27
|
+
*/
|
|
28
|
+
computeFingerprint(tools: ExternalMCPTool[]): string;
|
|
29
|
+
/**
|
|
30
|
+
* Check integrity of a server's tool set.
|
|
31
|
+
* On first call for a server, stores the fingerprint.
|
|
32
|
+
* On subsequent calls, compares and reports changes.
|
|
33
|
+
*/
|
|
34
|
+
checkIntegrity(serverId: string, currentTools: ExternalMCPTool[]): IntegrityCheckResult;
|
|
35
|
+
/**
|
|
36
|
+
* Get the stored fingerprint for a server.
|
|
37
|
+
*/
|
|
38
|
+
getFingerprint(serverId: string): string | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Store a fingerprint explicitly (e.g., from approval cache).
|
|
41
|
+
*/
|
|
42
|
+
setFingerprint(serverId: string, fingerprint: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Remove stored fingerprint (e.g., after approval invalidation).
|
|
45
|
+
*/
|
|
46
|
+
clearFingerprint(serverId: string): void;
|
|
47
|
+
/**
|
|
48
|
+
* Get recorded security events.
|
|
49
|
+
*/
|
|
50
|
+
getEvents(): SecurityEvent[];
|
|
51
|
+
/**
|
|
52
|
+
* Clear recorded events.
|
|
53
|
+
*/
|
|
54
|
+
clearEvents(): void;
|
|
55
|
+
/**
|
|
56
|
+
* Store individual tool fingerprints for diff computation.
|
|
57
|
+
*/
|
|
58
|
+
private storeToolSnapshot;
|
|
59
|
+
/**
|
|
60
|
+
* Compute which tools were added, removed, or changed.
|
|
61
|
+
*/
|
|
62
|
+
private computeDiff;
|
|
63
|
+
private logEvent;
|
|
64
|
+
}
|
|
65
|
+
export declare function getToolIntegrityMonitor(): ToolIntegrityMonitor;
|
|
66
|
+
export declare function resetToolIntegrityMonitor(): void;
|
|
67
|
+
//# sourceMappingURL=tool-integrity-monitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-integrity-monitor.d.ts","sourceRoot":"","sources":["../../src/security/tool-integrity-monitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEjF,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,aAAa,CAA0C;IAE/D;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM;IAUpD;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,oBAAoB;IA2BvF;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIpD;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAI3D;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC;;OAEG;IACH,SAAS,IAAI,aAAa,EAAE;IAI5B;;OAEG;IACH,WAAW,IAAI,IAAI;IAInB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,QAAQ;CAkBhB;AAOD,wBAAgB,uBAAuB,IAAI,oBAAoB,CAG9D;AAED,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Integrity Monitor
|
|
3
|
+
*
|
|
4
|
+
* Detects tool-set drift (rug pull attacks) by fingerprinting MCP server
|
|
5
|
+
* tool definitions and comparing them across connections.
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from 'crypto';
|
|
8
|
+
import { getLogger } from '../output/logger.js';
|
|
9
|
+
import { createSecurityEvent } from './security-event.types.js';
|
|
10
|
+
export class ToolIntegrityMonitor {
|
|
11
|
+
events = [];
|
|
12
|
+
fingerprints = new Map();
|
|
13
|
+
toolSnapshots = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* Compute a SHA-256 fingerprint of a tool set.
|
|
16
|
+
* Sorted by name for deterministic output.
|
|
17
|
+
*/
|
|
18
|
+
computeFingerprint(tools) {
|
|
19
|
+
const sorted = [...tools].sort((a, b) => a.name.localeCompare(b.name));
|
|
20
|
+
const data = sorted.map((t) => ({
|
|
21
|
+
description: t.description,
|
|
22
|
+
inputSchema: t.inputSchema,
|
|
23
|
+
name: t.name
|
|
24
|
+
}));
|
|
25
|
+
return createHash('sha256').update(JSON.stringify(data)).digest('hex');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check integrity of a server's tool set.
|
|
29
|
+
* On first call for a server, stores the fingerprint.
|
|
30
|
+
* On subsequent calls, compares and reports changes.
|
|
31
|
+
*/
|
|
32
|
+
checkIntegrity(serverId, currentTools) {
|
|
33
|
+
const currentFingerprint = this.computeFingerprint(currentTools);
|
|
34
|
+
const previousFingerprint = this.fingerprints.get(serverId);
|
|
35
|
+
if (previousFingerprint === undefined) {
|
|
36
|
+
// First connection — store baseline
|
|
37
|
+
this.fingerprints.set(serverId, currentFingerprint);
|
|
38
|
+
this.storeToolSnapshot(serverId, currentTools);
|
|
39
|
+
return { changed: false, currentFingerprint };
|
|
40
|
+
}
|
|
41
|
+
if (currentFingerprint === previousFingerprint) {
|
|
42
|
+
return { changed: false, currentFingerprint, previousFingerprint };
|
|
43
|
+
}
|
|
44
|
+
// Tools changed — compute diff
|
|
45
|
+
const diff = this.computeDiff(serverId, currentTools);
|
|
46
|
+
this.logEvent(serverId, previousFingerprint, currentFingerprint, diff);
|
|
47
|
+
// Update stored state
|
|
48
|
+
this.fingerprints.set(serverId, currentFingerprint);
|
|
49
|
+
this.storeToolSnapshot(serverId, currentTools);
|
|
50
|
+
return { changed: true, currentFingerprint, diff, previousFingerprint };
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get the stored fingerprint for a server.
|
|
54
|
+
*/
|
|
55
|
+
getFingerprint(serverId) {
|
|
56
|
+
return this.fingerprints.get(serverId);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Store a fingerprint explicitly (e.g., from approval cache).
|
|
60
|
+
*/
|
|
61
|
+
setFingerprint(serverId, fingerprint) {
|
|
62
|
+
this.fingerprints.set(serverId, fingerprint);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Remove stored fingerprint (e.g., after approval invalidation).
|
|
66
|
+
*/
|
|
67
|
+
clearFingerprint(serverId) {
|
|
68
|
+
this.fingerprints.delete(serverId);
|
|
69
|
+
this.toolSnapshots.delete(serverId);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get recorded security events.
|
|
73
|
+
*/
|
|
74
|
+
getEvents() {
|
|
75
|
+
return [...this.events];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Clear recorded events.
|
|
79
|
+
*/
|
|
80
|
+
clearEvents() {
|
|
81
|
+
this.events = [];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Store individual tool fingerprints for diff computation.
|
|
85
|
+
*/
|
|
86
|
+
storeToolSnapshot(serverId, tools) {
|
|
87
|
+
const snapshot = new Map();
|
|
88
|
+
for (const tool of tools) {
|
|
89
|
+
const hash = createHash('sha256')
|
|
90
|
+
.update(JSON.stringify({ description: tool.description, inputSchema: tool.inputSchema }))
|
|
91
|
+
.digest('hex');
|
|
92
|
+
snapshot.set(tool.name, hash);
|
|
93
|
+
}
|
|
94
|
+
this.toolSnapshots.set(serverId, snapshot);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Compute which tools were added, removed, or changed.
|
|
98
|
+
*/
|
|
99
|
+
computeDiff(serverId, currentTools) {
|
|
100
|
+
const previousSnapshot = this.toolSnapshots.get(serverId) ?? new Map();
|
|
101
|
+
const currentSnapshot = new Map();
|
|
102
|
+
for (const tool of currentTools) {
|
|
103
|
+
const hash = createHash('sha256')
|
|
104
|
+
.update(JSON.stringify({ description: tool.description, inputSchema: tool.inputSchema }))
|
|
105
|
+
.digest('hex');
|
|
106
|
+
currentSnapshot.set(tool.name, hash);
|
|
107
|
+
}
|
|
108
|
+
const added = [];
|
|
109
|
+
const removed = [];
|
|
110
|
+
const changed = [];
|
|
111
|
+
for (const [name, hash] of currentSnapshot) {
|
|
112
|
+
if (!previousSnapshot.has(name)) {
|
|
113
|
+
added.push(name);
|
|
114
|
+
}
|
|
115
|
+
else if (previousSnapshot.get(name) !== hash) {
|
|
116
|
+
changed.push(name);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
for (const name of previousSnapshot.keys()) {
|
|
120
|
+
if (!currentSnapshot.has(name)) {
|
|
121
|
+
removed.push(name);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return { added, changed, removed };
|
|
125
|
+
}
|
|
126
|
+
logEvent(serverId, previousFingerprint, currentFingerprint, diff) {
|
|
127
|
+
const event = createSecurityEvent('tool_set_changed', 'critical', {
|
|
128
|
+
added: diff.added,
|
|
129
|
+
changed: diff.changed,
|
|
130
|
+
currentFingerprint,
|
|
131
|
+
previousFingerprint,
|
|
132
|
+
removed: diff.removed,
|
|
133
|
+
serverId
|
|
134
|
+
});
|
|
135
|
+
this.events.push(event);
|
|
136
|
+
const logger = getLogger();
|
|
137
|
+
logger.warn(`[Security] MCP tool set changed for ${serverId}`, {
|
|
138
|
+
added: diff.added,
|
|
139
|
+
changed: diff.changed,
|
|
140
|
+
removed: diff.removed
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Singleton instance
|
|
146
|
+
*/
|
|
147
|
+
let instance = null;
|
|
148
|
+
export function getToolIntegrityMonitor() {
|
|
149
|
+
instance ??= new ToolIntegrityMonitor();
|
|
150
|
+
return instance;
|
|
151
|
+
}
|
|
152
|
+
export function resetToolIntegrityMonitor() {
|
|
153
|
+
instance = null;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=tool-integrity-monitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-integrity-monitor.js","sourceRoot":"","sources":["../../src/security/tool-integrity-monitor.ts"],"names":[],"mappings":"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"}
|
package/dist/tsconfig.json
CHANGED
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
"baseUrl": ".",
|
|
4
4
|
"paths": {
|
|
5
5
|
"src/*": ["./*"],
|
|
6
|
+
"ast/*": ["./ast/*"],
|
|
6
7
|
"batch/*": ["./batch/*"],
|
|
8
|
+
"security/*": ["./security/*"],
|
|
7
9
|
"cleanup/*": ["./cleanup/*"],
|
|
8
10
|
"cli/*": ["./cli/*"],
|
|
9
11
|
"config/*": ["./config/*"],
|
|
10
12
|
"executor/*": ["./executor/*"],
|
|
11
13
|
"llm/*": ["./llm/*"],
|
|
14
|
+
"lsp/*": ["./lsp/*"],
|
|
12
15
|
"mcp/*": ["./mcp/*"],
|
|
13
16
|
"output/*": ["./output/*"],
|
|
14
17
|
"session/*": ["./session/*"],
|
|
@@ -17,7 +17,7 @@ export type AIModel = 'gpt-5-codex' | 'gpt-5-thinking-high' | ModelNameValue;
|
|
|
17
17
|
/**
|
|
18
18
|
* Built-in tools available to commands
|
|
19
19
|
*/
|
|
20
|
-
export type BuiltInTool = 'codebase_search' | 'delete_file' | 'glob_file_search' | 'grep' | 'list_dir' | 'query_session' | 'read_file' | 'run_terminal_cmd' | 'search_replace' | 'web_search' | 'write';
|
|
20
|
+
export type BuiltInTool = 'codebase_search' | 'delete_file' | 'file_outline' | 'find_references' | 'get_diagnostics' | 'get_type_info' | 'glob_file_search' | 'goto_definition' | 'grep' | 'hover_info' | 'list_dir' | 'query_session' | 'read_file' | 'request_context' | 'run_terminal_cmd' | 'search_replace' | 'smart_context' | 'symbol_search' | 'web_search' | 'write';
|
|
21
21
|
/**
|
|
22
22
|
* External MCP tools available to commands.
|
|
23
23
|
* Derived from external-mcp.json registry for maintainability.
|
|
@@ -202,6 +202,8 @@ export interface StageOutput {
|
|
|
202
202
|
duration_ms: number;
|
|
203
203
|
error?: string;
|
|
204
204
|
metadata?: Record<string, unknown>;
|
|
205
|
+
/** The actual model name used by the provider for this stage */
|
|
206
|
+
model?: string;
|
|
205
207
|
outputs: Record<string, unknown>;
|
|
206
208
|
prompt: string;
|
|
207
209
|
stage: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.types.d.ts","sourceRoot":"","sources":["../../src/types/command.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command.types.d.ts","sourceRoot":"","sources":["../../src/types/command.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.types.js","sourceRoot":"","sources":["../../src/types/command.types.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"command.types.js","sourceRoot":"","sources":["../../src/types/command.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiDH,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3E;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AA6GD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -16,6 +16,8 @@ export interface LLMCompletionOptions {
|
|
|
16
16
|
export interface LLMCompletionResult {
|
|
17
17
|
content: string;
|
|
18
18
|
finish_reason?: string;
|
|
19
|
+
/** The actual model name returned by the provider (may differ from the requested model) */
|
|
20
|
+
model?: string;
|
|
19
21
|
role: LLMRole;
|
|
20
22
|
tool_calls?: LLMToolCall[];
|
|
21
23
|
usage?: LLMUsage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.types.d.ts","sourceRoot":"","sources":["../../src/types/llm.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"llm.types.d.ts","sourceRoot":"","sources":["../../src/types/llm.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export declare enum ProviderName {
|
|
|
12
12
|
ANTHROPIC = "anthropic",
|
|
13
13
|
CURSOR = "cursor",
|
|
14
14
|
GOOGLE = "google",
|
|
15
|
+
LOCAL = "local",
|
|
15
16
|
MOONSHOT = "moonshot",
|
|
16
17
|
OPENAI = "openai",
|
|
17
18
|
XAI = "xai"
|
|
@@ -26,8 +27,10 @@ export declare const ModelName: {
|
|
|
26
27
|
readonly CLAUDE_OPUS_4: "claude-opus-4";
|
|
27
28
|
readonly CLAUDE_OPUS_4_1: "claude-opus-4.1";
|
|
28
29
|
readonly CLAUDE_OPUS_4_5: "claude-opus-4.5";
|
|
30
|
+
readonly CLAUDE_OPUS_4_6: "claude-opus-4.6";
|
|
29
31
|
readonly CLAUDE_SONNET_4: "claude-sonnet-4";
|
|
30
32
|
readonly CLAUDE_SONNET_4_5: "claude-sonnet-4.5";
|
|
33
|
+
readonly CLAUDE_SONNET_4_6: "claude-sonnet-4.6";
|
|
31
34
|
readonly CURSOR_CLAUDE_3_5: "cursor-claude-3.5";
|
|
32
35
|
readonly CURSOR_GPT_4: "cursor-gpt-4";
|
|
33
36
|
readonly CURSOR_SONNET_4_5: "cursor-sonnet-4.5";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-names.types.d.ts","sourceRoot":"","sources":["../../src/types/provider-names.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,oBAAY,YAAY;IACvB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,GAAG,QAAQ;CACX;AAED;;;GAGG;AAEH,eAAO,MAAM,SAAS
|
|
1
|
+
{"version":3,"file":"provider-names.types.d.ts","sourceRoot":"","sources":["../../src/types/provider-names.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,oBAAY,YAAY;IACvB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,GAAG,QAAQ;CACX;AAED;;;GAGG;AAEH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CZ,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC"}
|
|
@@ -13,6 +13,7 @@ export var ProviderName;
|
|
|
13
13
|
ProviderName["ANTHROPIC"] = "anthropic";
|
|
14
14
|
ProviderName["CURSOR"] = "cursor";
|
|
15
15
|
ProviderName["GOOGLE"] = "google";
|
|
16
|
+
ProviderName["LOCAL"] = "local";
|
|
16
17
|
ProviderName["MOONSHOT"] = "moonshot";
|
|
17
18
|
ProviderName["OPENAI"] = "openai";
|
|
18
19
|
ProviderName["XAI"] = "xai";
|
|
@@ -29,8 +30,10 @@ export const ModelName = {
|
|
|
29
30
|
CLAUDE_OPUS_4: 'claude-opus-4',
|
|
30
31
|
CLAUDE_OPUS_4_1: 'claude-opus-4.1',
|
|
31
32
|
CLAUDE_OPUS_4_5: 'claude-opus-4.5',
|
|
33
|
+
CLAUDE_OPUS_4_6: 'claude-opus-4.6',
|
|
32
34
|
CLAUDE_SONNET_4: 'claude-sonnet-4',
|
|
33
35
|
CLAUDE_SONNET_4_5: 'claude-sonnet-4.5',
|
|
36
|
+
CLAUDE_SONNET_4_6: 'claude-sonnet-4.6',
|
|
34
37
|
// Cursor models
|
|
35
38
|
CURSOR_CLAUDE_3_5: 'cursor-claude-3.5',
|
|
36
39
|
CURSOR_GPT_4: 'cursor-gpt-4',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-names.types.js","sourceRoot":"","sources":["../../src/types/provider-names.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"provider-names.types.js","sourceRoot":"","sources":["../../src/types/provider-names.types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAN,IAAY,YAQX;AARD,WAAY,YAAY;IACvB,uCAAuB,CAAA;IACvB,iCAAiB,CAAA;IACjB,iCAAiB,CAAA;IACjB,+BAAe,CAAA;IACf,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;IACjB,2BAAW,CAAA;AACZ,CAAC,EARW,YAAY,KAAZ,YAAY,QAQvB;AAED;;;GAGG;AACH,sIAAsI;AACtI,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,mBAAmB;IACnB,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IAEtC,gBAAgB;IAChB,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,iBAAiB,EAAE,mBAAmB;IAEtC,gBAAgB;IAChB,gBAAgB,EAAE,kBAAkB;IACpC,qBAAqB,EAAE,uBAAuB;IAC9C,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,cAAc;IAC5B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IAEpB,kBAAkB;IAClB,OAAO,EAAE,SAAS;IAElB,gBAAgB;IAChB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,EAAE,EAAE,IAAI;IACR,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAElB,aAAa;IACb,2BAA2B,EAAE,6BAA6B;IAC1D,uBAAuB,EAAE,yBAAyB;IAClD,yBAAyB,EAAE,2BAA2B;IACtD,qBAAqB,EAAE,uBAAuB;IAC9C,SAAS,EAAE,WAAW;CACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spending-panel.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/detail-panels/spending-panel.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAWnD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"spending-panel.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/detail-panels/spending-panel.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAWnD,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAoHlF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { getTUIAdapter } from '../../tui-adapter.interface.js';
|
|
3
3
|
import { formatNumber } from '../../../utils/number-format.js';
|
|
4
4
|
import { getSpendingTracker } from '../../../utils/spending-tracker.js';
|
|
@@ -16,13 +16,18 @@ export function SpendingPanel({ session }) {
|
|
|
16
16
|
const maxCost = byEndpoint.length > 0 ? Math.max(...byEndpoint.map((e) => e.totalCostUsd)) : 1;
|
|
17
17
|
// Top 5 most expensive in this session
|
|
18
18
|
const topExpensive = tracker.getExpensive(5, { since: sessionStart });
|
|
19
|
-
return (_jsxs(Box, { borderColor: "white", borderStyle: "round", flexDirection: "column", marginBottom: 1, paddingX: 1, children: [_jsx(Text, { bold: true, color: "yellow", children: "Spending" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Session cost: " }), _jsxs(Text, { bold: true, color: "yellow", children: ["$", totals.totalCostUsd.toFixed(4)] }), totals.
|
|
19
|
+
return (_jsxs(Box, { borderColor: "white", borderStyle: "round", flexDirection: "column", marginBottom: 1, paddingX: 1, children: [_jsx(Text, { bold: true, color: "yellow", children: "Spending" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Session cost: " }), _jsxs(Text, { bold: true, color: "yellow", children: ["$", totals.totalCostUsd.toFixed(4)] }), totals.hasUnknownModelPricing && _jsx(Text, { color: "red", children: " (estimated \u2014 model pricing unknown)" })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Requests: " }), _jsx(Text, { color: "cyan", children: totals.requestCount }), _jsx(Text, { dimColor: true, children: " Tokens: " }), _jsx(Text, { color: "cyan", children: formatNumber(totals.totalTokens) })] }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Cost Breakdown:" }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Input: ' }), _jsx(Text, { color: "cyan", children: formatNumber(totals.totalInputTokens).padStart(7) }), _jsx(Text, { dimColor: true, children: " tok " }), _jsxs(Text, { color: "yellow", children: ["$", totals.totalInputCostUsd.toFixed(4)] })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Output: ' }), _jsx(Text, { color: "cyan", children: formatNumber(totals.totalOutputTokens).padStart(7) }), _jsx(Text, { dimColor: true, children: " tok " }), _jsxs(Text, { color: "yellow", children: ["$", totals.totalOutputCostUsd.toFixed(4)] })] }), totals.totalCacheReadTokens > 0 && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Cache read: ' }), _jsx(Text, { color: "cyan", children: formatNumber(totals.totalCacheReadTokens).padStart(7) }), _jsx(Text, { dimColor: true, children: " tok " }), _jsxs(Text, { color: "yellow", children: ["$", totals.totalCacheReadCostUsd.toFixed(4)] }), totals.cacheSavingsUsd > 0 && _jsxs(Text, { color: "green", children: [" (saved $", totals.cacheSavingsUsd.toFixed(4), ")"] })] })), totals.totalCacheWriteTokens > 0 && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Cache write: ' }), _jsx(Text, { color: "cyan", children: formatNumber(totals.totalCacheWriteTokens).padStart(7) }), _jsx(Text, { dimColor: true, children: " tok " }), _jsxs(Text, { color: "yellow", children: ["$", totals.totalCacheWriteCostUsd.toFixed(4)] })] }))] })] }), byEndpoint.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Cost by Command:" }), byEndpoint.slice(0, 8).map((e, index) => {
|
|
20
20
|
const barWidth = 20;
|
|
21
21
|
const filled = Math.max(1, Math.floor((e.totalCostUsd / maxCost) * barWidth));
|
|
22
22
|
return (_jsxs(Box, { children: [_jsxs(Text, { children: [" ", (e.command.length > 14 ? e.command.substring(0, 11) + '...' : e.command).padEnd(14)] }), _jsx(Text, { color: "yellow", children: '█'.repeat(filled) }), _jsx(Text, { dimColor: true, children: '░'.repeat(barWidth - filled) }), _jsxs(Text, { children: [" $", e.totalCostUsd.toFixed(4)] })] }, index));
|
|
23
23
|
})] })), topExpensive.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Top Expensive Requests:" }), topExpensive.map((r, index) => {
|
|
24
24
|
const date = new Date(r.timestamp).toLocaleTimeString();
|
|
25
|
-
|
|
25
|
+
const tokenParts = [`in:${formatNumber(r.promptTokens)}`, `out:${formatNumber(r.completionTokens)}`];
|
|
26
|
+
if (r.cacheReadTokens > 0)
|
|
27
|
+
tokenParts.push(`cr:${formatNumber(r.cacheReadTokens)}`);
|
|
28
|
+
if (r.cacheWriteTokens > 0)
|
|
29
|
+
tokenParts.push(`cw:${formatNumber(r.cacheWriteTokens)}`);
|
|
30
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { dimColor: true, children: [index + 1, ". "] }), _jsx(Text, { color: "cyan", children: r.command.padEnd(12) }), _jsxs(Text, { dimColor: true, children: [" ", date, " "] }), _jsxs(Text, { color: "yellow", children: ["$", r.costUsd.toFixed(4)] }), (r.unknownModelPricing ?? false) && _jsx(Text, { color: "red", children: " ~est" })] }), _jsx(Box, { children: _jsxs(Text, { dimColor: true, children: [' ', tokenParts.join(' ')] }) })] }, index));
|
|
26
31
|
})] })), records.length === 0 && _jsx(Text, { dimColor: true, children: "No spending recorded this session" })] }));
|
|
27
32
|
}
|
|
28
33
|
//# sourceMappingURL=spending-panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spending-panel.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/detail-panels/spending-panel.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;AAC5B,8HAA8H;AAC9H,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;AAE1B,wGAAwG;AACxG,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAwB;IAC9D,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAE1D,qCAAqC;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/F,uCAAuC;IACvC,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IAEtE,OAAO,CACN,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,aAC/F,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,yBAElB,EACP,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACvC,MAAC,GAAG,eACH,KAAC,IAAI,IAAC,QAAQ,qCAAsB,EACpC,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,QAAQ,kBACtB,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,IAC1B,EACN,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"spending-panel.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/detail-panels/spending-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage-panel.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/detail-panels/token-usage-panel.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"token-usage-panel.d.ts","sourceRoot":"","sources":["../../../../src/ui/dashboard/detail-panels/token-usage-panel.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAanD,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAmEpF"}
|
|
@@ -1,23 +1,47 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { getModelContextWindow } from '../../../config/providers.config.js';
|
|
2
3
|
import { Sparkline } from '../../../exploration/dashboard-metrics.js';
|
|
3
4
|
import { getTUIAdapter } from '../../tui-adapter.interface.js';
|
|
4
5
|
import { formatNumber } from '../../../utils/number-format.js';
|
|
6
|
+
import { getSpendingTracker } from '../../../utils/spending-tracker.js';
|
|
5
7
|
const tui = getTUIAdapter();
|
|
6
8
|
// eslint-disable-next-line @typescript-eslint/naming-convention -- Box and Text are React components which require PascalCase
|
|
7
9
|
const { Box, Text } = tui;
|
|
8
10
|
// eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
|
|
9
11
|
export function TokenUsagePanel({ session }) {
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
12
|
+
const tracker = getSpendingTracker();
|
|
13
|
+
const sessionStart = session.created_at;
|
|
14
|
+
const totals = tracker.getTotals({ since: sessionStart });
|
|
15
|
+
const byEndpoint = tracker.getByEndpoint({ since: sessionStart });
|
|
16
|
+
const maxTokens = Math.max(1, ...byEndpoint.map((e) => e.totalTokens));
|
|
17
|
+
// Most recent record for model + context window info
|
|
18
|
+
const records = tracker.getRecords({ since: sessionStart });
|
|
19
|
+
const latestRecord = records.at(-1);
|
|
20
|
+
const model = latestRecord?.model;
|
|
21
|
+
const latestPromptTokens = latestRecord?.promptTokens ?? 0;
|
|
22
|
+
const { contextWindowSize, utilizationPercent } = getContextInfo(model, latestPromptTokens);
|
|
23
|
+
// Trend data: tokens per request in chronological order
|
|
24
|
+
const tokenTrend = records.map((r) => r.totalTokens);
|
|
25
|
+
return (_jsxs(Box, { borderColor: "white", borderStyle: "round", flexDirection: "column", marginBottom: 1, paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Token Usage" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Total Tokens: " }), _jsx(Text, { bold: true, color: "cyan", children: formatNumber(totals.totalTokens) }), model && (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: " Model: " }), _jsx(Text, { color: "cyan", children: model })] })), contextWindowSize > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: " Context: " }), _jsxs(Text, { bold: true, color: utilizationPercent > 80 ? 'red' : 'green', children: [utilizationPercent.toFixed(1), "%"] }), _jsxs(Text, { dimColor: true, children: [" of ", formatNumber(contextWindowSize)] })] }))] }), _jsx(TokenBreakdown, { totals: totals })] }), byEndpoint.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Per-Command Usage:" }), byEndpoint.slice(0, 10).map((e, index) => (_jsx(CommandRow, { e: e, maxTokens: maxTokens }, index)))] })), tokenTrend.length > 1 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Token Usage Trend:" }), _jsx(Sparkline, { color: "cyan", data: tokenTrend, height: 3, width: 30 })] })), totals.requestCount === 0 && _jsx(Text, { dimColor: true, children: "No token usage recorded" })] }));
|
|
26
|
+
}
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention -- React component must use PascalCase
|
|
28
|
+
function CommandRow({ e, maxTokens }) {
|
|
29
|
+
const barWidth = 20;
|
|
30
|
+
const filled = Math.max(1, Math.floor((e.totalTokens / maxTokens) * barWidth));
|
|
31
|
+
const commandLabel = e.command.length > 15 ? `${e.command.substring(0, 12)}...` : e.command;
|
|
32
|
+
const cacheReadStr = e.totalCacheReadTokens > 0 ? ` cr:${formatNumber(e.totalCacheReadTokens)}` : '';
|
|
33
|
+
const cacheWriteStr = e.totalCacheWriteTokens > 0 ? ` cw:${formatNumber(e.totalCacheWriteTokens)}` : '';
|
|
34
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { children: [" ", commandLabel.padEnd(15)] }), _jsx(Text, { color: "cyan", children: '█'.repeat(filled) }), _jsx(Text, { dimColor: true, children: '░'.repeat(barWidth - filled) }), _jsxs(Text, { children: [" ", formatNumber(e.totalTokens)] })] }), _jsx(Box, { children: _jsxs(Text, { dimColor: true, children: [' ', `in:${formatNumber(e.totalInputTokens)} out:${formatNumber(e.totalOutputTokens)}${cacheReadStr}${cacheWriteStr}`] }) })] }));
|
|
35
|
+
}
|
|
36
|
+
function getContextInfo(model, latestPromptTokens) {
|
|
37
|
+
if (!model)
|
|
38
|
+
return { contextWindowSize: 0, utilizationPercent: 0 };
|
|
39
|
+
const contextWindowSize = getModelContextWindow(model);
|
|
40
|
+
const utilizationPercent = contextWindowSize > 0 ? Math.min(100, (latestPromptTokens / contextWindowSize) * 100) : 0;
|
|
41
|
+
return { contextWindowSize, utilizationPercent };
|
|
42
|
+
}
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention -- React component must use PascalCase
|
|
44
|
+
function TokenBreakdown({ totals }) {
|
|
45
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Token Breakdown:" }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Input: ' }), _jsx(Text, { color: "cyan", children: formatNumber(totals.totalInputTokens).padStart(7) })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Output: ' }), _jsx(Text, { color: "cyan", children: formatNumber(totals.totalOutputTokens).padStart(7) })] }), totals.totalCacheReadTokens > 0 && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Cache read: ' }), _jsx(Text, { color: "cyan", children: formatNumber(totals.totalCacheReadTokens).padStart(7) })] })), totals.totalCacheWriteTokens > 0 && (_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: ' Cache write: ' }), _jsx(Text, { color: "cyan", children: formatNumber(totals.totalCacheWriteTokens).padStart(7) })] }))] }));
|
|
22
46
|
}
|
|
23
47
|
//# sourceMappingURL=token-usage-panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-usage-panel.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/detail-panels/token-usage-panel.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"token-usage-panel.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/detail-panels/token-usage-panel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ const { Box, Text } = tui;
|
|
|
6
6
|
// eslint-disable-next-line @typescript-eslint/naming-convention -- React components must use PascalCase
|
|
7
7
|
export function AgentAnalyticsView({ data }) {
|
|
8
8
|
if (!data.metrics || data.metrics.totalSelections === 0) {
|
|
9
|
-
return (_jsxs(Box, { borderColor: "white", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Agent Analytics" }), _jsx(Text, { dimColor: true, children: "No agent selection
|
|
9
|
+
return (_jsxs(Box, { borderColor: "white", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Agent Analytics" }), _jsx(Text, { dimColor: true, children: "No events \u2014 agent analytics populate when dynamic agent selection is active" })] }));
|
|
10
10
|
}
|
|
11
11
|
const { metrics, successMetrics } = data;
|
|
12
12
|
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(SummaryHeader, { metrics: metrics }), _jsxs(Box, { flexGrow: 1, marginTop: 1, children: [_jsxs(Box, { flexDirection: "column", width: "50%", children: [_jsxs(Box, { borderColor: "green", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "green", children: "Agent Distribution" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: renderDistribution(metrics.agentDistribution, 'green') })] }), Object.keys(metrics.commandDistribution).length > 0 && (_jsxs(Box, { borderColor: "yellow", borderStyle: "round", flexDirection: "column", marginTop: 1, paddingX: 1, children: [_jsx(Text, { bold: true, color: "yellow", children: "Command Distribution" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: renderDistribution(metrics.commandDistribution, 'yellow') })] }))] }), _jsxs(Box, { flexDirection: "column", marginLeft: 1, width: "50%", children: [Object.keys(metrics.reasonDistribution).length > 0 && (_jsxs(Box, { borderColor: "magenta", borderStyle: "round", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { bold: true, color: "magenta", children: "Selection Reasons" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: renderDistribution(metrics.reasonDistribution, 'magenta') })] })), successMetrics && (_jsxs(Box, { borderColor: "cyan", borderStyle: "round", flexDirection: "column", marginTop: 1, paddingX: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "Success Metrics (7d)" }), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Accuracy: " }), _jsxs(Text, { bold: true, color: rateColor(successMetrics.accuracy, 0.85), children: [(successMetrics.accuracy * 100).toFixed(1), "%"] })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Completion: " }), _jsxs(Text, { bold: true, color: rateColor(successMetrics.completionRate, 0.85), children: [(successMetrics.completionRate * 100).toFixed(1), "%"] })] }), _jsxs(Box, { children: [_jsx(Text, { dimColor: true, children: "Satisfaction: " }), _jsxs(Text, { bold: true, color: rateColor(successMetrics.userSatisfaction, 0.8), children: [(successMetrics.userSatisfaction * 100).toFixed(1), "%"] })] })] }), successMetrics.insights.length > 0 && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "Insights:" }), successMetrics.insights.map((insight, index) => (_jsx(Text, { children: insight }, index)))] }))] }))] })] })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-analytics-view.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/agent-analytics-view.tsx"],"names":[],"mappings":";AASA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;AAC5B,8HAA8H;AAC9H,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;AAE1B,wGAAwG;AACxG,MAAM,UAAU,kBAAkB,CAAC,EAAE,IAAI,EAAgC;IACxE,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,CAAC,EAAE,CAAC;QACzD,OAAO,CACN,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aAC9E,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,gCAEhB,EACP,KAAC,IAAI,IAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"agent-analytics-view.js","sourceRoot":"","sources":["../../../../src/ui/dashboard/views/agent-analytics-view.tsx"],"names":[],"mappings":"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"}
|