@kolisachint/hoocode-agent 0.5.34 → 0.5.35
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/CHANGELOG.md +59 -0
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +2 -2
- package/dist/core/tools/read.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +2 -2
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +2 -2
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +3 -2
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +5 -1
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/progress-bar.d.ts.map +1 -1
- package/dist/modes/interactive/components/progress-bar.js +1 -1
- package/dist/modes/interactive/components/progress-bar.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +3 -3
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +2 -1
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +2 -1
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +24 -0
- package/dist/modes/interactive/theme/theme.d.ts +19 -2
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +66 -1
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive/theme/vox-cutout-dark.json +116 -0
- package/dist/modes/interactive/theme/vox-cutout-light.json +115 -0
- package/docs/themes.md +101 -1
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package.json +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://raw.githubusercontent.com/kolisachint/hoocode/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
|
|
3
|
+
"name": "vox-cutout-light",
|
|
4
|
+
"description": "Paper cut-outs on a cream page: bold flat stocks, scissor-cut rules, tape-yellow highlight, AAA ink",
|
|
5
|
+
"vars": {
|
|
6
|
+
"ink": "#12100a",
|
|
7
|
+
"inkDark": "#241f15",
|
|
8
|
+
"press": "#3b3527",
|
|
9
|
+
"newsprint": "#4b442f",
|
|
10
|
+
"cut": "#332e22",
|
|
11
|
+
"cutMuted": "#4f4837",
|
|
12
|
+
"amber": "#5d4500",
|
|
13
|
+
"orange": "#743800",
|
|
14
|
+
"red": "#901709",
|
|
15
|
+
"green": "#035500",
|
|
16
|
+
"teal": "#0c514e",
|
|
17
|
+
"blue": "#0032ca",
|
|
18
|
+
"purple": "#70169d",
|
|
19
|
+
"magenta": "#93003d",
|
|
20
|
+
"steel": "#084c75",
|
|
21
|
+
"tapeYellow": "#ffe600",
|
|
22
|
+
"shadow": "#736a50",
|
|
23
|
+
"track": "#8a8064",
|
|
24
|
+
"sheetWhite": "#f7f9ff",
|
|
25
|
+
"stockYellow": "#ffe600",
|
|
26
|
+
"stockBlue": "#dfeafb",
|
|
27
|
+
"stockMint": "#d6efd9",
|
|
28
|
+
"stockBlush": "#fde0d7",
|
|
29
|
+
"stockLilac": "#ebe3f9",
|
|
30
|
+
"stockTape": "#fde3a2"
|
|
31
|
+
},
|
|
32
|
+
"colors": {
|
|
33
|
+
"accent": "amber",
|
|
34
|
+
"border": "cut",
|
|
35
|
+
"borderAccent": "amber",
|
|
36
|
+
"borderMuted": "cutMuted",
|
|
37
|
+
"success": "green",
|
|
38
|
+
"error": "red",
|
|
39
|
+
"warning": "orange",
|
|
40
|
+
"muted": "press",
|
|
41
|
+
"dim": "newsprint",
|
|
42
|
+
"text": "ink",
|
|
43
|
+
"thinkingText": "press",
|
|
44
|
+
|
|
45
|
+
"selectedBg": "stockYellow",
|
|
46
|
+
"userMessageBg": "sheetWhite",
|
|
47
|
+
"userMessageText": "ink",
|
|
48
|
+
"customMessageBg": "stockLilac",
|
|
49
|
+
"customMessageText": "ink",
|
|
50
|
+
"customMessageLabel": "purple",
|
|
51
|
+
"toolPendingBg": "stockBlue",
|
|
52
|
+
"toolSuccessBg": "stockMint",
|
|
53
|
+
"toolErrorBg": "stockBlush",
|
|
54
|
+
"warningBg": "stockTape",
|
|
55
|
+
"toolTitle": "ink",
|
|
56
|
+
"toolOutput": "press",
|
|
57
|
+
|
|
58
|
+
"mdHeading": "amber",
|
|
59
|
+
"mdLink": "blue",
|
|
60
|
+
"mdLinkUrl": "newsprint",
|
|
61
|
+
"mdCode": "teal",
|
|
62
|
+
"mdCodeBlock": "press",
|
|
63
|
+
"mdCodeBlockBorder": "cut",
|
|
64
|
+
"mdQuote": "press",
|
|
65
|
+
"mdQuoteBorder": "amber",
|
|
66
|
+
"mdHr": "cut",
|
|
67
|
+
"mdListBullet": "amber",
|
|
68
|
+
|
|
69
|
+
"toolDiffAdded": "green",
|
|
70
|
+
"toolDiffRemoved": "red",
|
|
71
|
+
"toolDiffContext": "newsprint",
|
|
72
|
+
|
|
73
|
+
"syntaxComment": "green",
|
|
74
|
+
"syntaxKeyword": "blue",
|
|
75
|
+
"syntaxFunction": "amber",
|
|
76
|
+
"syntaxVariable": "purple",
|
|
77
|
+
"syntaxString": "red",
|
|
78
|
+
"syntaxNumber": "magenta",
|
|
79
|
+
"syntaxType": "teal",
|
|
80
|
+
"syntaxOperator": "cut",
|
|
81
|
+
"syntaxPunctuation": "cut",
|
|
82
|
+
|
|
83
|
+
"thinkingOff": "cutMuted",
|
|
84
|
+
"thinkingMinimal": "inkDark",
|
|
85
|
+
"thinkingLow": "teal",
|
|
86
|
+
"thinkingMedium": "blue",
|
|
87
|
+
"thinkingHigh": "purple",
|
|
88
|
+
"thinkingXhigh": "magenta",
|
|
89
|
+
|
|
90
|
+
"bashMode": "green",
|
|
91
|
+
|
|
92
|
+
"agent1": "teal",
|
|
93
|
+
"agent2": "purple",
|
|
94
|
+
"agent3": "amber",
|
|
95
|
+
"agent4": "magenta",
|
|
96
|
+
"agent5": "green",
|
|
97
|
+
"agent6": "blue",
|
|
98
|
+
"mcp": "steel",
|
|
99
|
+
|
|
100
|
+
"brandBg": "ink",
|
|
101
|
+
"brandText": "tapeYellow",
|
|
102
|
+
|
|
103
|
+
"paperShadow": "shadow",
|
|
104
|
+
"halftone": "track",
|
|
105
|
+
"headlineBg": "ink",
|
|
106
|
+
"headlineText": "tapeYellow",
|
|
107
|
+
"tapeBg": "stockTape",
|
|
108
|
+
"tapeText": "ink"
|
|
109
|
+
},
|
|
110
|
+
"export": {
|
|
111
|
+
"pageBg": "#fdf6e3",
|
|
112
|
+
"cardBg": "#f7f9ff",
|
|
113
|
+
"infoBg": "#ffe600"
|
|
114
|
+
}
|
|
115
|
+
}
|
package/docs/themes.md
CHANGED
|
@@ -42,9 +42,11 @@ Disable discovery with `--no-themes`.
|
|
|
42
42
|
| `colorsafe-light` | white | Okabe-Ito hues, no red/green pairs |
|
|
43
43
|
| `vox-dark` | newsprint black | Explanatory-journalism yellow; `warning` is orange |
|
|
44
44
|
| `vox-light` | cream | Ink on paper; yellow survives as highlight and brand chip |
|
|
45
|
+
| `vox-cutout-light` | cream / Solarized Light | Paper cut-outs: bold flat stocks, cut edges, AAA ink |
|
|
46
|
+
| `vox-cutout-dark` | Solarized Dark | The same cut-outs on newsprint black; AAA ink |
|
|
45
47
|
|
|
46
48
|
The six accessible themes are `high-contrast-*`, `warm-*`, and `colorsafe-*`; the
|
|
47
|
-
`vox-*`
|
|
49
|
+
`vox-*` themes are style themes and are described separately below. The six are built
|
|
48
50
|
for low vision. Every color they
|
|
49
51
|
draw clears **WCAG AAA (7:1)** against every surface the TUI paints behind it —
|
|
50
52
|
the page, selected rows, user messages, and all three tool-box states — and none
|
|
@@ -96,6 +98,53 @@ Two deliberate departures from the standard the default `light` theme is held to
|
|
|
96
98
|
`brandBg`, never on a page surface, so measuring it against the page is
|
|
97
99
|
meaningless. On its own chip it sits at 14.8:1.
|
|
98
100
|
|
|
101
|
+
### The `vox-cutout-*` pair
|
|
102
|
+
|
|
103
|
+
The same explanatory-journalism voice cut for paper rather than newsprint: flat
|
|
104
|
+
stocks pasted onto the page, a scissor-cut rule around them, poster inks printed
|
|
105
|
+
on top. Unlike the `vox-*` pair it **is** AAA, and
|
|
106
|
+
`test/theme-contrast.test.ts` enforces it.
|
|
107
|
+
|
|
108
|
+
`vox-cutout-light` is cut for a cream page (Solarized Light, or anything near
|
|
109
|
+
`#fdf6e3`); `vox-cutout-dark` is cut for Solarized Dark. Two things separate
|
|
110
|
+
them from `vox-light`:
|
|
111
|
+
|
|
112
|
+
- **The surfaces are stock, not washes.** `vox-light` tints its backgrounds a
|
|
113
|
+
degree or two off white — on a cream terminal such as Solarized Light its user
|
|
114
|
+
message sits ΔE 1.0 from the page, which is to say invisible. Every surface
|
|
115
|
+
here is a flat colored sheet held at least ΔE 10 clear of both Solarized
|
|
116
|
+
grounds (`base3` `#fdf6e3` and `base2` `#eee8d5`), so a message block or tool
|
|
117
|
+
box reads as a piece of paper laid on the page rather than a faint tint of it.
|
|
118
|
+
The sheets carry the state: white for what you typed, blue for work in flight,
|
|
119
|
+
mint for done, blush for failed, lilac for an extension, masking-tape tan for a
|
|
120
|
+
warning notice, and flat vox yellow for the selected row.
|
|
121
|
+
- **The ink is capped by the loudest sheet.** Full-strength `#ffe600` under a
|
|
122
|
+
selected row is the brightest surface any text has to survive, and AAA on it
|
|
123
|
+
puts a hard ceiling on every foreground in the palette — each ink sits within a
|
|
124
|
+
hair of that ceiling at ~7.2:1, as dark as a printed ink and no darker. That
|
|
125
|
+
ceiling is why the accent is a deep gold rather than the amber `vox-light`
|
|
126
|
+
uses: an amber light enough to read as yellow cannot clear 7:1 on its own
|
|
127
|
+
highlight band. Bold flat color and AAA pull against each other, and this theme
|
|
128
|
+
spends the whole budget on flat color.
|
|
129
|
+
|
|
130
|
+
It keeps `vox-light`'s two departures — rules are neutral rather than saturated,
|
|
131
|
+
and `brandText` is measured only on its own chip — and adds the vox rule that
|
|
132
|
+
`warning` is orange, never yellow.
|
|
133
|
+
|
|
134
|
+
On the dark side the same rules run in reverse: AAA on a dark ground is a
|
|
135
|
+
*floor*, and Solarized's `base02` is the lighter of its two stops, so it is what
|
|
136
|
+
every ink has to clear. The stocks are dark coloured papers — navy in flight,
|
|
137
|
+
deep green done, maroon failed, aubergine for an extension, burnt umber for a
|
|
138
|
+
warning, olive-gold selected — and they all avoid the cyan the ground itself is
|
|
139
|
+
made of, because a stock in the ground's own hue cannot separate from it.
|
|
140
|
+
|
|
141
|
+
Point your terminal at the matching Solarized palette and the sheets land where
|
|
142
|
+
they were cut to land. On pure white or pure black the contrast floor still
|
|
143
|
+
holds; the sheets simply read a touch louder.
|
|
144
|
+
|
|
145
|
+
Both themes set the four cut-out token groups described under
|
|
146
|
+
[Optional Tokens](#optional-tokens).
|
|
147
|
+
|
|
99
148
|
## Selecting a Theme
|
|
100
149
|
|
|
101
150
|
Select a theme via `/settings` or in `settings.json`:
|
|
@@ -320,6 +369,10 @@ themes keep working.
|
|
|
320
369
|
| `brandBg` | Background of the footer brand chip | Brand mark renders as `accent`-colored text |
|
|
321
370
|
| `brandText` | Text color of the footer brand chip | Brand mark renders as `accent`-colored text |
|
|
322
371
|
| `warningBg` | Fill behind a warning notice (the billing caveat box) | Falls back to `customMessageBg` |
|
|
372
|
+
| `paperShadow` | Offset band under a filled message block | No shadow row is drawn |
|
|
373
|
+
| `halftone` | Unfilled remainder of a gauge or progress track | Falls back to `dim` |
|
|
374
|
+
| `headlineBg`/`headlineText` | Markdown heading chip | Headings stay `mdHeading`-coloured text |
|
|
375
|
+
| `tapeBg`/`tapeText` | Tape-strip message label | The label keeps `customMessageLabel` in brackets |
|
|
323
376
|
|
|
324
377
|
`warningBg` is a surface, not text: `warning` renders the title on it and `muted`
|
|
325
378
|
the body, so it wants a low-chroma tint of the theme's warning hue rather than the
|
|
@@ -327,6 +380,53 @@ warning color itself. Every built-in sets it, and all six accessible themes keep
|
|
|
327
380
|
every foreground at AAA against it (`test/theme-contrast.test.ts` sweeps it with
|
|
328
381
|
the other surfaces).
|
|
329
382
|
|
|
383
|
+
### The cut-out tokens
|
|
384
|
+
|
|
385
|
+
Four groups that draw the paper-collage language rather than only colouring it.
|
|
386
|
+
Every one is optional with a defined fallback, so a theme that sets none of them
|
|
387
|
+
renders exactly as it did before they existed; `test/theme-cutout-tokens.test.ts`
|
|
388
|
+
exercises both sides of each. The `vox-cutout-*` pair is the only built-in that
|
|
389
|
+
sets them.
|
|
390
|
+
|
|
391
|
+
**`paperShadow`** draws an offset band under a filled message block — a user
|
|
392
|
+
message, an extension message, an error or warning notice — so the block reads
|
|
393
|
+
as a sheet laid on the page rather than a colour printed into it. A terminal has
|
|
394
|
+
no sub-pixel offsets and no blur, so the band is one extra row of `▀`: an upper
|
|
395
|
+
half-block, which paints solid colour across the top half of its cells and so
|
|
396
|
+
hugs the block's bottom edge, indented one column to give the offset. There is
|
|
397
|
+
no matching right-hand column, because these boxes render at the full terminal
|
|
398
|
+
width and a column past the last cell has nowhere to go.
|
|
399
|
+
|
|
400
|
+
It is a shape, not text, so it answers to the 2.8:1 decorative floor rather than
|
|
401
|
+
a text-contrast one — and it has to stay ΔE-clear of every `*Bg` token as well,
|
|
402
|
+
or the shadow sinks into the sheet it is hugging. On a dark theme nothing can be
|
|
403
|
+
darker than the page, so the band is set *lighter* than the ground: it reads as a
|
|
404
|
+
cut edge rather than a shadow, which is the closest a dark canvas gets.
|
|
405
|
+
|
|
406
|
+
**`halftone`** colours the unfilled remainder of a gauge or progress track. Those
|
|
407
|
+
tracks used `dim`, which is body-weight text: a track drawn in it reads as
|
|
408
|
+
writing rather than as the space the fill has yet to reach. The floor is
|
|
409
|
+
inverted from the usual one — the track wants to stay *below* the filled bar so
|
|
410
|
+
the fill keeps carrying the signal, and above roughly 2.8:1 so it is visible at
|
|
411
|
+
all — and it has to separate from `dim` by ΔE 11, or it has bought nothing.
|
|
412
|
+
|
|
413
|
+
**`headlineBg`/`headlineText`** render markdown headings as a filled chip instead
|
|
414
|
+
of coloured text. This is how a light theme keeps a vivid brand hue: inside a
|
|
415
|
+
chip a colour can be far brighter than it could ever be as text on the page.
|
|
416
|
+
`vox-cutout-light` is the case in point — its AAA ceiling pushes `accent` from
|
|
417
|
+
vox amber down to a deep gold, and the chip gets full-strength `#ffe600` back at
|
|
418
|
+
15:1.
|
|
419
|
+
|
|
420
|
+
**`tapeBg`/`tapeText`** render the `[branch]` / `[skill]` / `[extension]` tag that
|
|
421
|
+
heads a message block as a strip laid across it, rather than brackets set inside
|
|
422
|
+
it. Kept separate from `brandBg`/`brandText` so taping a label does not restyle
|
|
423
|
+
the footer's brand mark.
|
|
424
|
+
|
|
425
|
+
Both chip pairs are honored **only as a pair**, and both are exempt from the
|
|
426
|
+
surface sweep for the same reason `brandText` is: a chip ink never renders on a
|
|
427
|
+
page surface, so measuring it against one says nothing. Each is measured against
|
|
428
|
+
its own fill instead.
|
|
429
|
+
|
|
330
430
|
`brandBg` and `brandText` are honored **only as a pair** — set both, or neither.
|
|
331
431
|
They exist for light themes, where a brand hue vivid enough to be recognizable is
|
|
332
432
|
usually illegible as text on a light canvas but reads well inside a filled chip.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kolisachint/hoocode-agent",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.35",
|
|
4
4
|
"description": "Coding agent CLI with read, bash, edit, write tools and session management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"hoocodeConfig": {
|
|
@@ -50,9 +50,9 @@
|
|
|
50
50
|
"prepublishOnly": "npm run clean && npm run build"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@kolisachint/hoocode-agent-core": "^0.5.
|
|
54
|
-
"@kolisachint/hoocode-ai": "^0.5.
|
|
55
|
-
"@kolisachint/hoocode-tui": "^0.5.
|
|
53
|
+
"@kolisachint/hoocode-agent-core": "^0.5.35",
|
|
54
|
+
"@kolisachint/hoocode-ai": "^0.5.35",
|
|
55
|
+
"@kolisachint/hoocode-tui": "^0.5.35",
|
|
56
56
|
"@silvia-odwyer/photon-node": "^0.3.4",
|
|
57
57
|
"chalk": "^5.5.0",
|
|
58
58
|
"cli-highlight": "^2.1.11",
|