@aiwayds/dsh-tui-pi 0.8.3 → 0.9.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 (55) hide show
  1. package/README.md +44 -3
  2. package/README.zh.md +36 -3
  3. package/assets/fonts/LICENSE-Hack.txt +45 -0
  4. package/assets/fonts/LICENSE-NerdFonts.txt +126 -0
  5. package/assets/fonts/LICENSE-NotoSansSymbols.txt +93 -0
  6. package/assets/fonts/LICENSE-NotoSansSymbols2.txt +93 -0
  7. package/assets/fonts/dsh-tui-pi-nerd.ttf +0 -0
  8. package/assets/fonts-gen.mjs +219 -0
  9. package/assets/whale-gen.mjs +169 -0
  10. package/assets/whale-source.png +0 -0
  11. package/lib/agents.js +1 -1
  12. package/lib/agents.js.map +1 -1
  13. package/lib/dsh-events.d.ts +32 -3
  14. package/lib/dsh-events.js +14 -0
  15. package/lib/dsh-events.js.map +1 -1
  16. package/lib/font-detect.d.ts +97 -0
  17. package/lib/font-detect.js +161 -0
  18. package/lib/font-detect.js.map +1 -0
  19. package/lib/footer.d.ts +3 -2
  20. package/lib/footer.js +16 -8
  21. package/lib/footer.js.map +1 -1
  22. package/lib/icons.d.ts +53 -0
  23. package/lib/icons.js +78 -0
  24. package/lib/icons.js.map +1 -0
  25. package/lib/index.js +44 -13
  26. package/lib/index.js.map +1 -1
  27. package/lib/live-widgets.d.ts +16 -5
  28. package/lib/live-widgets.js +29 -8
  29. package/lib/live-widgets.js.map +1 -1
  30. package/lib/messages.js +2 -1
  31. package/lib/messages.js.map +1 -1
  32. package/lib/session.d.ts +99 -16
  33. package/lib/session.js +322 -64
  34. package/lib/session.js.map +1 -1
  35. package/lib/sessions.d.ts +15 -0
  36. package/lib/sessions.js +18 -3
  37. package/lib/sessions.js.map +1 -1
  38. package/lib/settings.js +2 -2
  39. package/lib/skills.d.ts +19 -3
  40. package/lib/skills.js +43 -10
  41. package/lib/skills.js.map +1 -1
  42. package/lib/subagent-policy.d.ts +11 -11
  43. package/lib/subagent-policy.js +17 -15
  44. package/lib/subagent-policy.js.map +1 -1
  45. package/lib/subagent-viewer.d.ts +20 -5
  46. package/lib/subagent-viewer.js +29 -15
  47. package/lib/subagent-viewer.js.map +1 -1
  48. package/lib/theme-settings.d.ts +25 -10
  49. package/lib/theme-settings.js +40 -14
  50. package/lib/theme-settings.js.map +1 -1
  51. package/lib/tokens.d.ts +38 -0
  52. package/lib/tokens.js +68 -0
  53. package/lib/tokens.js.map +1 -0
  54. package/package.json +2 -1
  55. package/scripts/install-font.mjs +329 -0
