claude-scope 0.1.3 → 0.1.5

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.
Files changed (64) hide show
  1. package/dist/core/renderer.d.ts +33 -3
  2. package/dist/core/renderer.d.ts.map +1 -1
  3. package/dist/core/renderer.js +48 -7
  4. package/dist/core/renderer.js.map +1 -1
  5. package/dist/data/stdin-provider.d.ts +44 -0
  6. package/dist/data/stdin-provider.d.ts.map +1 -0
  7. package/dist/data/stdin-provider.js +83 -0
  8. package/dist/data/stdin-provider.js.map +1 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +56 -64
  11. package/dist/index.js.map +1 -1
  12. package/dist/providers/git-provider.d.ts +53 -46
  13. package/dist/providers/git-provider.d.ts.map +1 -1
  14. package/dist/providers/git-provider.js +53 -107
  15. package/dist/providers/git-provider.js.map +1 -1
  16. package/dist/providers/stdin-provider.d.ts +16 -15
  17. package/dist/providers/stdin-provider.d.ts.map +1 -1
  18. package/dist/providers/stdin-provider.js +35 -66
  19. package/dist/providers/stdin-provider.js.map +1 -1
  20. package/dist/schemas/stdin-schema.d.ts +123 -0
  21. package/dist/schemas/stdin-schema.d.ts.map +1 -0
  22. package/dist/schemas/stdin-schema.js +81 -0
  23. package/dist/schemas/stdin-schema.js.map +1 -0
  24. package/dist/types.d.ts +6 -63
  25. package/dist/types.d.ts.map +1 -1
  26. package/dist/types.js +3 -0
  27. package/dist/types.js.map +1 -1
  28. package/dist/ui/utils/colors.d.ts +52 -0
  29. package/dist/ui/utils/colors.d.ts.map +1 -0
  30. package/dist/ui/utils/colors.js +54 -0
  31. package/dist/ui/utils/colors.js.map +1 -0
  32. package/dist/ui/utils/formatters.d.ts +56 -0
  33. package/dist/ui/utils/formatters.d.ts.map +1 -0
  34. package/dist/ui/utils/formatters.js +114 -0
  35. package/dist/ui/utils/formatters.js.map +1 -0
  36. package/dist/widgets/context-widget.d.ts +3 -3
  37. package/dist/widgets/context-widget.d.ts.map +1 -1
  38. package/dist/widgets/context-widget.js +9 -5
  39. package/dist/widgets/context-widget.js.map +1 -1
  40. package/dist/widgets/core/stdin-data-widget.d.ts +93 -0
  41. package/dist/widgets/core/stdin-data-widget.d.ts.map +1 -0
  42. package/dist/widgets/core/stdin-data-widget.js +84 -0
  43. package/dist/widgets/core/stdin-data-widget.js.map +1 -0
  44. package/dist/widgets/cost-widget.d.ts +4 -4
  45. package/dist/widgets/cost-widget.d.ts.map +1 -1
  46. package/dist/widgets/cost-widget.js +6 -5
  47. package/dist/widgets/cost-widget.js.map +1 -1
  48. package/dist/widgets/duration-widget.d.ts +3 -3
  49. package/dist/widgets/duration-widget.d.ts.map +1 -1
  50. package/dist/widgets/duration-widget.js +5 -4
  51. package/dist/widgets/duration-widget.js.map +1 -1
  52. package/dist/widgets/git/git-changes-widget.d.ts +38 -0
  53. package/dist/widgets/git/git-changes-widget.d.ts.map +1 -0
  54. package/dist/widgets/git/git-changes-widget.js +91 -0
  55. package/dist/widgets/git/git-changes-widget.js.map +1 -0
  56. package/dist/widgets/git/git-widget.d.ts +37 -0
  57. package/dist/widgets/git/git-widget.d.ts.map +1 -0
  58. package/dist/widgets/git/git-widget.js +67 -0
  59. package/dist/widgets/git/git-widget.js.map +1 -0
  60. package/dist/widgets/model-widget.d.ts +3 -3
  61. package/dist/widgets/model-widget.d.ts.map +1 -1
  62. package/dist/widgets/model-widget.js +2 -3
  63. package/dist/widgets/model-widget.js.map +1 -1
  64. package/package.json +11 -9
