koneck 2.110.0 → 2.111.0
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/dist/ink-chat.d.ts.map +1 -1
- package/dist/ink-chat.js +3 -1
- package/dist/ink-chat.js.map +1 -1
- package/dist/run-progress.js +1 -1
- package/dist/run-progress.js.map +1 -1
- package/dist/tools.d.ts +9 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +97 -3
- package/dist/tools.js.map +1 -1
- package/dist/web/ui-client.d.ts.map +1 -1
- package/dist/web/ui-client.js +116 -3
- package/dist/web/ui-client.js.map +1 -1
- package/dist/web/ui-css.d.ts.map +1 -1
- package/dist/web/ui-css.js +15 -0
- package/dist/web/ui-css.js.map +1 -1
- package/package.json +1 -1
package/dist/web/ui-client.js
CHANGED
|
@@ -169,6 +169,115 @@ function loadMermaid() {
|
|
|
169
169
|
});
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
+
/*
|
|
173
|
+
* Charts from raw numbers, drawn as inline SVG — no library, no network, works offline.
|
|
174
|
+
*
|
|
175
|
+
* The complement to mermaid: mermaid draws relationships (ERD, flowchart), this draws quantities
|
|
176
|
+
* (bar, line, pie). A model emits a fenced chart block holding small JSON — {type, title, data:[{label,
|
|
177
|
+
* value}]} — and it becomes a picture that reads the same online or off, because there is nothing
|
|
178
|
+
* to fetch. A spec it cannot parse shows its source rather than blanking, the same rule the
|
|
179
|
+
* diagrams follow.
|
|
180
|
+
*
|
|
181
|
+
* The palette is the interface's own accents, so a chart looks like part of KONECK and reads in
|
|
182
|
+
* either theme without a second set of colours to keep in step.
|
|
183
|
+
*/
|
|
184
|
+
const CHART_COLORS = ['var(--cyan)', 'var(--amber)', 'var(--green)', 'var(--red)',
|
|
185
|
+
'var(--dim)', 'var(--muted)'];
|
|
186
|
+
|
|
187
|
+
function drawCharts(container) {
|
|
188
|
+
for (const block of container.querySelectorAll('pre.chart:not([data-drawn])')) {
|
|
189
|
+
block.dataset.drawn = '1';
|
|
190
|
+
let spec;
|
|
191
|
+
try { spec = JSON.parse(block.dataset.src || block.textContent); }
|
|
192
|
+
catch (e) { block.classList.add('chart-source'); block.dataset.drawn = 'error'; continue; }
|
|
193
|
+
try {
|
|
194
|
+
const svg = renderChart(spec);
|
|
195
|
+
if (!svg) { block.classList.add('chart-source'); block.dataset.drawn = 'error'; continue; }
|
|
196
|
+
block.innerHTML = svg;
|
|
197
|
+
block.classList.add('chart-drawn');
|
|
198
|
+
if (spec.title) {
|
|
199
|
+
const cap = el('div', 'chart-title', String(spec.title));
|
|
200
|
+
block.insertBefore(cap, block.firstChild);
|
|
201
|
+
}
|
|
202
|
+
} catch (e) { block.classList.add('chart-source'); block.dataset.drawn = 'error'; }
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/** One of bar, line or pie, as an SVG string, or null if the spec makes no sense. */
|
|
207
|
+
function renderChart(spec) {
|
|
208
|
+
const rows = (spec && Array.isArray(spec.data) ? spec.data : [])
|
|
209
|
+
.map(function (d) { return { label: String(d.label == null ? '' : d.label),
|
|
210
|
+
value: Number(d.value) }; })
|
|
211
|
+
.filter(function (d) { return Number.isFinite(d.value); });
|
|
212
|
+
if (rows.length === 0) return null;
|
|
213
|
+
const type = String((spec && spec.type) || 'bar').toLowerCase();
|
|
214
|
+
if (type === 'pie') return pieSvg(rows);
|
|
215
|
+
if (type === 'line') return lineSvg(rows);
|
|
216
|
+
return barSvg(rows);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
function svgEsc(t) { return String(t).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); }
|
|
220
|
+
|
|
221
|
+
function barSvg(rows) {
|
|
222
|
+
const W = 520, H = 40 + rows.length * 30, L = 130, R = 20;
|
|
223
|
+
const max = Math.max.apply(null, rows.map(function (r) { return Math.abs(r.value); })) || 1;
|
|
224
|
+
const bw = W - L - R;
|
|
225
|
+
const bars = rows.map(function (r, i) {
|
|
226
|
+
const y = 30 + i * 30, w = Math.round(Math.abs(r.value) / max * bw);
|
|
227
|
+
const c = CHART_COLORS[i % CHART_COLORS.length];
|
|
228
|
+
return '<text x="' + (L - 8) + '" y="' + (y + 13) + '" text-anchor="end" class="cl" font-size="12">'
|
|
229
|
+
+ svgEsc(r.label) + '</text>'
|
|
230
|
+
+ '<rect x="' + L + '" y="' + y + '" width="' + w + '" height="18" rx="3" fill="' + c + '"/>'
|
|
231
|
+
+ '<text x="' + (L + w + 6) + '" y="' + (y + 13) + '" class="cv" font-size="11">' + svgEsc(r.value) + '</text>';
|
|
232
|
+
}).join('');
|
|
233
|
+
return '<svg viewBox="0 0 ' + W + ' ' + H + '" class="chartsvg" role="img">' + bars + '</svg>';
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function lineSvg(rows) {
|
|
237
|
+
const W = 520, H = 220, L = 44, R = 16, T = 16, B = 34;
|
|
238
|
+
const vals = rows.map(function (r) { return r.value; });
|
|
239
|
+
const max = Math.max.apply(null, vals), min = Math.min.apply(null, vals);
|
|
240
|
+
const span = (max - min) || 1;
|
|
241
|
+
const px = function (i) { return L + (rows.length === 1 ? 0 : i / (rows.length - 1) * (W - L - R)); };
|
|
242
|
+
const py = function (v) { return T + (1 - (v - min) / span) * (H - T - B); };
|
|
243
|
+
const pts = rows.map(function (r, i) { return px(i) + ',' + py(r.value); }).join(' ');
|
|
244
|
+
const dots = rows.map(function (r, i) {
|
|
245
|
+
return '<circle cx="' + px(i) + '" cy="' + py(r.value) + '" r="3" fill="var(--cyan)"/>'; }).join('');
|
|
246
|
+
const labels = rows.map(function (r, i) {
|
|
247
|
+
return '<text x="' + px(i) + '" y="' + (H - 12) + '" text-anchor="middle" class="cl" font-size="12">'
|
|
248
|
+
+ svgEsc(r.label) + '</text>'; }).join('');
|
|
249
|
+
return '<svg viewBox="0 0 ' + W + ' ' + H + '" class="chartsvg" role="img">'
|
|
250
|
+
+ '<text x="6" y="' + (py(max) + 4) + '" class="cv" font-size="11">' + svgEsc(max) + '</text>'
|
|
251
|
+
+ '<text x="6" y="' + (py(min) + 4) + '" class="cv" font-size="11">' + svgEsc(min) + '</text>'
|
|
252
|
+
+ '<polyline points="' + pts + '" fill="none" stroke="var(--cyan)" stroke-width="2"/>'
|
|
253
|
+
+ dots + labels + '</svg>';
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
function pieSvg(rows) {
|
|
257
|
+
const total = rows.reduce(function (s, r) { return s + Math.abs(r.value); }, 0) || 1;
|
|
258
|
+
const cx = 90, cy = 90, rad = 80;
|
|
259
|
+
let a0 = -Math.PI / 2;
|
|
260
|
+
const slices = rows.map(function (r, i) {
|
|
261
|
+
const frac = Math.abs(r.value) / total, a1 = a0 + frac * Math.PI * 2;
|
|
262
|
+
const big = frac > 0.5 ? 1 : 0;
|
|
263
|
+
const x0 = cx + rad * Math.cos(a0), y0 = cy + rad * Math.sin(a0);
|
|
264
|
+
const x1 = cx + rad * Math.cos(a1), y1 = cy + rad * Math.sin(a1);
|
|
265
|
+
const c = CHART_COLORS[i % CHART_COLORS.length];
|
|
266
|
+
a0 = a1;
|
|
267
|
+
// A single slice is a whole circle, which an arc path cannot draw — use a circle then.
|
|
268
|
+
if (frac >= 0.999) return '<circle cx="' + cx + '" cy="' + cy + '" r="' + rad + '" fill="' + c + '"/>';
|
|
269
|
+
return '<path d="M' + cx + ',' + cy + ' L' + x0 + ',' + y0 + ' A' + rad + ',' + rad
|
|
270
|
+
+ ' 0 ' + big + ' 1 ' + x1 + ',' + y1 + ' Z" fill="' + c + '"/>';
|
|
271
|
+
}).join('');
|
|
272
|
+
const legend = rows.map(function (r, i) {
|
|
273
|
+
const y = 20 + i * 22, c = CHART_COLORS[i % CHART_COLORS.length];
|
|
274
|
+
const pct = Math.round(Math.abs(r.value) / total * 100);
|
|
275
|
+
return '<rect x="196" y="' + y + '" width="12" height="12" rx="2" fill="' + c + '"/>'
|
|
276
|
+
+ '<text x="214" y="' + (y + 11) + '" class="cl" font-size="12">' + svgEsc(r.label) + ' (' + pct + '%)</text>';
|
|
277
|
+
}).join('');
|
|
278
|
+
return '<svg viewBox="0 0 440 190" class="chartsvg" role="img">' + slices + legend + '</svg>';
|
|
279
|
+
}
|
|
280
|
+
|
|
172
281
|
async function drawDiagrams(container) {
|
|
173
282
|
const blocks = [...container.querySelectorAll('pre.mermaid:not([data-drawn])')];
|
|
174
283
|
if (blocks.length === 0) return;
|
|
@@ -209,6 +318,10 @@ function md(src) {
|
|
|
209
318
|
// A diagram, not code. The raw source is kept as the block's text so it renders as a picture
|
|
210
319
|
// when mermaid loads and reads cleanly as a spec when it does not — see drawDiagrams.
|
|
211
320
|
blocks.push('<pre class="mermaid" data-src="' + esc(body) + '">' + esc(body) + '</pre>');
|
|
321
|
+
} else if (/^chart$/i.test(lang)) {
|
|
322
|
+
// A chart from raw numbers, drawn as inline SVG with no library and no network — see
|
|
323
|
+
// drawCharts. The JSON stays as the block's text, so a machine offline still reads the data.
|
|
324
|
+
blocks.push('<pre class="chart" data-src="' + esc(body) + '">' + esc(body) + '</pre>');
|
|
212
325
|
} else {
|
|
213
326
|
blocks.push('<pre><code>' + esc(body) + '</code></pre>');
|
|
214
327
|
}
|
|
@@ -676,7 +789,7 @@ function onEvent(e) {
|
|
|
676
789
|
body.dataset.raw = joinChunk(body.dataset.raw, e.text);
|
|
677
790
|
const was = atBottom();
|
|
678
791
|
body.innerHTML = md(body.dataset.raw);
|
|
679
|
-
drawDiagrams(body);
|
|
792
|
+
drawDiagrams(body); drawCharts(body); drawCharts(body);
|
|
680
793
|
stick(was);
|
|
681
794
|
setBusy(true, 'writing');
|
|
682
795
|
break;
|
|
@@ -2509,7 +2622,7 @@ async function sendAside(question) {
|
|
|
2509
2622
|
return;
|
|
2510
2623
|
}
|
|
2511
2624
|
body.innerHTML = md(out.answer);
|
|
2512
|
-
drawDiagrams(body);
|
|
2625
|
+
drawDiagrams(body); drawCharts(body);
|
|
2513
2626
|
const foot = el('div', 'af', ms(out.ms) + (out.tools.length ? ' · ' + out.tools.join(', ') : ''));
|
|
2514
2627
|
box.appendChild(foot);
|
|
2515
2628
|
}
|
|
@@ -2994,7 +3107,7 @@ function renderPastEntries(entries) {
|
|
|
2994
3107
|
settleReasoning();
|
|
2995
3108
|
const body = el('div', 'reply');
|
|
2996
3109
|
body.innerHTML = md(entry.text);
|
|
2997
|
-
drawDiagrams(body);
|
|
3110
|
+
drawDiagrams(body); drawCharts(body); drawCharts(body);
|
|
2998
3111
|
box.appendChild(who); box.appendChild(body);
|
|
2999
3112
|
stream().appendChild(box);
|
|
3000
3113
|
} else if (entry.kind === 'tool') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-client.js","sourceRoot":"","sources":["../../src/web/ui-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"ui-client.js","sourceRoot":"","sources":["../../src/web/ui-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2mNlB,CAAC;AACF,CAAC"}
|
package/dist/web/ui-css.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-css.d.ts","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AA8CA,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"ui-css.d.ts","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AA8CA,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAshD3C"}
|
package/dist/web/ui-css.js
CHANGED
|
@@ -231,6 +231,21 @@ header{height:47px;flex:0 0 47px;border-bottom:1px solid var(--line);display:fle
|
|
|
231
231
|
display:block;font-size:calc(var(--ui) * 0.75);letter-spacing:.06em;color:var(--dim);
|
|
232
232
|
text-transform:uppercase;margin-bottom:6px}
|
|
233
233
|
pre.mermaid:not([data-drawn]){opacity:.6}
|
|
234
|
+
/*
|
|
235
|
+
* A native chart: inline SVG, no library, the interface's own accents so it reads in either theme.
|
|
236
|
+
* Bad JSON shows its source with the same quiet label a diagram uses, rather than a blank block.
|
|
237
|
+
*/
|
|
238
|
+
.reply pre.chart-drawn,.think pre.chart-drawn{background:var(--panel-2);border:1px solid var(--line);
|
|
239
|
+
border-radius:10px;padding:14px}
|
|
240
|
+
.chartsvg{width:100%;height:auto;max-width:560px;display:block;margin:0 auto}
|
|
241
|
+
.chartsvg .cl{fill:var(--muted)}
|
|
242
|
+
.chartsvg .cv{fill:var(--dim)}
|
|
243
|
+
.chart-title{font-size:calc(var(--ui) * 0.8929);font-weight:600;color:var(--ink);
|
|
244
|
+
text-align:center;margin-bottom:8px}
|
|
245
|
+
.reply pre.chart-source::before,.think pre.chart-source::before{content:'chart data \\2014 could not be drawn';
|
|
246
|
+
display:block;font-size:calc(var(--ui) * 0.75);letter-spacing:.06em;color:var(--dim);
|
|
247
|
+
text-transform:uppercase;margin-bottom:6px}
|
|
248
|
+
pre.chart:not([data-drawn]){opacity:.6}
|
|
234
249
|
.reply pre{background:var(--panel);border:1px solid var(--line);border-radius:8px;
|
|
235
250
|
padding:12px 14px;overflow-x:auto;margin:10px 0;white-space:pre}
|
|
236
251
|
.reply pre code{background:none;border:0;padding:0;font-size:calc(var(--ui) * 0.8929);line-height:1.5}
|
package/dist/web/ui-css.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-css.js","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;CAkBZ,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;gBAyBO,OAAO;;;oCAGa,IAAI;;2BAEb,IAAI
|
|
1
|
+
{"version":3,"file":"ui-css.js","sourceRoot":"","sources":["../../src/web/ui-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH;;;;;;;;;;;;GAYG;AACH,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;CAkBZ,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;gBAyBO,OAAO;;;oCAGa,IAAI;;2BAEb,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAs/C9B,CAAC;AACF,CAAC"}
|