ispbills-icli 8.5.9 → 8.6.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ispbills-icli",
3
- "version": "8.5.9",
3
+ "version": "8.6.0",
4
4
  "description": "iCli — IspBills AI network engineer in your terminal",
5
5
  "keywords": [
6
6
  "ispbills",
package/src/tui/app.js CHANGED
@@ -1830,10 +1830,10 @@ export function App({ cfg, display = {}, onExternal, onExit, initialQuestion, sh
1830
1830
 
1831
1831
  ${live
1832
1832
  ? html`<${Box} flexDirection="column">
1833
- <${StatusLines} lines=${live.status} busy=${busy} />
1833
+ ${live.text ? html`<${AssistantMessage} text=${live.text} cols=${cols} ts=${startedAt || Date.now()} streaming=${true} />` : null}
1834
1834
  ${live.reasoning ? html`<${Reasoning} text=${live.reasoning} show=${showReasoning} />` : null}
1835
1835
  ${live.reply?.steps ? html`<${Plan} reply=${live.reply} live=${true} />` : null}
1836
- ${live.text ? html`<${AssistantMessage} text=${live.text} cols=${cols} ts=${startedAt || Date.now()} streaming=${true} />` : null}
1836
+ <${StatusLines} lines=${live.status} busy=${busy} />
1837
1837
  <${Thinking} label=${live.reply ? 'Planning' : live.text ? 'Responding' : 'Working'} startedAt=${startedAt} />
1838
1838
  <//>`
1839
1839
  : null}
@@ -315,17 +315,18 @@ export function StatusLines({ lines = [], busy = false }) {
315
315
  const em = String(line).match(LEAD_EMOJI);
316
316
  const body = em ? String(line).slice(em[0].length) : String(line).replace(/^[\s◈◆●○◎⇢→>*✓✗×!⚠·-]+/u, '');
317
317
  const ci = body.indexOf(':');
318
- const action = ci > -1 ? body.slice(0, ci) : body;
318
+ const action = ci > -1 ? body.slice(0, ci).trim() : body.trim();
319
319
  const detail = ci > -1 ? body.slice(ci + 1).trim() : '';
320
+ // §6/§23: render as [Tool call: name detail] ✓/spinner chip
321
+ const chipLabel = detail ? `${em ? em[1] : ''}${action} ${detail}` : `${em ? em[1] : ''}${action}`;
320
322
  return html`
321
- <${Box} key=${'s' + i}>
323
+ <${Box} key=${'s' + i} marginTop=${0}>
324
+ <${Text} color=${C.muted}> <//>
325
+ <${Text} color=${running ? C.warning : C.muted}>[<//>
326
+ <${Text} color=${running ? C.white : C.muted} bold=${running}>${chipLabel.trim()}<//><${Text} color=${running ? C.warning : C.muted}>]<//><${Text}> <//>
322
327
  ${running
323
328
  ? html`<${Text} color=${C.accent}><${Spinner} type=${spinnerType()} /><//>`
324
- : html`<${Text} color=${C.green}>${glyphs.check}<//>`}
325
- <${Text}> <//>
326
- ${em ? html`<${Text}>${em[1]} <//>` : null}
327
- <${Text} color=${running ? C.white : C.gray} bold=${running}>${action}<//>
328
- ${detail ? html`<${Text} color=${C.gray}>: ${detail}<//>` : null}
329
+ : html`<${Text} color=${C.success}>${glyphs.check}<//>`}
329
330
  <//>`;
330
331
  })}
331
332
  <//>`;