@lardexx/arenacode 2.5.8 → 2.5.10
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 +3 -3
- package/docs/tui-home.html +1 -1
- package/docs/tui-home.png +0 -0
- package/docs/tui-preview.html +1 -1
- package/docs/tui-session.png +0 -0
- package/package.json +1 -1
- package/src/cli.js +68 -7
- package/src/tui/app.js +19 -5
- package/src/tui/logo.js +2 -1
- package/src/tui/widgets.js +5 -1
package/README.md
CHANGED
|
@@ -45,14 +45,14 @@ arenacode ui # same thing, explicitly
|
|
|
45
45
|
arenacode chat # the plain line-by-line client, if you really want one
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
Home screen — two-tone block wordmark
|
|
48
|
+
Home screen — two-tone block wordmark, all lowercase (single-storey `a`, stem-and-arm `r`), centred prompt, tips, and the folder you
|
|
49
49
|
started in at the bottom left:
|
|
50
50
|
|
|
51
51
|
```
|
|
52
52
|
▄
|
|
53
53
|
▄▀▀█ █▀▀█ █▀▀█ █▀▀▄ ▄▀▀█ █▀▀▀ █▀▀█ █▀▀█ █▀▀█
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
█ █ █ █▀▀▀ █ █ █ █ █ █ █ █ █ █▀▀▀
|
|
55
|
+
▀▀▀▀ ▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀
|
|
56
56
|
|
|
57
57
|
┃
|
|
58
58
|
┃ Ask anything… "Read package.json and add a lint script"
|
package/docs/tui-home.html
CHANGED
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
<body>
|
|
25
25
|
<h1>arenacode — terminal UI</h1>
|
|
26
26
|
<p>captured from a real pty · opencode-style layout, ANSI colours preserved</p>
|
|
27
|
-
<div class="frame"><pre><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span> <span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">▄</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span> </div><div class="ln"> <span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">█</span> <span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">█</span> </div><div class="ln"> <span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700"> </span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700">█</span> <span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700">▀</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700">▀</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700">▀</span> </div><div class="ln"> <span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▀</span> <span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">Ask anything… "Read package.json and add a lint script"</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(92,156,245);background:rgb(30,30,30)">Build</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">·</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">auto</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">Arena</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">╹</span><span style="color:rgb(30,30,30)">▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀</span> </div><div class="ln"> <span style="color:rgb(238,238,238)">tab</span> <span style="color:rgb(128,128,128)">agents</span> <span style="color:rgb(238,238,238)">ctrl+p</span> <span style="color:rgb(128,128,128)">commands</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(245,167,66)">● Tip </span><span style="color:rgb(128,128,128)">Press </span><span style="color:rgb(238,238,238)">ctrl+p</span><span style="color:rgb(128,128,128)"> for every command</span> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(128,128,128)">~/proj</span> <span style="color:rgb(128,128,128)">v2.5.2</span> </div></pre></div>
|
|
27
|
+
<div class="frame"><pre><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span> <span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">▄</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span> </div><div class="ln"> <span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▄</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">█</span> <span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">█</span> </div><div class="ln"> <span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700"> </span><span style="color:rgb(199,199,199);background:rgb(36,36,36);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">█</span> <span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">█</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700">▀</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700">▀</span><span style="color:rgb(238,238,238);background:rgb(60,60,60);font-weight:700">▀</span> </div><div class="ln"> <span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(36,36,36);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700"> </span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span><span style="color:rgb(199,199,199);font-weight:700">▀</span> <span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700"> </span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span><span style="color:rgb(238,238,238);font-weight:700">▀</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">Ask anything… "Summarise what this project does"</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(92,156,245);background:rgb(30,30,30)">Build</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">·</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">auto</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">Arena</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">╹</span><span style="color:rgb(30,30,30)">▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀</span> </div><div class="ln"> <span style="color:rgb(238,238,238)">tab</span> <span style="color:rgb(128,128,128)">agents</span> <span style="color:rgb(238,238,238)">ctrl+p</span> <span style="color:rgb(128,128,128)">commands</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(245,167,66)">● Tip </span><span style="color:rgb(128,128,128)">Run </span><span style="color:rgb(238,238,238)">/tasks</span><span style="color:rgb(128,128,128)"> to see the queue</span> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(128,128,128)">/home/user/arenacode-cli</span> <span style="color:rgb(128,128,128)">v2.5.2</span> </div><div class="ln">Script done on 2026-11-02 18:16:15+00:00 [COMMAND_EXIT_CODE="0"]</div><div class="ln"> </div></pre></div>
|
|
28
28
|
</body></html>
|
package/docs/tui-home.png
CHANGED
|
Binary file
|
package/docs/tui-preview.html
CHANGED
|
@@ -24,5 +24,5 @@
|
|
|
24
24
|
<body>
|
|
25
25
|
<h1>arenacode — terminal UI</h1>
|
|
26
26
|
<p>captured from a real pty · opencode-style layout, ANSI colours preserved</p>
|
|
27
|
-
<div class="frame"><pre><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">read hello.txt and run a command</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(245,167,66)">⠙ Thinking: Looking at the folder</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">→</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">Reading file: hello.txt</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (23 B)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">hello from the project</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">$</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">echo from-pc</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (exit 0)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">from-pc</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">←</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">Writing file: written.txt</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (17 B)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">`write written.txt`</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(238,238,238)">All done: the client answered every card.</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(250,178,131)">▣</span> <span style="color:rgb(238,238,238)">Build</span><span style="color:rgb(128,128,128)"> · auto · 0.2s</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">Ask anything… "Read package.json and add a lint script"</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(92,156,245);background:rgb(30,30,30)">Build</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">·</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">auto</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">arena</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">╹</span><span style="color:rgb(30,30,30)">▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀</span> </div><div class="ln"> <span style="color:rgb(238,238,238)">tab</span> <span style="color:rgb(128,128,128)">agents</span> <span style="color:rgb(238,238,238)">ctrl+p</span> <span style="color:rgb(128,128,128)">commands</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(128,128,128)">/tmp/arenacode-tui-jEk6WF/project</span> <span style="color:rgb(128,128,128)">9d5325 · v2.5.2</span> </div></pre></div>
|
|
27
|
+
<div class="frame"><pre><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">read hello.txt and run a command</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(245,167,66)">Thought for 0.0s</span><span style="color:rgb(128,128,128)">: Looking at the folder</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">→</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">Reading file: hello.txt</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (23 B)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">hello from the project</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">$</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">echo from-pc</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (exit 0)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">from-pc</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">←</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(238,238,238);background:rgb(20,20,20)">Writing file: written.txt</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> (17 B)</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(10,10,10)">┃</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">`write written.txt`</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(238,238,238)">All done: the client answered every card.</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(250,178,131)">▣</span> <span style="color:rgb(238,238,238)">Build</span><span style="color:rgb(128,128,128)"> · auto · 0.2s</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">Ask anything… "Read package.json and add a lint script"</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">┃</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(92,156,245);background:rgb(30,30,30)">Build</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">·</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30)">auto</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">Arena</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="color:rgb(92,156,245)">╹</span><span style="color:rgb(30,30,30)">▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀</span> </div><div class="ln"> <span style="color:rgb(238,238,238)">tab</span> <span style="color:rgb(128,128,128)">agents</span> <span style="color:rgb(238,238,238)">ctrl+p</span> <span style="color:rgb(128,128,128)">commands</span> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(128,128,128)">/tmp/arenacode-tui-GcVXOG/project</span> <span style="color:rgb(128,128,128)">ce08de · v2.5.2</span> </div></pre></div>
|
|
28
28
|
</body></html>
|
package/docs/tui-session.png
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lardexx/arenacode",
|
|
3
|
-
"version": "2.5.
|
|
3
|
+
"version": "2.5.10",
|
|
4
4
|
"description": "Terminal client for ArenaCode: talks to an arena-bridge, streams the Agent Mode timeline, and runs local commands and file operations on your PC. Node port of the ArenaCode desktop client.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "commonjs",
|
package/src/cli.js
CHANGED
|
@@ -513,10 +513,19 @@ async function cmdTasks(positional, flags) {
|
|
|
513
513
|
async function cmdStatus(positional, flags) {
|
|
514
514
|
const ctx = context(flags);
|
|
515
515
|
if (!requireUrl(ctx)) return 1;
|
|
516
|
-
|
|
516
|
+
let id = positional[0];
|
|
517
517
|
if (!id) {
|
|
518
|
-
|
|
519
|
-
|
|
518
|
+
const latest = await latestTaskId(ctx);
|
|
519
|
+
if (latest.error) {
|
|
520
|
+
write(c.red(` ✗ ${latest.error}`));
|
|
521
|
+
return 1;
|
|
522
|
+
}
|
|
523
|
+
id = latest.id;
|
|
524
|
+
if (!id) {
|
|
525
|
+
write(c.gray(' no tasks on the bridge yet — run: arenacode ask "…"'));
|
|
526
|
+
return 1;
|
|
527
|
+
}
|
|
528
|
+
write(c.gray(` latest task: ${id}`));
|
|
520
529
|
}
|
|
521
530
|
const res = await ctx.bridge.getTask(id);
|
|
522
531
|
if (res.status !== 200) {
|
|
@@ -542,10 +551,19 @@ async function cmdStatus(positional, flags) {
|
|
|
542
551
|
async function cmdEvents(positional, flags) {
|
|
543
552
|
const ctx = context(flags);
|
|
544
553
|
if (!requireUrl(ctx)) return 1;
|
|
545
|
-
|
|
554
|
+
let id = positional[0];
|
|
546
555
|
if (!id) {
|
|
547
|
-
|
|
548
|
-
|
|
556
|
+
const latest = await latestTaskId(ctx);
|
|
557
|
+
if (latest.error) {
|
|
558
|
+
write(c.red(` ✗ ${latest.error}`));
|
|
559
|
+
return 1;
|
|
560
|
+
}
|
|
561
|
+
id = latest.id;
|
|
562
|
+
if (!id) {
|
|
563
|
+
write(c.gray(' no tasks on the bridge yet — run: arenacode ask "…"'));
|
|
564
|
+
return 1;
|
|
565
|
+
}
|
|
566
|
+
write(c.gray(` latest task: ${id}`));
|
|
549
567
|
}
|
|
550
568
|
const res = await ctx.bridge.getTask(id);
|
|
551
569
|
if (res.status !== 200) {
|
|
@@ -664,6 +682,48 @@ async function cmdHandshake(flags) {
|
|
|
664
682
|
return runInstruction(ctx, instruction);
|
|
665
683
|
}
|
|
666
684
|
|
|
685
|
+
|
|
686
|
+
/** Short, command-specific usage: a missing argument must not send you to the full help page. */
|
|
687
|
+
const USAGE = {
|
|
688
|
+
init: [['init', 'configure bridge URL + API key, then test the connection']],
|
|
689
|
+
config: [['config [show|path]', 'read the saved configuration'],
|
|
690
|
+
['config set <key> <value>', 'url · key · lang · mode · pc_access']],
|
|
691
|
+
ping: [['ping', 'bridge status and API key check']],
|
|
692
|
+
doctor: [['doctor', 'local checks: node, platform, folder, git, bridge']],
|
|
693
|
+
ask: [['ask "instruction"', 'run one task and stream the timeline']],
|
|
694
|
+
ui: [['ui', 'full-screen TUI']],
|
|
695
|
+
chat: [['chat', 'plain line-by-line session']],
|
|
696
|
+
tasks: [['tasks [state]', 'task queue (all · claimable · pending · done)']],
|
|
697
|
+
status: [['status [task-id]', 'state of a task (default: the latest one)']],
|
|
698
|
+
events: [['events [task-id]', 'timeline of a task (default: the latest one)']],
|
|
699
|
+
stop: [['stop [task-id]', 'cancel the running turn (default: the live one)']],
|
|
700
|
+
files: [['files [path]', 'listing of the folder on the PC']],
|
|
701
|
+
cat: [['cat <path>', 'preview a file of the folder on the PC']],
|
|
702
|
+
attach: [['attach <file…>', 'upload files to the bridge workspace']],
|
|
703
|
+
handshake: [['handshake', 'vision/handshake check task']],
|
|
704
|
+
};
|
|
705
|
+
|
|
706
|
+
function cmdUsage(name) {
|
|
707
|
+
const rows = USAGE[name] || [];
|
|
708
|
+
if (!rows.length) return help();
|
|
709
|
+
banner(VERSION);
|
|
710
|
+
for (const [u, why] of rows) {
|
|
711
|
+
write(` ${c.bold('usage')} ${SELF} ${u}`);
|
|
712
|
+
write(` ${c.gray(why)}`);
|
|
713
|
+
}
|
|
714
|
+
write('');
|
|
715
|
+
write(` ${c.gray(`every option: ${SELF} --help`)}`);
|
|
716
|
+
return 0;
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
/** `status` / `events` with no argument means "the task I just ran". */
|
|
720
|
+
async function latestTaskId(ctx) {
|
|
721
|
+
const res = await ctx.bridge.listTasks('all');
|
|
722
|
+
if (res.status !== 200) return { error: (res.json && (res.json.error || res.json.hint)) || `HTTP ${res.status}` };
|
|
723
|
+
const tasks = (res.json && res.json.tasks) || [];
|
|
724
|
+
return { id: tasks.length ? tasks[tasks.length - 1].id : null };
|
|
725
|
+
}
|
|
726
|
+
|
|
667
727
|
function help() {
|
|
668
728
|
banner(VERSION);
|
|
669
729
|
write(` ${c.bold('usage')} arenacode <command> [options]`);
|
|
@@ -722,7 +782,8 @@ async function main(argv) {
|
|
|
722
782
|
write(VERSION);
|
|
723
783
|
return 0;
|
|
724
784
|
}
|
|
725
|
-
if (flags.help
|
|
785
|
+
if (flags.help) return command && USAGE[command] ? cmdUsage(command) : help();
|
|
786
|
+
if (command === 'help') return help();
|
|
726
787
|
|
|
727
788
|
switch (command) {
|
|
728
789
|
case 'init':
|
package/src/tui/app.js
CHANGED
|
@@ -676,12 +676,19 @@ class App {
|
|
|
676
676
|
|
|
677
677
|
switch (ev.kind) {
|
|
678
678
|
case 'thought': {
|
|
679
|
-
const
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
const item = this.push({ kind: 'thought', label: ev.label || '…' });
|
|
679
|
+
const now = ev.ts ? ev.ts * 1000 : Date.now();
|
|
680
|
+
let item = st.seqItems.get(`t${ev.seq}`);
|
|
681
|
+
if (!item) {
|
|
682
|
+
item = this.push({ kind: 'thought', label: ev.label || '…', state: 'running', t0: now });
|
|
684
683
|
st.seqItems.set(`t${ev.seq}`, item);
|
|
684
|
+
} else {
|
|
685
|
+
if (ev.label) item.label = ev.label;
|
|
686
|
+
}
|
|
687
|
+
// the event carries the finished state: without this the row kept the live spinner forever
|
|
688
|
+
// and every keystroke advanced the frame
|
|
689
|
+
if (ev.state === 'done' || ev.state === 'failed') {
|
|
690
|
+
item.state = ev.state;
|
|
691
|
+
item.secs = Math.max(0, (now - (item.t0 || now)) / 1000);
|
|
685
692
|
}
|
|
686
693
|
break;
|
|
687
694
|
}
|
|
@@ -729,6 +736,13 @@ class App {
|
|
|
729
736
|
this.push({ kind: 'error', text: ev.label || ev.error || 'error' });
|
|
730
737
|
break;
|
|
731
738
|
case 'done': {
|
|
739
|
+
// nothing may still look alive once the task is over
|
|
740
|
+
for (const it of st.items) {
|
|
741
|
+
if ((it.kind === 'thought' || it.kind === 'tool') && it.state === 'running') {
|
|
742
|
+
it.state = 'done';
|
|
743
|
+
if (it.kind === 'thought') it.secs = Math.max(0, (Date.now() - (it.t0 || Date.now())) / 1000);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
732
746
|
// only a *non-empty* text row counts: an empty one used to swallow the task output
|
|
733
747
|
const hasText = st.items.some((i) => i.kind === 'text' && String(i.text || '').trim());
|
|
734
748
|
if (!hasText && ev.output && String(ev.output).trim()) this.push({ kind: 'text', text: String(ev.output) });
|
package/src/tui/logo.js
CHANGED
|
@@ -12,7 +12,8 @@
|
|
|
12
12
|
const { fgSeq, bgSeq, RESET, tint } = require('./theme');
|
|
13
13
|
|
|
14
14
|
const LOGO = {
|
|
15
|
-
|
|
15
|
+
// a = single-storey (bowl + straight right stem), r = stem + shoulder: both read lowercase
|
|
16
|
+
left: [' ', ';::█ █::█ █▀▀█ █▀▀▄ ;::█', '█ █ █ █^^^ █__█ █ █', ':::: : ▀▀▀▀ ▀~~▀ ::::'],
|
|
16
17
|
right: [' ▄ ', '█▀▀▀ █▀▀█ █▀▀█ █▀▀█', '█___ █__█ █__█ █^^^', '▀▀▀▀ ▀▀▀▀ ▀▀▀▀ ▀▀▀▀'],
|
|
17
18
|
};
|
|
18
19
|
|
package/src/tui/widgets.js
CHANGED
|
@@ -207,7 +207,11 @@ function chatLines(t, items, opts = {}) {
|
|
|
207
207
|
const done = item.state === 'done';
|
|
208
208
|
const label = item.label || 'Thinking';
|
|
209
209
|
if (done) {
|
|
210
|
-
|
|
210
|
+
// finished thought: no spinner, just how long it took — "Thought for 1.2s"
|
|
211
|
+
const secs = Number.isFinite(item.secs) ? item.secs : null;
|
|
212
|
+
const took = secs === null ? '' : ` for ${secs < 10 ? secs.toFixed(1) : Math.round(secs)}s`;
|
|
213
|
+
const name = label && label !== '…' ? `: ${label}` : '';
|
|
214
|
+
out.push(spaces(3) + `${fgSeq(t.c.warning)}Thought${took}${RESET}${fgSeq(t.c.textMuted)}${name}${RESET}`);
|
|
211
215
|
} else {
|
|
212
216
|
out.push(
|
|
213
217
|
spaces(3) +
|