@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.
- package/README.md +44 -3
- package/README.zh.md +36 -3
- package/assets/fonts/LICENSE-Hack.txt +45 -0
- package/assets/fonts/LICENSE-NerdFonts.txt +126 -0
- package/assets/fonts/LICENSE-NotoSansSymbols.txt +93 -0
- package/assets/fonts/LICENSE-NotoSansSymbols2.txt +93 -0
- package/assets/fonts/dsh-tui-pi-nerd.ttf +0 -0
- package/assets/fonts-gen.mjs +219 -0
- package/assets/whale-gen.mjs +169 -0
- package/assets/whale-source.png +0 -0
- package/lib/agents.js +1 -1
- package/lib/agents.js.map +1 -1
- package/lib/dsh-events.d.ts +32 -3
- package/lib/dsh-events.js +14 -0
- package/lib/dsh-events.js.map +1 -1
- package/lib/font-detect.d.ts +97 -0
- package/lib/font-detect.js +161 -0
- package/lib/font-detect.js.map +1 -0
- package/lib/footer.d.ts +3 -2
- package/lib/footer.js +16 -8
- package/lib/footer.js.map +1 -1
- package/lib/icons.d.ts +53 -0
- package/lib/icons.js +78 -0
- package/lib/icons.js.map +1 -0
- package/lib/index.js +44 -13
- package/lib/index.js.map +1 -1
- package/lib/live-widgets.d.ts +16 -5
- package/lib/live-widgets.js +29 -8
- package/lib/live-widgets.js.map +1 -1
- package/lib/messages.js +2 -1
- package/lib/messages.js.map +1 -1
- package/lib/session.d.ts +99 -16
- package/lib/session.js +322 -64
- package/lib/session.js.map +1 -1
- package/lib/sessions.d.ts +15 -0
- package/lib/sessions.js +18 -3
- package/lib/sessions.js.map +1 -1
- package/lib/settings.js +2 -2
- package/lib/skills.d.ts +19 -3
- package/lib/skills.js +43 -10
- package/lib/skills.js.map +1 -1
- package/lib/subagent-policy.d.ts +11 -11
- package/lib/subagent-policy.js +17 -15
- package/lib/subagent-policy.js.map +1 -1
- package/lib/subagent-viewer.d.ts +20 -5
- package/lib/subagent-viewer.js +29 -15
- package/lib/subagent-viewer.js.map +1 -1
- package/lib/theme-settings.d.ts +25 -10
- package/lib/theme-settings.js +40 -14
- package/lib/theme-settings.js.map +1 -1
- package/lib/tokens.d.ts +38 -0
- package/lib/tokens.js +68 -0
- package/lib/tokens.js.map +1 -0
- package/package.json +2 -1
- 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} ·
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EACL,cAAc,EACd,UAAU,GAKX,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACL,SAAS,EACT,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,sBAAsB,EACtB,cAAc,GAGf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,SAAS,EAAqB,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,EACL,UAAU,EACV,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAiB,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC,4EAA4E;AAC5E,MAAM,YAAY,GAA2B;IAC3C,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;CAChB,CAAA;AAED;;0DAE0D;AAC1D,MAAM,iBAAiB,GAA2B;IAChD,GAAG,EAAE,SAAS;IACd,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,SAAS;CAChB,CAAA;AAED,0EAA0E;AAC1E,SAAS,aAAa,CAAC,KAAe,EAAE,IAAY;IAClD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAA;IACnE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;AACpB,CAAC;AAED,0EAA0E;AAC1E,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,yCAAyC,OAAO,GAAG,EAAE,CAAA;IACtF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;AAClD,CAAC;AAED,mFAAmF;AACnF,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,yCAAyC,OAAO,GAAG,EAAE,CAAA;IACtF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;AAClD,CAAC;AAED,gDAAgD;AAChD,MAAM,aAAa,GAAG;IACpB,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;IACzC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE;IAC3C,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE;IACjE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;CACzD,CAAA;AAED,yCAAyC;AACzC,SAAS,SAAS,CAAC,KAAgB,EAAE,MAAuB;IAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,QAAQ,MAAM,CAAC,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAA;QACjD,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,WAAW,CAAA;QAC9C,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,EAAE,CAAA;IACxC,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,SAAS,UAAU,CAAC,KAAe,EAAE,IAAe;IAClD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAA;IACvD,MAAM,GAAG,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;IACzE,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC5D,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,cAAc,CAC3B,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,IAAe,EACf,IAAe;IAEf,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC1B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACvC,MAAM,MAAM,GAAkE,EAAE,CAAA;IAChF,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,aAAa,EAAE,EAAE,CAAC;QAC3C,IAAI,CAAC;YACH,KAAK,MAAM,KAAK,IAAI,MAAM,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACtD,MAAM,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE;oBACnC,KAAK,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;oBAChD,WAAW,EAAE,QAAQ,CAAC,EAAE;iBACzB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,6DAA6D,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAEzC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,KAAK,GAAiB,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC/C,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/E,CAAC,CAAC,CAAA;QACH,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;QACxD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAA;QACvG,IAAI,YAAY,IAAI,CAAC;YAAE,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAA;QAE1D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE;YACrB,qEAAqE;YACrE,uEAAuE;YACvE,kEAAkE;YAClE,2CAA2C;YAC3C,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;YACxB,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;YACxB,KAAK,CAAC,KAAK,IAAI,EAAE;gBACf,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACrC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC9C,OAAM;gBACR,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;gBAC3C,IAAI,OAAsD,CAAA;gBAC1D,IAAI,CAAC;oBACH,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAA;gBAChF,CAAC;gBAAC,MAAM,CAAC,CAAC,uDAAuD,CAAC,CAAC;gBACnE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAClD,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC9C,OAAM;gBACR,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAyC,CAAA;gBAC9D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAC7D,CAAA;gBACD,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,SAAS,CAAC,CAAA;qBACvC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;oBAAE,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;;oBAC/E,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAA;YAC9D,CAAC,CAAC,EAAE,CAAA;QACN,CAAC,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE;YACnB,oEAAoE;YACpE,4DAA4D;YAC5D,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;YACxB,IAAI,CAAC,QAAQ,GAAG,GAAG,EAAE,GAAE,CAAC,CAAA;YACxB,OAAO,CAAC,SAAS,CAAC,CAAA;QACpB,CAAC,CAAA;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAY,EACZ,GAAQ,EACR,KAAe,EACf,YAAwB,EACxB,SAAkB;IAElB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAA;IACvB,sBAAsB,CAAC,GAAG,CAAC,CAAA;IAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;IAC/B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IAE9C,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,YAAgC,CAAA;IACpC,IAAI,YAAgC,CAAA;IACpC,IAAI,gBAAgB,GAAG,SAAS,CAAA;IAChC,wEAAwE;IACxE,IAAI,MAAyD,CAAA;IAC7D,qEAAqE;IACrE,IAAI,YAAuC,CAAA;IAE3C,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE;QAC/C,YAAY,EAAE,CAAA;QACd,MAAM,EAAE,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAA;IAC1D,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,MAAM,GAAG,OAAO,CAAA;QAEhB,MAAM,SAAS,GAAG,GAAS,EAAE;YAC3B,MAAM,cAAc,GAAG,gBAAgB,KAAK,SAAS;gBACnD,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAA;YACnE,gBAAgB,GAAG,SAAS,CAAA;YAC5B,uEAAuE;YACvE,qEAAqE;YACrE,MAAM,eAAgB,SAAQ,UAAqB;gBACjD,WAAW,CAAC,IAAY;oBACtB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;wBAC/B,UAAU,EAAE,CAAA;wBACZ,OAAM;oBACR,CAAC;oBACD,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;gBACzB,CAAC;aACF;YACD,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE;gBACvC,OAAO,EAAE,aAAa;gBACtB,IAAI,EAAE,MAAM;gBACZ,UAAU,EAAE,SAAS;gBACrB,SAAS,EAAE,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;gBAC3F,MAAM,EAAE,gDAAgD;gBACxD,qEAAqE;gBACrE,2CAA2C;gBAC3C,QAAQ,EAAE,KAAK,CAAC,EAAE;oBAChB,IAAI,KAAK,KAAK,SAAS;wBAAE,UAAU,CAAC,KAAK,CAAC,CAAA;gBAC5C,CAAC;gBACD,QAAQ,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE;aAC/B,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,CAAA;QAED,MAAM,YAAY,GAAG,GAAS,EAAE;YAC9B,IAAI,CAAC,KAAK,EAAE,CAAA;YACZ,YAAY,EAAE,CAAA;YACd,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,SAAS,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC7F,OAAO,CAAC,mBAAmB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,CAAA;YAC/D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,MAAM,kBAAkB,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;YAChH,CAAC;QACH,CAAC,CAAA;QAED,MAAM,UAAU,GAAG,CAAC,KAAgB,EAAQ,EAAE;YAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;YACvB,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACpE,MAAM,MAAM,GAAG;gBACb,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAClF,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,IAAI,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACxE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC1D,CAAA;YACD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE;gBACjC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC;gBAC9B,OAAO;gBACP,MAAM;gBACN,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY;gBAC1B,MAAM,EAAE,+EAA+E;gBACvF,SAAS,EAAE;oBACT,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,WAAW,CAAC,KAAK,CAAC;oBAChC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,cAAc,CAAC,KAAK,CAAC;oBACnC,CAAC,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC;oBAC9B,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;iBACzB;gBACD,MAAM,EAAE,KAAK,CAAC,EAAE;oBACd,IAAI,KAAK,KAAK,CAAC;wBAAE,KAAK,WAAW,CAAC,KAAK,CAAC,CAAA;yBACnC,IAAI,KAAK,KAAK,CAAC;wBAAE,KAAK,cAAc,CAAC,KAAK,CAAC,CAAA;;wBAC3C,cAAc,CAAC,KAAK,CAAC,CAAA;gBAC5B,CAAC;gBACD,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE;aAC5B,CAAC,CAAA;YACF,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChC,CAAC,CAAA;QAED,8EAA8E;QAC9E,MAAM,aAAa,GAAG,CAAC,KAAgB,EAAE,KAAyB,EAAE,OAAe,EAAQ,EAAE;YAC3F,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,YAAY,GAAG,KAAK,KAAK,EAAE,CAAA;YAC7B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;oBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACrE,YAAY,GAAG,OAAO,CAAA;YACxB,CAAC;YACD,UAAU,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC,CAAA;QAED,MAAM,WAAW,GAAG,KAAK,EAAE,KAAgB,EAAiB,EAAE;YAC5D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACtE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,UAAU,CAAC,KAAK,CAAC,CAAA;gBACjB,OAAM;YACR,CAAC;YACD,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE;gBAC/C,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAA;YACF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;gBAC/B,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAA;YACpD,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAC/E,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,MAAM,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC,CAAA;QACvF,CAAC,CAAA;QAED,MAAM,cAAc,GAAG,KAAK,EAAE,KAAgB,EAAiB,EAAE;YAC/D,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBACnC,YAAY,GAAG,yCAAyC,CAAA;gBACxD,UAAU,CAAC,KAAK,CAAC,CAAA;gBACjB,OAAM;YACR,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC1B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,YAAY,GAAG,2BAA2B,CAAA;gBAC1C,UAAU,CAAC,KAAK,CAAC,CAAA;gBACjB,OAAM;YACR,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACf,YAAY,GAAG,qCAAqC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;gBACtE,UAAU,CAAC,KAAK,CAAC,CAAA;gBACjB,OAAM;YACR,CAAC;YACD,IAAI,OAAsD,CAAA;YAC1D,IAAI,CAAC;gBACH,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAA;YAChI,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,GAAG,SAAS,CAAA;YACrB,CAAC;YACD,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClD,YAAY,GAAG,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,0BAA0B,CAAA;gBAC9D,UAAU,CAAC,KAAK,CAAC,CAAA;gBACjB,OAAM;YACR,CAAC;YACD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,QAAyC,CAAA;YAC1E,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,GAAG,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,CACzE,CAAA;YACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,UAAU,CAAC,KAAK,CAAC,CAAA;gBACjB,OAAM;YACR,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;YACnE,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC9D,IAAI,KAAK,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,SAAS,CAAA;YACpE,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,QAAQ,IAAI,SAAS,EAAE,CAAC,CAAA;QAC1F,CAAC,CAAA;QAED,MAAM,cAAc,GAAG,CAAC,KAAgB,EAAQ,EAAE;YAChD,IAAI,SAAS,GAAG,KAAK,CAAA;YACrB,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE;gBAC/B,KAAK,EAAE,qBAAqB,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;gBACvE,QAAQ,EAAE,sDAAsD;gBAChE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;gBAChC,KAAK,EAAE,cAAc;gBACrB,QAAQ,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;oBACvB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;wBAAE,OAAO,SAAS,CAAA;oBAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAe,CAAA;oBAChC,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;oBAC7D,IAAI,KAAK,KAAK,SAAS;wBAAE,OAAO,EAAE,KAAK,EAAE,CAAA;oBACzC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;oBACnB,SAAS,GAAG,IAAI,CAAA;oBAChB,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,kDAAkD,EAAE,CAAA;gBACrF,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE;oBACX,kEAAkE;oBAClE,yCAAyC;oBACzC,IAAI,SAAS,EAAE,CAAC;wBACd,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;4BAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;wBACrE,YAAY,GAAG,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;oBAC1E,CAAC;oBACD,UAAU,CAAC,KAAK,CAAC,CAAA;gBACnB,CAAC;gBACD,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,YAAY,GAAG,KAAK,OAAO,EAAE,CAAA,CAAC,CAAC;aACtD,EAAE,KAAK,CAAC,CAAA;YACT,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,CAAA;QAED,MAAM,QAAQ,GAAG,CAAC,KAAgB,EAAQ,EAAE;YAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,KAAK,EAAE;gBAC/B,KAAK,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,kBAAkB;gBACvE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC7B,MAAM,EAAE,gBAAgB;gBACxB,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;aACjC,CAAC,CAAC,CAAA;QACL,CAAC,CAAA;QAED;;;;WAIG;QACH,MAAM,UAAU,GAAG,GAAS,EAAE;YAC5B,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;YACtC,MAAM,MAAM,GAAG;gBACb,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,SAAS,6CAA6C,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAC7G,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,SAAS,mDAAmD,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACnH,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,yBAAyB,EAAE,QAAQ,EAAE,IAAI,EAAE;aACrH,CAAA;YACD,MAAM,OAAO,GAAa;gBACxB,sEAAsE;gBACtE,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;oBACrB,CAAC,CAAC,CAAC,gBAAgB,GAAG,2CAA2C,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,yBAAyB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7I,CAAC,CAAC,EAAE,CAAC;aACR,CAAA;YACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE;gBAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,YAAY,GAAG,KAAK;gBACjE,OAAO;gBACP,MAAM;gBACN,MAAM,EAAE,GAAG,EAAE,CAAC,YAAY;gBAC1B,MAAM,EAAE,sEAAsE;gBAC9E,SAAS,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,qBAAqB,EAAE,EAAE;gBACpD,MAAM,EAAE,KAAK,CAAC,EAAE;oBACd,IAAI,KAAK,KAAK,CAAC;wBAAE,qBAAqB,EAAE,CAAA;;wBACnC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAA;gBACzD,CAAC;gBACD,qEAAqE;gBACrE,sEAAsE;gBACtE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;aACrE,CAAC,CAAA;YACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,CAAA;QAED;;;;WAIG;QACH,MAAM,SAAS,GAAG,CAAC,GAA8B,EAAQ,EAAE;YACzD,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;YAC5C,IAAI,SAAS,GAAG,KAAK,CAAA;YACrB,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE;gBAC/B,KAAK,EAAE,GAAG,GAAG,yCAAyC,OAAO,GAAG;gBAChE,QAAQ,EAAE,sEAAsE;gBAChF,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;gBACxB,KAAK,EAAE,eAAe;gBACtB,QAAQ,EAAE,KAAK,EAAC,MAAM,EAAC,EAAE;oBACvB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;wBAAE,OAAO,SAAS,CAAA;oBAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAe,CAAA;oBAChC,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;oBACnD,IAAI,KAAK,KAAK,SAAS;wBAAE,OAAO,EAAE,KAAK,EAAE,CAAA;oBACzC,SAAS,GAAG,IAAI,CAAA;oBAChB,OAAO,SAAS,CAAA;gBAClB,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE;oBACX,kEAAkE;oBAClE,yDAAyD;oBACzD,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,CAAC,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;wBACtC,YAAY,GAAG,GAAG,GAAG,MAAM,CAAC,4CAA4C,CAAA;oBAC1E,CAAC;oBACD,UAAU,EAAE,CAAA;gBACd,CAAC;gBACD,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,YAAY,GAAG,KAAK,OAAO,EAAE,CAAA,CAAC,CAAC;aACtD,EAAE,KAAK,CAAC,CAAA;YACT,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAClB,CAAC,CAAA;QAED;;;;;WAKG;QACH,MAAM,qBAAqB,GAAG,KAAK,IAAmB,EAAE;YACtD,MAAM,IAAI,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,eAAe,CAAA;YACrD,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAA;YACpE,YAAY,GAAG,KAAK,KAAK,SAAS;gBAChC,CAAC,CAAC,KAAK,KAAK,EAAE;gBACd,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,sCAAsC,CAAA;YACxF,UAAU,EAAE,CAAA;QACd,CAAC,CAAA;QAED,qEAAqE;QACrE,2EAA2E;QAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,UAAU,EAAE,CAAA;;YAChC,SAAS,EAAE,CAAA;IAClB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
|
package/lib/dsh-events.d.ts
CHANGED
|
@@ -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 (`
|
|
76
|
-
*
|
|
77
|
-
*
|
|
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
|
package/lib/dsh-events.js.map
CHANGED
|
@@ -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;
|