@lardexx/arenacode 2.5.6 → 2.5.8
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 +17 -14
- package/docs/TUI.md +1 -1
- package/docs/tui-approve.html +1 -1
- package/docs/tui-approve.png +0 -0
- package/docs/tui-home.html +1 -1
- package/docs/tui-home.png +0 -0
- package/docs/tui-palette.html +1 -1
- package/docs/tui-palette.png +0 -0
- package/docs/tui-plan.html +1 -1
- package/docs/tui-plan.png +0 -0
- package/docs/tui-preview.html +1 -1
- package/docs/tui-session.png +0 -0
- package/docs/tui-slash.html +1 -1
- package/docs/tui-slash.png +0 -0
- package/package.json +1 -1
- package/src/cli.js +24 -4
- package/src/tui/app.js +8 -13
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)"> · arenacode · 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)">arenacode</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">bridge 2.5.2</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-4BFYh5/project</span> <span style="color:rgb(128,128,128)">1c4600 · 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)">⠙ 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>
|
|
28
28
|
</body></html>
|
package/docs/tui-session.png
CHANGED
|
Binary file
|
package/docs/tui-slash.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"> </div><div class="ln"> <span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30);font-weight:700">/new</span><span style="color:rgb(128,128,128);background:rgb(30,30,30)"> Start a new session</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">ctrl+x n</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/tasks</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Show the task queue</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x l</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/files</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Browse the workspace files</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/mode</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Switch agent / plan</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">tab</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/theme</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Cycle the colour theme</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x t</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/status</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Ping the bridge</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/help</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Every keybinding</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">f1</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="color:rgb(250,178,131)">/connect</span><span style="color:rgb(128,128,128)"> bridge offline at http://127.0.0.1:9</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(238,238,238);background:rgb(30,30,30)">/</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)">arenacode</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">bridge 2.5.2</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"> </div><div class="ln"> </div><div class="ln"> <span style="color:rgb(128,128,128)">~/arenacode-cli</span> <span style="color:rgb(128,128,128)">v2.5.2</span> </div><div class="ln">Script done on 2026-11-02 16:40:06+00:00 [COMMAND_EXIT_CODE="0"]</div><div class="ln"> </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"> <span style="background:rgb(30,30,30)"> </span><span style="color:rgb(238,238,238);background:rgb(30,30,30);font-weight:700">/new</span><span style="color:rgb(128,128,128);background:rgb(30,30,30)"> Start a new session</span><span style="background:rgb(30,30,30)"> </span><span style="color:rgb(128,128,128);background:rgb(30,30,30)">ctrl+x n</span><span style="background:rgb(30,30,30)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/tasks</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Show the task queue</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x l</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/mode</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Switch agent / plan</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">tab</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/theme</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Cycle the colour theme</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x t</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/status</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Ping the bridge</span><span style="background:rgb(20,20,20)"> </span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/help</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Every keybinding</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">f1</span><span style="background:rgb(20,20,20)"> </span> </div><div class="ln"> <span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">/quit</span><span style="color:rgb(128,128,128);background:rgb(20,20,20)"> Leave arenacode</span><span style="background:rgb(20,20,20)"> </span><span style="color:rgb(128,128,128);background:rgb(20,20,20)">ctrl+x q</span><span style="background:rgb(20,20,20)"> </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(238,238,238);background:rgb(30,30,30)">/</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"> </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 17:40:42+00:00 [COMMAND_EXIT_CODE="0"]</div><div class="ln"> </div></pre></div>
|
|
28
28
|
</body></html>
|
|
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.8",
|
|
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
|
@@ -142,11 +142,26 @@ async function cmdInit(flags, { tail = true } = {}) {
|
|
|
142
142
|
const cfg = readConfig();
|
|
143
143
|
write(c.gray(` config file: ${configPath()}`));
|
|
144
144
|
write('');
|
|
145
|
-
const url = await ask(` Bridge URL ${cfg.url ? c.gray(`[${cfg.url}]`) : ''}: `, { default: cfg.url });
|
|
146
|
-
const key = await ask(` API key ${cfg.key ? c.gray('[configured]') : ''}: `, { default: cfg.key });
|
|
145
|
+
const url = String(await ask(` Bridge URL ${cfg.url ? c.gray(`[${cfg.url}]`) : ''}: `, { default: cfg.url })).trim();
|
|
146
|
+
const key = String(await ask(` API key ${cfg.key ? c.gray('[configured]') : ''}: `, { default: cfg.key })).trim();
|
|
147
|
+
|
|
148
|
+
// Never write an empty answer over a working configuration: an empty URL here is what makes
|
|
149
|
+
// every later command (ping included) print the setup notice instead of talking to the bridge.
|
|
150
|
+
const cleanUrl = url.replace(/\/+$/, '');
|
|
151
|
+
if (!cleanUrl || !key) {
|
|
152
|
+
write('');
|
|
153
|
+
write(c.red(` ✗ nothing saved: ${!cleanUrl ? 'bridge URL' : 'API key'} is empty`));
|
|
154
|
+
write(c.gray(` run: ${SELF} init (or: ${SELF} config set url https://your-bridge.tunnl.gg)`));
|
|
155
|
+
return 1;
|
|
156
|
+
}
|
|
157
|
+
if (!/^https?:\/\//i.test(cleanUrl)) {
|
|
158
|
+
write('');
|
|
159
|
+
write(c.red(' ✗ nothing saved: the URL must start with http:// or https://'));
|
|
160
|
+
return 1;
|
|
161
|
+
}
|
|
147
162
|
|
|
148
163
|
// no folder question: arenacode always works in the directory it was started from
|
|
149
|
-
const next = { ...cfg, url:
|
|
164
|
+
const next = { ...cfg, url: cleanUrl, key };
|
|
150
165
|
delete next.folder;
|
|
151
166
|
const file = writeConfig(next);
|
|
152
167
|
write(` ${c.green('✓')} saved ${c.gray(file)}`);
|
|
@@ -752,7 +767,12 @@ async function main(argv) {
|
|
|
752
767
|
// `arenacode "instruction"` convenience form
|
|
753
768
|
return cmdAsk(positional, flags);
|
|
754
769
|
}
|
|
755
|
-
|
|
770
|
+
{
|
|
771
|
+
// a typo used to dump the whole help with no clue about what went wrong
|
|
772
|
+
const known = ['init','config','ping','doctor','ask','ui','chat','tasks','status','events','stop','files','cat','attach','handshake','help','version'];
|
|
773
|
+
const near = known.find((k) => k.startsWith(command.slice(0, 3)) || command.startsWith(k.slice(0, 3)));
|
|
774
|
+
write(c.red(` unknown command: ${command}`) + (near ? c.gray(` · did you mean ${c.bold(near)}?`) : ''));
|
|
775
|
+
}
|
|
756
776
|
help();
|
|
757
777
|
return 2;
|
|
758
778
|
}
|
package/src/tui/app.js
CHANGED
|
@@ -59,7 +59,6 @@ class App {
|
|
|
59
59
|
mode: opts.mode === 'plan' ? 'plan' : cfg.mode || 'agent',
|
|
60
60
|
status: 'idle',
|
|
61
61
|
details: true,
|
|
62
|
-
sidebar: true,
|
|
63
62
|
items: [],
|
|
64
63
|
seqItems: new Map(),
|
|
65
64
|
input: '',
|
|
@@ -287,10 +286,6 @@ class App {
|
|
|
287
286
|
st.details = !st.details;
|
|
288
287
|
this.toast(`details ${st.details ? 'on' : 'off'}`);
|
|
289
288
|
return undefined;
|
|
290
|
-
case 'b':
|
|
291
|
-
st.sidebar = !st.sidebar;
|
|
292
|
-
this.invalidate();
|
|
293
|
-
return undefined;
|
|
294
289
|
case 's':
|
|
295
290
|
return this.stopTurn();
|
|
296
291
|
case 'p':
|
|
@@ -454,9 +449,6 @@ class App {
|
|
|
454
449
|
this.state.details = !this.state.details;
|
|
455
450
|
this.toast(`details ${this.state.details ? 'on' : 'off'}`);
|
|
456
451
|
} },
|
|
457
|
-
{ title: 'Toggle sidebar', hint: 'ctrl+x b', run: () => {
|
|
458
|
-
this.state.sidebar = !this.state.sidebar;
|
|
459
|
-
} },
|
|
460
452
|
{ title: 'Switch mode (agent / plan)', hint: 'tab', run: () => {
|
|
461
453
|
this.state.mode = this.state.mode === 'agent' ? 'plan' : 'agent';
|
|
462
454
|
this.toast(`mode: ${this.state.mode}`);
|
|
@@ -712,7 +704,10 @@ class App {
|
|
|
712
704
|
}
|
|
713
705
|
case 'text': {
|
|
714
706
|
let item = st.seqItems.get(`s${ev.seq}`);
|
|
715
|
-
|
|
707
|
+
// agents may send the text in `delta` (streaming) or in `label` (one shot): take either,
|
|
708
|
+
// otherwise the row is empty and the answer silently disappears.
|
|
709
|
+
const delta = String(ev.delta != null && ev.delta !== '' ? ev.delta : (ev.label || '')).replace(/\\n/g, '\n');
|
|
710
|
+
if (!delta) break;
|
|
716
711
|
if (!item) {
|
|
717
712
|
item = this.push({ kind: 'text', text: delta });
|
|
718
713
|
st.seqItems.set(`s${ev.seq}`, item);
|
|
@@ -734,8 +729,9 @@ class App {
|
|
|
734
729
|
this.push({ kind: 'error', text: ev.label || ev.error || 'error' });
|
|
735
730
|
break;
|
|
736
731
|
case 'done': {
|
|
737
|
-
|
|
738
|
-
|
|
732
|
+
// only a *non-empty* text row counts: an empty one used to swallow the task output
|
|
733
|
+
const hasText = st.items.some((i) => i.kind === 'text' && String(i.text || '').trim());
|
|
734
|
+
if (!hasText && ev.output && String(ev.output).trim()) this.push({ kind: 'text', text: String(ev.output) });
|
|
739
735
|
this.push({ kind: 'done', state: ev.state || 'done', secs: ev.secs });
|
|
740
736
|
st.status = 'idle';
|
|
741
737
|
break;
|
|
@@ -1084,7 +1080,7 @@ class App {
|
|
|
1084
1080
|
}
|
|
1085
1081
|
|
|
1086
1082
|
providerLabel() {
|
|
1087
|
-
return '
|
|
1083
|
+
return 'Arena';
|
|
1088
1084
|
}
|
|
1089
1085
|
|
|
1090
1086
|
statusText() {
|
|
@@ -1339,7 +1335,6 @@ function HELP_ROWS() {
|
|
|
1339
1335
|
['Session', 'ctrl+x l', 'task queue'],
|
|
1340
1336
|
['Session', 'ctrl+x t', 'switch theme'],
|
|
1341
1337
|
['Session', 'ctrl+x d', 'toggle tool output'],
|
|
1342
|
-
['Session', 'ctrl+x b', 'toggle the sidebar'],
|
|
1343
1338
|
['Session', 'pgup / pgdn', 'scroll'],
|
|
1344
1339
|
['Session', 'ctrl+l', 'clear the timeline'],
|
|
1345
1340
|
['Session', 'ctrl+c', 'interrupt, then quit'],
|