@@ -1,21 +1,51 @@
1
1
  /**
2
- * Unified rendering engine
2
+ * Unified rendering engine with error boundaries
3
3
  * Combines widget outputs into statusline
4
4
  */
5
5
  import type { IWidget } from './types.js';
6
6
  import type { RenderContext } from '../types.js';
7
7
  /**
8
- * Renderer for combining widget outputs
8
+ * Renderer configuration options
9
+ */
10
+ export interface RendererOptions {
11
+ /** Separator between widget outputs */
12
+ separator?: string;
13
+ /** Error handler callback for widget render failures */
14
+ onError?: (error: Error, widget: IWidget) => void;
15
+ /** Show error placeholder in output (for debugging) */
16
+ showErrors?: boolean;
17
+ }
18
+ /**
19
+ * Renderer for combining widget outputs with error boundaries
20
+ *
21
+ * Failed widgets are gracefully skipped, preventing single widget
22
+ * failures from breaking the entire statusline.
9
23
  */
10
24
  export declare class Renderer {
11
25
  private separator;
26
+ private onError?;
27
+ private showErrors;
28
+ constructor(options?: RendererOptions);
12
29
  /**
13
- * Render widgets into a single line
30
+ * Render widgets into a single line with error boundaries
31
+ *
32
+ * Widgets that throw errors are logged (via onError callback) and skipped,
33
+ * allowing other widgets to continue rendering.
34
+ *
35
+ * @param widgets - Array of widgets to render
36
+ * @param context - Render context with width and timestamp
37
+ * @returns Combined widget outputs separated by separator
14
38
  */
15
39
  render(widgets: IWidget[], context: RenderContext): Promise<string>;
16
40
  /**
17
41
  * Set custom separator
18
42
  */
19
43
  setSeparator(separator: string): void;
44
+ /**
45
+ * Handle widget render errors
46
+ *
47
+ * Calls the onError callback if provided, otherwise logs to console.warn
48
+ */
49
+ private handleError;
20
50
  }
21
51
  //# sourceMappingURL=renderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;GAEG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,SAAS,CAA8B;IAE/C;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBzE;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGtC"}
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAC,CAA0C;IAC1D,OAAO,CAAC,UAAU,CAAU;gBAEhB,OAAO,GAAE,eAAoB;IAMzC;;;;;;;;;OASG;IACG,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA2BzE;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;OAIG;IACH,OAAO,CAAC,WAAW;CAQpB"}
@@ -1,15 +1,32 @@
1
1
  /**
2
- * Unified rendering engine
2
+ * Unified rendering engine with error boundaries
3
3
  * Combines widget outputs into statusline
4
4
  */
5
5
  import { DEFAULTS } from '../constants.js';
6
6
  /**
7
- * Renderer for combining widget outputs
7
+ * Renderer for combining widget outputs with error boundaries
8
+ *
9
+ * Failed widgets are gracefully skipped, preventing single widget
10
+ * failures from breaking the entire statusline.
8
11
  */