@@ -0,0 +1,219 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Regenerate the shipped terminal font subset: assets/fonts/dsh-tui-pi-nerd.ttf.
4
+ *
5
+ * Why this font exists: the TUI's only PUA glyph is the powerline separator
6
+ * U+E0B0 (`src/icons.ts`), which no default terminal font ships. Setting a
7
+ * Nerd Font as the terminal's main font fixes it, but full Nerd Fonts are
8
+ * megabytes. This script produces a ~170KB subset that works AS A TERMINAL
9
+ * MAIN FONT: ASCII + U+E0B0 + every symbol the TUI renders (box drawing,
10
+ * block elements, geometric shapes, misc technical/symbols/dingbats, arrows,
11
+ * braille) so a weak terminal without font fallback still shows them.
12
+ *
13
+ * Sources and their licenses (all shipped next to the TTF):
14
+ * - Hack Nerd Font Regular (ryanoasis/nerd-fonts v3.5.0) — the ASCII +
15
+ * powerline base; covers the 25xx/21xx/2580/2500/28xx blocks, U+E0B0,
16
+ * U+2B58. Base glyphs: Hack (MIT) + Bitstream Vera (Vera license), see
17
+ * LICENSE-Hack.txt; the Nerd Fonts-patched portions (incl. the powerline
18
+ * separator) are under the project's LICENSE-NerdFonts.txt (SIL OFL 1.1).
19
+ * - Noto Sans Symbols 2 (google/fonts) — covers U+23F9, U+2605, U+26A0,
20
+ * U+2611, U+2713, U+2718, U+2318 (OFL 1.1, LICENSE-NotoSansSymbols2.txt).
21
+ * - Noto Sans Symbols v1 (google/fonts, variable; instanced at wght=400) —
22
+ * covers U+2699, U+2387, U+24D8 (OFL 1.1, LICENSE-NotoSansSymbols.txt).
23
+ * No single font covers all three, so the script merges them, subsets
24
+ * to the project glyph set and renames the result ("DSH TUI Nerd") so the
25
+ * derivative does not carry Hack's reserved font name.
26
+ *
27
+ * Requirements: python3 with fonttools (`python3 -m pip install fonttools`,
28
+ * or a venv — pip on a homebrew python needs a venv for PEP 668).
29
+ *
30
+ * Usage: node assets/fonts-gen.mjs
31
+ * Writes assets/fonts/dsh-tui-pi-nerd.ttf plus the four license files.
32
+ * Network is required (downloads the sources fresh).
33
+ */
34
+
35
+ import { execFileSync } from 'node:child_process'
36
+ import { copyFileSync, existsSync, mkdirSync, mkdtempSync, readFileSync, statSync, writeFileSync } from 'node:fs'
37
+ import { tmpdir } from 'node:os'
38
+ import { dirname, join } from 'node:path'
39
+ import { fileURLToPath } from 'node:url'
40
+
41
+ const repoRoot = dirname(dirname(fileURLToPath(import.meta.url)))
42
+ const outDir = join(repoRoot, 'assets', 'fonts')
43
+ const FONT_TAG = 'v3.5.0'
44
+
45
+ /** The subset spec: ASCII + U+E0B0 + every block the TUI renders (see src/icons.ts). */
46
+ const UNICODES = [
47
+ 'U+0020-007E', // ASCII printable (a terminal main font needs the full alphabet)
48
+ 'U+00B0,U+00B7,U+00D7,U+00F7', // ° · × ÷ (footer labels)
49
+ 'U+2013,U+2014,U+2022,U+2026', // – — • … (prose/notice punctuation)
50
+ 'U+2190-21BB', // arrows (history hint, panes)
51
+ 'U+2212,U+2234,U+2264-2265', // − ∴ ≤ ≥
52
+ 'U+2300-23FF', // misc technical: ⌘ ⎇ ⏎ ⏹ …
53
+ 'U+24D8', // ⓘ
54
+ 'U+2500-25FF', // box drawing + block elements + geometric shapes (borders, ● ■ ▸ ◔ ◕ …)
55
+ 'U+2600-26FF', // misc symbols: ☁ ★ ☐ ☑ ⚙ ⚠ ⚡ …
56
+ 'U+2700-27BF', // dingbats: ✎ ✓ ✔ ✗ ✘ …
57
+ 'U+2800-28FF', // braille (the spinner frames)
58
+ 'U+2B58', // ⭘ (subagent header)
59
+ 'U+E0B0', // powerline separator (the only PUA glyph in the project)
60
+ ].join(',')
61
+
62
+ const SOURCES = [
63
+ {
64
+ file: 'Hack.zip',
65
+ url: `https://github.com/ryanoasis/nerd-fonts/releases/download/${FONT_TAG}/Hack.zip`,
66
+ member: 'HackNerdFont-Regular.ttf',
67
+ },
68
+ {
69
+ file: 'NotoSansSymbols2-Regular.ttf',
70
+ url: 'https://raw.githubusercontent.com/google/fonts/main/ofl/notosanssymbols2/NotoSansSymbols2-Regular.ttf',
71
+ },
72
+ {
73
+ file: 'NotoSansSymbols-var.ttf',
74
+ url: 'https://raw.githubusercontent.com/google/fonts/main/ofl/notosanssymbols/NotoSansSymbols%5Bwght%5D.ttf',
75
+ },
76
+ {
77
+ // The Nerd Fonts project license (SIL OFL 1.1 + MIT) covering the
78
+ // patched-font portions of Hack Nerd Font (incl. the powerline glyphs).
79
+ file: 'LICENSE-NerdFonts.txt',
80
+ url: 'https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/LICENSE',
81
+ },
82
+ {
83
+ file: 'OFL-NotoSansSymbols.txt',
84
+ url: 'https://raw.githubusercontent.com/google/fonts/main/ofl/notosanssymbols/OFL.txt',
85
+ licenseOf: 'NotoSansSymbols',
86
+ },
87
+ {
88
+ file: 'OFL-NotoSansSymbols2.txt',
89
+ url: 'https://raw.githubusercontent.com/google/fonts/main/ofl/notosanssymbols2/OFL.txt',
90
+ licenseOf: 'NotoSansSymbols2',
91
+ },
92
+ ]
93
+
94
+ /** Download a URL to a file (node 22 has global fetch). */
95
+ async function download(url, dest) {
96
+ const res = await fetch(url)
97
+ if (!res.ok) throw new Error(`download failed ${res.status} ${url}`)
98
+ writeFileSync(dest, Buffer.from(await res.arrayBuffer()))
99
+ process.stdout.write(` downloaded ${dest.split('/').pop()} (${existsSync(dest) ? readFileSync(dest).length : 0} bytes)\n`)
100
+ }
101
+
102
+ function sh(cmd, args, opts = {}) {
103
+ process.stdout.write(` $ ${cmd} ${args.join(' ')}\n`)
104
+ return execFileSync(cmd, args, { stdio: ['ignore', 'pipe', 'pipe'], encoding: 'utf8', ...opts })
105
+ }
106
+
107
+ /** python3 with fontTools on PATH, or die with an install hint. */
108
+ function resolvePython() {
109
+ for (const candidate of [process.env.PYTHON ?? 'python3']) {
110
+ try {
111
+ execFileSync(candidate, ['-c', 'import fontTools'], { stdio: 'ignore' })
112
+ return candidate
113
+ } catch { /* try next */ }
114
+ }
115
+ throw new Error(
116
+ 'fonttools is required. Install it first, e.g.:\n'
117
+ + ' python3 -m venv /tmp/ft-venv && /tmp/ft-venv/bin/pip install fonttools\n'
118
+ + 'then re-run with PYTHON=/tmp/ft-venv/bin/python node assets/fonts-gen.mjs',
119
+ )
120
+ }
121
+
122
+ async function main() {
123
+ const py = resolvePython()
124
+ const work = mkdtempSync(join(tmpdir(), 'dsh-tui-font-'))
125
+ process.stdout.write(`Working in ${work}\n`)
126
+
127
+ // 1. Download the sources (fresh each run).
128
+ for (const src of SOURCES) {
129
+ if (src.licenseOf === 'Hack') continue // Hack's license is inside its zip
130
+ await download(src.url, join(work, src.file))
131
+ }
132
+ sh(py, ['-m', 'zipfile', '-e', join(work, 'Hack.zip'), join(work, 'hack')])
133
+ // The Hack zip carries its license as LICENSE.md (Hack MIT + Vera attribution).
134
+ writeFileSync(join(work, 'LICENSE-Hack.txt'), readFileSync(join(work, 'hack', 'LICENSE.md')))
135
+ const hack = join(work, 'hack', 'HackNerdFont-Regular.ttf')
136
+
137
+ // 2. Prepare the two Noto fonts: instance the variable v1 at wght=400,
138
+ // scale both to upem 2048 (Hack's units) and drop tables pyftmerge
139
+ // cannot merge (vertical metrics / variable tables).
140
+ const preparePy = join(work, 'prepare.py')
141
+ writeFileSync(preparePy, `
142
+ from fontTools.ttLib import TTFont
143
+ from fontTools.ttLib.scaleUpem import scale_upem
144
+ from fontTools.varLib.instancer import instantiateVariableFont
145
+
146
+ # v1 is a variable font (wght axis) — pin the Regular instance first.
147
+ vf = TTFont('${join(work, 'NotoSansSymbols-var.ttf')}')
148
+ instantiateVariableFont(vf, {'wght': 400})
149
+ vf.save('${join(work, 'NotoSansSymbols1-static.ttf')}')
150
+
151
+ for src, dst in [
152
+ ('${join(work, 'NotoSansSymbols2-Regular.ttf')}', '${join(work, 'NotoSansSymbols2-prep.ttf')}'),
153
+ ('${join(work, 'NotoSansSymbols1-static.ttf')}', '${join(work, 'NotoSansSymbols1-prep.ttf')}'),
154
+ ]:
155
+ f = TTFont(src)
156
+ scale_upem(f, 2048) # match Hack's 2048 unitsPerEm
157
+ for t in ('vhea', 'vmtx', 'VORG', 'GSUB', 'GPOS', 'GDEF', 'STAT', 'avar', 'cvar', 'HVAR', 'MVAR', 'VVAR'):
158
+ if t in f: del f[t]
159
+ f.save(dst)
160
+ print('prepared', dst)
161
+ `)
162
+ sh(py, [preparePy])
163
+
164
+ // 3. Merge Hack + both Noto symbol fonts, then subset to the project set.
165
+ // fontTools.merge writes `merged.ttf` to its CWD — pin it to the work dir
166
+ // so the subset step below always finds the merged font (a prior version
167
+ // let it land in the invoking CWD, silently breaking the pipeline).
168
+ sh(py, ['-m', 'fontTools.merge', hack, join(work, 'NotoSansSymbols2-prep.ttf'), join(work, 'NotoSansSymbols1-prep.ttf')],
169
+ { cwd: work })
170
+ const merged = join(work, 'merged.ttf')
171
+ const subset = join(work, 'dsh-tui-pi-nerd.ttf')
172
+ sh(py, ['-m', 'fontTools.subset', merged,
173
+ `--unicodes=${UNICODES}`,
174
+ '--layout-features=', '--glyph-names', '--no-hinting',
175
+ '--drop-tables+=GDEF,GPOS,GSUB',
176
+ `--output-file=${subset}`])
177
+
178
+ // 4. Rename the derivative so it does not carry Hack's reserved font name.
179
+ const renamePy = join(work, 'rename.py')
180
+ writeFileSync(renamePy, `
181
+ from fontTools.ttLib import TTFont
182
+ f = TTFont('${subset}')
183
+ name = f['name']
184
+ records = {
185
+ 1: 'DSH TUI Nerd', # family
186
+ 2: 'Regular', # subfamily
187
+ 3: 'DSH TUI Nerd', # unique id
188
+ 4: 'DSH TUI Nerd', # full name
189
+ 6: 'DSHTUINerd', # postscript name (iTerm2 Normal Font uses this)
190
+ 16: 'DSH TUI Nerd', # typographic family
191
+ 17: 'Regular', # typographic subfamily
192
+ }
193
+ # Keep only the platform 3 / encoding 1 (Windows BMP) records, with our names.
194
+ keep = []
195
+ for rec in name.names:
196
+ if rec.nameID in records and rec.platformID == 3 and rec.platEncID == 1:
197
+ rec.string = records[rec.nameID]
198
+ keep.append(rec)
199
+ name.names = keep
200
+ f.save('${subset}')
201
+ print('renamed -> DSH TUI Nerd')
202
+ `)
203
+ sh(py, [renamePy])
204
+
205
+ // 5. Ship the subset + the license files.
206
+ mkdirSync(outDir, { recursive: true })
207
+ copyFileSync(subset, join(outDir, 'dsh-tui-pi-nerd.ttf'))
208
+ copyFileSync(join(work, 'LICENSE-Hack.txt'), join(outDir, 'LICENSE-Hack.txt'))
209
+ copyFileSync(join(work, 'LICENSE-NerdFonts.txt'), join(outDir, 'LICENSE-NerdFonts.txt'))
210
+ copyFileSync(join(work, 'OFL-NotoSansSymbols.txt'), join(outDir, 'LICENSE-NotoSansSymbols.txt'))
211
+ copyFileSync(join(work, 'OFL-NotoSansSymbols2.txt'), join(outDir, 'LICENSE-NotoSansSymbols2.txt'))
212
+ const size = statSync(join(outDir, 'dsh-tui-pi-nerd.ttf')).size
213
+ process.stdout.write(`\nWrote assets/fonts/dsh-tui-pi-nerd.ttf (${size} bytes) + 4 license files\n`)
214
+ }
215
+
216
+ main().catch(error => {
217
+ console.error(`\nfonts-gen failed: ${error instanceof Error ? error.message : String(error)}`)
218
+ process.exit(1)
219
+ })
@@ -0,0 +1,169 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Regenerate the welcome banner's whale pixel art from the source image.
4
+ *
5
+ * Usage: node assets/whale-gen.mjs
6
+ * Prints the generated art as a JSON array of 10 strings (one per banner
7
+ * row) on stdout. The output must be character-for-character identical to
8
+ * WHALE_ART in src/welcome.ts — test/welcome.test.mjs asserts this.
9
+ *
10
+ * Parameters (the ones used to generate the current WHALE_ART):
11
+ * - bbox x0=108 x1=822 y0=176 y1=718: the source-image crop that bounds the
12
+ * whale (the image is 936x846; the crop is the whale plus a small margin).
13
+ * - SAMPLE_COLS=28, SAMPLE_ROWS=20: the art grid is 28 cells wide; each of
14
+ * the 10 banner rows is two half-cells (top half + bottom half, rendered
15
+ * as the upper/lower half of a block glyph), so 20 half-cell bands are
16
+ * sampled vertically.
17
+ * - Sampling: one pixel per cell at the BAND CENTER, i.e. column j samples
18
+ * x = x0 + floor((x1-x0) * (j+0.5) / SAMPLE_COLS) and band k samples
19
+ * y = y0 + floor((y1-y0) * (k+0.5) / SAMPLE_ROWS).
20
+ * - Classification: a sampled pixel is WHALE when alpha >= 128 and it is
21
+ * blue (b > r+10 and b > g+10 and b > 140); otherwise TRANSPARENT.
22
+ * - Half-block mapping per cell: top AND bottom whale -> '█', top only ->
23
+ * '▀', bottom only -> '▄', neither -> ' '.
24
+ * - Post-pass: all-transparent rows are dropped and the column range is
25
+ * cropped to the bounding box of the whale glyphs. With the parameters
26
+ * above the whale already fills the crop edge-to-edge, so this is a no-op
27
+ * (it only matters if the source image or the bbox changes).
28
+ *
29
+ * The PNG is decoded with node built-ins only (zlib inflate of the IDAT
30
+ * stream + the five PNG scanline filters), so the script has no runtime
31
+ * dependencies.
32
+ */
33
+
34
+ import { readFileSync } from 'node:fs'
35
+ import { inflateSync } from 'node:zlib'
36
+ import { fileURLToPath } from 'node:url'
37
+ import { dirname, join } from 'node:path'
38
+
39
+ const SOURCE = join(dirname(fileURLToPath(import.meta.url)), 'whale-source.png')
40
+
41
+ // ------------------------------------------------------------------ png --
42
+
43
+ /** Decode an 8-bit RGBA PNG into { width, height, data } (data is RGBA, row-major). */
44
+ function decodePng(path) {
45
+ const buf = readFileSync(path)
46
+ if (buf.readUInt32BE(0) !== 0x89504e47) throw new Error(`${path}: not a PNG (bad signature)`)
47
+ let pos = 8
48
+ let width = 0
49
+ let height = 0
50
+ let bitDepth = 0
51
+ let colorType = 0
52
+ let idat = Buffer.alloc(0)
53
+ while (pos < buf.length) {
54
+ const len = buf.readUInt32BE(pos)
55
+ const type = buf.toString('ascii', pos + 4, pos + 8)
56
+ const data = buf.subarray(pos + 8, pos + 8 + len)
57
+ if (type === 'IHDR') {
58
+ width = data.readUInt32BE(0)
59
+ height = data.readUInt32BE(4)
60
+ bitDepth = data[8]
61
+ colorType = data[9]
62
+ } else if (type === 'IDAT') {
63
+ idat = Buffer.concat([idat, data]) // IDAT may be split across chunks
64
+ }
65
+ pos += 12 + len // chunk length + type + data + CRC
66
+ }
67
+ if (bitDepth !== 8 || colorType !== 6) {
68
+ throw new Error(`${path}: expected 8-bit RGBA, got bit depth ${bitDepth}, color type ${colorType}`)
69
+ }
70
+ const bpp = 4
71
+ const stride = width * bpp
72
+ const raw = inflateSync(idat)
73
+ const out = Buffer.alloc(height * stride)
74
+ let prev = Buffer.alloc(stride)
75
+ for (let y = 0; y < height; y++) {
76
+ const filter = raw[y * (stride + 1)] // one filter byte per scanline
77
+ const line = raw.subarray(y * (stride + 1) + 1, (y + 1) * (stride + 1))
78
+ const cur = out.subarray(y * stride, (y + 1) * stride)
79
+ for (let i = 0; i < stride; i++) {
80
+ const left = i >= bpp ? cur[i - bpp] : 0
81
+ const up = prev[i]
82
+ const upLeft = i >= bpp ? prev[i - bpp] : 0
83
+ let v = line[i]
84
+ switch (filter) {
85
+ case 0: break // None
86
+ case 1: v += left; break // Sub
87
+ case 2: v += up; break // Up
88
+ case 3: v += (left + up) >> 1; break // Average
89
+ case 4: { // Paeth
90
+ const p = left + up - upLeft
91
+ const pa = Math.abs(p - left)
92
+ const pb = Math.abs(p - up)
93
+ const pc = Math.abs(p - upLeft)
94
+ v += pa <= pb && pa <= pc ? left : pb <= pc ? up : upLeft
95
+ break
96
+ }
97
+ default: throw new Error(`${path}: unknown scanline filter ${filter}`)
98
+ }
99
+ cur[i] = v & 0xff
100
+ }
101
+ prev = cur
102
+ }
103
+ return { width, height, data: out }
104
+ }
105
+
106
+ // ------------------------------------------------------------ sampling --
107
+
108
+ // Source-crop bbox of the whale (see the header comment).
109
+ const X0 = 108
110
+ const X1 = 822
111
+ const Y0 = 176
112
+ const Y1 = 718
113
+ const SAMPLE_COLS = 28
114
+ const SAMPLE_ROWS = 20 // 2 half-cells per banner row -> 10 rows
115
+
116
+ /** Blue? The classification rule: opaque (alpha >= 128) and blue-dominant. */
117
+ function isWhalePixel(img, x, y) {
118
+ const o = (y * img.width + x) * 4
119
+ const a = img.data[o + 3]
120
+ const r = img.data[o]
121
+ const g = img.data[o + 1]
122
+ const b = img.data[o + 2]
123
+ return a >= 128 && b > r + 10 && b > g + 10 && b > 140
124
+ }
125
+
126
+ /** Sample the pixel at the center of cell column j / half-row band k. */
127
+ function sampleHalf(img, j, k) {
128
+ const x = X0 + Math.floor(((X1 - X0) * (j + 0.5)) / SAMPLE_COLS)
129
+ const y = Y0 + Math.floor(((Y1 - Y0) * (k + 0.5)) / SAMPLE_ROWS)
130
+ return isWhalePixel(img, x, y)
131
+ }
132
+
133
+ // ---------------------------------------------------------------- art --
134
+
135
+ /** Build the 28x10 art grid, then crop all-transparent rows/columns. */
136
+ function generateArt(img) {
137
+ const rows = []
138
+ for (let i = 0; i < SAMPLE_ROWS / 2; i++) {
139
+ let row = ''
140
+ for (let j = 0; j < SAMPLE_COLS; j++) {
141
+ const top = sampleHalf(img, j, 2 * i)
142
+ const bottom = sampleHalf(img, j, 2 * i + 1)
143
+ row += top && bottom ? '█' : top ? '▀' : bottom ? '▄' : ' '
144
+ }
145
+ rows.push(row)
146
+ }
147
+ // Crop: drop all-transparent rows, then narrow to the whale's column range.
148
+ const kept = rows.filter(row => /[█▀▄]/.test(row))
149
+ let left = SAMPLE_COLS
150
+ let right = -1
151
+ for (const row of kept) {
152
+ const first = row.search(/[█▀▄]/)
153
+ if (first === -1) continue
154
+ left = Math.min(left, first)
155
+ let last = first
156
+ for (let j = row.length - 1; j >= 0; j--) {
157
+ if (row[j] !== ' ') { last = j; break }
158
+ }
159
+ right = Math.max(right, last)
160
+ }
161
+ return kept.map(row => row.slice(left, right + 1))
162
+ }
163
+
164
+ // ----------------------------------------------------------------- main --
165
+
166
+ const img = decodePng(SOURCE)
167
+ const art = generateArt(img)
168
+ console.log(JSON.stringify(art))
169
+
Binary file
package/lib/agents.js CHANGED
@@ -402,7 +402,7 @@ export async function openAgentManager(ctx, tui, theme, restoreFocus, preselect)
402
402
  const limits = readSubagentLimits(ctx);
