ccnow 0.0.1

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 (137) hide show
  1. package/README.md +147 -0
  2. package/dist/cli-parser.d.ts +9 -0
  3. package/dist/cli-parser.js +50 -0
  4. package/dist/cli-parser.js.map +1 -0
  5. package/dist/cli.d.ts +2 -0
  6. package/dist/cli.js +64 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/config.d.ts +2 -0
  9. package/dist/config.js +34 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/dsl/context.d.ts +6 -0
  12. package/dist/dsl/context.js +23 -0
  13. package/dist/dsl/context.js.map +1 -0
  14. package/dist/dsl/cost.d.ts +3 -0
  15. package/dist/dsl/cost.js +6 -0
  16. package/dist/dsl/cost.js.map +1 -0
  17. package/dist/dsl/git.d.ts +6 -0
  18. package/dist/dsl/git.js +23 -0
  19. package/dist/dsl/git.js.map +1 -0
  20. package/dist/dsl/index.d.ts +7 -0
  21. package/dist/dsl/index.js +8 -0
  22. package/dist/dsl/index.js.map +1 -0
  23. package/dist/dsl/model.d.ts +3 -0
  24. package/dist/dsl/model.js +6 -0
  25. package/dist/dsl/model.js.map +1 -0
  26. package/dist/dsl/primitives.d.ts +14 -0
  27. package/dist/dsl/primitives.js +28 -0
  28. package/dist/dsl/primitives.js.map +1 -0
  29. package/dist/dsl/pwd.d.ts +7 -0
  30. package/dist/dsl/pwd.js +11 -0
  31. package/dist/dsl/pwd.js.map +1 -0
  32. package/dist/dsl/session.d.ts +5 -0
  33. package/dist/dsl/session.js +29 -0
  34. package/dist/dsl/session.js.map +1 -0
  35. package/dist/presets/default.d.ts +2 -0
  36. package/dist/presets/default.js +21 -0
  37. package/dist/presets/default.js.map +1 -0
  38. package/dist/presets/full.d.ts +2 -0
  39. package/dist/presets/full.js +32 -0
  40. package/dist/presets/full.js.map +1 -0
  41. package/dist/presets/index.d.ts +3 -0
  42. package/dist/presets/index.js +15 -0
  43. package/dist/presets/index.js.map +1 -0
  44. package/dist/presets/minimal.d.ts +2 -0
  45. package/dist/presets/minimal.js +13 -0
  46. package/dist/presets/minimal.js.map +1 -0
  47. package/dist/providers/context.d.ts +7 -0
  48. package/dist/providers/context.js +33 -0
  49. package/dist/providers/context.js.map +1 -0
  50. package/dist/providers/cost.d.ts +5 -0
  51. package/dist/providers/cost.js +16 -0
  52. package/dist/providers/cost.js.map +1 -0
  53. package/dist/providers/git.d.ts +8 -0
  54. package/dist/providers/git.js +40 -0
  55. package/dist/providers/git.js.map +1 -0
  56. package/dist/providers/index.d.ts +2 -0
  57. package/dist/providers/index.js +15 -0
  58. package/dist/providers/index.js.map +1 -0
  59. package/dist/providers/model.d.ts +5 -0
  60. package/dist/providers/model.js +9 -0
  61. package/dist/providers/model.js.map +1 -0
  62. package/dist/providers/pwd.d.ts +7 -0
  63. package/dist/providers/pwd.js +45 -0
  64. package/dist/providers/pwd.js.map +1 -0
  65. package/dist/providers/session.d.ts +7 -0
  66. package/dist/providers/session.js +24 -0
  67. package/dist/providers/session.js.map +1 -0
  68. package/dist/providers.d.ts +7 -0
  69. package/dist/providers.js +39 -0
  70. package/dist/providers.js.map +1 -0
  71. package/dist/registry.d.ts +6 -0
  72. package/dist/registry.js +10 -0
  73. package/dist/registry.js.map +1 -0
  74. package/dist/render.d.ts +3 -0
  75. package/dist/render.js +53 -0
  76. package/dist/render.js.map +1 -0
  77. package/dist/runner.d.ts +2 -0
  78. package/dist/runner.js +51 -0
  79. package/dist/runner.js.map +1 -0
  80. package/dist/segments/context.percent.d.ts +2 -0
  81. package/dist/segments/context.percent.js +11 -0
  82. package/dist/segments/context.percent.js.map +1 -0
  83. package/dist/segments/context.size.d.ts +2 -0
  84. package/dist/segments/context.size.js +9 -0
  85. package/dist/segments/context.size.js.map +1 -0
  86. package/dist/segments/context.tokens.d.ts +2 -0
  87. package/dist/segments/context.tokens.js +9 -0
  88. package/dist/segments/context.tokens.js.map +1 -0
  89. package/dist/segments/cost.usd.d.ts +2 -0
  90. package/dist/segments/cost.usd.js +9 -0
  91. package/dist/segments/cost.usd.js.map +1 -0
  92. package/dist/segments/git.branch.d.ts +2 -0
  93. package/dist/segments/git.branch.js +9 -0
  94. package/dist/segments/git.branch.js.map +1 -0
  95. package/dist/segments/git.deletions.d.ts +2 -0
  96. package/dist/segments/git.deletions.js +11 -0
  97. package/dist/segments/git.deletions.js.map +1 -0
  98. package/dist/segments/git.insertions.d.ts +2 -0
  99. package/dist/segments/git.insertions.js +11 -0
  100. package/dist/segments/git.insertions.js.map +1 -0
  101. package/dist/segments/index.d.ts +2 -0
  102. package/dist/segments/index.js +33 -0
  103. package/dist/segments/index.js.map +1 -0
  104. package/dist/segments/literal.d.ts +2 -0
  105. package/dist/segments/literal.js +10 -0
  106. package/dist/segments/literal.js.map +1 -0
  107. package/dist/segments/model.name.d.ts +2 -0
  108. package/dist/segments/model.name.js +9 -0
  109. package/dist/segments/model.name.js.map +1 -0
  110. package/dist/segments/pwd.name.d.ts +2 -0
  111. package/dist/segments/pwd.name.js +9 -0
  112. package/dist/segments/pwd.name.js.map +1 -0
  113. package/dist/segments/pwd.path.d.ts +2 -0
  114. package/dist/segments/pwd.path.js +9 -0
  115. package/dist/segments/pwd.path.js.map +1 -0
  116. package/dist/segments/pwd.smart.d.ts +2 -0
  117. package/dist/segments/pwd.smart.js +9 -0
  118. package/dist/segments/pwd.smart.js.map +1 -0
  119. package/dist/segments/session.duration.d.ts +2 -0
  120. package/dist/segments/session.duration.js +9 -0
  121. package/dist/segments/session.duration.js.map +1 -0
  122. package/dist/segments/session.lines-added.d.ts +2 -0
  123. package/dist/segments/session.lines-added.js +11 -0
  124. package/dist/segments/session.lines-added.js.map +1 -0
  125. package/dist/segments/session.lines-removed.d.ts +2 -0
  126. package/dist/segments/session.lines-removed.js +11 -0
  127. package/dist/segments/session.lines-removed.js.map +1 -0
  128. package/dist/session.d.ts +2 -0
  129. package/dist/session.js +18 -0
  130. package/dist/session.js.map +1 -0
  131. package/dist/style.d.ts +3 -0
  132. package/dist/style.js +72 -0
  133. package/dist/style.js.map +1 -0
  134. package/dist/types.d.ts +54 -0
  135. package/dist/types.js +2 -0
  136. package/dist/types.js.map +1 -0
  137. package/package.json +59 -0
