koneck 2.25.58 → 2.25.60
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/context-limit.d.ts +21 -0
- package/dist/context-limit.d.ts.map +1 -1
- package/dist/context-limit.js +29 -0
- package/dist/context-limit.js.map +1 -1
- package/dist/engine.d.ts +20 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +80 -13
- package/dist/engine.js.map +1 -1
- package/dist/ink-chat.d.ts +2 -0
- package/dist/ink-chat.d.ts.map +1 -1
- package/dist/ink-chat.js +128 -6
- package/dist/ink-chat.js.map +1 -1
- package/dist/logo.d.ts +7 -3
- package/dist/logo.d.ts.map +1 -1
- package/dist/logo.js +15 -11
- package/dist/logo.js.map +1 -1
- package/package.json +1 -1
package/dist/ink-chat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ink-chat.d.ts","sourceRoot":"","sources":["../src/ink-chat.tsx"],"names":[],"mappings":"AAgDA,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAS5D,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,YAAY,CAAC;AAoE7D,6FAA6F;AAC7F,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAM7C;AA0BD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA+BpE;AAED,qFAAqF;AACrF,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAiB,GAAG,MAAM,CAM9E;AA6CD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAGnE;AAuBD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3E,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"ink-chat.d.ts","sourceRoot":"","sources":["../src/ink-chat.tsx"],"names":[],"mappings":"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"}
|
package/dist/ink-chat.js
CHANGED
|
@@ -270,6 +270,16 @@ function Shimmer({ text, frame, base }) {
|
|
|
270
270
|
export const WORK_WORDS = {
|
|
271
271
|
// No tool ran: it thought and answered. A cooking metaphor is wrong here — nothing was made.
|
|
272
272
|
reply: [
|
|
273
|
+
["Thinking it through", "Thought it through, sharp"],
|
|
274
|
+
["Consulting the elders", "Elders consulted"],
|
|
275
|
+
["Reading the room", "Room read"],
|
|
276
|
+
["Chewing it over", "Chewed it over"],
|
|
277
|
+
["Doing the maths", "Maths done"],
|
|
278
|
+
["Asking the rubber duck", "Duck consulted"],
|
|
279
|
+
["Squinting at it", "Squinted at it"],
|
|
280
|
+
["Joining the dots", "Dots joined"],
|
|
281
|
+
["Sleeping on it", "Slept on it"],
|
|
282
|
+
["Weighing both sides", "Both sides weighed"],
|
|
273
283
|
['Thinking', 'Thought it through'], ['Weighing it up', 'Weighed it up'],
|
|
274
284
|
['Talking it through', 'Talked it through'], ['Laying it out', 'Laid it out'],
|
|
275
285
|
['Reading you', 'Read you'], ['Working it out', 'Worked it out'],
|
|
@@ -279,6 +289,18 @@ export const WORK_WORDS = {
|
|
|
279
289
|
],
|
|
280
290
|
// Under ~3s. Snappy, almost dismissive — it barely counted as work.
|
|
281
291
|
quick: [
|
|
292
|
+
["Now-now", "Done now-now"],
|
|
293
|
+
["Ayoba", "Made it ayoba"],
|
|
294
|
+
["Kicking it", "Kicked"],
|
|
295
|
+
["Zap-zapping", "Zap-zapped"],
|
|
296
|
+
["Tapping the card", "Card tapped"],
|
|
297
|
+
["Popping the kettle on", "Kettle popped on"],
|
|
298
|
+
["Pulling an espresso", "Espresso pulled"],
|
|
299
|
+
["Catching the kombi", "Kombi caught"],
|
|
300
|
+
["Beating the robot", "Robot beaten"],
|
|
301
|
+
["Slipping it in", "Slipped in"],
|
|
302
|
+
["Grabbing a vetkoek", "Vetkoek grabbed"],
|
|
303
|
+
["Skipping the queue", "Queue skipped"],
|
|
282
304
|
['Sharp-sharp', 'Sharp-sharp'], ['Doing it now-now', 'Done now-now'],
|
|
283
305
|
['One-tapping', 'One-tapped'], ['No-scoping', 'No-scoped'],
|
|
284
306
|
['Speedrunning', 'Speedran'], ['Microwaving', 'Microwaved'],
|
|
@@ -296,6 +318,32 @@ export const WORK_WORDS = {
|
|
|
296
318
|
],
|
|
297
319
|
// The everyday middle. General flex and completion.
|
|
298
320
|
normal: [
|
|
321
|
+
["Stirring the sishwala", "Sishwala stirred"],
|
|
322
|
+
["Pounding tinkhobe", "Tinkhobe pounded"],
|
|
323
|
+
["Souring the emasi", "Emasi soured"],
|
|
324
|
+
["Brewing emahewu", "Emahewu brewed"],
|
|
325
|
+
["Frying magwinya", "Magwinya fried"],
|
|
326
|
+
["Rolling a bunny chow", "Bunny chow rolled"],
|
|
327
|
+
["Firing the shisanyama", "Shisanyama fired"],
|
|
328
|
+
["Stirring the potjie", "Potjie stirred"],
|
|
329
|
+
["Turning the pap", "Pap turned"],
|
|
330
|
+
["Dropping the log drum", "Log drum dropped"],
|
|
331
|
+
["Stewing jollof", "Jollof stewed"],
|
|
332
|
+
["Pounding fufu", "Fufu pounded"],
|
|
333
|
+
["Rolling injera", "Injera rolled"],
|
|
334
|
+
["Grinding berbere", "Berbere ground"],
|
|
335
|
+
["Wrapping dolmades", "Dolmades wrapped"],
|
|
336
|
+
["Folding dumplings", "Dumplings folded"],
|
|
337
|
+
["Rolling sushi", "Sushi rolled"],
|
|
338
|
+
["Proving the sourdough", "Sourdough proved"],
|
|
339
|
+
["Tempering chocolate", "Chocolate tempered"],
|
|
340
|
+
["Layering the lasagne", "Lasagne layered"],
|
|
341
|
+
["Negotiating with TypeScript", "TypeScript talked round"],
|
|
342
|
+
["Bribing the linter", "Linter bribed"],
|
|
343
|
+
["Blaming the cache", "Cache blamed"],
|
|
344
|
+
["Threading the needle", "Needle threaded"],
|
|
345
|
+
["Loading the kombi", "Kombi loaded"],
|
|
346
|
+
["Beating loadshedding", "Loadshedding beaten"],
|
|
299
347
|
['Cooking', 'Cooked lekker'], ['Baking', 'Baked'],
|
|
300
348
|
['Grilling', 'Grilled'], ['Sizzling', 'Sizzled'],
|
|
301
349
|
['Brewing', 'Brewed'], ['Chowing', 'Chowed'],
|
|
@@ -332,6 +380,24 @@ export const WORK_WORDS = {
|
|
|
332
380
|
],
|
|
333
381
|
// Over ~10s. Slow heat and visible effort — it earned the wait.
|
|
334
382
|
heavy: [
|
|
383
|
+
["Slow-braaiing", "Slow-braaied"],
|
|
384
|
+
["Burying the potjie", "Potjie unearthed"],
|
|
385
|
+
["Drying umncweba", "Umncweba dried"],
|
|
386
|
+
["Curing biltong", "Biltong cured"],
|
|
387
|
+
["Waiting for the kombi to fill", "Kombi finally filled"],
|
|
388
|
+
["Smoking brisket", "Brisket smoked"],
|
|
389
|
+
["Curing prosciutto", "Prosciutto cured"],
|
|
390
|
+
["Ageing the parmesan", "Parmesan aged"],
|
|
391
|
+
["Reducing the stock", "Stock reduced"],
|
|
392
|
+
["Confiting the duck", "Duck confited"],
|
|
393
|
+
["Fermenting the mageu", "Mageu fermented"],
|
|
394
|
+
["Digging the imbawula", "Imbawula stoked"],
|
|
395
|
+
["Walking to Mbabane", "Walked to Mbabane"],
|
|
396
|
+
["Crossing the Lubombo", "Lubombo crossed"],
|
|
397
|
+
["Counting the cattle", "Cattle counted"],
|
|
398
|
+
["Thatching the roof", "Roof thatched"],
|
|
399
|
+
["Waiting out stage six", "Stage six outlasted"],
|
|
400
|
+
["Arguing with the compiler", "Compiler talked down"],
|
|
335
401
|
['Braaiing', "Braai'd"], ['Deep-frying', 'Deep-fried'],
|
|
336
402
|
['Pressure-cooking', 'Pressure-cooked'], ['Slow-smoking', 'Smoked'],
|
|
337
403
|
['Simmering', 'Simmered'], ['Marinating', 'Marinated'],
|
|
@@ -361,6 +427,14 @@ export const WORK_WORDS = {
|
|
|
361
427
|
],
|
|
362
428
|
// Something failed on the way and had to be worked around.
|
|
363
429
|
recovery: [
|
|
430
|
+
["Patching the pothole", "Pothole patched"],
|
|
431
|
+
["Jump-starting it", "Jump-started"],
|
|
432
|
+
["Duct-taping it", "Duct-taped"],
|
|
433
|
+
["Calling the mechanic", "Mechanic called"],
|
|
434
|
+
["Rerouting round the roadworks", "Roadworks rerouted"],
|
|
435
|
+
["Putting it back on the rails", "Back on the rails"],
|
|
436
|
+
["Unblocking the drain", "Drain unblocked"],
|
|
437
|
+
["Re-braaiing the burnt bit", "Burnt bit re-braaied"],
|
|
364
438
|
['Sorting it sharp-sharp', 'Sorted sharp-sharp'],
|
|
365
439
|
['De-spaghettifying', 'De-spaghettified'],
|
|
366
440
|
['Clutching it back', 'Clutched it'],
|
|
@@ -619,6 +693,32 @@ export function pickerLabelWidth(labels, descs, width) {
|
|
|
619
693
|
const longestLabel = Math.max(18, ...labels.map(l => l.length));
|
|
620
694
|
return Math.max(18, Math.min(longestLabel, width - longestDesc - 4));
|
|
621
695
|
}
|
|
696
|
+
/**
|
|
697
|
+
* Commands that must wait for a running turn, because they change what it is running against.
|
|
698
|
+
*
|
|
699
|
+
* Everything else runs immediately. Asking what the agent has done, or where the time went, is a
|
|
700
|
+
* question about the run in progress — queueing it until the run finishes answers it about a
|
|
701
|
+
* different moment, and typing /activity to watch a long turn and being told "1 queued, will run
|
|
702
|
+
* when this finishes" is the opposite of what was wanted.
|
|
703
|
+
*
|
|
704
|
+
* A deny list rather than an allow list, because the informational commands are the majority and
|
|
705
|
+
* a new one should work without being registered twice. The dangerous ones are few and named.
|
|
706
|
+
*/
|
|
707
|
+
const COMMANDS_THAT_MUST_WAIT = new Set([
|
|
708
|
+
'/clear', '/reset', '/new', // would wipe the history the turn is using
|
|
709
|
+
'/model', '/provider', '/connect', '/key', // rebuild the session
|
|
710
|
+
'/resume', '/fork', // replace it
|
|
711
|
+
'/revert', // undo files the turn may still be writing
|
|
712
|
+
'/init', '/setup',
|
|
713
|
+
]);
|
|
714
|
+
/** Commands that cannot do anything useful without an argument, so they are offered for editing. */
|
|
715
|
+
const COMMANDS_NEEDING_ARGUMENT = new Set(['/send', '/ask', '/aside']);
|
|
716
|
+
export function commandRunsWhileBusy(cmd) {
|
|
717
|
+
return !COMMANDS_THAT_MUST_WAIT.has(cmd.toLowerCase());
|
|
718
|
+
}
|
|
719
|
+
export function commandNeedsArgument(cmd) {
|
|
720
|
+
return COMMANDS_NEEDING_ARGUMENT.has(cmd.toLowerCase());
|
|
721
|
+
}
|
|
622
722
|
const MODES = MODE_SPECS.map(m => m.name);
|
|
623
723
|
const HELP_TEXT = `
|
|
624
724
|
Type / on an empty line to browse every command; keep typing to filter.
|
|
@@ -1236,9 +1336,9 @@ function App({ config: initialConfig }) {
|
|
|
1236
1336
|
const delay = currentDelay();
|
|
1237
1337
|
setAnim(a => ({ spin: (a.spin + 1) % SPINNER.length, shimmer: a.shimmer + 1, elapsed }));
|
|
1238
1338
|
wordTimer.current += 1;
|
|
1239
|
-
// Roughly every
|
|
1240
|
-
//
|
|
1241
|
-
if (wordTimer.current % Math.max(20, Math.round(
|
|
1339
|
+
// Roughly every 60 seconds, whatever the current rate. Twenty-five felt churned on a long
|
|
1340
|
+
// run — the word is there to be read and enjoyed, not to reassure by moving.
|
|
1341
|
+
if (wordTimer.current % Math.max(20, Math.round(60_000 / delay)) === 0) {
|
|
1242
1342
|
setSpinWord(w => w + 1);
|
|
1243
1343
|
}
|
|
1244
1344
|
timer = setTimeout(tick, delay);
|
|
@@ -1614,9 +1714,18 @@ function App({ config: initialConfig }) {
|
|
|
1614
1714
|
return;
|
|
1615
1715
|
}
|
|
1616
1716
|
if (kind === 'command') {
|
|
1617
|
-
//
|
|
1618
|
-
|
|
1619
|
-
|
|
1717
|
+
// Run it. Picking a command out of the palette and pressing enter is choosing to run it;
|
|
1718
|
+
// leaving it in the composer meant a second enter for every command, which is a keystroke
|
|
1719
|
+
// that only ever existed to serve the few commands that need an argument.
|
|
1720
|
+
if (commandNeedsArgument(item.value)) {
|
|
1721
|
+
setDraft(item.value + ' ');
|
|
1722
|
+
setCaret(item.value.length + 1);
|
|
1723
|
+
return;
|
|
1724
|
+
}
|
|
1725
|
+
setDraft('');
|
|
1726
|
+
setCaret(0);
|
|
1727
|
+
setBusy(true);
|
|
1728
|
+
await handleCommand(item.value, '').finally(() => setBusy(false));
|
|
1620
1729
|
return;
|
|
1621
1730
|
}
|
|
1622
1731
|
if (kind === 'resume') {
|
|
@@ -2710,6 +2819,19 @@ function App({ config: initialConfig }) {
|
|
|
2710
2819
|
void askAside(text.replace(/^\/aside\s*/, ''));
|
|
2711
2820
|
return;
|
|
2712
2821
|
}
|
|
2822
|
+
// A local command runs now. It asks about the run in progress, and answering it after the
|
|
2823
|
+
// run has finished answers it about a different moment.
|
|
2824
|
+
if (isSlashCommand(text)) {
|
|
2825
|
+
const space = text.indexOf(' ');
|
|
2826
|
+
const cmd = space === -1 ? text : text.slice(0, space);
|
|
2827
|
+
if (commandRunsWhileBusy(cmd)) {
|
|
2828
|
+
setDraft('');
|
|
2829
|
+
setCaret(0);
|
|
2830
|
+
void handleCommand(cmd, space === -1 ? '' : text.slice(space + 1).trim());
|
|
2831
|
+
return;
|
|
2832
|
+
}
|
|
2833
|
+
addSystem(`${cmd} changes the session, so it waits until this turn finishes.`);
|
|
2834
|
+
}
|
|
2713
2835
|
setQueued(q => [...q, expandPastes(text, pastesRef.current)]);
|
|
2714
2836
|
setDraft('');
|
|
2715
2837
|
setCaret(0);
|