claude-scope 0.1.8 → 0.2.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/dist/claude-scope.cjs +764 -0
- package/package.json +9 -6
- package/dist/constants.d.ts +0 -56
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -57
- package/dist/constants.js.map +0 -1
- package/dist/core/renderer.d.ts +0 -51
- package/dist/core/renderer.d.ts.map +0 -1
- package/dist/core/renderer.js +0 -75
- package/dist/core/renderer.js.map +0 -1
- package/dist/core/types.d.ts +0 -56
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js +0 -5
- package/dist/core/types.js.map +0 -1
- package/dist/core/widget-registry.d.ts +0 -40
- package/dist/core/widget-registry.d.ts.map +0 -1
- package/dist/core/widget-registry.js +0 -75
- package/dist/core/widget-registry.js.map +0 -1
- package/dist/core/widget-types.d.ts +0 -30
- package/dist/core/widget-types.d.ts.map +0 -1
- package/dist/core/widget-types.js +0 -30
- package/dist/core/widget-types.js.map +0 -1
- package/dist/data/stdin-provider.d.ts +0 -44
- package/dist/data/stdin-provider.d.ts.map +0 -1
- package/dist/data/stdin-provider.js +0 -72
- package/dist/data/stdin-provider.js.map +0 -1
- package/dist/index.d.ts +0 -10
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/providers/git-provider.d.ts +0 -71
- package/dist/providers/git-provider.d.ts.map +0 -1
- package/dist/providers/git-provider.js +0 -73
- package/dist/providers/git-provider.js.map +0 -1
- package/dist/schemas/stdin-schema.d.ts +0 -84
- package/dist/schemas/stdin-schema.d.ts.map +0 -1
- package/dist/schemas/stdin-schema.js +0 -48
- package/dist/schemas/stdin-schema.js.map +0 -1
- package/dist/types.d.ts +0 -31
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -8
- package/dist/types.js.map +0 -1
- package/dist/ui/utils/colors.d.ts +0 -52
- package/dist/ui/utils/colors.d.ts.map +0 -1
- package/dist/ui/utils/colors.js +0 -54
- package/dist/ui/utils/colors.js.map +0 -1
- package/dist/ui/utils/formatters.d.ts +0 -56
- package/dist/ui/utils/formatters.d.ts.map +0 -1
- package/dist/ui/utils/formatters.js +0 -114
- package/dist/ui/utils/formatters.js.map +0 -1
- package/dist/validation/combinators.d.ts +0 -10
- package/dist/validation/combinators.d.ts.map +0 -1
- package/dist/validation/combinators.js +0 -49
- package/dist/validation/combinators.js.map +0 -1
- package/dist/validation/core.d.ts +0 -30
- package/dist/validation/core.d.ts.map +0 -1
- package/dist/validation/core.js +0 -2
- package/dist/validation/core.js.map +0 -1
- package/dist/validation/index.d.ts +0 -4
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js +0 -4
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/result.d.ts +0 -5
- package/dist/validation/result.d.ts.map +0 -1
- package/dist/validation/result.js +0 -11
- package/dist/validation/result.js.map +0 -1
- package/dist/validation/validators.d.ts +0 -7
- package/dist/validation/validators.d.ts.map +0 -1
- package/dist/validation/validators.js +0 -41
- package/dist/validation/validators.js.map +0 -1
- package/dist/widgets/context-widget.d.ts +0 -13
- package/dist/widgets/context-widget.d.ts.map +0 -1
- package/dist/widgets/context-widget.js +0 -31
- package/dist/widgets/context-widget.js.map +0 -1
- package/dist/widgets/core/stdin-data-widget.d.ts +0 -93
- package/dist/widgets/core/stdin-data-widget.d.ts.map +0 -1
- package/dist/widgets/core/stdin-data-widget.js +0 -84
- package/dist/widgets/core/stdin-data-widget.js.map +0 -1
- package/dist/widgets/cost-widget.d.ts +0 -13
- package/dist/widgets/cost-widget.d.ts.map +0 -1
- package/dist/widgets/cost-widget.js +0 -18
- package/dist/widgets/cost-widget.js.map +0 -1
- package/dist/widgets/duration-widget.d.ts +0 -13
- package/dist/widgets/duration-widget.d.ts.map +0 -1
- package/dist/widgets/duration-widget.js +0 -18
- package/dist/widgets/duration-widget.js.map +0 -1
- package/dist/widgets/git/git-changes-widget.d.ts +0 -38
- package/dist/widgets/git/git-changes-widget.d.ts.map +0 -1
- package/dist/widgets/git/git-changes-widget.js +0 -91
- package/dist/widgets/git/git-changes-widget.js.map +0 -1
- package/dist/widgets/git/git-widget.d.ts +0 -37
- package/dist/widgets/git/git-widget.d.ts.map +0 -1
- package/dist/widgets/git/git-widget.js +0 -67
- package/dist/widgets/git/git-widget.js.map +0 -1
- package/dist/widgets/model-widget.d.ts +0 -13
- package/dist/widgets/model-widget.d.ts.map +0 -1
- package/dist/widgets/model-widget.js +0 -15
- package/dist/widgets/model-widget.js.map +0 -1
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Formatter utilities for displaying data in human-readable formats
|
|
3
|
-
*/
|
|
4
|
-
import { TIME, COST_THRESHOLDS, CONTEXT_THRESHOLDS, ANSI_COLORS, DEFAULTS } from '../../constants.js';
|
|
5
|
-
/**
|
|
6
|
-
* Format milliseconds to human-readable duration
|
|
7
|
-
*
|
|
8
|
-
* Examples:
|
|
9
|
-
* - 45000 -> "45s"
|
|
10
|
-
* - 60000 -> "1m 0s"
|
|
11
|
-
* - 3600000 -> "1h 0m 0s"
|
|
12
|
-
* - 3665000 -> "1h 1m 5s"
|
|
13
|
-
*
|
|
14
|
-
* @param ms - Duration in milliseconds
|
|
15
|
-
* @returns Human-readable duration string
|
|
16
|
-
*/
|
|
17
|
-
export function formatDuration(ms) {
|
|
18
|
-
if (ms <= 0)
|
|
19
|
-
return '0s';
|
|
20
|
-
const seconds = Math.floor(ms / TIME.MS_PER_SECOND);
|
|
21
|
-
const hours = Math.floor(seconds / TIME.SECONDS_PER_HOUR);
|
|
22
|
-
const minutes = Math.floor((seconds % TIME.SECONDS_PER_HOUR) / TIME.SECONDS_PER_MINUTE);
|
|
23
|
-
const secs = seconds % TIME.SECONDS_PER_MINUTE;
|
|
24
|
-
const parts = [];
|
|
25
|
-
if (hours > 0) {
|
|
26
|
-
parts.push(`${hours}h`);
|
|
27
|
-
parts.push(`${minutes}m`);
|
|
28
|
-
parts.push(`${secs}s`);
|
|
29
|
-
}
|
|
30
|
-
else if (minutes > 0) {
|
|
31
|
-
parts.push(`${minutes}m`);
|
|
32
|
-
parts.push(`${secs}s`);
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
parts.push(`${secs}s`);
|
|
36
|
-
}
|
|
37
|
-
return parts.join(' ');
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Format cost in USD with appropriate precision
|
|
41
|
-
*
|
|
42
|
-
* - Values < $0.01 (positive): 4 decimal places ($0.0012)
|
|
43
|
-
* - Values >= $0.01: 2 decimal places ($1.23)
|
|
44
|
-
* - Values >= $100: 0 decimal places ($123)
|
|
45
|
-
* - Negative values: 2 decimal places ($-1.23)
|
|
46
|
-
*
|
|
47
|
-
* @param usd - Cost in USD
|
|
48
|
-
* @returns Formatted cost string with $ prefix
|
|
49
|
-
*/
|
|
50
|
-
export function formatCostUSD(usd) {
|
|
51
|
-
const absUsd = Math.abs(usd);
|
|
52
|
-
if (usd < 0) {
|
|
53
|
-
// Negative values: 2 decimal places
|
|
54
|
-
return `$${usd.toFixed(2)}`;
|
|
55
|
-
}
|
|
56
|
-
else if (absUsd < COST_THRESHOLDS.SMALL) {
|
|
57
|
-
// 4 decimal places for very small positive values
|
|
58
|
-
return `$${usd.toFixed(4)}`;
|
|
59
|
-
}
|
|
60
|
-
else if (absUsd < COST_THRESHOLDS.LARGE) {
|
|
61
|
-
// 2 decimal places for normal values
|
|
62
|
-
return `$${usd.toFixed(2)}`;
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
// 0 decimal places for large values
|
|
66
|
-
return `$${Math.floor(usd).toFixed(0)}`;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Create a visual progress bar
|
|
71
|
-
*
|
|
72
|
-
* @param percent - Percentage (0-100)
|
|
73
|
-
* @param width - Bar width in characters (default: DEFAULTS.PROGRESS_BAR_WIDTH)
|
|
74
|
-
* @returns Progress bar string like "████████░░░░░░░░░░░░"
|
|
75
|
-
*/
|
|
76
|
-
export function progressBar(percent, width = DEFAULTS.PROGRESS_BAR_WIDTH) {
|
|
77
|
-
const clampedPercent = Math.max(0, Math.min(100, percent));
|
|
78
|
-
const filled = Math.round((clampedPercent / 100) * width);
|
|
79
|
-
const empty = width - filled;
|
|
80
|
-
return '█'.repeat(filled) + '░'.repeat(empty);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Get color code for context percentage
|
|
84
|
-
*
|
|
85
|
-
* - <50%: green (low usage)
|
|
86
|
-
* - 50-79%: yellow (medium usage)
|
|
87
|
-
* - >=80%: red (high usage)
|
|
88
|
-
*
|
|
89
|
-
* @param percent - Context usage percentage (0-100)
|
|
90
|
-
* @returns ANSI color code
|
|
91
|
-
*/
|
|
92
|
-
export function getContextColor(percent) {
|
|
93
|
-
const clampedPercent = Math.max(0, Math.min(100, percent));
|
|
94
|
-
if (clampedPercent < CONTEXT_THRESHOLDS.LOW_MEDIUM) {
|
|
95
|
-
return ANSI_COLORS.GREEN;
|
|
96
|
-
}
|
|
97
|
-
else if (clampedPercent < CONTEXT_THRESHOLDS.MEDIUM_HIGH) {
|
|
98
|
-
return ANSI_COLORS.YELLOW;
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
return ANSI_COLORS.RED;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Colorize text with ANSI color code
|
|
106
|
-
*
|
|
107
|
-
* @param text - Text to colorize
|
|
108
|
-
* @param color - ANSI color code
|
|
109
|
-
* @returns Colorized text with reset code
|
|
110
|
-
*/
|
|
111
|
-
export function colorize(text, color) {
|
|
112
|
-
return `${color}${text}${ANSI_COLORS.RESET}`;
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=formatters.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../src/ui/utils/formatters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { Validator, InferValidator } from './core.js';
|
|
2
|
-
export declare function object<T extends Record<string, Validator<any>>>(shape: T): Validator<{
|
|
3
|
-
[K in keyof T]: InferValidator<T[K]>;
|
|
4
|
-
}>;
|
|
5
|
-
export declare function optional<T>(validator: Validator<T>): Validator<T | undefined>;
|
|
6
|
-
export declare function nullable<T>(validator: Validator<T>): Validator<T | null>;
|
|
7
|
-
export declare function partial<T extends Record<string, Validator<any>>>(shape: T): Validator<Partial<{
|
|
8
|
-
[K in keyof T]: InferValidator<T[K]>;
|
|
9
|
-
}>>;
|
|
10
|
-
//# sourceMappingURL=combinators.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"combinators.d.ts","sourceRoot":"","sources":["../../src/validation/combinators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAI3D,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAC7D,KAAK,EAAE,CAAC,GACP,SAAS,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAsBrD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,SAAS,CAAC,CAO7E;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAOxE;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAC9D,KAAK,EAAE,CAAC,GACP,SAAS,CAAC,OAAO,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC,CAAC,CAM9D"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { success, failure } from './result.js';
|
|
2
|
-
export function object(shape) {
|
|
3
|
-
return {
|
|
4
|
-
validate(value) {
|
|
5
|
-
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
6
|
-
return failure([], 'Expected object', value);
|
|
7
|
-
}
|
|
8
|
-
const result = {};
|
|
9
|
-
for (const [key, validator] of Object.entries(shape)) {
|
|
10
|
-
const fieldValue = value[key];
|
|
11
|
-
const validationResult = validator.validate(fieldValue);
|
|
12
|
-
if (!validationResult.success) {
|
|
13
|
-
return {
|
|
14
|
-
success: false,
|
|
15
|
-
error: { ...validationResult.error, path: [key, ...validationResult.error.path] }
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
result[key] = validationResult.data;
|
|
19
|
-
}
|
|
20
|
-
return success(result);
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export function optional(validator) {
|
|
25
|
-
return {
|
|
26
|
-
validate(value) {
|
|
27
|
-
if (value === undefined)
|
|
28
|
-
return success(undefined);
|
|
29
|
-
return validator.validate(value);
|
|
30
|
-
}
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
export function nullable(validator) {
|
|
34
|
-
return {
|
|
35
|
-
validate(value) {
|
|
36
|
-
if (value === null)
|
|
37
|
-
return success(null);
|
|
38
|
-
return validator.validate(value);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
export function partial(shape) {
|
|
43
|
-
const optionalShape = {};
|
|
44
|
-
for (const [key, validator] of Object.entries(shape)) {
|
|
45
|
-
optionalShape[key] = optional(validator);
|
|
46
|
-
}
|
|
47
|
-
return object(optionalShape);
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=combinators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"combinators.js","sourceRoot":"","sources":["../../src/validation/combinators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG/C,MAAM,UAAU,MAAM,CACpB,KAAQ;IAER,OAAO;QACL,QAAQ,CAAC,KAAK;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxE,OAAO,OAAO,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,MAAM,GAAG,EAAS,CAAC;YACzB,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrD,MAAM,UAAU,GAAI,KAAa,CAAC,GAAG,CAAC,CAAC;gBACvC,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACxD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;oBAC9B,OAAO;wBACL,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,EAAE,GAAG,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;qBAClF,CAAC;gBACJ,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC;YACtC,CAAC;YACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,SAAuB;IACjD,OAAO;QACL,QAAQ,CAAC,KAAK;YACZ,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,SAAS,CAAC,CAAC;YACnD,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,SAAuB;IACjD,OAAO;QACL,QAAQ,CAAC,KAAK;YACZ,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CACrB,KAAQ;IAER,MAAM,aAAa,GAAmC,EAAE,CAAC;IACzD,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,MAAM,CAAC,aAAa,CAAQ,CAAC;AACtC,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Result type for validation operations
|
|
3
|
-
* Follows functional programming patterns (Either/Result monad)
|
|
4
|
-
*/
|
|
5
|
-
export type ValidationResult<T> = {
|
|
6
|
-
success: true;
|
|
7
|
-
data: T;
|
|
8
|
-
} | {
|
|
9
|
-
success: false;
|
|
10
|
-
error: ValidationError;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Validation error with path information
|
|
14
|
-
*/
|
|
15
|
-
export interface ValidationError {
|
|
16
|
-
path: string[];
|
|
17
|
-
message: string;
|
|
18
|
-
value: unknown;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Base validator interface
|
|
22
|
-
*/
|
|
23
|
-
export interface Validator<T> {
|
|
24
|
-
validate(value: unknown): ValidationResult<T>;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Type inference helper
|
|
28
|
-
*/
|
|
29
|
-
export type InferValidator<V> = V extends Validator<infer T> ? T : never;
|
|
30
|
-
//# sourceMappingURL=core.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/validation/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAC1B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GAC1B;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,eAAe,CAAA;CAAE,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC"}
|
package/dist/validation/core.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/validation/core.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
|
package/dist/validation/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { ValidationResult, ValidationError } from './core.js';
|
|
2
|
-
export declare function success<T>(data: T): ValidationResult<T>;
|
|
3
|
-
export declare function failure(path: string[], message: string, value: unknown): ValidationResult<never>;
|
|
4
|
-
export declare function formatError(error: ValidationError): string;
|
|
5
|
-
//# sourceMappingURL=result.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/validation/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEnE,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAEvD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAEhG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAG1D"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export function success(data) {
|
|
2
|
-
return { success: true, data };
|
|
3
|
-
}
|
|
4
|
-
export function failure(path, message, value) {
|
|
5
|
-
return { success: false, error: { path, message, value } };
|
|
6
|
-
}
|
|
7
|
-
export function formatError(error) {
|
|
8
|
-
const path = error.path.length > 0 ? error.path.join('.') : 'root';
|
|
9
|
-
return `${path}: ${error.message}`;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=result.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/validation/result.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,OAAO,CAAI,IAAO;IAChC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAc,EAAE,OAAe,EAAE,KAAc;IACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAsB;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnE,OAAO,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;AACrC,CAAC"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { Validator } from './core.js';
|
|
2
|
-
export declare function string(): Validator<string>;
|
|
3
|
-
export declare function number(): Validator<number>;
|
|
4
|
-
export declare function literal<T extends string | number | boolean>(expected: T): Validator<T>;
|
|
5
|
-
export declare function nullValidator(): Validator<null>;
|
|
6
|
-
export declare function unknown(): Validator<unknown>;
|
|
7
|
-
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/validation/validators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,wBAAgB,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CAO1C;AAED,wBAAgB,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,CAO1C;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAOtF;AAED,wBAAgB,aAAa,IAAI,SAAS,CAAC,IAAI,CAAC,CAO/C;AAED,wBAAgB,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAE5C"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { success, failure } from './result.js';
|
|
2
|
-
export function string() {
|
|
3
|
-
return {
|
|
4
|
-
validate(value) {
|
|
5
|
-
if (typeof value === 'string')
|
|
6
|
-
return success(value);
|
|
7
|
-
return failure([], 'Expected string', value);
|
|
8
|
-
}
|
|
9
|
-
};
|
|
10
|
-
}
|
|
11
|
-
export function number() {
|
|
12
|
-
return {
|
|
13
|
-
validate(value) {
|
|
14
|
-
if (typeof value === 'number' && !Number.isNaN(value))
|
|
15
|
-
return success(value);
|
|
16
|
-
return failure([], 'Expected number', value);
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
export function literal(expected) {
|
|
21
|
-
return {
|
|
22
|
-
validate(value) {
|
|
23
|
-
if (value === expected)
|
|
24
|
-
return success(expected);
|
|
25
|
-
return failure([], `Expected '${expected}'`, value);
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
export function nullValidator() {
|
|
30
|
-
return {
|
|
31
|
-
validate(value) {
|
|
32
|
-
if (value === null)
|
|
33
|
-
return success(null);
|
|
34
|
-
return failure([], 'Expected null', value);
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
export function unknown() {
|
|
39
|
-
return { validate(value) { return success(value); } };
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=validators.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/validation/validators.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,UAAU,MAAM;IACpB,OAAO;QACL,QAAQ,CAAC,KAAK;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;YACrD,OAAO,OAAO,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO;QACL,QAAQ,CAAC,KAAK;YACZ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7E,OAAO,OAAO,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAsC,QAAW;IACtE,OAAO;QACL,QAAQ,CAAC,KAAK;YACZ,IAAI,KAAK,KAAK,QAAQ;gBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;YACjD,OAAO,OAAO,CAAC,EAAE,EAAE,aAAa,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;QACtD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,QAAQ,CAAC,KAAK;YACZ,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,OAAO,OAAO,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO;IACrB,OAAO,EAAE,QAAQ,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Context Widget
|
|
3
|
-
*
|
|
4
|
-
* Displays context window usage with progress bar
|
|
5
|
-
*/
|
|
6
|
-
import { StdinDataWidget } from './core/stdin-data-widget.js';
|
|
7
|
-
import type { RenderContext, StdinData } from '../types.js';
|
|
8
|
-
export declare class ContextWidget extends StdinDataWidget {
|
|
9
|
-
readonly id = "context";
|
|
10
|
-
readonly metadata: import("../core/types.js").IWidgetMetadata;
|
|
11
|
-
protected renderWithData(data: StdinData, context: RenderContext): string | null;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=context-widget.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-widget.d.ts","sourceRoot":"","sources":["../../src/widgets/context-widget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAI9D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE5D,qBAAa,aAAc,SAAQ,eAAe;IAChD,QAAQ,CAAC,EAAE,aAAa;IACxB,QAAQ,CAAC,QAAQ,6CAGf;IAEF,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI;CAqBjF"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Context Widget
|
|
3
|
-
*
|
|
4
|
-
* Displays context window usage with progress bar
|
|
5
|
-
*/
|
|
6
|
-
import { StdinDataWidget } from './core/stdin-data-widget.js';
|
|
7
|
-
import { createWidgetMetadata } from '../core/widget-types.js';
|
|
8
|
-
import { progressBar, getContextColor, colorize } from '../ui/utils/formatters.js';
|
|
9
|
-
import { DEFAULTS } from '../constants.js';
|
|
10
|
-
export class ContextWidget extends StdinDataWidget {
|
|
11
|
-
id = 'context';
|
|
12
|
-
metadata = createWidgetMetadata('Context', 'Displays context window usage with progress bar');
|
|
13
|
-
renderWithData(data, context) {
|
|
14
|
-
const { current_usage, context_window_size } = data.context_window;
|
|
15
|
-
if (!current_usage)
|
|
16
|
-
return null;
|
|
17
|
-
// Calculate actual context usage:
|
|
18
|
-
// - input_tokens: new tokens added to context
|
|
19
|
-
// - cache_creation_input_tokens: tokens spent creating cache (also in context)
|
|
20
|
-
// - cache_read_input_tokens: NOT counted (reading from cache doesn't use context space)
|
|
21
|
-
// - output_tokens: tokens in the response (also part of context)
|
|
22
|
-
const used = current_usage.input_tokens +
|
|
23
|
-
current_usage.cache_creation_input_tokens +
|
|
24
|
-
current_usage.output_tokens;
|
|
25
|
-
const percent = Math.round((used / context_window_size) * 100);
|
|
26
|
-
const bar = progressBar(percent, DEFAULTS.PROGRESS_BAR_WIDTH);
|
|
27
|
-
const color = getContextColor(percent);
|
|
28
|
-
return colorize(`[${bar}] ${percent}%`, color);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=context-widget.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-widget.js","sourceRoot":"","sources":["../../src/widgets/context-widget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAG3C,MAAM,OAAO,aAAc,SAAQ,eAAe;IACvC,EAAE,GAAG,SAAS,CAAC;IACf,QAAQ,GAAG,oBAAoB,CACtC,SAAS,EACT,iDAAiD,CAClD,CAAC;IAEQ,cAAc,CAAC,IAAe,EAAE,OAAsB;QAC9D,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;QAEnE,IAAI,CAAC,aAAa;YAAE,OAAO,IAAI,CAAC;QAEhC,kCAAkC;QAClC,8CAA8C;QAC9C,+EAA+E;QAC/E,wFAAwF;QACxF,iEAAiE;QACjE,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY;YAC1B,aAAa,CAAC,2BAA2B;YACzC,aAAa,CAAC,aAAa,CAAC;QAEzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,mBAAmB,CAAC,GAAG,GAAG,CAAC,CAAC;QAE/D,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAEvC,OAAO,QAAQ,CAAC,IAAI,GAAG,KAAK,OAAO,GAAG,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;CACF"}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base class for widgets that receive StdinData
|
|
3
|
-
*
|
|
4
|
-
* Uses Template Method Pattern for state management.
|
|
5
|
-
*
|
|
6
|
-
* Extending widgets only need to implement renderWithData() method.
|
|
7
|
-
* The base class handles data storage, update logic, and enables checking.
|
|
8
|
-
*/
|
|
9
|
-
import type { IWidget, IWidgetMetadata, WidgetContext, RenderContext } from '../../core/types.js';
|
|
10
|
-
import type { StdinData } from '../../types.js';
|
|
11
|
-
/**
|
|
12
|
-
* Abstract base class for widgets working with StdinData
|
|
13
|
-
*
|
|
14
|
-
* Uses Template Method Pattern:
|
|
15
|
-
* - render() is final template method that handles null checks
|
|
16
|
-
* - Subclasses implement renderWithData() hook with data as parameter
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```typescript
|
|
20
|
-
* export class ModelWidget extends StdinDataWidget {
|
|
21
|
-
* readonly id = 'model';
|
|
22
|
-
* readonly metadata = createWidgetMetadata('Model', 'Displays Claude model');
|
|
23
|
-
*
|
|
24
|
-
* protected renderWithData(data: StdinData, context: RenderContext): string | null {
|
|
25
|
-
* return data.model.display_name;
|
|
26
|
-
* }
|
|
27
|
-
* }
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export declare abstract class StdinDataWidget implements IWidget {
|
|
31
|
-
/**
|
|
32
|
-
* Stored stdin data from last update
|
|
33
|
-
*/
|
|
34
|
-
protected data: StdinData | null;
|
|
35
|
-
/**
|
|
36
|
-
* Widget enabled state
|
|
37
|
-
*/
|
|
38
|
-
protected enabled: boolean;
|
|
39
|
-
/**
|
|
40
|
-
* Unique widget identifier
|
|
41
|
-
*/
|
|
42
|
-
abstract readonly id: string;
|
|
43
|
-
/**
|
|
44
|
-
* Widget metadata
|
|
45
|
-
*/
|
|
46
|
-
abstract readonly metadata: IWidgetMetadata;
|
|
47
|
-
/**
|
|
48
|
-
* Initialize widget with context
|
|
49
|
-
* @param context - Widget initialization context
|
|
50
|
-
*/
|
|
51
|
-
initialize(context: WidgetContext): Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
* Update widget with new stdin data
|
|
54
|
-
* @param data - Stdin data from Claude Code
|
|
55
|
-
*/
|
|
56
|
-
update(data: StdinData): Promise<void>;
|
|
57
|
-
/**
|
|
58
|
-
* Get stored stdin data
|
|
59
|
-
* @returns Stored stdin data
|
|
60
|
-
* @throws Error if data has not been initialized (update not called)
|
|
61
|
-
*/
|
|
62
|
-
getData(): StdinData;
|
|
63
|
-
/**
|
|
64
|
-
* Check if widget is enabled
|
|
65
|
-
* @returns true if widget should render
|
|
66
|
-
*/
|
|
67
|
-
isEnabled(): boolean;
|
|
68
|
-
/**
|
|
69
|
-
* Template method - final, subclasses implement renderWithData()
|
|
70
|
-
*
|
|
71
|
-
* Handles null data checks and calls renderWithData() hook.
|
|
72
|
-
*
|
|
73
|
-
* @param context - Render context
|
|
74
|
-
* @returns Rendered string, or null if widget should not display
|
|
75
|
-
*/
|
|
76
|
-
render(context: RenderContext): Promise<string | null>;
|
|
77
|
-
/**
|
|
78
|
-
* Hook method for subclasses to implement rendering logic
|
|
79
|
-
*
|
|
80
|
-
* Called by render() template method with guaranteed non-null data.
|
|
81
|
-
*
|
|
82
|
-
* @param data - Stdin data (guaranteed to be non-null)
|
|
83
|
-
* @param context - Render context
|
|
84
|
-
* @returns Rendered string, or null if widget should not display
|
|
85
|
-
*/
|
|
86
|
-
protected abstract renderWithData(data: StdinData, context: RenderContext): string | null;
|
|
87
|
-
/**
|
|
88
|
-
* Optional cleanup method
|
|
89
|
-
* Override if widget has resources to clean up
|
|
90
|
-
*/
|
|
91
|
-
cleanup?(): Promise<void>;
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=stdin-data-widget.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stdin-data-widget.d.ts","sourceRoot":"","sources":["../../../src/widgets/core/stdin-data-widget.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;;;;;;;;;;;GAkBG;AACH,8BAAsB,eAAgB,YAAW,OAAO;IACtD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAAQ;IAExC;;OAEG;IACH,SAAS,CAAC,OAAO,UAAQ;IAEzB;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IAE5C;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;;OAGG;IACG,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C;;;;OAIG;IACH,OAAO,IAAI,SAAS;IAOpB;;;OAGG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;;;;OAOG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAO5D;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAC/B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,aAAa,GACrB,MAAM,GAAG,IAAI;IAEhB;;;OAGG;IACG,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;CAChC"}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Base class for widgets that receive StdinData
|
|
3
|
-
*
|
|
4
|
-
* Uses Template Method Pattern for state management.
|
|
5
|
-
*
|
|
6
|
-
* Extending widgets only need to implement renderWithData() method.
|
|
7
|
-
* The base class handles data storage, update logic, and enables checking.
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* Abstract base class for widgets working with StdinData
|
|
11
|
-
*
|
|
12
|
-
* Uses Template Method Pattern:
|
|
13
|
-
* - render() is final template method that handles null checks
|
|
14
|
-
* - Subclasses implement renderWithData() hook with data as parameter
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* export class ModelWidget extends StdinDataWidget {
|
|
19
|
-
* readonly id = 'model';
|
|
20
|
-
* readonly metadata = createWidgetMetadata('Model', 'Displays Claude model');
|
|
21
|
-
*
|
|
22
|
-
* protected renderWithData(data: StdinData, context: RenderContext): string | null {
|
|
23
|
-
* return data.model.display_name;
|
|
24
|
-
* }
|
|
25
|
-
* }
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export class StdinDataWidget {
|
|
29
|
-
/**
|
|
30
|
-
* Stored stdin data from last update
|
|
31
|
-
*/
|
|
32
|
-
data = null;
|
|
33
|
-
/**
|
|
34
|
-
* Widget enabled state
|
|
35
|
-
*/
|
|
36
|
-
enabled = true;
|
|
37
|
-
/**
|
|
38
|
-
* Initialize widget with context
|
|
39
|
-
* @param context - Widget initialization context
|
|
40
|
-
*/
|
|
41
|
-
async initialize(context) {
|
|
42
|
-
this.enabled = context.config?.enabled !== false;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Update widget with new stdin data
|
|
46
|
-
* @param data - Stdin data from Claude Code
|
|
47
|
-
*/
|
|
48
|
-
async update(data) {
|
|
49
|
-
this.data = data;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get stored stdin data
|
|
53
|
-
* @returns Stored stdin data
|
|
54
|
-
* @throws Error if data has not been initialized (update not called)
|
|
55
|
-
*/
|
|
56
|
-
getData() {
|
|
57
|
-
if (!this.data) {
|
|
58
|
-
throw new Error(`Widget ${this.id} data not initialized. Call update() first.`);
|
|
59
|
-
}
|
|
60
|
-
return this.data;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Check if widget is enabled
|
|
64
|
-
* @returns true if widget should render
|
|
65
|
-
*/
|
|
66
|
-
isEnabled() {
|
|
67
|
-
return this.enabled;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Template method - final, subclasses implement renderWithData()
|
|
71
|
-
*
|
|
72
|
-
* Handles null data checks and calls renderWithData() hook.
|
|
73
|
-
*
|
|
74
|
-
* @param context - Render context
|
|
75
|
-
* @returns Rendered string, or null if widget should not display
|
|
76
|
-
*/
|
|
77
|
-
async render(context) {
|
|
78
|
-
if (!this.data || !this.enabled) {
|
|
79
|
-
return null;
|
|
80
|
-
}
|
|
81
|
-
return this.renderWithData(this.data, context);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
//# sourceMappingURL=stdin-data-widget.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stdin-data-widget.js","sourceRoot":"","sources":["../../../src/widgets/core/stdin-data-widget.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAgB,eAAe;IACnC;;OAEG;IACO,IAAI,GAAqB,IAAI,CAAC;IAExC;;OAEG;IACO,OAAO,GAAG,IAAI,CAAC;IAYzB;;;OAGG;IACH,KAAK,CAAC,UAAU,CAAC,OAAsB;QACrC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,OAAO,KAAK,KAAK,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,IAAe;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;OAIG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,EAAE,6CAA6C,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,MAAM,CAAC,OAAsB;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;CAqBF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cost Widget
|
|
3
|
-
*
|
|
4
|
-
* Displays total session cost
|
|
5
|
-
*/
|
|
6
|
-
import { StdinDataWidget } from './core/stdin-data-widget.js';
|
|
7
|
-
import type { RenderContext, StdinData } from '../types.js';
|
|
8
|
-
export declare class CostWidget extends StdinDataWidget {
|
|
9
|
-
readonly id = "cost";
|
|
10
|
-
readonly metadata: import("../core/types.js").IWidgetMetadata;
|
|
11
|
-
protected renderWithData(data: StdinData, context: RenderContext): string | null;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=cost-widget.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cost-widget.d.ts","sourceRoot":"","sources":["../../src/widgets/cost-widget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE5D,qBAAa,UAAW,SAAQ,eAAe;IAC7C,QAAQ,CAAC,EAAE,UAAU;IACrB,QAAQ,CAAC,QAAQ,6CAGf;IAEF,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI;CAIjF"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Cost Widget
|
|
3
|
-
*
|
|
4
|
-
* Displays total session cost
|
|
5
|
-
*/
|
|
6
|
-
import { StdinDataWidget } from './core/stdin-data-widget.js';
|
|
7
|
-
import { createWidgetMetadata } from '../core/widget-types.js';
|
|
8
|
-
import { formatCostUSD } from '../ui/utils/formatters.js';
|
|
9
|
-
export class CostWidget extends StdinDataWidget {
|
|
10
|
-
id = 'cost';
|
|
11
|
-
metadata = createWidgetMetadata('Cost', 'Displays session cost in USD');
|
|
12
|
-
renderWithData(data, context) {
|
|
13
|
-
if (!data.cost || data.cost.total_cost_usd === undefined)
|
|
14
|
-
return null;
|
|
15
|
-
return formatCostUSD(data.cost.total_cost_usd);
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=cost-widget.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cost-widget.js","sourceRoot":"","sources":["../../src/widgets/cost-widget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG1D,MAAM,OAAO,UAAW,SAAQ,eAAe;IACpC,EAAE,GAAG,MAAM,CAAC;IACZ,QAAQ,GAAG,oBAAoB,CACtC,MAAM,EACN,8BAA8B,CAC/B,CAAC;IAEQ,cAAc,CAAC,IAAe,EAAE,OAAsB;QAC9D,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACtE,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;CACF"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Duration Widget
|
|
3
|
-
*
|
|
4
|
-
* Displays elapsed session time
|
|
5
|
-
*/
|
|
6
|
-
import { StdinDataWidget } from './core/stdin-data-widget.js';
|
|
7
|
-
import type { RenderContext, StdinData } from '../types.js';
|
|
8
|
-
export declare class DurationWidget extends StdinDataWidget {
|
|
9
|
-
readonly id = "duration";
|
|
10
|
-
readonly metadata: import("../core/types.js").IWidgetMetadata;
|
|
11
|
-
protected renderWithData(data: StdinData, context: RenderContext): string | null;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=duration-widget.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duration-widget.d.ts","sourceRoot":"","sources":["../../src/widgets/duration-widget.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE5D,qBAAa,cAAe,SAAQ,eAAe;IACjD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,QAAQ,6CAGf;IAEF,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI;CAIjF"}
|