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.
- package/README.md +147 -0
- package/dist/cli-parser.d.ts +9 -0
- package/dist/cli-parser.js +50 -0
- package/dist/cli-parser.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.js +34 -0
- package/dist/config.js.map +1 -0
- package/dist/dsl/context.d.ts +6 -0
- package/dist/dsl/context.js +23 -0
- package/dist/dsl/context.js.map +1 -0
- package/dist/dsl/cost.d.ts +3 -0
- package/dist/dsl/cost.js +6 -0
- package/dist/dsl/cost.js.map +1 -0
- package/dist/dsl/git.d.ts +6 -0
- package/dist/dsl/git.js +23 -0
- package/dist/dsl/git.js.map +1 -0
- package/dist/dsl/index.d.ts +7 -0
- package/dist/dsl/index.js +8 -0
- package/dist/dsl/index.js.map +1 -0
- package/dist/dsl/model.d.ts +3 -0
- package/dist/dsl/model.js +6 -0
- package/dist/dsl/model.js.map +1 -0
- package/dist/dsl/primitives.d.ts +14 -0
- package/dist/dsl/primitives.js +28 -0
- package/dist/dsl/primitives.js.map +1 -0
- package/dist/dsl/pwd.d.ts +7 -0
- package/dist/dsl/pwd.js +11 -0
- package/dist/dsl/pwd.js.map +1 -0
- package/dist/dsl/session.d.ts +5 -0
- package/dist/dsl/session.js +29 -0
- package/dist/dsl/session.js.map +1 -0
- package/dist/presets/default.d.ts +2 -0
- package/dist/presets/default.js +21 -0
- package/dist/presets/default.js.map +1 -0
- package/dist/presets/full.d.ts +2 -0
- package/dist/presets/full.js +32 -0
- package/dist/presets/full.js.map +1 -0
- package/dist/presets/index.d.ts +3 -0
- package/dist/presets/index.js +15 -0
- package/dist/presets/index.js.map +1 -0
- package/dist/presets/minimal.d.ts +2 -0
- package/dist/presets/minimal.js +13 -0
- package/dist/presets/minimal.js.map +1 -0
- package/dist/providers/context.d.ts +7 -0
- package/dist/providers/context.js +33 -0
- package/dist/providers/context.js.map +1 -0
- package/dist/providers/cost.d.ts +5 -0
- package/dist/providers/cost.js +16 -0
- package/dist/providers/cost.js.map +1 -0
- package/dist/providers/git.d.ts +8 -0
- package/dist/providers/git.js +40 -0
- package/dist/providers/git.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.js +15 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/model.d.ts +5 -0
- package/dist/providers/model.js +9 -0
- package/dist/providers/model.js.map +1 -0
- package/dist/providers/pwd.d.ts +7 -0
- package/dist/providers/pwd.js +45 -0
- package/dist/providers/pwd.js.map +1 -0
- package/dist/providers/session.d.ts +7 -0
- package/dist/providers/session.js +24 -0
- package/dist/providers/session.js.map +1 -0
- package/dist/providers.d.ts +7 -0
- package/dist/providers.js +39 -0
- package/dist/providers.js.map +1 -0
- package/dist/registry.d.ts +6 -0
- package/dist/registry.js +10 -0
- package/dist/registry.js.map +1 -0
- package/dist/render.d.ts +3 -0
- package/dist/render.js +53 -0
- package/dist/render.js.map +1 -0
- package/dist/runner.d.ts +2 -0
- package/dist/runner.js +51 -0
- package/dist/runner.js.map +1 -0
- package/dist/segments/context.percent.d.ts +2 -0
- package/dist/segments/context.percent.js +11 -0
- package/dist/segments/context.percent.js.map +1 -0
- package/dist/segments/context.size.d.ts +2 -0
- package/dist/segments/context.size.js +9 -0
- package/dist/segments/context.size.js.map +1 -0
- package/dist/segments/context.tokens.d.ts +2 -0
- package/dist/segments/context.tokens.js +9 -0
- package/dist/segments/context.tokens.js.map +1 -0
- package/dist/segments/cost.usd.d.ts +2 -0
- package/dist/segments/cost.usd.js +9 -0
- package/dist/segments/cost.usd.js.map +1 -0
- package/dist/segments/git.branch.d.ts +2 -0
- package/dist/segments/git.branch.js +9 -0
- package/dist/segments/git.branch.js.map +1 -0
- package/dist/segments/git.deletions.d.ts +2 -0
- package/dist/segments/git.deletions.js +11 -0
- package/dist/segments/git.deletions.js.map +1 -0
- package/dist/segments/git.insertions.d.ts +2 -0
- package/dist/segments/git.insertions.js +11 -0
- package/dist/segments/git.insertions.js.map +1 -0
- package/dist/segments/index.d.ts +2 -0
- package/dist/segments/index.js +33 -0
- package/dist/segments/index.js.map +1 -0
- package/dist/segments/literal.d.ts +2 -0
- package/dist/segments/literal.js +10 -0
- package/dist/segments/literal.js.map +1 -0
- package/dist/segments/model.name.d.ts +2 -0
- package/dist/segments/model.name.js +9 -0
- package/dist/segments/model.name.js.map +1 -0
- package/dist/segments/pwd.name.d.ts +2 -0
- package/dist/segments/pwd.name.js +9 -0
- package/dist/segments/pwd.name.js.map +1 -0
- package/dist/segments/pwd.path.d.ts +2 -0
- package/dist/segments/pwd.path.js +9 -0
- package/dist/segments/pwd.path.js.map +1 -0
- package/dist/segments/pwd.smart.d.ts +2 -0
- package/dist/segments/pwd.smart.js +9 -0
- package/dist/segments/pwd.smart.js.map +1 -0
- package/dist/segments/session.duration.d.ts +2 -0
- package/dist/segments/session.duration.js +9 -0
- package/dist/segments/session.duration.js.map +1 -0
- package/dist/segments/session.lines-added.d.ts +2 -0
- package/dist/segments/session.lines-added.js +11 -0
- package/dist/segments/session.lines-added.js.map +1 -0
- package/dist/segments/session.lines-removed.d.ts +2 -0
- package/dist/segments/session.lines-removed.js +11 -0
- package/dist/segments/session.lines-removed.js.map +1 -0
- package/dist/session.d.ts +2 -0
- package/dist/session.js +18 -0
- package/dist/session.js.map +1 -0
- package/dist/style.d.ts +3 -0
- package/dist/style.js +72 -0
- package/dist/style.js.map +1 -0
- package/dist/types.d.ts +54 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
package/README.md
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# ccnow
|
|
2
|
+
|
|
3
|
+
A composable, spaceship-style statusline for [Claude Code](https://claude.ai/code).
|
|
4
|
+
|
|
5
|
+
Zero dependencies. Raw ANSI. Segment tree architecture.
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
Ask Claude Code:
|
|
10
|
+
|
|
11
|
+
> Set my statusline to use the default preset from https://github.com/jheddings/ccnow
|
|
12
|
+
|
|
13
|
+
Or add to your `~/.claude/settings.json` manually:
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"statusLine": {
|
|
18
|
+
"type": "command",
|
|
19
|
+
"command": "npx -y ccnow",
|
|
20
|
+
"padding": 0
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Presets
|
|
26
|
+
|
|
27
|
+
**default** — smart path, git branch + diffs, context usage, session duration
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
~/Projects/ccnow | main · +5 -3 | 360K (36%) · 2h 15m
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**minimal** — folder name, branch, token usage
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
ccnow | main | 360K/1M
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**full** — everything: path, git, model, context, cost, duration, session lines
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
~/Projects/ccnow | main · +5 -3 | Opus 4.6 · 360K/1M (36%) · $12.50 · 2h 15m · +1200 -85
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Select a preset:
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
npx -y ccnow --preset=minimal
|
|
49
|
+
npx -y ccnow --preset=full
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## JSON Config
|
|
53
|
+
|
|
54
|
+
Use `--config` for full customization:
|
|
55
|
+
|
|
56
|
+
```sh
|
|
57
|
+
npx -y ccnow --config ~/.claude/ccnow.json
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"segments": [
|
|
63
|
+
{
|
|
64
|
+
"segment": "pwd.smart",
|
|
65
|
+
"style": { "color": "31" }
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"segment": "pwd.name",
|
|
69
|
+
"style": { "color": "39", "bold": true }
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"segment": "git",
|
|
73
|
+
"style": { "prefix": " | ", "color": "240" },
|
|
74
|
+
"children": [
|
|
75
|
+
{
|
|
76
|
+
"segment": "git.branch",
|
|
77
|
+
"style": { "color": "whiteBright", "bold": true, "prefix": "\ue0a0 " }
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"segment": "git.insertions",
|
|
81
|
+
"style": { "color": "green", "prefix": " +" }
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"segment": "git.deletions",
|
|
85
|
+
"style": { "color": "red", "prefix": " -" }
|
|
86
|
+
}
|
|
87
|
+
]
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## Segments
|
|
94
|
+
|
|
95
|
+
| Segment | Provider | Description |
|
|
96
|
+
| ----------------------- | -------- | --------------------------------- |
|
|
97
|
+
| `pwd.name` | pwd | Directory basename |
|
|
98
|
+
| `pwd.path` | pwd | Full path prefix |
|
|
99
|
+
| `pwd.smart` | pwd | Smart-truncated path prefix |
|
|
100
|
+
| `git.branch` | git | Current branch name |
|
|
101
|
+
| `git.insertions` | git | Lines added (staged + unstaged) |
|
|
102
|
+
| `git.deletions` | git | Lines removed (staged + unstaged) |
|
|
103
|
+
| `context.tokens` | context | Token count (24K, 1.2M) |
|
|
104
|
+
| `context.size` | context | Context window capacity |
|
|
105
|
+
| `context.percent` | context | Usage percentage |
|
|
106
|
+
| `model.name` | model | Model display name |
|
|
107
|
+
| `cost.usd` | cost | Session cost in USD |
|
|
108
|
+
| `session.duration` | session | Session wall-clock time |
|
|
109
|
+
| `session.lines-added` | session | Lines added this session |
|
|
110
|
+
| `session.lines-removed` | session | Lines removed this session |
|
|
111
|
+
| `literal` | — | Static text |
|
|
112
|
+
|
|
113
|
+
### Colors
|
|
114
|
+
|
|
115
|
+
Colors support three formats:
|
|
116
|
+
|
|
117
|
+
- **Named**: `cyan`, `whiteBright`, `red`, `green`, etc. (16 ANSI colors)
|
|
118
|
+
- **256-color**: `"39"`, `"240"` (numeric string)
|
|
119
|
+
- **Truecolor**: `"#00afff"` (hex)
|
|
120
|
+
|
|
121
|
+
### Style Attributes
|
|
122
|
+
|
|
123
|
+
| Attribute | Type | Description |
|
|
124
|
+
| --------- | ------- | ------------------------------- |
|
|
125
|
+
| `color` | string | Text color (named, 256, or hex) |
|
|
126
|
+
| `bold` | boolean | Bold text |
|
|
127
|
+
| `italic` | boolean | Italic text |
|
|
128
|
+
| `prefix` | string | Text before the value |
|
|
129
|
+
| `suffix` | string | Text after the value |
|
|
130
|
+
|
|
131
|
+
## CLI Options
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
Usage: ccnow [options]
|
|
135
|
+
|
|
136
|
+
Options:
|
|
137
|
+
--preset <name> Use a named preset (default, minimal, full)
|
|
138
|
+
--config <path> Load JSON config file
|
|
139
|
+
--format <type> Output format: ansi (default), plain
|
|
140
|
+
--tee <path> Write raw stdin JSON to file before processing
|
|
141
|
+
--help Show help
|
|
142
|
+
--version Show version
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
## License
|
|
146
|
+
|
|
147
|
+
MIT
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const VALUE_FLAGS = new Set(['preset', 'config', 'format', 'tee']);
|
|
2
|
+
export function parseArgs(argv) {
|
|
3
|
+
const result = {
|
|
4
|
+
preset: 'default',
|
|
5
|
+
format: 'ansi',
|
|
6
|
+
};
|
|
7
|
+
const resultRecord = result;
|
|
8
|
+
let i = 0;
|
|
9
|
+
while (i < argv.length) {
|
|
10
|
+
const arg = argv[i];
|
|
11
|
+
if (arg === '--help') {
|
|
12
|
+
result.help = true;
|
|
13
|
+
i++;
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
if (arg === '--version') {
|
|
17
|
+
result.version = true;
|
|
18
|
+
i++;
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
// Handle --key=value syntax
|
|
22
|
+
const eqMatch = arg.match(/^--(\w[\w-]*)=(.+)$/);
|
|
23
|
+
if (eqMatch) {
|
|
24
|
+
const [, key, value] = eqMatch;
|
|
25
|
+
if (VALUE_FLAGS.has(key)) {
|
|
26
|
+
resultRecord[key] = value;
|
|
27
|
+
}
|
|
28
|
+
i++;
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
// Handle --key value syntax for value flags
|
|
32
|
+
const flagMatch = arg.match(/^--(\w[\w-]*)$/);
|
|
33
|
+
if (flagMatch) {
|
|
34
|
+
const key = flagMatch[1];
|
|
35
|
+
if (VALUE_FLAGS.has(key)) {
|
|
36
|
+
const value = argv[i + 1];
|
|
37
|
+
if (value !== undefined) {
|
|
38
|
+
resultRecord[key] = value;
|
|
39
|
+
i += 2;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
i++;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
i++;
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=cli-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-parser.js","sourceRoot":"","sources":["../src/cli-parser.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAEnE,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,MAAM,GAAY;QACtB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,MAAM;KACf,CAAC;IACF,MAAM,YAAY,GAAG,MAA4C,CAAC;IAElE,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,4BAA4B;QAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC;YAC/B,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC5B,CAAC;YACD,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,4CAA4C;QAC5C,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC9C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBAC1B,CAAC,IAAI,CAAC,CAAC;oBACP,SAAS;gBACX,CAAC;YACH,CAAC;YAED,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { parseArgs } from './cli-parser.js';
|
|
4
|
+
import { run } from './runner.js';
|
|
5
|
+
const HELP = `Usage: ccnow [options]
|
|
6
|
+
|
|
7
|
+
Composable statusline for Claude Code.
|
|
8
|
+
Reads session JSON from stdin, outputs styled statusline to stdout.
|
|
9
|
+
|
|
10
|
+
Options:
|
|
11
|
+
--preset <name> Use a named preset (default, minimal, full)
|
|
12
|
+
--config <path> Load JSON config file
|
|
13
|
+
--format <type> Output format: ansi (default), plain
|
|
14
|
+
--tee <path> Write raw stdin JSON to file before processing
|
|
15
|
+
--help Show help
|
|
16
|
+
--version Show version
|
|
17
|
+
|
|
18
|
+
Examples:
|
|
19
|
+
npx -y ccnow
|
|
20
|
+
npx -y ccnow --preset=minimal
|
|
21
|
+
npx -y ccnow --config ~/.claude/ccnow.json
|
|
22
|
+
`;
|
|
23
|
+
async function main() {
|
|
24
|
+
const args = parseArgs(process.argv.slice(2));
|
|
25
|
+
if (args.help) {
|
|
26
|
+
process.stdout.write(HELP);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (args.version) {
|
|
30
|
+
try {
|
|
31
|
+
const pkg = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
|
|
32
|
+
process.stdout.write(`${pkg.version}\n`);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
process.stdout.write('unknown\n');
|
|
36
|
+
}
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
// Read stdin
|
|
40
|
+
let stdin;
|
|
41
|
+
try {
|
|
42
|
+
stdin = readFileSync(0, 'utf-8');
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
stdin = '';
|
|
46
|
+
}
|
|
47
|
+
// Tee: write raw stdin to file before processing
|
|
48
|
+
if (args.tee) {
|
|
49
|
+
try {
|
|
50
|
+
writeFileSync(args.tee, stdin, 'utf-8');
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
process.stderr.write(`ccnow: failed to write tee file: ${err}\n`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const output = await run(args, stdin);
|
|
57
|
+
if (output)
|
|
58
|
+
process.stdout.write(output);
|
|
59
|
+
}
|
|
60
|
+
main().catch((err) => {
|
|
61
|
+
process.stderr.write(`ccnow: ${err}\n`);
|
|
62
|
+
process.exit(1);
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;CAiBZ,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;QACD,OAAO;IACT,CAAC;IAED,aAAa;IACb,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,GAAG,EAAE,CAAC;IACb,CAAC;IAED,iDAAiD;IACjD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,MAAM;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/config.d.ts
ADDED
package/dist/config.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
const NO_PROVIDER = new Set(['literal', 'sep']);
|
|
2
|
+
function inferProvider(type) {
|
|
3
|
+
if (NO_PROVIDER.has(type))
|
|
4
|
+
return undefined;
|
|
5
|
+
const dotIndex = type.indexOf('.');
|
|
6
|
+
if (dotIndex > 0)
|
|
7
|
+
return type.slice(0, dotIndex);
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
function mapSegment(json) {
|
|
11
|
+
const node = {
|
|
12
|
+
type: json.segment,
|
|
13
|
+
};
|
|
14
|
+
const provider = inferProvider(json.segment);
|
|
15
|
+
if (provider)
|
|
16
|
+
node.provider = provider;
|
|
17
|
+
if (json.style)
|
|
18
|
+
node.style = json.style;
|
|
19
|
+
if (json.props)
|
|
20
|
+
node.props = json.props;
|
|
21
|
+
if (json.enabled !== undefined)
|
|
22
|
+
node.enabled = json.enabled;
|
|
23
|
+
if (json.children) {
|
|
24
|
+
node.children = json.children.map(mapSegment);
|
|
25
|
+
}
|
|
26
|
+
return node;
|
|
27
|
+
}
|
|
28
|
+
export function parseConfig(config) {
|
|
29
|
+
const typed = config;
|
|
30
|
+
if (!typed.segments || !Array.isArray(typed.segments))
|
|
31
|
+
return [];
|
|
32
|
+
return typed.segments.map(mapSegment);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;AAEhD,SAAS,aAAa,CAAC,IAAY;IACjC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,IAAiB;IACnC,MAAM,IAAI,GAAgB;QACxB,IAAI,EAAE,IAAI,CAAC,OAAO;KACnB,CAAC;IAEF,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,QAAQ;QAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAEvC,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAmB,CAAC;IACtD,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;QAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC5D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAA+B;IACzD,MAAM,KAAK,GAAG,MAAoB,CAAC;IACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACjE,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SegmentNode } from '../types.js';
|
|
2
|
+
import { type BaseProps, type CompositeProps } from './primitives.js';
|
|
3
|
+
export declare function ContextGroup(props?: CompositeProps): (children: () => SegmentNode[]) => SegmentNode;
|
|
4
|
+
export declare function ContextTokens(props?: BaseProps): SegmentNode;
|
|
5
|
+
export declare function ContextSize(props?: BaseProps): SegmentNode;
|
|
6
|
+
export declare function ContextPercent(props?: BaseProps): SegmentNode;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { extractStyle } from './primitives.js';
|
|
2
|
+
export function ContextGroup(props = {}) {
|
|
3
|
+
const { enabled, ...styleProps } = props;
|
|
4
|
+
return (children) => ({
|
|
5
|
+
type: 'context',
|
|
6
|
+
enabled,
|
|
7
|
+
style: extractStyle(styleProps),
|
|
8
|
+
children: children(),
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
export function ContextTokens(props = {}) {
|
|
12
|
+
const { enabled, ...styleProps } = props;
|
|
13
|
+
return { type: 'context.tokens', provider: 'context', enabled, style: extractStyle(styleProps) };
|
|
14
|
+
}
|
|
15
|
+
export function ContextSize(props = {}) {
|
|
16
|
+
const { enabled, ...styleProps } = props;
|
|
17
|
+
return { type: 'context.size', provider: 'context', enabled, style: extractStyle(styleProps) };
|
|
18
|
+
}
|
|
19
|
+
export function ContextPercent(props = {}) {
|
|
20
|
+
const { enabled, ...styleProps } = props;
|
|
21
|
+
return { type: 'context.percent', provider: 'context', enabled, style: extractStyle(styleProps) };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/dsl/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAuC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpF,MAAM,UAAU,YAAY,CAC1B,QAAwB,EAAE;IAE1B,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpB,IAAI,EAAE,SAAS;QACf,OAAO;QACP,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;QAC/B,QAAQ,EAAE,QAAQ,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAmB,EAAE;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AACnG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAmB,EAAE;IAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAmB,EAAE;IAClD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AACpG,CAAC"}
|
package/dist/dsl/cost.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../../src/dsl/cost.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,UAAU,OAAO,CAAC,QAAmB,EAAE;IAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SegmentNode } from '../types.js';
|
|
2
|
+
import { type BaseProps, type CompositeProps } from './primitives.js';
|
|
3
|
+
export declare function GitGroup(props?: CompositeProps): (children: () => SegmentNode[]) => SegmentNode;
|
|
4
|
+
export declare function GitBranch(props?: BaseProps): SegmentNode;
|
|
5
|
+
export declare function GitInsertions(props?: BaseProps): SegmentNode;
|
|
6
|
+
export declare function GitDeletions(props?: BaseProps): SegmentNode;
|
package/dist/dsl/git.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { extractStyle } from './primitives.js';
|
|
2
|
+
export function GitGroup(props = {}) {
|
|
3
|
+
const { enabled, ...styleProps } = props;
|
|
4
|
+
return (children) => ({
|
|
5
|
+
type: 'git',
|
|
6
|
+
enabled,
|
|
7
|
+
style: extractStyle(styleProps),
|
|
8
|
+
children: children(),
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
export function GitBranch(props = {}) {
|
|
12
|
+
const { enabled, ...styleProps } = props;
|
|
13
|
+
return { type: 'git.branch', provider: 'git', enabled, style: extractStyle(styleProps) };
|
|
14
|
+
}
|
|
15
|
+
export function GitInsertions(props = {}) {
|
|
16
|
+
const { enabled, ...styleProps } = props;
|
|
17
|
+
return { type: 'git.insertions', provider: 'git', enabled, style: extractStyle(styleProps) };
|
|
18
|
+
}
|
|
19
|
+
export function GitDeletions(props = {}) {
|
|
20
|
+
const { enabled, ...styleProps } = props;
|
|
21
|
+
return { type: 'git.deletions', provider: 'git', enabled, style: extractStyle(styleProps) };
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/dsl/git.ts"],"names":[],"mappings":"AACA,OAAO,EAAuC,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpF,MAAM,UAAU,QAAQ,CACtB,QAAwB,EAAE;IAE1B,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpB,IAAI,EAAE,KAAK;QACX,OAAO;QACP,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;QAC/B,QAAQ,EAAE,QAAQ,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,QAAmB,EAAE;IAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAmB,EAAE;IACjD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AAC/F,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAmB,EAAE;IAChD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AAC9F,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { Literal, Group, StatusLine } from './primitives.js';
|
|
2
|
+
export { Pwd } from './pwd.js';
|
|
3
|
+
export { GitGroup, GitBranch, GitInsertions, GitDeletions } from './git.js';
|
|
4
|
+
export { ContextGroup, ContextTokens, ContextSize, ContextPercent } from './context.js';
|
|
5
|
+
export { ModelName } from './model.js';
|
|
6
|
+
export { CostUSD } from './cost.js';
|
|
7
|
+
export { SessionDuration, SessionLinesAdded, SessionLinesRemoved } from './session.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { Literal, Group, StatusLine } from './primitives.js';
|
|
2
|
+
export { Pwd } from './pwd.js';
|
|
3
|
+
export { GitGroup, GitBranch, GitInsertions, GitDeletions } from './git.js';
|
|
4
|
+
export { ContextGroup, ContextTokens, ContextSize, ContextPercent } from './context.js';
|
|
5
|
+
export { ModelName } from './model.js';
|
|
6
|
+
export { CostUSD } from './cost.js';
|
|
7
|
+
export { SessionDuration, SessionLinesAdded, SessionLinesRemoved } from './session.js';
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dsl/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/dsl/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,UAAU,SAAS,CAAC,QAAmB,EAAE;IAC7C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { SegmentNode, EnabledFn, StyleAttrs } from '../types.js';
|
|
2
|
+
export interface BaseProps extends Partial<StyleAttrs> {
|
|
3
|
+
enabled?: boolean | EnabledFn;
|
|
4
|
+
}
|
|
5
|
+
export interface CompositeProps extends BaseProps {
|
|
6
|
+
}
|
|
7
|
+
interface LiteralProps {
|
|
8
|
+
text: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function extractStyle(props: Partial<StyleAttrs>): StyleAttrs | undefined;
|
|
11
|
+
export declare function Literal(props: LiteralProps): SegmentNode;
|
|
12
|
+
export declare function Group(props?: CompositeProps): (children: () => SegmentNode[]) => SegmentNode;
|
|
13
|
+
export declare function StatusLine(children: () => SegmentNode[]): SegmentNode[];
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function extractStyle(props) {
|
|
2
|
+
const style = {};
|
|
3
|
+
let hasStyle = false;
|
|
4
|
+
for (const key of ['color', 'bold', 'italic', 'prefix', 'suffix']) {
|
|
5
|
+
if (props[key] !== undefined) {
|
|
6
|
+
const styleRecord = style;
|
|
7
|
+
styleRecord[key] = props[key];
|
|
8
|
+
hasStyle = true;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return hasStyle ? style : undefined;
|
|
12
|
+
}
|
|
13
|
+
export function Literal(props) {
|
|
14
|
+
return { type: 'literal', props: { text: props.text } };
|
|
15
|
+
}
|
|
16
|
+
export function Group(props = {}) {
|
|
17
|
+
const { enabled, ...styleProps } = props;
|
|
18
|
+
return (children) => ({
|
|
19
|
+
type: 'group',
|
|
20
|
+
enabled,
|
|
21
|
+
style: extractStyle(styleProps),
|
|
22
|
+
children: children(),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export function StatusLine(children) {
|
|
26
|
+
return children();
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=primitives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/dsl/primitives.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,YAAY,CAAC,KAA0B;IACrD,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,EAAE,CAAC;QAC3E,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,KAAgC,CAAC;YACrD,WAAW,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,QAAwB,EAAE;IAC9C,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpB,IAAI,EAAE,OAAO;QACb,OAAO;QACP,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;QAC/B,QAAQ,EAAE,QAAQ,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAA6B;IACtD,OAAO,QAAQ,EAAE,CAAC;AACpB,CAAC"}
|
package/dist/dsl/pwd.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { extractStyle } from './primitives.js';
|
|
2
|
+
export function Pwd(props = {}) {
|
|
3
|
+
const { style: variant = 'smart', enabled, ...styleProps } = props;
|
|
4
|
+
return {
|
|
5
|
+
type: `pwd.${variant}`,
|
|
6
|
+
provider: 'pwd',
|
|
7
|
+
enabled,
|
|
8
|
+
style: extractStyle(styleProps),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=pwd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pwd.js","sourceRoot":"","sources":["../../src/dsl/pwd.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAM/D,MAAM,UAAU,GAAG,CAAC,QAAkB,EAAE;IACtC,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACnE,OAAO;QACL,IAAI,EAAE,OAAO,OAAO,EAAE;QACtB,QAAQ,EAAE,KAAK;QACf,OAAO;QACP,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SegmentNode } from '../types.js';
|
|
2
|
+
import { type BaseProps } from './primitives.js';
|
|
3
|
+
export declare function SessionDuration(props?: BaseProps): SegmentNode;
|
|
4
|
+
export declare function SessionLinesAdded(props?: BaseProps): SegmentNode;
|
|
5
|
+
export declare function SessionLinesRemoved(props?: BaseProps): SegmentNode;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { extractStyle } from './primitives.js';
|
|
2
|
+
export function SessionDuration(props = {}) {
|
|
3
|
+
const { enabled, ...styleProps } = props;
|
|
4
|
+
return {
|
|
5
|
+
type: 'session.duration',
|
|
6
|
+
provider: 'session',
|
|
7
|
+
enabled,
|
|
8
|
+
style: extractStyle(styleProps),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function SessionLinesAdded(props = {}) {
|
|
12
|
+
const { enabled, ...styleProps } = props;
|
|
13
|
+
return {
|
|
14
|
+
type: 'session.lines-added',
|
|
15
|
+
provider: 'session',
|
|
16
|
+
enabled,
|
|
17
|
+
style: extractStyle(styleProps),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export function SessionLinesRemoved(props = {}) {
|
|
21
|
+
const { enabled, ...styleProps } = props;
|
|
22
|
+
return {
|
|
23
|
+
type: 'session.lines-removed',
|
|
24
|
+
provider: 'session',
|
|
25
|
+
enabled,
|
|
26
|
+
style: extractStyle(styleProps),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/dsl/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/D,MAAM,UAAU,eAAe,CAAC,QAAmB,EAAE;IACnD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,SAAS;QACnB,OAAO;QACP,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAmB,EAAE;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO;QACL,IAAI,EAAE,qBAAqB;QAC3B,QAAQ,EAAE,SAAS;QACnB,OAAO;QACP,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;KAChC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAmB,EAAE;IACvD,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IACzC,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,QAAQ,EAAE,SAAS;QACnB,OAAO;QACP,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC;KAChC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { StatusLine, Group, GitGroup, GitBranch, GitInsertions, GitDeletions, ContextGroup, ContextTokens, ContextPercent, Literal, SessionDuration, } from '../dsl/index.js';
|
|
2
|
+
export const defaultPreset = StatusLine(() => [
|
|
3
|
+
{ type: 'pwd.smart', provider: 'pwd', style: { color: '31' } },
|
|
4
|
+
{ type: 'pwd.name', provider: 'pwd', style: { color: '39', bold: true } },
|
|
5
|
+
GitGroup({ prefix: ' | ', color: '240' })(() => [
|
|
6
|
+
GitBranch({ color: 'whiteBright', bold: true, prefix: '\ue0a0 ' }),
|
|
7
|
+
Group({ prefix: ' ·' })(() => [
|
|
8
|
+
GitInsertions({ color: 'green', prefix: ' +' }),
|
|
9
|
+
GitDeletions({ color: 'red', prefix: ' -' }),
|
|
10
|
+
]),
|
|
11
|
+
]),
|
|
12
|
+
ContextGroup({ prefix: ' | ', color: '240' })(() => [
|
|
13
|
+
ContextTokens({ color: 'white', bold: true }),
|
|
14
|
+
Literal({ text: ' (' }),
|
|
15
|
+
ContextPercent({ color: 'white' }),
|
|
16
|
+
Literal({ text: ')' }),
|
|
17
|
+
]),
|
|
18
|
+
{ type: 'literal', props: { text: ' · ' } },
|
|
19
|
+
SessionDuration({ color: 'magenta' }),
|
|
20
|
+
]);
|
|
21
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/presets/default.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,EACL,QAAQ,EACR,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,OAAO,EACP,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,MAAM,CAAC,MAAM,aAAa,GAAkB,UAAU,CAAC,GAAG,EAAE,CAAC;IAC3D,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;IAC9D,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IACzE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QAC9C,SAAS,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAClE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;YAC5B,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAC/C,YAAY,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC7C,CAAC;KACH,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;QAClD,aAAa,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7C,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACvB,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QAClC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;KACvB,CAAC;IACF,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAC3C,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;CACtC,CAAC,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { StatusLine, Group, GitGroup, GitBranch, GitInsertions, GitDeletions, ContextGroup, ContextTokens, ContextSize, ContextPercent, Literal, ModelName, CostUSD, SessionDuration, SessionLinesAdded, SessionLinesRemoved, } from '../dsl/index.js';
|
|
2
|
+
export const fullPreset = StatusLine(() => [
|
|
3
|
+
{ type: 'pwd.smart', provider: 'pwd', style: { color: '31' } },
|
|
4
|
+
{ type: 'pwd.name', provider: 'pwd', style: { color: '39', bold: true } },
|
|
5
|
+
GitGroup({ prefix: ' | ', color: '240' })(() => [
|
|
6
|
+
GitBranch({ color: 'whiteBright', bold: true, prefix: '\ue0a0 ' }),
|
|
7
|
+
Group({ prefix: ' ·' })(() => [
|
|
8
|
+
GitInsertions({ color: 'green', prefix: ' +' }),
|
|
9
|
+
GitDeletions({ color: 'red', prefix: ' -' }),
|
|
10
|
+
]),
|
|
11
|
+
]),
|
|
12
|
+
{ type: 'literal', props: { text: ' | ' }, style: { color: '240' } },
|
|
13
|
+
ModelName({ color: '240' }),
|
|
14
|
+
{ type: 'literal', props: { text: ' · ' } },
|
|
15
|
+
ContextGroup()(() => [
|
|
16
|
+
ContextTokens({ color: 'white', bold: true }),
|
|
17
|
+
Literal({ text: '/' }),
|
|
18
|
+
ContextSize({ color: 'white' }),
|
|
19
|
+
Literal({ text: ' (' }),
|
|
20
|
+
ContextPercent({ color: 'white' }),
|
|
21
|
+
Literal({ text: ')' }),
|
|
22
|
+
]),
|
|
23
|
+
{ type: 'literal', props: { text: ' · ' } },
|
|
24
|
+
CostUSD({ color: 'yellow', bold: true }),
|
|
25
|
+
{ type: 'literal', props: { text: ' · ' } },
|
|
26
|
+
SessionDuration({ color: 'magenta' }),
|
|
27
|
+
Group({ prefix: ' ·' })(() => [
|
|
28
|
+
SessionLinesAdded({ color: 'green', prefix: ' +' }),
|
|
29
|
+
SessionLinesRemoved({ color: 'red', prefix: ' -' }),
|
|
30
|
+
]),
|
|
31
|
+
]);
|
|
32
|
+
//# sourceMappingURL=full.js.map
|