9
12
  export class Renderer {
10
- separator = DEFAULTS.SEPARATOR;
13
+ separator;
14
+ onError;
15
+ showErrors;
16
+ constructor(options = {}) {
17
+ this.separator = options.separator ?? DEFAULTS.SEPARATOR;
18
+ this.onError = options.onError;
19
+ this.showErrors = options.showErrors ?? false;
20
+ }
11
21
  /**
12
- * Render widgets into a single line
22
+ * Render widgets into a single line with error boundaries
23
+ *
24
+ * Widgets that throw errors are logged (via onError callback) and skipped,
25
+ * allowing other widgets to continue rendering.
26
+ *
27
+ * @param widgets - Array of widgets to render
28
+ * @param context - Render context with width and timestamp
29
+ * @returns Combined widget outputs separated by separator
13
30
  */
14
31
  async render(widgets, context) {
15
32
  const outputs = [];
@@ -17,9 +34,19 @@ export class Renderer {
17
34
  if (!widget.isEnabled()) {
18
35
  continue;
19
36
  }
20
- const output = await widget.render(context);
21
- if (output !== null) {
22
- outputs.push(output);
37
+ try {
38
+ const output = await widget.render(context);
39
+ if (output !== null) {
40
+ outputs.push(output);
41
+ }
42
+ }
43
+ catch (error) {
44
+ // Log error but continue rendering other widgets
45
+ this.handleError(error, widget);
46
+ // Optional: show error placeholder in output
47
+ if (this.showErrors) {
48
+ outputs.push(`${widget.id}:<err>`);
49
+ }
23
50
  }
24
51
  }
25
52
  return outputs.join(this.separator);
@@ -30,5 +57,19 @@ export class Renderer {
30
57
  setSeparator(separator) {
31
58
  this.separator = separator;
32
59
  }
60
+ /**
61
+ * Handle widget render errors
62
+ *
63
+ * Calls the onError callback if provided, otherwise logs to console.warn
64
+ */
65
+ handleError(error, widget) {
66
+ if (this.onError) {
67
+ this.onError(error, widget);
68
+ }
69
+ else {
70
+ // Default: silent fail with console.warn
71
+ console.warn(`[Widget ${widget.id}] ${error.message}`);
72
+ }
73
+ }
33
74
  }
34
75
  //# sourceMappingURL=renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAO,QAAQ;IACX,SAAS,GAAW,QAAQ,CAAC,SAAS,CAAC;IAE/C;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAkB,EAAE,OAAsB;QACrD,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/core/renderer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAc3C;;;;;GAKG;AACH,MAAM,OAAO,QAAQ;IACX,SAAS,CAAS;IAClB,OAAO,CAA2C;IAClD,UAAU,CAAU;IAE5B,YAAY,UAA2B,EAAE;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC;IAChD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,MAAM,CAAC,OAAkB,EAAE,OAAsB;QACrD,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;gBACxB,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,iDAAiD;gBACjD,IAAI,CAAC,WAAW,CAAC,KAAc,EAAE,MAAM,CAAC,CAAC;gBAEzC,6CAA6C;gBAC7C,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACK,WAAW,CAAC,KAAY,EAAE,MAAe;QAC/C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,yCAAyC;YACzC,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Stdin provider for parsing JSON data from stdin
3
+ * Parses and validates Claude Code session data using Zod
4
+ */
5
+ import type { StdinData } from '../types.js';
6
+ /**
7
+ * Error thrown when stdin parsing fails
8
+ */
9
+ export declare class StdinParseError extends Error {
10
+ constructor(message: string);
11
+ }
12
+ /**
13
+ * Error thrown when stdin validation fails
14
+ */
15
+ export declare class StdinValidationError extends Error {
16
+ constructor(message: string);
17
+ }
18
+ /**
19
+ * Stdin provider for parsing and validating JSON data
20
+ */
21
+ export declare class StdinProvider {
22
+ /**
23
+ * Parse and validate JSON string from stdin
24
+ * @param input JSON string to parse
25
+ * @returns Validated StdinData object
26
+ * @throws StdinParseError if JSON is malformed
27
+ * @throws StdinValidationError if data doesn't match schema
28
+ */
29
+ parse(input: string): Promise<StdinData>;
30
+ /**
31
+ * Safe parse that returns result instead of throwing
32
+ * Useful for testing and optional validation
33
+ * @param input JSON string to parse
34
+ * @returns Result object with success flag
35
+ */
36
+ safeParse(input: string): Promise<{
37
+ success: true;
38
+ data: StdinData;
39
+ } | {
40
+ success: false;
41
+ error: string;
42
+ }>;
43
+ }
44
+ //# sourceMappingURL=stdin-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdin-provider.d.ts","sourceRoot":"","sources":["../../src/data/stdin-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB;;;;;;OAMG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAmC9C;;;;;OAKG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAQhH"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Stdin provider for parsing JSON data from stdin
3
+ * Parses and validates Claude Code session data using Zod
4
+ */
5
+ import { z } from 'zod';
6
+ import { StdinDataSchema } from '../schemas/stdin-schema.js';
7
+ /**
8
+ * Error thrown when stdin parsing fails
9
+ */
10
+ export class StdinParseError extends Error {
11
+ constructor(message) {
12
+ super(message);
13
+ this.name = 'StdinParseError';
14
+ }
15
+ }
16
+ /**
17
+ * Error thrown when stdin validation fails
18
+ */
19
+ export class StdinValidationError extends Error {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = 'StdinValidationError';
23
+ }
24
+ }
25
+ /**
26
+ * Stdin provider for parsing and validating JSON data
27
+ */
28
+ export class StdinProvider {
29
+ /**
30
+ * Parse and validate JSON string from stdin
31
+ * @param input JSON string to parse
32
+ * @returns Validated StdinData object
33
+ * @throws StdinParseError if JSON is malformed
34
+ * @throws StdinValidationError if data doesn't match schema
35
+ */
36
+ async parse(input) {
37
+ // Check for empty input
38
+ if (!input || input.trim().length === 0) {
39
+ throw new StdinParseError('stdin data is empty');
40
+ }
41
+ // Parse JSON
42
+ let data;
43
+ try {
44
+ data = JSON.parse(input);
45
+ }
46
+ catch (error) {
47
+ throw new StdinParseError(`Invalid JSON: ${error.message}`);
48
+ }
49
+ // Validate with Zod
50
+ try {
51
+ return StdinDataSchema.parse(data);
52
+ }
53
+ catch (error) {
54
+ if (error instanceof z.ZodError) {
55
+ // Format error messages nicely
56
+ const errorDetails = error.issues
57
+ .map((e) => {
58
+ const path = e.path.length > 0 ? e.path.join('.') : 'root';
59
+ return `${path}: ${e.message}`;
60
+ })
61
+ .join(', ');
62
+ throw new StdinValidationError(`Validation failed: ${errorDetails}`);
63
+ }
64
+ throw error;
65
+ }
66
+ }
67
+ /**
68
+ * Safe parse that returns result instead of throwing
69
+ * Useful for testing and optional validation
70
+ * @param input JSON string to parse
71
+ * @returns Result object with success flag
72
+ */
73
+ async safeParse(input) {
74
+ try {
75
+ const data = await this.parse(input);
76
+ return { success: true, data };
77
+ }
78
+ catch (error) {
79
+ return { success: false, error: error.message };
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=stdin-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdin-provider.js","sourceRoot":"","sources":["../../src/data/stdin-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,aAAa;IACxB;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa;QACvB,wBAAwB;QACxB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,eAAe,CAAC,qBAAqB,CAAC,CAAC;QACnD,CAAC;QAED,aAAa;QACb,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,eAAe,CAAC,iBAAkB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;QAED,oBAAoB;QACpB,IAAI,CAAC;YACH,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,+BAA+B;gBAC/B,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM;qBAC9B,GAAG,CAAC,CAAC,CAAa,EAAE,EAAE;oBACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC3D,OAAO,GAAG,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBACjC,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEd,MAAM,IAAI,oBAAoB,CAC5B,sBAAsB,YAAY,EAAE,CACrC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,SAAS,CAAC,KAAa;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC;QAC7D,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AAuDH;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAkC5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;GAGG;AA0BH;;GAEG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAkD5C"}
package/dist/index.js CHANGED
@@ -5,82 +5,74 @@
5
5
  */
6
6
  import { WidgetRegistry } from './core/widget-registry.js';
7
7
  import { Renderer } from './core/renderer.js';
8
- import { GitWidget } from './widgets/git-widget.js';
8
+ import { GitWidget } from './widgets/git/git-widget.js';
9
9
  import { ModelWidget } from './widgets/model-widget.js';
10
10
  import { ContextWidget } from './widgets/context-widget.js';
11
11
  import { CostWidget } from './widgets/cost-widget.js';
12
12
  import { DurationWidget } from './widgets/duration-widget.js';
13
- import { GitChangesWidget } from './widgets/git-changes-widget.js';
14
- import { createGitAdapter } from './providers/git-provider.js';
13
+ import { GitChangesWidget } from './widgets/git/git-changes-widget.js';
14
+ import { StdinProvider } from './data/stdin-provider.js';
15
15
  /**
16
- * Create mock StdinData for development/testing
16
+ * Read stdin as string
17
17
  */
18
- function createMockStdinData() {
19
- return {
20
- hook_event_name: 'Status',
21
- session_id: 'dev-session',
22
- transcript_path: '/tmp/transcript.json',
23
- cwd: process.cwd(),
24
- model: {
25
- id: 'claude-opus-4-1',
26
- display_name: 'Opus 4.5'
27
- },
28
- workspace: {
29
- current_dir: process.cwd(),
30
- project_dir: process.cwd()
31
- },
32
- version: '1.0.80',
33
- output_style: {
34
- name: 'default'
35
- },
36
- cost: {
37
- total_cost_usd: 0.0123,
38
- total_duration_ms: 330000,
39
- total_api_duration_ms: 15000,
40
- total_lines_added: 42,
41
- total_lines_removed: 10
42
- },
43
- context_window: {
44
- total_input_tokens: 15234,
45
- total_output_tokens: 4521,
46
- context_window_size: 200000,
47
- current_usage: {
48
- input_tokens: 8500,
49
- output_tokens: 1200,
50
- cache_creation_input_tokens: 5000,
51
- cache_read_input_tokens: 2000
52
- }
53
- }
54
- };
18
+ async function readStdin() {
19
+ const chunks = [];
20
+ for await (const chunk of process.stdin) {
21
+ chunks.push(chunk);
22
+ }
23
+ return Buffer.concat(chunks).toString('utf8');
55
24
  }
56
25
  /**
57
26
  * Main entry point
58
27
  */
59
28
  export async function main() {
60
- // Initialize git adapter using factory method
61
- const gitAdapter = createGitAdapter();
62
- // Create registry
63
- const registry = new WidgetRegistry();
64
- // Register all widgets
65
- await registry.register(new ModelWidget());
66
- await registry.register(new ContextWidget());
67
- await registry.register(new CostWidget());
68
- await registry.register(new DurationWidget());
69
- await registry.register(new GitWidget({ git: gitAdapter }));
70
- await registry.register(new GitChangesWidget(gitAdapter));
71
- // Create renderer with pipe separator
72
- const renderer = new Renderer();
73
- renderer.setSeparator(' │ ');
74
- // Create mock data for dev (in real usage, comes from stdin)
75
- const mockData = createMockStdinData();
76
- // Update all widgets with data
77
- for (const widget of registry.getAll()) {
78
- await widget.update(mockData);
29
+ try {
30
+ // Read JSON from stdin
31
+ const stdin = await readStdin();
32
+ // If stdin is empty, return empty string
33
+ if (!stdin || stdin.trim().length === 0) {
34
+ return '';
35
+ }
36
+ // Parse and validate with StdinProvider
37
+ const provider = new StdinProvider();
38
+ const stdinData = await provider.parse(stdin);
39
+ // Create registry
40
+ const registry = new WidgetRegistry();
41
+ // Register all widgets (no constructor args needed)
42
+ await registry.register(new ModelWidget());
43
+ await registry.register(new ContextWidget());
44
+ await registry.register(new CostWidget());
45
+ await registry.register(new DurationWidget());
46
+ await registry.register(new GitWidget());
47
+ await registry.register(new GitChangesWidget());
48
+ // Create renderer with error handling configuration
49
+ const renderer = new Renderer({
50
+ separator: ' │ ',
51
+ onError: (error, widget) => {
52
+ // Silently ignore widget errors - they return null
53
+ },
54
+ showErrors: false
55
+ });
56
+ // Update all widgets with data
57
+ for (const widget of registry.getAll()) {
58
+ await widget.update(stdinData);
59
+ }
60
+ // Render
61
+ const output = await renderer.render(registry.getEnabledWidgets(), { width: 80, timestamp: Date.now() });
62
+ return output || '';
63
+ }
64
+ catch (error) {
65
+ // Return empty string on any error
66
+ return '';
79
67
  }
80
- // Render
81
- const output = await renderer.render(registry.getEnabledWidgets(), { width: 80, timestamp: Date.now() });
82
- return output;
83
68
  }
84
69
  // Run when executed (works with both direct node and npx)
85
- main().then(console.log).catch(console.error);
70
+ main().then((output) => {
71
+ if (output) {
72
+ console.log(output);
73
+ }
74
+ }).catch(() => {
75
+ // Silently fail - return empty status line
76
+ process.exit(0);
77
+ });
86
78
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,64 +1,71 @@
1
1
  /**
2
- * Git operations provider
3
- * Wraps simple-git for dependency injection
2
+ * Git provider interface and implementation
3
+ *
4
+ * Uses native Node.js child_process to execute git commands,
5
+ * avoiding external dependencies like simple-git.
4
6
  */
5
- import { type SimpleGit } from 'simple-git';
6
- import type { GitInfo, GitChanges } from '../types.js';
7
7
  /**
8
- * Git interface for dependency injection
8
+ * Result of git status operation
9
9
  */
10
- export interface IGit {
11
- checkIsRepo(): Promise<boolean>;
12
- branch(): Promise<{
13
- current: string | null;
14
- all: string[];
15
- }>;
16
- diffStats(): Promise<{
17
- insertions: number;
18
- deletions: number;
19
- } | null>;
10
+ export interface GitStatusResult {
11
+ /** Current branch name (null if no branch or detached HEAD) */
12
+ current: string | null;
20
13
  }
21
14
  /**
22
- * Dependencies for GitProvider
15
+ * Single file diff statistics
23
16
  */
24
- export interface GitProviderDeps {
25
- git: IGit;
17
+ export interface GitDiffFile {
18
+ /** File path relative to repo root */
19
+ file: string;
20
+ /** Number of lines added */
21
+ insertions: number;
22
+ /** Number of lines deleted */
23
+ deletions: number;
26
24
  }
27
25
  /**
28
- * Git provider for repository operations
26
+ * Result of git diff --shortstat operation
29
27
  */
30
- export declare class GitProvider {
31
- private git;
32
- private repoPath;
33
- private _isRepo;
34
- constructor(deps: GitProviderDeps);
35
- /**
36
- * Initialize provider with repository path
37
- */
38
- init(path: string): Promise<void>;
39
- /**
40
- * Get current branch name
41
- * @returns Branch name or null if not in repo
42
- */
43
- getBranch(): Promise<string | null>;
44
- /**
45
- * Get git diff statistics
46
- * @returns Changes with insertions and deletions, or null if not a repo
47
- */
48
- getChanges(): Promise<GitChanges | null>;
28
+ export interface GitDiffSummary {
29
+ /** Array of changed files with statistics */
30
+ files: GitDiffFile[];
31
+ }
32
+ /**
33
+ * Interface for git operations
34
+ *
35
+ * Abstraction over git commands to enable:
36
+ * - Easy testing with mocks
37
+ * - Swapping implementations
38
+ * - No tight coupling to specific git library
39
+ */
40
+ export interface IGit {
49
41
  /**
50
- * Check if current path is a git repository
42
+ * Get current git status (branch name)
43
+ * @returns Promise resolving to status info
51
44
  */
52
- isRepo(): boolean;
45
+ status(): Promise<GitStatusResult>;
53
46
  /**
54
- * Get complete git info
47
+ * Get diff statistics (insertions/deletions)
48
+ * @returns Promise resolving to diff summary
55
49
  */
56
- getInfo(): Promise<GitInfo>;
50
+ diffSummary(options?: string[]): Promise<GitDiffSummary>;
51
+ }
52
+ /**
53
+ * Native git implementation using child_process
54
+ *
55
+ * Executes real git commands on the system.
56
+ * Requires git to be installed and available in PATH.
57
+ */
58
+ export declare class NativeGit implements IGit {
59
+ private cwd;
60
+ constructor(cwd: string);
61
+ status(): Promise<GitStatusResult>;
62
+ diffSummary(options?: string[]): Promise<GitDiffSummary>;
57
63
  }
58
64
  /**
59
- * Factory method to create an IGit instance from simple-git
60
- * @param gitInstance - Optional simple-git instance (creates default if not provided)
61
- * @returns IGit implementation
65
+ * Factory function to create NativeGit instance
66
+ *
67
+ * @param cwd - Working directory for git operations
68
+ * @returns IGit instance
62
69
  */
63
- export declare function createGitAdapter(gitInstance?: SimpleGit): IGit;
70
+ export declare function createGit(cwd: string): IGit;
64
71
  //# sourceMappingURL=git-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git-provider.d.ts","sourceRoot":"","sources":["../../src/providers/git-provider.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC7D,SAAS,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;CACxE;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,IAAI,CAAC;CACX;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,GAAG,CAAO;IAClB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAkB;gBAErB,IAAI,EAAE,eAAe;IAKjC;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASzC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAgB9C;;OAEG;IACH,MAAM,IAAI,OAAO;IAIjB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;CAMlC;AAuDD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,IAAI,CAG9D"}
1
+ {"version":3,"file":"git-provider.d.ts","sourceRoot":"","sources":["../../src/providers/git-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,6CAA6C;IAC7C,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,IAAI;IACnB;;;OAGG;IACH,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAEnC;;;OAGG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC1D;AAED;;;;;GAKG;AACH,qBAAa,SAAU,YAAW,IAAI;IACpC,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,EAAE,MAAM;IAIjB,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC;IAiBlC,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;CAgC/D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C"}