@aiwayds/dsh-opentui 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist-host/index.js +72 -62
  2. package/package.json +2 -1
@@ -743,6 +743,7 @@ function TranscriptWindow(props) {
743
743
  _$setProp2(_el$18, "style", {
744
744
  flexDirection: "column",
745
745
  flexGrow: 1,
746
+ justifyContent: "flex-end",
746
747
  padding: 1
747
748
  });
748
749
  _$insert2(_el$18, _$createComponent2(For2, {
@@ -1598,20 +1599,37 @@ function WidgetFrame(props) {
1598
1599
  get children() {
1599
1600
  var _el$ = _$createElement13("box");
1600
1601
  _$insert13(_el$, (() => {
1601
- var _c$ = _$memo6(() => !!(props.title || props.hint));
1602
+ var _c$ = _$memo6(() => rows() === 1);
1602
1603
  return () => _c$() ? (() => {
1603
- var _el$2 = _$createElement13("box"), _el$3 = _$createElement13("text"), _el$4 = _$createElement13("box"), _el$5 = _$createElement13("text");
1604
+ var _el$2 = _$createElement13("box"), _el$3 = _$createElement13("box"), _el$4 = _$createElement13("text");
1604
1605
  _$insertNode10(_el$2, _el$3);
1605
1606
  _$insertNode10(_el$2, _el$4);
1606
- _$insertNode10(_el$2, _el$5);
1607
1607
  _$setProp13(_el$2, "style", {
1608
1608
  flexDirection: "row"
1609
1609
  });
1610
- _$insert13(_el$3, () => props.title);
1611
- _$setProp13(_el$4, "style", {
1610
+ _$setProp13(_el$3, "style", {
1611
+ flexDirection: "row",
1612
1612
  flexGrow: 1
1613
1613
  });
1614
- _$insert13(_el$5, () => props.hint);
1614
+ _$insert13(_el$3, () => props.children);
1615
+ _$insert13(_el$4, () => props.hint ?? "");
1616
+ _$effect13((_$p) => _$setProp13(_el$4, "style", {
1617
+ fg: dimColor(accent(), 0.25)
1618
+ }, _$p));
1619
+ return _el$2;
1620
+ })() : [_$memo6(() => _$memo6(() => !!(props.title || props.hint))() ? (() => {
1621
+ var _el$5 = _$createElement13("box"), _el$6 = _$createElement13("text"), _el$7 = _$createElement13("box"), _el$8 = _$createElement13("text");
1622
+ _$insertNode10(_el$5, _el$6);
1623
+ _$insertNode10(_el$5, _el$7);
1624
+ _$insertNode10(_el$5, _el$8);
1625
+ _$setProp13(_el$5, "style", {
1626
+ flexDirection: "row"
1627
+ });
1628
+ _$insert13(_el$6, () => props.title);
1629
+ _$setProp13(_el$7, "style", {
1630
+ flexGrow: 1
1631
+ });
1632
+ _$insert13(_el$8, () => props.hint);
1615
1633
  _$effect13((_p$) => {
1616
1634
  var _v$ = {
1617
1635
  fg: accent(),
@@ -1620,17 +1638,16 @@ function WidgetFrame(props) {
1620
1638
  }, _v$2 = {
1621
1639
  fg: dimColor(accent(), 0.25)
1622
1640
  };
1623
- _v$ !== _p$.e && (_p$.e = _$setProp13(_el$3, "style", _v$, _p$.e));
1624
- _v$2 !== _p$.t && (_p$.t = _$setProp13(_el$5, "style", _v$2, _p$.t));
1641
+ _v$ !== _p$.e && (_p$.e = _$setProp13(_el$6, "style", _v$, _p$.e));
1642
+ _v$2 !== _p$.t && (_p$.t = _$setProp13(_el$8, "style", _v$2, _p$.t));
1625
1643
  return _p$;
1626
1644
  }, {
1627
1645
  e: undefined,
1628
1646
  t: undefined
1629
1647
  });
1630
- return _el$2;
1631
- })() : null;
1632
- })(), null);
1633
- _$insert13(_el$, () => props.children, null);
1648
+ return _el$5;
1649
+ })() : null), _$memo6(() => props.children)];
1650
+ })());
1634
1651
  _$effect13((_$p) => _$setProp13(_el$, "style", {
1635
1652
  flexDirection: "column",
1636
1653
  flexGrow: 0,
@@ -2386,7 +2403,6 @@ import { createSignal as createSignal3, For as For11, Show as Show8 } from "soli
2386
2403
  var FLUSH_MS = 60;
2387
2404
  var FADE_STEP_MS = 130;
2388
2405
  var FADE_STEPS = 5;
2389
- var IDLE_COLLAPSE_MS = 2000;
2390
2406
  var SPINNER_FRAMES2 = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
2391
2407
  function createDockFeature(deps) {
2392
2408
  const th = () => deps.theme();
@@ -2404,6 +2420,7 @@ function createDockFeature(deps) {
2404
2420
  });
2405
2421
  let thinkBuf = "";
2406
2422
  let lastFlush = 0;
2423
+ let thinkOpen = false;
2407
2424
  const [tools, setTools] = createSignal3([]);
2408
2425
  const [toolVisible, setToolVisible] = createSignal3(false);
2409
2426
  const [toolFading, setToolFading] = createSignal3(false);
@@ -2435,29 +2452,22 @@ function createDockFeature(deps) {
2435
2452
  } : s);
2436
2453
  };
2437
2454
  const fadeTimer = setInterval(() => {
2438
- const now = Date.now();
2439
2455
  setThink((s) => {
2440
- if (s.fading) {
2441
- const f = Math.min(1, s.fade + 1 / FADE_STEPS);
2442
- return f >= 1 ? {
2443
- visible: false,
2444
- expanded: false,
2445
- fading: false,
2446
- fade: 0,
2447
- text: "",
2448
- lastAt: 0,
2449
- startedAt: 0
2450
- } : {
2451
- ...s,
2452
- fade: f
2453
- };
2454
- }
2455
- if (s.visible)
2456
- return {
2457
- ...s,
2458
- expanded: now - s.lastAt < IDLE_COLLAPSE_MS
2459
- };
2460
- return s;
2456
+ if (!s.fading)
2457
+ return s;
2458
+ const f = Math.min(1, s.fade + 1 / FADE_STEPS);
2459
+ return f >= 1 ? {
2460
+ visible: false,
2461
+ expanded: false,
2462
+ fading: false,
2463
+ fade: 0,
2464
+ text: "",
2465
+ lastAt: 0,
2466
+ startedAt: 0
2467
+ } : {
2468
+ ...s,
2469
+ fade: f
2470
+ };
2461
2471
  });
2462
2472
  if (toolFading()) {
2463
2473
  const f = Math.min(1, toolFade() + 1 / FADE_STEPS);
@@ -2468,8 +2478,6 @@ function createDockFeature(deps) {
2468
2478
  setTools([]);
2469
2479
  } else
2470
2480
  setToolFade(f);
2471
- } else if (toolVisible()) {
2472
- setToolExpanded(now - lastToolAt < IDLE_COLLAPSE_MS || tools().some((e) => e.status === "running"));
2473
2481
  }
2474
2482
  }, FADE_STEP_MS);
2475
2483
  const startThinkFade = () => setThink((s) => ({
@@ -2530,14 +2538,14 @@ function createDockFeature(deps) {
2530
2538
  `).slice(-Math.max(1, (typeof rowsT === "number" ? rowsT : 7) - 2));
2531
2539
  },
2532
2540
  children: (line) => (() => {
2533
- var _el$5 = _$createElement15("text");
2534
- _$insert15(_el$5, line || " ");
2535
- _$effect15((_$p) => _$setProp15(_el$5, "style", {
2541
+ var _el$6 = _$createElement15("text");
2542
+ _$insert15(_el$6, line || " ");
2543
+ _$effect15((_$p) => _$setProp15(_el$6, "style", {
2536
2544
  fg: dimColor(thinkFg(), 0.2),
2537
2545
  wrapMode: "none",
2538
2546
  truncate: true
2539
2547
  }, _$p));
2540
- return _el$5;
2548
+ return _el$6;
2541
2549
  })()
2542
2550
  });
2543
2551
  }
@@ -2546,8 +2554,10 @@ function createDockFeature(deps) {
2546
2554
  return !t.expanded;
2547
2555
  },
2548
2556
  get children() {
2549
- var _el$ = _$createElement15("text"), _el$2 = _$createTextNode10(`\uD83D\uDCAD `);
2557
+ var _el$ = _$createElement15("text"), _el$2 = _$createTextNode10(`\uD83D\uDCAD `), _el$3 = _$createTextNode10(`s `);
2550
2558
  _$insertNode12(_el$, _el$2);
2559
+ _$insertNode12(_el$, _el$3);
2560
+ _$insert15(_el$, elapsed, _el$3);
2551
2561
  _$insert15(_el$, () => thinkBuf.split(`
2552
2562
  `).pop() || " ", null);
2553
2563
  _$effect15((_$p) => _$setProp15(_el$, "style", {
@@ -2596,17 +2606,17 @@ function createDockFeature(deps) {
2596
2606
  return list.slice(-Math.max(1, (typeof rowsTool === "number" ? rowsTool : 7) - 2));
2597
2607
  },
2598
2608
  children: (e) => (() => {
2599
- var _el$6 = _$createElement15("text");
2600
- _$insert15(_el$6, (() => {
2609
+ var _el$7 = _$createElement15("text");
2610
+ _$insert15(_el$7, (() => {
2601
2611
  var _c$2 = _$memo8(() => e.status === "running");
2602
2612
  return () => _c$2() ? `⚙ ${e.name} ${e.args}` : `${e.status === "ok" ? "✔" : "✘"} ${e.name} ${e.args}`;
2603
2613
  })());
2604
- _$effect15((_$p) => _$setProp15(_el$6, "style", {
2614
+ _$effect15((_$p) => _$setProp15(_el$7, "style", {
2605
2615
  fg: e.status === "running" ? toolFg() : e.status === "fail" ? th().tokens.toolFail ?? th().tokens.danger : th().tokens.toolOk ?? th().tokens.ok,
2606
2616
  wrapMode: "none",
2607
2617
  truncate: true
2608
2618
  }, _$p));
2609
- return _el$6;
2619
+ return _el$7;
2610
2620
  })()
2611
2621
  });
2612
2622
  }
@@ -2615,18 +2625,18 @@ function createDockFeature(deps) {
2615
2625
  return !toolExpanded();
2616
2626
  },
2617
2627
  get children() {
2618
- var _el$3 = _$createElement15("text"), _el$4 = _$createTextNode10(`\uD83D\uDD27 `);
2619
- _$insertNode12(_el$3, _el$4);
2620
- _$insert15(_el$3, (() => {
2628
+ var _el$4 = _$createElement15("text"), _el$5 = _$createTextNode10(`\uD83D\uDD27 `);
2629
+ _$insertNode12(_el$4, _el$5);
2630
+ _$insert15(_el$4, (() => {
2621
2631
  var _c$ = _$memo8(() => running.length > 0);
2622
2632
  return () => _c$() ? `⚙ ${running[0].name} ${running[0].args}` : `${list[0]?.name ?? ""} ${list[0]?.args ?? ""}`;
2623
2633
  })(), null);
2624
- _$effect15((_$p) => _$setProp15(_el$3, "style", {
2634
+ _$effect15((_$p) => _$setProp15(_el$4, "style", {
2625
2635
  fg: dimColor(toolFg(), 0.2),
2626
2636
  wrapMode: "none",
2627
2637
  truncate: true
2628
2638
  }, _$p));
2629
- return _el$3;
2639
+ return _el$4;
2630
2640
  }
2631
2641
  })];
2632
2642
  }
@@ -2640,8 +2650,11 @@ function createDockFeature(deps) {
2640
2650
  if (text === "")
2641
2651
  return;
2642
2652
  const now = Date.now();
2643
- if (!think().visible || think().fading) {
2644
- thinkBuf = text;
2653
+ cancelThinkHide();
2654
+ const fresh = !think().visible || think().fading || !thinkOpen;
2655
+ thinkBuf = fresh ? text : thinkBuf + text;
2656
+ thinkOpen = true;
2657
+ if (fresh) {
2645
2658
  setThink({
2646
2659
  visible: true,
2647
2660
  expanded: false,
@@ -2655,8 +2668,6 @@ function createDockFeature(deps) {
2655
2668
  flush(true);
2656
2669
  return;
2657
2670
  }
2658
- cancelThinkHide();
2659
- thinkBuf = text;
2660
2671
  setThink((s) => ({
2661
2672
  ...s,
2662
2673
  text: thinkBuf,
@@ -2673,6 +2684,7 @@ function createDockFeature(deps) {
2673
2684
  lastAt: Date.now()
2674
2685
  }));
2675
2686
  scheduleThinkHide();
2687
+ thinkOpen = false;
2676
2688
  },
2677
2689
  onToolStart(start) {
2678
2690
  lastToolAt = Date.now();
@@ -2712,17 +2724,14 @@ function createDockFeature(deps) {
2712
2724
  },
2713
2725
  onTurnStart() {
2714
2726
  cancelThinkHide();
2715
- setThink((s) => s.visible ? {
2716
- ...s,
2717
- fading: true,
2718
- fade: 0,
2719
- expanded: false
2720
- } : s);
2721
- if (tools().length > 0) {
2727
+ if (think().visible)
2728
+ scheduleThinkHide(600);
2729
+ if (tools().length > 0 && toolVisible()) {
2722
2730
  setToolFading(true);
2723
2731
  setToolFade(0);
2724
2732
  }
2725
2733
  thinkBuf = "";
2734
+ thinkOpen = false;
2726
2735
  },
2727
2736
  onTurnEnd() {
2728
2737
  thinkBuf = "";
@@ -2732,6 +2741,7 @@ function createDockFeature(deps) {
2732
2741
  setToolFading(true);
2733
2742
  setToolFade(0);
2734
2743
  }
2744
+ thinkOpen = false;
2735
2745
  },
2736
2746
  tick() {},
2737
2747
  reset() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiwayds/dsh-opentui",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "dsh-opentui": "bin/dsh-opentui.mjs"
@@ -39,6 +39,7 @@
39
39
  "typescript": "^5.7.0",
40
40
  "@types/bun": "latest",
41
41
  "@deepseek-ai/cordis": "4.0.5",
42
+ "@deepseek-ai/dsh-llm": "0.2.1-rc.5",
42
43
  "@dsh-opentui/runtime": "workspace:*",
43
44
  "@dsh-opentui/kit": "workspace:*"
44
45
  },