@@ -0,0 +1,9 @@
1
+ export const gitBranchSegment = {
2
+ name: 'git.branch',
3
+ provider: 'git',
4
+ render(context) {
5
+ const data = context.provider;
6
+ return data?.branch ?? null;
7
+ },
8
+ };
9
+ //# sourceMappingURL=git.branch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.branch.js","sourceRoot":"","sources":["../../src/segments/git.branch.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,KAAK;IACf,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAA+B,CAAC;QACrD,OAAO,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC;IAC9B,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const gitDeletionsSegment: Segment;
@@ -0,0 +1,11 @@
1
+ export const gitDeletionsSegment = {
2
+ name: 'git.deletions',
3
+ provider: 'git',
4
+ render(context) {
5
+ const data = context.provider;
6
+ if (!data?.deletions)
7
+ return null;
8
+ return `${data.deletions}`;
9
+ },
10
+ };
11
+ //# sourceMappingURL=git.deletions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.deletions.js","sourceRoot":"","sources":["../../src/segments/git.deletions.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,mBAAmB,GAAY;IAC1C,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,KAAK;IACf,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAA+B,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,SAAS;YAAE,OAAO,IAAI,CAAC;QAClC,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7B,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const gitInsertionsSegment: Segment;
@@ -0,0 +1,11 @@
1
+ export const gitInsertionsSegment = {
2
+ name: 'git.insertions',
3
+ provider: 'git',
4
+ render(context) {
5
+ const data = context.provider;
6
+ if (!data?.insertions)
7
+ return null;
8
+ return `${data.insertions}`;
9
+ },
10
+ };
11
+ //# sourceMappingURL=git.insertions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.insertions.js","sourceRoot":"","sources":["../../src/segments/git.insertions.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,oBAAoB,GAAY;IAC3C,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,KAAK;IACf,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAA+B,CAAC;QACrD,IAAI,CAAC,IAAI,EAAE,UAAU;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { SegmentRegistry } from '../registry.js';
2
+ export declare function registerBuiltinSegments(registry: SegmentRegistry): void;
@@ -0,0 +1,33 @@
1
+ import { literalSegment } from './literal.js';
2
+ import { pwdNameSegment } from './pwd.name.js';
3
+ import { pwdPathSegment } from './pwd.path.js';
4
+ import { pwdSmartSegment } from './pwd.smart.js';
5
+ import { gitBranchSegment } from './git.branch.js';
6
+ import { gitInsertionsSegment } from './git.insertions.js';
7
+ import { gitDeletionsSegment } from './git.deletions.js';
8
+ import { contextTokensSegment } from './context.tokens.js';
9
+ import { contextSizeSegment } from './context.size.js';
10
+ import { contextPercentSegment } from './context.percent.js';
11
+ import { modelNameSegment } from './model.name.js';
12
+ import { costUsdSegment } from './cost.usd.js';
13
+ import { sessionDurationSegment } from './session.duration.js';
14
+ import { sessionLinesAddedSegment } from './session.lines-added.js';
15
+ import { sessionLinesRemovedSegment } from './session.lines-removed.js';
16
+ export function registerBuiltinSegments(registry) {
17
+ registry.register(literalSegment);
18
+ registry.register(pwdNameSegment);
19
+ registry.register(pwdPathSegment);
20
+ registry.register(pwdSmartSegment);
21
+ registry.register(gitBranchSegment);
22
+ registry.register(gitInsertionsSegment);
23
+ registry.register(gitDeletionsSegment);
24
+ registry.register(contextTokensSegment);
25
+ registry.register(contextSizeSegment);
26
+ registry.register(contextPercentSegment);
27
+ registry.register(modelNameSegment);
28
+ registry.register(costUsdSegment);
29
+ registry.register(sessionDurationSegment);
30
+ registry.register(sessionLinesAddedSegment);
31
+ registry.register(sessionLinesRemovedSegment);
32
+ }
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/segments/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAExE,MAAM,UAAU,uBAAuB,CAAC,QAAyB;IAC/D,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const literalSegment: Segment;
@@ -0,0 +1,10 @@
1
+ export const literalSegment = {
2
+ name: 'literal',
3
+ render(context) {
4
+ const text = context.props?.text;
5
+ if (typeof text !== 'string')
6
+ return null;
7
+ return text;
8
+ },
9
+ };
10
+ //# sourceMappingURL=literal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../src/segments/literal.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,SAAS;IACf,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC;QACjC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const modelNameSegment: Segment;
@@ -0,0 +1,9 @@
1
+ export const modelNameSegment = {
2
+ name: 'model.name',
3
+ provider: 'model',
4
+ render(context) {
5
+ const data = context.provider;
6
+ return data?.name ?? null;
7
+ },
8
+ };
9
+ //# sourceMappingURL=model.name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.name.js","sourceRoot":"","sources":["../../src/segments/model.name.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,YAAY;IAClB,QAAQ,EAAE,OAAO;IACjB,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAiC,CAAC;QACvD,OAAO,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const pwdNameSegment: Segment;
@@ -0,0 +1,9 @@
1
+ export const pwdNameSegment = {
2
+ name: 'pwd.name',
3
+ provider: 'pwd',
4
+ render(context) {
5
+ const data = context.provider;
6
+ return data?.name ?? null;
7
+ },
8
+ };
9
+ //# sourceMappingURL=pwd.name.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pwd.name.js","sourceRoot":"","sources":["../../src/segments/pwd.name.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,KAAK;IACf,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAA+B,CAAC;QACrD,OAAO,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const pwdPathSegment: Segment;
@@ -0,0 +1,9 @@
1
+ export const pwdPathSegment = {
2
+ name: 'pwd.path',
3
+ provider: 'pwd',
4
+ render(context) {
5
+ const data = context.provider;
6
+ return data?.path || null;
7
+ },
8
+ };
9
+ //# sourceMappingURL=pwd.path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pwd.path.js","sourceRoot":"","sources":["../../src/segments/pwd.path.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAY;IACrC,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,KAAK;IACf,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAA+B,CAAC;QACrD,OAAO,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC;IAC5B,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const pwdSmartSegment: Segment;
@@ -0,0 +1,9 @@
1
+ export const pwdSmartSegment = {
2
+ name: 'pwd.smart',
3
+ provider: 'pwd',
4
+ render(context) {
5
+ const data = context.provider;
6
+ return data?.smart || null;
7
+ },
8
+ };
9
+ //# sourceMappingURL=pwd.smart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pwd.smart.js","sourceRoot":"","sources":["../../src/segments/pwd.smart.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC,IAAI,EAAE,WAAW;IACjB,QAAQ,EAAE,KAAK;IACf,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAA+B,CAAC;QACrD,OAAO,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;IAC7B,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const sessionDurationSegment: Segment;
@@ -0,0 +1,9 @@
1
+ export const sessionDurationSegment = {
2
+ name: 'session.duration',
3
+ provider: 'session',
4
+ render(context) {
5
+ const data = context.provider;
6
+ return data?.duration ?? null;
7
+ },
8
+ };
9
+ //# sourceMappingURL=session.duration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.duration.js","sourceRoot":"","sources":["../../src/segments/session.duration.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,sBAAsB,GAAY;IAC7C,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,SAAS;IACnB,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAsC,CAAC;QAC5D,OAAO,IAAI,EAAE,QAAQ,IAAI,IAAI,CAAC;IAChC,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const sessionLinesAddedSegment: Segment;
@@ -0,0 +1,11 @@
1
+ export const sessionLinesAddedSegment = {
2
+ name: 'session.lines-added',
3
+ provider: 'session',
4
+ render(context) {
5
+ const data = context.provider;
6
+ if (!data?.linesAdded)
7
+ return null;
8
+ return `${data.linesAdded}`;
9
+ },
10
+ };
11
+ //# sourceMappingURL=session.lines-added.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.lines-added.js","sourceRoot":"","sources":["../../src/segments/session.lines-added.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,wBAAwB,GAAY;IAC/C,IAAI,EAAE,qBAAqB;IAC3B,QAAQ,EAAE,SAAS;IACnB,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAsC,CAAC;QAC5D,IAAI,CAAC,IAAI,EAAE,UAAU;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Segment } from '../types.js';
2
+ export declare const sessionLinesRemovedSegment: Segment;
@@ -0,0 +1,11 @@
1
+ export const sessionLinesRemovedSegment = {
2
+ name: 'session.lines-removed',
3
+ provider: 'session',
4
+ render(context) {
5
+ const data = context.provider;
6
+ if (!data?.linesRemoved)
7
+ return null;
8
+ return `${data.linesRemoved}`;
9
+ },
10
+ };
11
+ //# sourceMappingURL=session.lines-removed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.lines-removed.js","sourceRoot":"","sources":["../../src/segments/session.lines-removed.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,0BAA0B,GAAY;IACjD,IAAI,EAAE,uBAAuB;IAC7B,QAAQ,EAAE,SAAS;IACnB,MAAM,CAAC,OAAuB;QAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAsC,CAAC;QAC5D,IAAI,CAAC,IAAI,EAAE,YAAY;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAChC,CAAC;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { SessionData } from './types.js';
2
+ export declare function parseSession(input: string): SessionData | null;
@@ -0,0 +1,18 @@
1
+ export function parseSession(input) {
2
+ if (!input.trim())
3
+ return null;
4
+ let parsed;
5
+ try {
6
+ parsed = JSON.parse(input);
7
+ }
8
+ catch {
9
+ return null;
10
+ }
11
+ if (typeof parsed !== 'object' || parsed === null)
12
+ return null;
13
+ const obj = parsed;
14
+ if (typeof obj.cwd !== 'string')
15
+ return null;
16
+ return obj;
17
+ }
18
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAE/B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE/D,MAAM,GAAG,GAAG,MAAiC,CAAC;IAC9C,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE7C,OAAO,GAAkB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { StyleAttrs } from './types.js';
2
+ export declare function setColorLevel(level: number): void;
3
+ export declare function applyStyle(value: string, style: StyleAttrs | undefined): string;
package/dist/style.js ADDED
@@ -0,0 +1,72 @@
1
+ const RESET = '\x1b[0m';
2
+ const COLORS = {
3
+ black: '\x1b[30m',
4
+ red: '\x1b[31m',
5
+ green: '\x1b[32m',
6
+ yellow: '\x1b[33m',
7
+ blue: '\x1b[34m',
8
+ magenta: '\x1b[35m',
9
+ cyan: '\x1b[36m',
10
+ white: '\x1b[37m',
11
+ blackBright: '\x1b[90m',
12
+ redBright: '\x1b[91m',
13
+ greenBright: '\x1b[92m',
14
+ yellowBright: '\x1b[93m',
15
+ blueBright: '\x1b[94m',
16
+ magentaBright: '\x1b[95m',
17
+ cyanBright: '\x1b[96m',
18
+ whiteBright: '\x1b[97m',
19
+ };
20
+ const BOLD = '\x1b[1m';
21
+ const ITALIC = '\x1b[3m';
22
+ let colorsEnabled = true;
23
+ export function setColorLevel(level) {
24
+ colorsEnabled = level > 0;
25
+ }
26
+ function resolveColor(color) {
27
+ // Named color: lookup in table
28
+ const named = COLORS[color];
29
+ if (named)
30
+ return named;
31
+ // Hex color: #RRGGBB → truecolor \e[38;2;R;G;Bm
32
+ if (color.startsWith('#') && color.length === 7) {
33
+ const r = parseInt(color.slice(1, 3), 16);
34
+ const g = parseInt(color.slice(3, 5), 16);
35
+ const b = parseInt(color.slice(5, 7), 16);
36
+ if (!isNaN(r) && !isNaN(g) && !isNaN(b)) {
37
+ return `\x1b[38;2;${r};${g};${b}m`;
38
+ }
39
+ }
40
+ // Numeric string: 256-color index → \e[38;5;Nm
41
+ const num = parseInt(color, 10);
42
+ if (!isNaN(num) && num >= 0 && num <= 255) {
43
+ return `\x1b[38;5;${num}m`;
44
+ }
45
+ return '';
46
+ }
47
+ export function applyStyle(value, style) {
48
+ if (!style)
49
+ return value;
50
+ // Build the decorated string: prefix + value + suffix
51
+ let result = value;
52
+ if (style.prefix)
53
+ result = style.prefix + result;
54
+ if (style.suffix)
55
+ result = result + style.suffix;
56
+ if (colorsEnabled) {
57
+ // Build ANSI open sequence: reset first, then modifiers, then color
58
+ let open = '';
59
+ if (style.bold)
60
+ open += BOLD;
61
+ if (style.italic)
62
+ open += ITALIC;
63
+ if (style.color) {
64
+ open += resolveColor(style.color);
65
+ }
66
+ if (open) {
67
+ result = RESET + open + result + RESET;
68
+ }
69
+ }
70
+ return result;
71
+ }
72
+ //# sourceMappingURL=style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"style.js","sourceRoot":"","sources":["../src/style.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ export interface SessionData {
2
+ cwd: string;
3
+ model?: {
4
+ id: string;
5
+ display_name: string;
6
+ };
7
+ cost?: {
8
+ total_cost_usd: number;
9
+ total_duration_ms: number;
10
+ total_api_duration_ms: number;
11
+ total_lines_added: number;
12
+ total_lines_removed: number;
13
+ };
14
+ context_window?: {
15
+ used_percentage: number;
16
+ context_window_size?: number;
17
+ current_usage?: {
18
+ input_tokens: number;
19
+ cache_creation_input_tokens: number;
20
+ cache_read_input_tokens: number;
21
+ };
22
+ };
23
+ [key: string]: unknown;
24
+ }
25
+ export interface StyleAttrs {
26
+ color?: string;
27
+ bold?: boolean;
28
+ italic?: boolean;
29
+ prefix?: string;
30
+ suffix?: string;
31
+ }
32
+ export type EnabledFn = (session: SessionData) => boolean;
33
+ export interface SegmentNode {
34
+ type: string;
35
+ provider?: string;
36
+ enabled?: boolean | EnabledFn;
37
+ style?: StyleAttrs;
38
+ props?: Record<string, unknown>;
39
+ children?: SegmentNode[];
40
+ }
41
+ export interface SegmentContext {
42
+ session: SessionData;
43
+ provider?: unknown;
44
+ props?: Record<string, unknown>;
45
+ }
46
+ export interface Segment {
47
+ name: string;
48
+ provider?: string;
49
+ render(context: SegmentContext): string | null;
50
+ }
51
+ export interface DataProvider {
52
+ name: string;
53
+ resolve(session: SessionData): Promise<unknown>;
54
+ }
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "ccnow",
3
+ "version": "0.0.1",
4
+ "description": "Composable, spaceship-inspired status line for Claude Code",
5
+ "type": "module",
6
+ "main": "dist/cli.js",
7
+ "bin": {
8
+ "ccnow": "dist/cli.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "test": "NODE_OPTIONS='--experimental-vm-modules' jest",
13
+ "prepare": "husky"
14
+ },
15
+ "lint-staged": {
16
+ "*.{ts,json,yaml,yml,md}": [
17
+ "prettier --check"
18
+ ],
19
+ "*.ts": [
20
+ "eslint"
21
+ ]
22
+ },
23
+ "files": [
24
+ "dist"
25
+ ],
26
+ "keywords": [
27
+ "claude",
28
+ "claude-code",
29
+ "statusline",
30
+ "cli"
31
+ ],
32
+ "author": "Jason Heddings",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/jheddings/ccnow.git"
37
+ },
38
+ "homepage": "https://github.com/jheddings/ccnow",
39
+ "engines": {
40
+ "node": ">=18"
41
+ },
42
+ "devDependencies": {
43
+ "@eslint/js": "^10.0.1",
44
+ "@types/jest": "^29.5.0",
45
+ "@types/node": "^20.19.37",
46
+ "@typescript-eslint/eslint-plugin": "^8.57.0",
47
+ "@typescript-eslint/parser": "^8.57.0",
48
+ "eslint": "^10.0.3",
49
+ "git-cliff": "^2.12.0",
50
+ "globals": "^17.4.0",
51
+ "husky": "^9.1.7",
52
+ "jest": "^29.7.0",
53
+ "lint-staged": "^16.4.0",
54
+ "prettier": "^3.8.1",
55
+ "ts-jest": "^29.2.0",
56
+ "ts-node": "^10.9.2",
57
+ "typescript": "^5.5.0"
58
+ }
59
+ }