403
403
  const fields = [
404
404
  { key: 'maxAgents', value: `${limits.maxAgents} · concurrent live children (0 = unlimited)`, editable: true },
405
- { key: 'maxRounds', value: `${limits.maxRounds} · completed turns before wrap-up (0 = unlimited)`, editable: true },
405
+ { key: 'maxRounds', value: `${limits.maxRounds} · assistant messages before wrap-up (0 = unlimited)`, editable: true },
406
406
  { key: 'disableSubagent', value: `${limits.disableSubagent ? 'on' : 'off'} · native subagent tool`, editable: true },
407
407
  ];
408
408
  const content = [
package/lib/agents.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
@@ -67,14 +67,25 @@ export declare function isLlmRetry(event: SessionEvent): event is SessionEvent &
67
67
  type: 'llm/retry';
68
68
  data: LlmRetryData;
69
69
  };
70
+ /**
71
+ * Type guard for a dsh-dcp compaction notice. DCP appends ONE `user/message`
72
+ * row per committed compaction with
73
+ * `source: { kind: 'plugin', plugin: 'dsh-dcp', form: 'notice', summary }`
74
+ * (the summary reads like `dcp: compacted N history items (~X tokens, …)`).
75
+ * Recognized on the child's own log so the viewer can render a compaction-
76
+ * specific marker row and the bridge can tally a per-child count.
77
+ */
78
+ export declare function isDcpCompactionNotice(event: SessionEvent): boolean;
70
79
  /**
71
80
  * One live subagent row the TUI renders: the bridge's per-child fold of
72
81
  * workflow events (parent log) and the child's own session events. Children
73
82
  * are keyed by their session id — discovered either from
74
83
  * `tool-workflow/agent-start` or, when the deployment never emits workflow
75
- * events, from the child session's header (`origin: 'subagent'` +
76
- * `parentSession`). All fields are O(1)-maintained — never a session-log
77
- * scan on the render path.
84
+ * events, from the child session's header (`parentSession` pointing at a
85
+ * tracked session + the delegation markers `origin: 'subagent'` or
86
+ * `delegationDepth > 0`; dsh's childSessionMeta writes both for spawn and
87
+ * in-process fork children alike). All fields are O(1)-maintained — never a
88
+ * session-log scan on the render path.
78
89
  */
