koneck 2.70.0 → 2.71.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/dist/browser.d.ts +25 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +129 -14
- package/dist/browser.js.map +1 -1
- package/dist/ink-chat.d.ts +13 -0
- package/dist/ink-chat.d.ts.map +1 -1
- package/dist/ink-chat.js +68 -13
- package/dist/ink-chat.js.map +1 -1
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +117 -0
- package/dist/providers.js.map +1 -1
- package/dist/web/api.d.ts.map +1 -1
- package/dist/web/api.js +11 -1
- package/dist/web/api.js.map +1 -1
- package/dist/web/ui-client.d.ts.map +1 -1
- package/dist/web/ui-client.js +96 -0
- 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 +18 -3
- package/dist/web/ui-css.js.map +1 -1
- package/dist/web/ui.d.ts.map +1 -1
- package/dist/web/ui.js +11 -0
- package/dist/web/ui.js.map +1 -1
- package/package.json +2 -1
package/dist/web/ui-client.js
CHANGED
|
@@ -1709,6 +1709,23 @@ async function loadSettings() {
|
|
|
1709
1709
|
.catch((e) => { sbox.appendChild(el('div', 'err', e.message)); });
|
|
1710
1710
|
|
|
1711
1711
|
/* MCP */
|
|
1712
|
+
/*
|
|
1713
|
+
* Providers, which this panel claimed to show and did not.
|
|
1714
|
+
*
|
|
1715
|
+
* The tab has always been labelled "providers, type, health" and there was no providers section in
|
|
1716
|
+
* it: the only list anywhere was the dropdown inside the model dialog. So somebody who declared
|
|
1717
|
+
* one and then came here to check looked at a panel that promised providers and showed none, and
|
|
1718
|
+
* concluded reasonably that the declaration had not taken. It had.
|
|
1719
|
+
*
|
|
1720
|
+
* Everything KONECK knows is listed, declared entries included, with the endpoint each would use
|
|
1721
|
+
* and whether a credential is actually reachable — and a declared one can be removed from here,
|
|
1722
|
+
* which is the other half of being able to add one.
|
|
1723
|
+
*/
|
|
1724
|
+
wrap.appendChild(el('div', 'sect', 'Providers'));
|
|
1725
|
+
const provbox = el('div');
|
|
1726
|
+
wrap.appendChild(provbox);
|
|
1727
|
+
drawProviderList(provbox);
|
|
1728
|
+
|
|
1712
1729
|
wrap.appendChild(el('div', 'sect', 'MCP integrations'));
|
|
1713
1730
|
const mbox = el('div');
|
|
1714
1731
|
wrap.appendChild(mbox);
|
|
@@ -1763,6 +1780,85 @@ async function loadSettings() {
|
|
|
1763
1780
|
}
|
|
1764
1781
|
|
|
1765
1782
|
|
|
1783
|
+
/**
|
|
1784
|
+
* The providers list in Settings.
|
|
1785
|
+
*
|
|
1786
|
+
* Ordered as the registry holds them — what KONECK ships with, then whatever you declared — because
|
|
1787
|
+
* that grouping is the answer to "is mine actually in here", which is the question this list exists
|
|
1788
|
+
* for. Rows say the endpoint rather than hiding it: a provider pointing somewhere unexpected is the
|
|
1789
|
+
* single most useful thing to be able to see at a glance, and it is what one wrong /endpoint looks
|
|
1790
|
+
* like.
|
|
1791
|
+
*/
|
|
1792
|
+
async function drawProviderList(host) {
|
|
1793
|
+
host.innerHTML = '';
|
|
1794
|
+
host.appendChild(el('div', 'smeta', 'reading…'));
|
|
1795
|
+
let info;
|
|
1796
|
+
try {
|
|
1797
|
+
const who = state.session ? '?session=' + encodeURIComponent(state.session) : '';
|
|
1798
|
+
info = await api('/api/providers' + who);
|
|
1799
|
+
} catch (e) {
|
|
1800
|
+
host.innerHTML = '';
|
|
1801
|
+
host.appendChild(el('div', 'err', e.message));
|
|
1802
|
+
return;
|
|
1803
|
+
}
|
|
1804
|
+
host.innerHTML = '';
|
|
1805
|
+
|
|
1806
|
+
const rows = info.providers || [];
|
|
1807
|
+
const mine = rows.filter((p) => p.declared);
|
|
1808
|
+
host.appendChild(el('div', 'smeta',
|
|
1809
|
+
rows.length + ' known · ' + mine.length + (mine.length === 1 ? ' declared by you' : ' declared by you')
|
|
1810
|
+
+ (mine.length ? ' · from ' + info.file : '')));
|
|
1811
|
+
|
|
1812
|
+
for (const p of rows) {
|
|
1813
|
+
const row = el('div', 'hrow');
|
|
1814
|
+
/*
|
|
1815
|
+
* Three states, and they are different questions. A local server needs no credential at all; a
|
|
1816
|
+
* keyed provider either has one reachable or does not and will fail on its first request.
|
|
1817
|
+
*/
|
|
1818
|
+
row.appendChild(el('span', 'hs ' + (p.keyless ? 'pass' : p.keyPresent ? 'pass' : 'warn'),
|
|
1819
|
+
p.keyless ? 'local' : p.keyPresent ? 'key' : 'no key'));
|
|
1820
|
+
const name = el('span', 'hn', p.label);
|
|
1821
|
+
if (p.declared) name.appendChild(el('em', 'pmine', ' yours'));
|
|
1822
|
+
row.appendChild(name);
|
|
1823
|
+
row.appendChild(el('span', 'hr', p.baseURL));
|
|
1824
|
+
|
|
1825
|
+
if (p.declared) {
|
|
1826
|
+
const drop = el('button', 'tinybtn', 'remove');
|
|
1827
|
+
drop.title = p.shadowsBuiltIn
|
|
1828
|
+
? 'Removing this leaves the built-in ' + p.name + ' in place'
|
|
1829
|
+
: 'Forget this provider';
|
|
1830
|
+
drop.onclick = async () => {
|
|
1831
|
+
drop.disabled = true;
|
|
1832
|
+
try {
|
|
1833
|
+
await api('/api/providers?name=' + encodeURIComponent(p.name), { method: 'DELETE' });
|
|
1834
|
+
} catch (e) {
|
|
1835
|
+
drop.disabled = false;
|
|
1836
|
+
host.appendChild(el('div', 'err', e.message));
|
|
1837
|
+
return;
|
|
1838
|
+
}
|
|
1839
|
+
// Re-read rather than splice the row out: the built-in it was shadowing comes back, and
|
|
1840
|
+
// guessing what the list looks like afterwards is how a list starts telling small lies.
|
|
1841
|
+
void drawProviderList(host);
|
|
1842
|
+
};
|
|
1843
|
+
row.appendChild(drop);
|
|
1844
|
+
}
|
|
1845
|
+
host.appendChild(row);
|
|
1846
|
+
}
|
|
1847
|
+
|
|
1848
|
+
const add = el('button', 'act', '+ add a provider');
|
|
1849
|
+
add.style.marginTop = '10px';
|
|
1850
|
+
add.onclick = () => {
|
|
1851
|
+
$('pverr').hidden = true;
|
|
1852
|
+
$('provdlg').showModal();
|
|
1853
|
+
// Whatever the dialog does, this list should be right afterwards.
|
|
1854
|
+
$('provdlg').addEventListener('close', () => drawProviderList(host), { once: true });
|
|
1855
|
+
};
|
|
1856
|
+
host.appendChild(add);
|
|
1857
|
+
host.appendChild(el('div', 'smeta',
|
|
1858
|
+
'A declared provider needs an OpenAI-compatible endpoint and the name of the environment '
|
|
1859
|
+
+ 'variable holding its key — the name, never the key itself.'));
|
|
1860
|
+
}
|
|
1861
|
+
|
|
1766
1862
|
/* ── attachments ───────────────────────────────────────────── */
|
|
1767
1863
|
/**
|
|
1768
1864
|
* Images waiting to go with the next message.
|
|
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4nKlB,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,CAipC3C"}
|
package/dist/web/ui-css.js
CHANGED
|
@@ -121,10 +121,22 @@ aside.hide{display:none}
|
|
|
121
121
|
|
|
122
122
|
/* ── main ────────────────────────────────────────────────── */
|
|
123
123
|
main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}
|
|
124
|
+
/*
|
|
125
|
+
* The header does not scroll, and must not.
|
|
126
|
+
*
|
|
127
|
+
* It did, to stop nine pills wrapping inside a 47px bar. But overflow in one axis makes an element a
|
|
128
|
+
* scroll container in both — "visible" computes to "auto" when its partner is not visible — so the
|
|
129
|
+
* view menu, absolutely positioned inside the header, was clipped to those 47 pixels. It was not
|
|
130
|
+
* merely invisible: the clipped region stops hit-testing, so clicking an item landed on whatever was
|
|
131
|
+
* behind it and the menu looked like it did nothing at all. Found by asking the browser what was
|
|
132
|
+
* actually at the item's coordinates, which answered "the hero panel".
|
|
133
|
+
*/
|
|
124
134
|
header{height:47px;flex:0 0 47px;border-bottom:1px solid var(--line);display:flex;
|
|
125
|
-
align-items:center;gap:8px;padding:0 14px;background:var(--panel);font-size:12px
|
|
126
|
-
|
|
127
|
-
|
|
135
|
+
align-items:center;gap:8px;padding:0 14px;background:var(--panel);font-size:12px}
|
|
136
|
+
/* The pills, which are what needed to scroll in the first place. */
|
|
137
|
+
.hpills{display:flex;align-items:center;gap:8px;min-width:0;overflow-x:auto;overflow-y:hidden;
|
|
138
|
+
scrollbar-width:none;padding:2px 0}
|
|
139
|
+
.hpills::-webkit-scrollbar{display:none}
|
|
128
140
|
.iconbtn{width:28px;height:28px;border-radius:7px;border:1px solid transparent;color:var(--muted);
|
|
129
141
|
display:grid;place-items:center;font-size:15px}
|
|
130
142
|
.iconbtn:hover{background:var(--panel-2);color:var(--ink)}
|
|
@@ -445,6 +457,9 @@ footer{flex:0 0 auto;border-top:1px solid var(--line);background:var(--panel);pa
|
|
|
445
457
|
.uref{font-family:var(--mono);font-size:10.5px;color:var(--dim);padding:1px 7px;
|
|
446
458
|
border:1px solid var(--line-2);border-radius:999px}
|
|
447
459
|
.uref.bad{border-color:var(--red);color:var(--red)}
|
|
460
|
+
/* "yours" beside a declared provider: a label, not an emphasis. */
|
|
461
|
+
.pmine{font-style:normal;font-size:9.5px;letter-spacing:.05em;color:var(--cyan);
|
|
462
|
+
border:1px solid var(--cyan);border-radius:999px;padding:1px 6px;margin-left:7px}
|
|
448
463
|
.attached{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:9px}
|
|
449
464
|
.attached[hidden]{display:none}
|
|
450
465
|
.thumb{position:relative;width:60px;height:60px;border-radius:8px;overflow:hidden;
|
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;;;;;;;;;;;;;;;;;gBAiBO,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;;;;;;;;;;;;;;;;;gBAiBO,OAAO;;;oCAGa,IAAI;;2BAEb,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAynC9B,CAAC;AACF,CAAC"}
|
package/dist/web/ui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,wBAAgB,IAAI,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,wBAAgB,IAAI,IAAI,MAAM,CAmf7B"}
|
package/dist/web/ui.js
CHANGED
|
@@ -49,6 +49,16 @@ export function page() {
|
|
|
49
49
|
<div class="vmenu" id="vmenu" role="listbox" hidden></div>
|
|
50
50
|
</div>
|
|
51
51
|
<div class="spacer"></div>
|
|
52
|
+
<!--
|
|
53
|
+
The pills scroll; the header does not.
|
|
54
|
+
=====================================
|
|
55
|
+
Making the whole header scroll horizontally stopped the pills wrapping in a 47px bar, and
|
|
56
|
+
clipped the view menu to that same 47px — an element with overflow in one axis is a scroll
|
|
57
|
+
container in both, so an absolutely-positioned dropdown inside it is cut off and, worse, stops
|
|
58
|
+
being clickable where it is cut. The menu appeared not to open at all. So the scrolling belongs
|
|
59
|
+
to the pills alone, and the view picker sits outside it.
|
|
60
|
+
-->
|
|
61
|
+
<div class="hpills">
|
|
52
62
|
<button class="pill" id="pfollow" title="Show the file being worked on beside the conversation">follow <b>on</b></button>
|
|
53
63
|
<button class="pill" id="pgoal" title="A standing objective, put in front of every message">goal <b>none</b></button>
|
|
54
64
|
<button class="pill" id="peffort" title="How hard to think">effort <b>medium</b></button>
|
|
@@ -63,6 +73,7 @@ export function page() {
|
|
|
63
73
|
<button class="pill" id="pmodel">model <b>—</b></button>
|
|
64
74
|
<div class="stat" id="stat">—</div>
|
|
65
75
|
<button class="stopbtn" id="stop" hidden>stop</button>
|
|
76
|
+
</div>
|
|
66
77
|
</header>
|
|
67
78
|
|
|
68
79
|
<div class="view" id="chatview">
|
package/dist/web/ui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,IAAI;IAClB,OAAO;;;;;;;SAOA,GAAG,CAAC,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,IAAI;IAClB,OAAO;;;;;;;SAOA,GAAG,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAueF,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;EAC7C,YAAY,EAAE;;eAED,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "koneck",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.71.1",
|
|
4
4
|
"description": "Kinetically Orchestrated Neural Execution Engine for Code",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
"@types/diff": "^5.2.1",
|
|
64
64
|
"@types/node": "^22.0.0",
|
|
65
65
|
"@types/react": "^18.3.31",
|
|
66
|
+
"ink-testing-library": "^4.0.0",
|
|
66
67
|
"tsx": "^4.19.0",
|
|
67
68
|
"typescript": "^5.5.0",
|
|
68
69
|
"vitest": "^2.0.0"
|