@pi-unipi/subagents 0.1.4 → 0.1.6

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/widget.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * @pi-unipi/subagents — Live widget
3
3
  *
4
4
  * Shows running agents above the editor.
5
- * Uses setWidget API for proper rendering.
5
+ * Uses setWidget with tui.requestRender() for updates.
6
6
  */
7
7
  import type { AgentManager } from "./agent-manager.js";
8
8
  import type { AgentActivity } from "./types.js";
@@ -12,14 +12,14 @@ export declare class AgentWidget {
12
12
  private spinnerFrame;
13
13
  private timer?;
14
14
  private uiCtx?;
15
- private widgetRegistered;
16
15
  private tui?;
16
+ private widgetRegistered;
17
17
  constructor(manager: AgentManager, activity: Map<string, AgentActivity>);
18
18
  setUICtx(ctx: any): void;
19
19
  ensureTimer(): void;
20
20
  markFinished(_id: string): void;
21
21
  update(): void;
22
- private requestRender;
22
+ private triggerRender;
23
23
  private renderWidget;
24
24
  dispose(): void;
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqChD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAAC,CAAiC;IAC/C,OAAO,CAAC,KAAK,CAAC,CAAM;IACpB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,GAAG,CAAC,CAAM;gBAEN,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAKvE,QAAQ,CAAC,GAAG,EAAE,GAAG;IAQjB,WAAW;IAQX,YAAY,CAAC,GAAG,EAAE,MAAM;IAWxB,MAAM;IAIN,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,YAAY;IA0DpB,OAAO;CAWR"}
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA8BhD,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,KAAK,CAAC,CAAiC;IAC/C,OAAO,CAAC,KAAK,CAAC,CAAM;IACpB,OAAO,CAAC,GAAG,CAAC,CAAM;IAClB,OAAO,CAAC,gBAAgB,CAAS;gBAErB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC;IAKvE,QAAQ,CAAC,GAAG,EAAE,GAAG;IAQjB,WAAW;IAQX,YAAY,CAAC,GAAG,EAAE,MAAM;IAWxB,MAAM;IAIN,OAAO,CAAC,aAAa;IAwCrB,OAAO,CAAC,YAAY;IA0DpB,OAAO;CAWR"}
package/dist/widget.js CHANGED
@@ -2,18 +2,10 @@
2
2
  * @pi-unipi/subagents — Live widget
3
3
  *
4
4
  * Shows running agents above the editor.
5
- * Uses setWidget API for proper rendering.
5
+ * Uses setWidget with tui.requestRender() for updates.
6
6
  */
7
7
  /** Spinner frames (braille). */
8
8
  const SPINNER = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
9
- /** Format token count. */
10
- function formatTokens(n) {
11
- if (n >= 1_000_000)
12
- return `${(n / 1_000_000).toFixed(1)}M`;
13
- if (n >= 1_000)
14
- return `${(n / 1_000).toFixed(1)}k`;
15
- return `${n}`;
16
- }
17
9
  /** Format duration. */
18
10
  function formatMs(ms) {
19
11
  if (ms >= 60_000)
@@ -45,8 +37,8 @@ export class AgentWidget {
45
37
  spinnerFrame = 0;
46
38
  timer;
47
39
  uiCtx;
48
- widgetRegistered = false;
49
40
  tui;
41
+ widgetRegistered = false;
50
42
  constructor(manager, activity) {
51
43
  this.manager = manager;
52
44
  this.activity = activity;
@@ -63,7 +55,7 @@ export class AgentWidget {
63
55
  return;
64
56
  this.timer = setInterval(() => {
65
57
  this.spinnerFrame = (this.spinnerFrame + 1) % SPINNER.length;
66
- this.requestRender();
58
+ this.triggerRender();
67
59
  }, 80);
68
60
  }
69
61
  markFinished(_id) {
@@ -73,13 +65,13 @@ export class AgentWidget {
73
65
  this.timer = undefined;
74
66
  }
75
67
  // Clear widget after agent finishes
76
- this.requestRender();
68
+ this.triggerRender();
77
69
  }
78
70
  }
79
71
  update() {
80
- this.requestRender();
72
+ this.triggerRender();
81
73
  }
82
- requestRender() {
74
+ triggerRender() {
83
75
  if (!this.uiCtx)
84
76
  return;
85
77
  const allAgents = this.manager.listAgents();
@@ -94,7 +86,7 @@ export class AgentWidget {
94
86
  }
95
87
  return;
96
88
  }
97
- // Register widget callback once, then request re-render
89
+ // Register widget callback once
98
90
  if (!this.widgetRegistered) {
99
91
  this.uiCtx.setWidget("unipi-agents", (tui, theme) => {
100
92
  this.tui = tui;
@@ -108,10 +100,8 @@ export class AgentWidget {
108
100
  }, { placement: "aboveEditor" });
109
101
  this.widgetRegistered = true;
110
102
  }
111
- else {
112
- // Widget already registered — request re-render
113
- this.tui?.requestRender?.();
114
- }
103
+ // Request re-render via TUI
104
+ this.tui?.requestRender?.();
115
105
  }
116
106
  renderWidget(tui, theme) {
117
107
  const allAgents = this.manager.listAgents();
@@ -146,10 +136,10 @@ export class AgentWidget {
146
136
  parts.push(tokens);
147
137
  parts.push(duration);
148
138
  const connector = i === running.length - 1 && queued.length === 0 ? "└─" : "├─";
149
- const activityConnector = i === running.length - 1 && queued.length === 0 ? " " : "│ ";
139
+ const activityConnector = i === running.length - 1 && queued.length === 0 ? " " : "│ ";
150
140
  lines.push(truncate(theme.fg("dim", connector) +
151
141
  ` ${theme.fg("accent", frame)} ${theme.bold(a.type)} ${theme.fg("dim", a.description)} · ${theme.fg("dim", parts.join(" · "))}`));
152
- lines.push(truncate(theme.fg("dim", activityConnector) + theme.fg("dim", ` ${activity}`)));
142
+ lines.push(truncate(theme.fg("dim", activityConnector) + theme.fg("dim", `⎿ ${activity}`)));
153
143
  }
154
144
  // Queued
155
145
  if (queued.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,gCAAgC;AAChC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAEnE,0BAA0B;AAC1B,SAAS,YAAY,CAAC,CAAS;IAC7B,IAAI,CAAC,IAAI,SAAS;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,IAAI,CAAC,IAAI,KAAK;QAAE,OAAO,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,OAAO,GAAG,CAAC,EAAE,CAAC;AAChB,CAAC;AAED,uBAAuB;AACvB,SAAS,QAAQ,CAAC,EAAU;IAC1B,IAAI,EAAE,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,IAAI,EAAE,IAAI,KAAK;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,OAAO,GAAG,EAAE,IAAI,CAAC;AACnB,CAAC;AAED,oBAAoB;AACpB,SAAS,WAAW,CAAC,IAAY,EAAE,GAAY;IAC7C,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED,mDAAmD;AACnD,SAAS,gBAAgB,CAAC,WAAgC,EAAE,YAAoB;IAC9E,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;IAChC,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC9D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,OAAO,WAAW;IACd,OAAO,CAAe;IACtB,QAAQ,CAA6B;IACrC,YAAY,GAAG,CAAC,CAAC;IACjB,KAAK,CAAkC;IACvC,KAAK,CAAO;IACZ,gBAAgB,GAAG,KAAK,CAAC;IACzB,GAAG,CAAO;IAElB,YAAY,OAAqB,EAAE,QAAoC;QACrE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,QAAQ,CAAC,GAAQ;QACf,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;YACjB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACvB,CAAC;IACH,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YAC7D,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,YAAY,CAAC,GAAW;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACzB,CAAC;YACD,oCAAoC;YACpC,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAExB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QACzF,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAErC,iCAAiC;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;gBAChD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;YACvB,CAAC;YACD,OAAO;QACT,CAAC;QAED,wDAAwD;QACxD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,cAAc,EACd,CAAC,GAAQ,EAAE,KAAU,EAAE,EAAE;gBACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;gBACf,OAAO;oBACL,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC;oBAC3C,UAAU,EAAE,GAAG,EAAE;wBACf,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;wBAC9B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;oBACvB,CAAC;iBACF,CAAC;YACJ,CAAC,EACD,EAAE,SAAS,EAAE,aAAa,EAAE,CAC7B,CAAC;YACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,gDAAgD;YAChD,IAAI,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,GAAQ,EAAE,KAAU;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;QAE9D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE3D,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;YAChC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;QACpC,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,UAAU;QACV,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEnF,mDAAmD;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,CAAC;YAC7B,MAAM,MAAM,GAAG,GAAG,EAAE,MAAM,IAAI,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAEzF,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,IAAI,GAAG,EAAE,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACzE,IAAI,SAAS,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,YAAY,CAAC,CAAC;YACxD,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAErB,MAAM,SAAS,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAChF,MAAM,iBAAiB,GAAG,CAAC,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAExF,KAAK,CAAC,IAAI,CACR,QAAQ,CACN,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;gBACxB,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CACnI,CACF,CAAC;YACF,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,QAAQ,EAAE,CAAC,CAAC,CACnF,CAAC;QACJ,CAAC;QAED,SAAS;QACT,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CACR,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,SAAS,CAAC,EAAE,CAAC,CAC7G,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../src/widget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-unipi/subagents",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "Subagents for UniPi — parallel execution, file locking, workflow integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,7 +17,8 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@pi-unipi/core": "*",
20
- "@pi-unipi/workflow": "*"
20
+ "@pi-unipi/workflow": "*",
21
+ "@pi-unipi/info-screen": "*"
21
22
  },
22
23
  "devDependencies": {
23
24
  "typescript": "^5.8.3"
package/src/index.ts CHANGED
@@ -8,6 +8,12 @@
8
8
  import { defineTool, type ExtensionAPI, type ExtensionContext } from "@mariozechner/pi-coding-agent";
9
9
  import { Text } from "@mariozechner/pi-tui";
10
10
  import { Type } from "@sinclair/typebox";
11
+
12
+ // Get info registry from global
13
+ function getInfoRegistry() {
14
+ const g = globalThis as any;
15
+ return g.__unipi_info_registry;
16
+ }
11
17
  import { AgentManager } from "./agent-manager.js";
12
18
  import { initConfig, saveGlobalConfig } from "./config.js";
13
19
  import { type AgentActivity, type AgentRecord, BUILTIN_TYPES } from "./types.js";
@@ -79,6 +85,32 @@ export default function (pi: ExtensionAPI) {
79
85
  const workspaceConfig = `${ctx.cwd}/.unipi/config/subagents.json`;
80
86
  const workspaceAgents = `${ctx.cwd}/.unipi/config/agents/`;
81
87
 
88
+ // Register info group
89
+ const registry = getInfoRegistry();
90
+ if (registry) {
91
+ registry.registerGroup({
92
+ id: "subagents",
93
+ name: "Subagents",
94
+ icon: "🤖",
95
+ priority: 80,
96
+ config: {
97
+ showByDefault: true,
98
+ stats: [
99
+ { id: "maxConcurrent", label: "Max Concurrent", show: true },
100
+ { id: "activeCount", label: "Active Agents", show: true },
101
+ { id: "enabled", label: "Enabled", show: true },
102
+ ],
103
+ },
104
+ dataProvider: async () => {
105
+ return {
106
+ maxConcurrent: { value: String(manager.getMaxConcurrent()) },
107
+ activeCount: { value: "N/A" },
108
+ enabled: { value: config.enabled ? "yes" : "no" },
109
+ };
110
+ },
111
+ });
112
+ }
113
+
82
114
  ctx.ui.notify(
83
115
  `UniPi Subagents config:\n` +
84
116
  `• Global: ${globalConfig}\n` +
package/src/widget.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * @pi-unipi/subagents — Live widget
3
3
  *
4
4
  * Shows running agents above the editor.
5
- * Uses setWidget API for proper rendering.
5
+ * Uses setWidget with tui.requestRender() for updates.
6
6
  */
7
7
 
8
8
  import type { AgentManager } from "./agent-manager.js";
@@ -11,13 +11,6 @@ import type { AgentActivity } from "./types.js";
11
11
  /** Spinner frames (braille). */
12
12
  const SPINNER = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
13
13
 
14
- /** Format token count. */
15
- function formatTokens(n: number): string {
16
- if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;
17
- if (n >= 1_000) return `${(n / 1_000).toFixed(1)}k`;
18
- return `${n}`;
19
- }
20
-
21
14
  /** Format duration. */
22
15
  function formatMs(ms: number): string {
23
16
  if (ms >= 60_000) return `${(ms / 60_000).toFixed(1)}m`;
@@ -49,8 +42,8 @@ export class AgentWidget {
49
42
  private spinnerFrame = 0;
50
43
  private timer?: ReturnType<typeof setInterval>;
51
44
  private uiCtx?: any;
52
- private widgetRegistered = false;
53
45
  private tui?: any;
46
+ private widgetRegistered = false;
54
47
 
55
48
  constructor(manager: AgentManager, activity: Map<string, AgentActivity>) {
56
49
  this.manager = manager;
@@ -69,7 +62,7 @@ export class AgentWidget {
69
62
  if (this.timer) return;
70
63
  this.timer = setInterval(() => {
71
64
  this.spinnerFrame = (this.spinnerFrame + 1) % SPINNER.length;
72
- this.requestRender();
65
+ this.triggerRender();
73
66
  }, 80);
74
67
  }
75
68
 
@@ -80,15 +73,15 @@ export class AgentWidget {
80
73
  this.timer = undefined;
81
74
  }
82
75
  // Clear widget after agent finishes
83
- this.requestRender();
76
+ this.triggerRender();
84
77
  }
85
78
  }
86
79
 
87
80
  update() {
88
- this.requestRender();
81
+ this.triggerRender();
89
82
  }
90
83
 
91
- private requestRender() {
84
+ private triggerRender() {
92
85
  if (!this.uiCtx) return;
93
86
 
94
87
  const allAgents = this.manager.listAgents();
@@ -105,7 +98,7 @@ export class AgentWidget {
105
98
  return;
106
99
  }
107
100
 
108
- // Register widget callback once, then request re-render
101
+ // Register widget callback once
109
102
  if (!this.widgetRegistered) {
110
103
  this.uiCtx.setWidget(
111
104
  "unipi-agents",
@@ -122,10 +115,10 @@ export class AgentWidget {
122
115
  { placement: "aboveEditor" },
123
116
  );
124
117
  this.widgetRegistered = true;
125
- } else {
126
- // Widget already registered — request re-render
127
- this.tui?.requestRender?.();
128
118
  }
119
+
120
+ // Request re-render via TUI
121
+ this.tui?.requestRender?.();
129
122
  }
130
123
 
131
124
  private renderWidget(tui: any, theme: any): string[] {
@@ -163,7 +156,7 @@ export class AgentWidget {
163
156
  parts.push(duration);
164
157
 
165
158
  const connector = i === running.length - 1 && queued.length === 0 ? "└─" : "├─";
166
- const activityConnector = i === running.length - 1 && queued.length === 0 ? " " : "│ ";
159
+ const activityConnector = i === running.length - 1 && queued.length === 0 ? " " : "│ ";
167
160
 
168
161
  lines.push(
169
162
  truncate(
@@ -172,7 +165,7 @@ export class AgentWidget {
172
165
  ),
173
166
  );
174
167
  lines.push(
175
- truncate(theme.fg("dim", activityConnector) + theme.fg("dim", ` ${activity}`)),
168
+ truncate(theme.fg("dim", activityConnector) + theme.fg("dim", `⎿ ${activity}`)),
176
169
  );
177
170
  }
178
171