79
90
  export interface AgentView {
80
91
  /** The child session id (raw string) — the stable identity key. */
@@ -99,6 +110,24 @@ export interface AgentView {
99
110
  readonly endedAt?: number;
100
111
  /** Cumulative tokens: input + output + cacheRead + cacheWrite. */
101
112
  readonly tokens: number;
113
+ /**
114
+ * Current context occupancy estimate — the `X` in the compact line's
115
+ * `X/Y`: the child's latest assistant/message billed input + output plus a
116
+ * CJK estimate of messages appended after it. NOT the cumulative `tokens`
117
+ * (that total only grows and stays the viewer/session-panel spend): this
118
+ * tracks the child's current context so the display follows the latest
119
+ * request and drops after a compaction. Before the first assistant/message
120
+ * it is the pending estimate alone.
121
+ */
122
+ readonly contextTokens: number;
123
+ /**
124
+ * Assistant-message count — one per LLM round-trip, i.e. the child's
125
+ * "rounds" the compact line shows against the policy cap. Maintained O(1)
126
+ * on the child's own `assistant/message` events (NOT `turn/end`): a
127
+ * one-shot child spends its whole life in a single turn, so turns never
128
+ * progress while the child works — messages do.
129
+ */
130
+ readonly rounds: number;
102
131
  /** Latest `llm/retry` attempt number (0 = none retried). */
103
132
  readonly retries: number;
104
133
  /** Latest `llm/retry` maxRetries, when the policy reported one. */
package/lib/dsh-events.js CHANGED
@@ -27,4 +27,18 @@ export function isSubagentDescriptor(event) {
27
27
  export function isLlmRetry(event) {
28
28
  return event.type === 'llm/retry';
29
29
  }
30
+ /**
31
+ * Type guard for a dsh-dcp compaction notice. DCP appends ONE `user/message`
32
+ * row per committed compaction with
33
+ * `source: { kind: 'plugin', plugin: 'dsh-dcp', form: 'notice', summary }`
34
+ * (the summary reads like `dcp: compacted N history items (~X tokens, …)`).
35
+ * Recognized on the child's own log so the viewer can render a compaction-
36
+ * specific marker row and the bridge can tally a per-child count.
37
+ */
38
+ export function isDcpCompactionNotice(event) {
39
+ if (event.type !== 'user/message')
40
+ return false;
41
+ const source = event.data.source;
42
+ return source?.kind === 'plugin' && source?.plugin === 'dsh-dcp' && source?.form === 'notice';
43
+ }
30
44
  //# sourceMappingURL=dsh-events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dsh-events.js","sourceRoot":"","sources":["../src/dsh-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAqDH,yDAAyD;AACzD,MAAM,UAAU,YAAY,CAAC,KAAmB;IAC9C,OAAO,KAAK,CAAC,IAAI,KAAK,2BAA2B,CAAA;AACnD,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,UAAU,CAAC,KAAmB;IAC5C,OAAO,KAAK,CAAC,IAAI,KAAK,yBAAyB,CAAA;AACjD,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,OAAO,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAA;AAC7C,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,UAAU,CAAC,KAAmB;IAC5C,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,CAAA;AACnC,CAAC"}
1
+ {"version":3,"file":"dsh-events.js","sourceRoot":"","sources":["../src/dsh-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAqDH,yDAAyD;AACzD,MAAM,UAAU,YAAY,CAAC,KAAmB;IAC9C,OAAO,KAAK,CAAC,IAAI,KAAK,2BAA2B,CAAA;AACnD,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,UAAU,CAAC,KAAmB;IAC5C,OAAO,KAAK,CAAC,IAAI,KAAK,yBAAyB,CAAA;AACjD,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,oBAAoB,CAAC,KAAmB;IACtD,OAAO,KAAK,CAAC,IAAI,KAAK,qBAAqB,CAAA;AAC7C,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,UAAU,CAAC,KAAmB;IAC5C,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,CAAA;AACnC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACvD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,KAAK,CAAA;IAC/C,MAAM,MAAM,GAAI,KAAK,CAAC,IAAuE,CAAC,MAAM,CAAA;IACpG,OAAO,MAAM,EAAE,IAAI,KAAK,QAAQ,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,EAAE,IAAI,KAAK,QAAQ,CAAA;AAC/F,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Nerd Font detection for the icon-set self-adaptation — a
3
+ * zero-dependency probe that tells `src/icons.ts` whether the terminal can
4
+ * render the powerline PUA glyph U+E0B0 (and the other weak-terminal glyphs)
5
+ * before the `auto` icon-set mode picks between 'nerdfont' and 'plain'.
6
+ *
7
+ * Detection has two layers:
8
+ *
9
+ * 1. Terminal whitelist: some terminal emulators ship a built-in Nerd /
10
+ * Symbols font fallback — they can render powerline glyphs regardless of
11
+ * which font the user has installed system-wide. When `TERM_PROGRAM`
12
+ * matches a known whitelisted terminal, the probe short-circuits to
13
+ * `true` without touching the filesystem. See `NERD_FONT_TERMINALS`.
14
+ *
15
+ * 2. Font-directory / fc-list scan (the original heuristic):
16
+ * - Linux: `fc-list -q <name>` for each candidate family. fc-list exits
17
+ * 0 when the family is installed (quiet mode prints nothing either way).
18
+ * When `fc-list` itself is missing (ENOENT — a fontconfig-less system),
19
+ * every probe fails and the probe reports "no Nerd Font".
20
+ * - macOS: scan `~/Library/Fonts` and `/Library/Fonts` and match file
21
+ * names against a Nerd/Powerline heuristic (the real Core Text registry
22
+ * is not reachable without Objective-C bindings — a file-name scan is
23
+ * the reasonable zero-dependency approximation; it also recognises the
24
+ * TUI's own bundled font `dsh-tui-pi-nerd.ttf`, so
25
+ * `node scripts/install-font.mjs` flipping the terminal to it is enough
26
+ * to flip `auto` → nerdfont).
27
+ * - Windows / anything else: false (no free probe; the conservative
28
+ * answer is the plain glyphs).
29
+ *
30
+ * The result is memoised at module level — the TUI probes once at startup and
31
+ * hot-applied 'auto' settings changes resolve against that same snapshot. All
32
+ * failure paths return `false`; the probe never throws.
33
+ */
34
+ /** Candidate font families probed with `fc-list -q` on Linux. */
35
+ export declare const NERD_FONT_CANDIDATES: readonly string[];
36
+ /**
37
+ * macOS font-file-name heuristic for a Nerd/Powerline-capable font, incl. the
38
+ * TUI's own bundled subset (`dsh-tui-pi-nerd.ttf`). `MesloLGS` mirrors the
39
+ * Linux candidate list (MesloLGS NF ships as `MesloLGS NF Regular.ttf`).
40
+ */
41
+ export declare const NERD_FONT_FILE_RE: RegExp;
42
+ /**
43
+ * Terminal emulators that ship a built-in Nerd / Symbols font fallback — they
44
+ * can render U+E0B0 and other PUA glyphs even when no Nerd Font is installed
45
+ * system-wide. The probe short-circuits to `true` when `TERM_PROGRAM` matches
46
+ * one of these, before touching the filesystem. The values are the terminals'
47
+ * own hardcoded, case-exact TERM_PROGRAM strings (locked by a test) — do not
48
+ * normalise case on a hunch.
49
+ *
50
+ * - `ghostty`: bundles Symbols Nerd Font as a built-in fallback for missing
51
+ * glyphs (https://ghostty.org/docs/install/release-notes/1-2-0).
52
+ * - `WezTerm`: bundles Nerd Font Symbols and always appends its default
53
+ * fallback, even with a user font chain
54
+ * (https://wezterm.org/config/fonts.html).
55
+ *
56
+ * Residual gap, accepted: tmux 3.3+ rewrites TERM_PROGRAM to `tmux` inside
57
+ * panes, so the whitelist does not apply there — the probe falls through to
58
+ * the (conservative, tofu-free) directory scan. Users under tmux should set
59
+ * `dsh-tui.iconSet` explicitly.
60
+ */
61
+ export declare const NERD_FONT_TERMINALS: readonly string[];
62
+ /**
63
+ * The environment the probe reads — injected for tests (see
64
+ * test/font-detect.test.mjs), defaulting to the real platform/fs.
65
+ */
66
+ export interface FontDetectEnv {
67
+ platform: NodeJS.Platform;
68
+ /** `os.homedir()` — `~/Library/Fonts` is derived from it. */
69
+ home: string;
70
+ /** Resolves with the directory's entry names, rejects when unreadable. */
71
+ readdir: (dir: string) => Promise<string[]>;
72
+ /**
73
+ * Resolves when the command exits 0, rejects on a missing/nonzero exit or
74
+ * on timeout — a stale fontconfig / hung fc-list must not block startup.
75
+ */
76
+ execFile: (file: string, args: readonly string[], options?: {
77
+ timeout?: number;
78
+ }) => Promise<unknown>;
79
+ /** `process.env.TERM_PROGRAM` — used for the terminal-whitelist check. */
80
+ termProgram?: string;
81
+ }
82
+ /**
83
+ * The full probe against an injected environment: first checks the terminal
84
+ * whitelist (built-in Nerd symbol fallback), then falls back to the
85
+ * platform-specific font-directory / fc-list scan. Never throws — every
86
+ * platform path is wrapped or falls through to `false`.
87
+ */
88
+ export declare function probeNerdFont(env: FontDetectEnv): Promise<boolean>;
89
+ /**
90
+ * Detect whether a Nerd/Powerline font is available, memoised. The first call
91
+ * (TUI startup, src/index.ts) runs the platform probe and caches the result;
92
+ * every later call — including a hot-applied 'auto' iconSet change — resolves
93
+ * against the same startup snapshot. Never throws.
94
+ */
95
+ export declare function detectNerdFontAvailable(env?: FontDetectEnv): Promise<boolean>;
96
+ /** Drop the memoised result — a test seam (deterministic probe tests). */
97
+ export declare function resetNerdFontCache(): void;