@pi-unipi/subagents 0.1.13 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/package.json +1 -1
  2. package/src/__tests__/badge-generation.test.ts +244 -0
  3. package/src/agent-manager.ts +12 -1
  4. package/src/agent-runner.ts +23 -8
  5. package/src/conversation-viewer.ts +299 -0
  6. package/src/index.ts +432 -49
  7. package/src/types.ts +49 -0
  8. package/src/widget.ts +332 -72
  9. package/dist/agent-manager.d.ts +0 -72
  10. package/dist/agent-manager.d.ts.map +0 -1
  11. package/dist/agent-manager.js +0 -258
  12. package/dist/agent-manager.js.map +0 -1
  13. package/dist/agent-runner.d.ts +0 -50
  14. package/dist/agent-runner.d.ts.map +0 -1
  15. package/dist/agent-runner.js +0 -238
  16. package/dist/agent-runner.js.map +0 -1
  17. package/dist/config.d.ts +0 -24
  18. package/dist/config.d.ts.map +0 -1
  19. package/dist/config.js +0 -132
  20. package/dist/config.js.map +0 -1
  21. package/dist/custom-agents.d.ts +0 -14
  22. package/dist/custom-agents.d.ts.map +0 -1
  23. package/dist/custom-agents.js +0 -106
  24. package/dist/custom-agents.js.map +0 -1
  25. package/dist/file-lock.d.ts +0 -42
  26. package/dist/file-lock.d.ts.map +0 -1
  27. package/dist/file-lock.js +0 -91
  28. package/dist/file-lock.js.map +0 -1
  29. package/dist/index.d.ts +0 -9
  30. package/dist/index.d.ts.map +0 -1
  31. package/dist/index.js +0 -301
  32. package/dist/index.js.map +0 -1
  33. package/dist/model-resolver.d.ts +0 -19
  34. package/dist/model-resolver.d.ts.map +0 -1
  35. package/dist/model-resolver.js +0 -61
  36. package/dist/model-resolver.js.map +0 -1
  37. package/dist/prompts.d.ts +0 -13
  38. package/dist/prompts.d.ts.map +0 -1
  39. package/dist/prompts.js +0 -31
  40. package/dist/prompts.js.map +0 -1
  41. package/dist/types.d.ts +0 -79
  42. package/dist/types.d.ts.map +0 -1
  43. package/dist/types.js +0 -6
  44. package/dist/types.js.map +0 -1
  45. package/dist/widget.d.ts +0 -26
  46. package/dist/widget.d.ts.map +0 -1
  47. package/dist/widget.js +0 -162
  48. package/dist/widget.js.map +0 -1
package/dist/index.js DELETED
@@ -1,301 +0,0 @@
1
- /**
2
- * @pi-unipi/subagents — Extension entry
3
- *
4
- * Tools: Agent, get_result
5
- * ESC propagation: all children abort on parent ESC
6
- */
7
- import { defineTool } from "@mariozechner/pi-coding-agent";
8
- import { Type } from "@sinclair/typebox";
9
- import { AgentManager } from "./agent-manager.js";
10
- import { initConfig } from "./config.js";
11
- import { BUILTIN_TYPES } from "./types.js";
12
- import { AgentWidget } from "./widget.js";
13
- /** Format tokens safely. */
14
- function safeFormatTokens(session) {
15
- if (!session)
16
- return "";
17
- try {
18
- const stats = session.getSessionStats();
19
- const total = stats.tokens?.total ?? 0;
20
- if (total >= 1_000_000)
21
- return `${(total / 1_000_000).toFixed(1)}M`;
22
- if (total >= 1_000)
23
- return `${(total / 1_000).toFixed(1)}k`;
24
- return `${total}`;
25
- }
26
- catch {
27
- return "";
28
- }
29
- }
30
- /** Build result text. */
31
- function textResult(msg, details) {
32
- return { content: [{ type: "text", text: msg }], details };
33
- }
34
- export default function (pi) {
35
- // Initialize config
36
- const config = initConfig(process.cwd());
37
- if (!config.enabled)
38
- return;
39
- // Activity tracking for widget
40
- const agentActivity = new Map();
41
- // Create manager with completion callback
42
- const manager = new AgentManager((record) => {
43
- // On complete: clean up activity, emit event
44
- agentActivity.delete(record.id);
45
- widget.markFinished(record.id);
46
- widget.update();
47
- pi.events.emit("subagents:completed", {
48
- id: record.id,
49
- type: record.type,
50
- description: record.description,
51
- status: record.status,
52
- result: record.result,
53
- error: record.error,
54
- });
55
- }, config.maxConcurrent, (record) => {
56
- // On start: emit event
57
- pi.events.emit("subagents:started", {
58
- id: record.id,
59
- type: record.type,
60
- description: record.description,
61
- });
62
- });
63
- // Create widget
64
- const widget = new AgentWidget(manager, agentActivity);
65
- // Session start: notify agent about config paths
66
- pi.on("session_start", async (_event, ctx) => {
67
- const homedir = require("os").homedir();
68
- const globalConfig = `${homedir}/.unipi/config/subagents.json`;
69
- const globalAgents = `${homedir}/.unipi/config/agents/`;
70
- const workspaceConfig = `${ctx.cwd}/.unipi/config/subagents.json`;
71
- const workspaceAgents = `${ctx.cwd}/.unipi/config/agents/`;
72
- ctx.ui.notify(`UniPi Subagents config:\n` +
73
- `• Global: ${globalConfig}\n` +
74
- `• Global agents: ${globalAgents}\n` +
75
- `• Workspace: ${workspaceConfig}\n` +
76
- `• Workspace agents: ${workspaceAgents}`, "info");
77
- });
78
- // ESC propagation: abort all agents on session shutdown
79
- pi.on("session_shutdown", async () => {
80
- manager.abortAll();
81
- manager.dispose();
82
- });
83
- // Wire UI context for widget
84
- pi.on("tool_execution_start", async (_event, ctx) => {
85
- widget.setUICtx(ctx.ui);
86
- widget.update();
87
- });
88
- // Create activity tracker
89
- function createActivityTracker(maxTurns) {
90
- const state = {
91
- activeTools: new Map(),
92
- toolUses: 0,
93
- turnCount: 1,
94
- maxTurns,
95
- tokens: "",
96
- responseText: "",
97
- };
98
- const callbacks = {
99
- onToolActivity: (activity) => {
100
- if (activity.type === "start") {
101
- state.activeTools.set(activity.toolName + "_" + Date.now(), activity.toolName);
102
- }
103
- else {
104
- for (const [key, name] of state.activeTools) {
105
- if (name === activity.toolName) {
106
- state.activeTools.delete(key);
107
- break;
108
- }
109
- }
110
- state.toolUses++;
111
- }
112
- widget.update();
113
- },
114
- onTextDelta: (_delta, fullText) => {
115
- state.responseText = fullText;
116
- widget.update();
117
- },
118
- onTurnEnd: (turnCount) => {
119
- state.turnCount = turnCount;
120
- widget.update();
121
- },
122
- onSessionCreated: (session) => {
123
- state.session = session;
124
- state.tokens = safeFormatTokens(session);
125
- widget.update();
126
- },
127
- };
128
- return { state, callbacks };
129
- }
130
- // ---- Agent tool ----
131
- const builtinTypes = BUILTIN_TYPES.join(", ");
132
- pi.registerTool(defineTool({
133
- name: "Agent",
134
- label: "Agent",
135
- description: `Launch a sub-agent for parallel work.
136
-
137
- Available agent types: ${builtinTypes}
138
- Custom types can be defined in:
139
- - ~/.unipi/config/agents/<name>.md (global)
140
- - <workspace>/.unipi/config/agents/<name>.md (project)
141
-
142
- Guidelines:
143
- - Use "explore" for parallel file reads
144
- - Use "work" for parallel file writes (transparent locking)
145
- - Use run_in_background for work you don't need immediately
146
- - ESC kills all running agents immediately
147
- - Agents inherit the parent model by default`,
148
- parameters: Type.Object({
149
- type: Type.String({
150
- description: `Agent type: ${builtinTypes}, or custom type from ~/.unipi/config/agents/*.md`,
151
- }),
152
- prompt: Type.String({
153
- description: "The task for the agent to perform.",
154
- }),
155
- description: Type.String({
156
- description: "A short (3-5 word) description of the task.",
157
- }),
158
- run_in_background: Type.Optional(Type.Boolean({
159
- description: "Run in background. Returns agent ID immediately.",
160
- })),
161
- max_turns: Type.Optional(Type.Number({
162
- description: "Max agentic turns before stopping.",
163
- minimum: 1,
164
- })),
165
- model: Type.Optional(Type.String({
166
- description: 'Model override. Accepts "provider/modelId" or fuzzy name (e.g. "haiku", "sonnet"). Omit to inherit parent model.',
167
- })),
168
- thinking: Type.Optional(Type.String({
169
- description: "Thinking level: off, minimal, low, medium, high, xhigh. Omit to inherit parent.",
170
- })),
171
- }),
172
- execute: async (toolCallId, params, signal, onUpdate, ctx) => {
173
- widget.setUICtx(ctx.ui);
174
- const type = params.type;
175
- const prompt = params.prompt;
176
- const description = params.description;
177
- const runInBackground = params.run_in_background;
178
- const maxTurns = params.max_turns;
179
- const modelInput = params.model;
180
- const thinkingLevel = params.thinking;
181
- // Create activity tracker
182
- const { state: bgState, callbacks: bgCallbacks } = createActivityTracker(maxTurns);
183
- if (runInBackground) {
184
- // Background execution
185
- const id = manager.spawn(pi, ctx, type, prompt, {
186
- description,
187
- maxTurns,
188
- modelInput,
189
- modelRegistry: ctx.modelRegistry,
190
- thinkingLevel,
191
- isBackground: true,
192
- ...bgCallbacks,
193
- });
194
- agentActivity.set(id, bgState);
195
- widget.ensureTimer();
196
- widget.update();
197
- const record = manager.getRecord(id);
198
- const isQueued = record?.status === "queued";
199
- return textResult(`Agent ${isQueued ? "queued" : "started"} in background.\n` +
200
- `ID: ${id}\n` +
201
- `Type: ${type}\n` +
202
- `Description: ${description}\n` +
203
- (isQueued ? `Position: queued (max ${manager.getMaxConcurrent()} concurrent)\n` : "") +
204
- `\nYou will be notified when this agent completes.\n` +
205
- `Use get_result to retrieve full results.`, { status: "background", agentId: id });
206
- }
207
- // Foreground execution
208
- let spinnerFrame = 0;
209
- const startedAt = Date.now();
210
- let fgId;
211
- const streamUpdate = () => {
212
- onUpdate?.({
213
- content: [{ type: "text", text: `${bgState.toolUses} tool uses...` }],
214
- details: {
215
- status: "running",
216
- toolUses: bgState.toolUses,
217
- tokens: bgState.tokens,
218
- turnCount: bgState.turnCount,
219
- maxTurns: bgState.maxTurns,
220
- durationMs: Date.now() - startedAt,
221
- activity: bgState.responseText
222
- ? bgState.responseText.split("\n").pop()?.trim().slice(0, 60)
223
- : "thinking…",
224
- spinnerFrame: spinnerFrame % 10,
225
- },
226
- });
227
- widget.update();
228
- };
229
- const spinnerInterval = setInterval(() => {
230
- spinnerFrame++;
231
- streamUpdate();
232
- }, 80);
233
- widget.ensureTimer();
234
- streamUpdate();
235
- const record = await manager.spawnAndWait(pi, ctx, type, prompt, {
236
- description,
237
- maxTurns,
238
- modelInput,
239
- modelRegistry: ctx.modelRegistry,
240
- thinkingLevel,
241
- ...bgCallbacks,
242
- });
243
- clearInterval(spinnerInterval);
244
- if (fgId) {
245
- agentActivity.delete(fgId);
246
- widget.markFinished(fgId);
247
- }
248
- const tokenText = safeFormatTokens(bgState.session);
249
- const durationMs = (record.completedAt ?? Date.now()) - record.startedAt;
250
- if (record.status === "error") {
251
- return textResult(`Agent failed: ${record.error}`);
252
- }
253
- return textResult(`Agent completed in ${(durationMs / 1000).toFixed(1)}s (${record.toolUses} tool uses${tokenText ? `, ${tokenText} tokens` : ""}).\n\n` +
254
- (record.result?.trim() || "No output."));
255
- },
256
- }));
257
- // ---- get_result tool ----
258
- pi.registerTool(defineTool({
259
- name: "get_result",
260
- label: "Get Agent Result",
261
- description: "Check status and retrieve results from a background agent.",
262
- parameters: Type.Object({
263
- agent_id: Type.String({
264
- description: "The agent ID to check.",
265
- }),
266
- wait: Type.Optional(Type.Boolean({
267
- description: "Wait for completion. Default: false.",
268
- })),
269
- }),
270
- execute: async (_toolCallId, params) => {
271
- const record = manager.getRecord(params.agent_id);
272
- if (!record) {
273
- return textResult(`Agent not found: "${params.agent_id}". It may have been cleaned up.`);
274
- }
275
- if (params.wait && record.status === "running" && record.promise) {
276
- record.resultConsumed = true;
277
- await record.promise;
278
- }
279
- const duration = record.completedAt
280
- ? `${((record.completedAt - record.startedAt) / 1000).toFixed(1)}s`
281
- : "running";
282
- let output = `Agent: ${record.id}\n` +
283
- `Type: ${record.type} | Status: ${record.status} | Tool uses: ${record.toolUses} | Duration: ${duration}\n` +
284
- `Description: ${record.description}\n\n`;
285
- if (record.status === "running") {
286
- output += "Agent is still running. Use wait: true or check back later.";
287
- }
288
- else if (record.status === "error") {
289
- output += `Error: ${record.error}`;
290
- }
291
- else {
292
- output += record.result?.trim() || "No output.";
293
- }
294
- if (record.status !== "running" && record.status !== "queued") {
295
- record.resultConsumed = true;
296
- }
297
- return textResult(output);
298
- },
299
- }));
300
- }
301
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAA4C,MAAM,+BAA+B,CAAC;AAErG,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAwC,aAAa,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,4BAA4B;AAC5B,SAAS,gBAAgB,CAAC,OAAY;IACpC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,IAAI,SAAS;YAAE,OAAO,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACpE,IAAI,KAAK,IAAI,KAAK;YAAE,OAAO,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5D,OAAO,GAAG,KAAK,EAAE,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,yBAAyB;AACzB,SAAS,UAAU,CAAC,GAAW,EAAE,OAAa;IAC5C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,OAAO,WAAW,EAAgB;IACvC,oBAAoB;IACpB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO;IAE5B,+BAA+B;IAC/B,MAAM,aAAa,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEvD,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,YAAY,CAC9B,CAAC,MAAM,EAAE,EAAE;QACT,6CAA6C;QAC7C,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,EAAE,CAAC;QAEhB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;YACpC,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;IACL,CAAC,EACD,MAAM,CAAC,aAAa,EACpB,CAAC,MAAM,EAAE,EAAE;QACT,uBAAuB;QACvB,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAClC,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAEvD,iDAAiD;IACjD,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACxC,MAAM,YAAY,GAAG,GAAG,OAAO,+BAA+B,CAAC;QAC/D,MAAM,YAAY,GAAG,GAAG,OAAO,wBAAwB,CAAC;QACxD,MAAM,eAAe,GAAG,GAAG,GAAG,CAAC,GAAG,+BAA+B,CAAC;QAClE,MAAM,eAAe,GAAG,GAAG,GAAG,CAAC,GAAG,wBAAwB,CAAC;QAE3D,GAAG,CAAC,EAAE,CAAC,MAAM,CACX,2BAA2B;YAC3B,aAAa,YAAY,IAAI;YAC7B,oBAAoB,YAAY,IAAI;YACpC,gBAAgB,eAAe,IAAI;YACnC,uBAAuB,eAAe,EAAE,EACxC,MAAM,CACP,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,wDAAwD;IACxD,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,OAAO,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,EAAE,CAAC,EAAE,CAAC,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAClD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,SAAS,qBAAqB,CAAC,QAAiB;QAC9C,MAAM,KAAK,GAAkB;YAC3B,WAAW,EAAE,IAAI,GAAG,EAAE;YACtB,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC;YACZ,QAAQ;YACR,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,EAAE;SACjB,CAAC;QAEF,MAAM,SAAS,GAAG;YAChB,cAAc,EAAE,CAAC,QAAqD,EAAE,EAAE;gBACxE,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC9B,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACjF,CAAC;qBAAM,CAAC;oBACN,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;wBAC5C,IAAI,IAAI,KAAK,QAAQ,CAAC,QAAQ,EAAE,CAAC;4BAC/B,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;4BAC9B,MAAM;wBACR,CAAC;oBACH,CAAC;oBACD,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,CAAC;gBACD,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;YACD,WAAW,EAAE,CAAC,MAAc,EAAE,QAAgB,EAAE,EAAE;gBAChD,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC;gBAC9B,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;YACD,SAAS,EAAE,CAAC,SAAiB,EAAE,EAAE;gBAC/B,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;gBAC5B,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;YACD,gBAAgB,EAAE,CAAC,OAAY,EAAE,EAAE;gBACjC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBACxB,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;gBACzC,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;SACF,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAC9B,CAAC;IAED,uBAAuB;IAEvB,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE9C,EAAE,CAAC,YAAY,CACb,UAAU,CAAC;QACT,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,OAAO;QACd,WAAW,EAAE;;yBAEM,YAAY;;;;;;;;;;6CAUQ;QACvC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC;gBAChB,WAAW,EAAE,eAAe,YAAY,mDAAmD;aAC5F,CAAC;YACF,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;gBAClB,WAAW,EAAE,oCAAoC;aAClD,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC;gBACvB,WAAW,EAAE,6CAA6C;aAC3D,CAAC;YACF,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAC9B,IAAI,CAAC,OAAO,CAAC;gBACX,WAAW,EAAE,kDAAkD;aAChE,CAAC,CACH;YACD,SAAS,EAAE,IAAI,CAAC,QAAQ,CACtB,IAAI,CAAC,MAAM,CAAC;gBACV,WAAW,EAAE,oCAAoC;gBACjD,OAAO,EAAE,CAAC;aACX,CAAC,CACH;YACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC;gBACV,WAAW,EAAE,kHAAkH;aAChI,CAAC,CACH;YACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CACrB,IAAI,CAAC,MAAM,CAAC;gBACV,WAAW,EAAE,iFAAiF;aAC/F,CAAC,CACH;SACF,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;YAC3D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAExB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAc,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAgB,CAAC;YACvC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAqB,CAAC;YACjD,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAwC,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,SAA+B,CAAC;YACxD,MAAM,UAAU,GAAG,MAAM,CAAC,KAA2B,CAAC;YACtD,MAAM,aAAa,GAAG,MAAM,CAAC,QAA2B,CAAC;YAEzD,0BAA0B;YAC1B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;YAEnF,IAAI,eAAe,EAAE,CAAC;gBACpB,uBAAuB;gBACvB,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;oBAC9C,WAAW;oBACX,QAAQ;oBACR,UAAU;oBACV,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,aAAa;oBACb,YAAY,EAAE,IAAI;oBAClB,GAAG,WAAW;iBACf,CAAC,CAAC;gBAEH,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;gBAC/B,MAAM,CAAC,WAAW,EAAE,CAAC;gBACrB,MAAM,CAAC,MAAM,EAAE,CAAC;gBAEhB,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACrC,MAAM,QAAQ,GAAG,MAAM,EAAE,MAAM,KAAK,QAAQ,CAAC;gBAE7C,OAAO,UAAU,CACf,SAAS,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,mBAAmB;oBACzD,OAAO,EAAE,IAAI;oBACb,SAAS,IAAI,IAAI;oBACjB,gBAAgB,WAAW,IAAI;oBAC/B,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,OAAO,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrF,qDAAqD;oBACrD,0CAA0C,EAC5C,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CACtC,CAAC;YACJ,CAAC;YAED,uBAAuB;YACvB,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,IAAI,IAAwB,CAAC;YAE7B,MAAM,YAAY,GAAG,GAAG,EAAE;gBACxB,QAAQ,EAAE,CAAC;oBACT,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,eAAe,EAAE,CAAC;oBACrE,OAAO,EAAE;wBACP,MAAM,EAAE,SAAS;wBACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;wBAClC,QAAQ,EAAE,OAAO,CAAC,YAAY;4BAC5B,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;4BAC7D,CAAC,CAAC,WAAW;wBACf,YAAY,EAAE,YAAY,GAAG,EAAE;qBAChC;iBACF,CAAC,CAAC;gBACH,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC,CAAC;YAEF,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;gBACvC,YAAY,EAAE,CAAC;gBACf,YAAY,EAAE,CAAC;YACjB,CAAC,EAAE,EAAE,CAAC,CAAC;YAEP,MAAM,CAAC,WAAW,EAAE,CAAC;YACrB,YAAY,EAAE,CAAC;YAEf,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;gBAC/D,WAAW;gBACX,QAAQ;gBACR,UAAU;gBACV,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,aAAa;gBACb,GAAG,WAAW;aACf,CAAC,CAAC;YAEH,aAAa,CAAC,eAAe,CAAC,CAAC;YAE/B,IAAI,IAAI,EAAE,CAAC;gBACT,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;YAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;YAEzE,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC9B,OAAO,UAAU,CAAC,iBAAiB,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,OAAO,UAAU,CACf,sBAAsB,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,aAAa,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ;gBACpI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC,CAC1C,CAAC;QACJ,CAAC;KACF,CAAC,CACH,CAAC;IAEF,4BAA4B;IAE5B,EAAE,CAAC,YAAY,CACb,UAAU,CAAC;QACT,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,4DAA4D;QACzE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YACtB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;gBACpB,WAAW,EAAE,wBAAwB;aACtC,CAAC;YACF,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,OAAO,CAAC;gBACX,WAAW,EAAE,sCAAsC;aACpD,CAAC,CACH;SACF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,QAAkB,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,UAAU,CAAC,qBAAqB,MAAM,CAAC,QAAQ,iCAAiC,CAAC,CAAC;YAC3F,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjE,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC7B,MAAM,MAAM,CAAC,OAAO,CAAC;YACvB,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW;gBACjC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;gBACnE,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,MAAM,GACR,UAAU,MAAM,CAAC,EAAE,IAAI;gBACvB,SAAS,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,QAAQ,gBAAgB,QAAQ,IAAI;gBAC3G,gBAAgB,MAAM,CAAC,WAAW,MAAM,CAAC;YAE3C,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,IAAI,6DAA6D,CAAC;YAC1E,CAAC;iBAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;gBACrC,MAAM,IAAI,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC;YAClD,CAAC;YAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9D,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC;YAC/B,CAAC;YAED,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * @pi-unipi/subagents — Model resolver
3
- *
4
- * Resolves model strings like "haiku", "sonnet", "anthropic/claude-sonnet-4-6"
5
- * to actual Model instances using the registry.
6
- */
7
- import type { Model } from "@mariozechner/pi-ai";
8
- export interface ModelRegistry {
9
- find(provider: string, modelId: string): Model<any> | undefined;
10
- getAll(): Model<any>[];
11
- getAvailable?(): Model<any>[];
12
- }
13
- /**
14
- * Resolve a model string to a Model instance.
15
- * Tries exact match first, then fuzzy match.
16
- * Returns Model on success, error string on failure.
17
- */
18
- export declare function resolveModel(input: string, registry: ModelRegistry): Model<any> | string;
19
- //# sourceMappingURL=model-resolver.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-resolver.d.ts","sourceRoot":"","sources":["../src/model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAChE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACvB,YAAY,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;CAC/B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,aAAa,GACtB,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAuDrB"}
@@ -1,61 +0,0 @@
1
- /**
2
- * @pi-unipi/subagents — Model resolver
3
- *
4
- * Resolves model strings like "haiku", "sonnet", "anthropic/claude-sonnet-4-6"
5
- * to actual Model instances using the registry.
6
- */
7
- /**
8
- * Resolve a model string to a Model instance.
9
- * Tries exact match first, then fuzzy match.
10
- * Returns Model on success, error string on failure.
11
- */
12
- export function resolveModel(input, registry) {
13
- const all = (registry.getAvailable?.() ?? registry.getAll());
14
- const availableSet = new Set(all.map((m) => `${m.provider}/${m.id}`.toLowerCase()));
15
- // 1. Exact match: "provider/modelId"
16
- const slashIdx = input.indexOf("/");
17
- if (slashIdx !== -1) {
18
- const provider = input.slice(0, slashIdx);
19
- const modelId = input.slice(slashIdx + 1);
20
- if (availableSet.has(input.toLowerCase())) {
21
- const found = registry.find(provider, modelId);
22
- if (found)
23
- return found;
24
- }
25
- }
26
- // 2. Fuzzy match
27
- const query = input.toLowerCase();
28
- let bestMatch;
29
- let bestScore = 0;
30
- for (const m of all) {
31
- const id = m.id.toLowerCase();
32
- const name = (m.name ?? m.id).toLowerCase();
33
- const full = `${m.provider}/${m.id}`.toLowerCase();
34
- let score = 0;
35
- if (id === query || full === query) {
36
- score = 100;
37
- }
38
- else if (id.includes(query) || full.includes(query)) {
39
- score = 60 + (query.length / id.length) * 30;
40
- }
41
- else if (name.includes(query)) {
42
- score = 40 + (query.length / name.length) * 20;
43
- }
44
- if (score > bestScore) {
45
- bestScore = score;
46
- bestMatch = m;
47
- }
48
- }
49
- if (bestMatch && bestScore >= 20) {
50
- const found = registry.find(bestMatch.provider, bestMatch.id);
51
- if (found)
52
- return found;
53
- }
54
- // 3. No match — return error with available models
55
- const modelList = all
56
- .map((m) => ` ${m.provider}/${m.id}`)
57
- .sort()
58
- .join("\n");
59
- return `Model not found: "${input}".\n\nAvailable models:\n${modelList}`;
60
- }
61
- //# sourceMappingURL=model-resolver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../src/model-resolver.ts"],"names":[],"mappings":"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"}
package/dist/prompts.d.ts DELETED
@@ -1,13 +0,0 @@
1
- /**
2
- * @pi-unipi/subagents — System prompt builder
3
- */
4
- import type { AgentConfig } from "./types.js";
5
- /**
6
- * Build system prompt for an agent.
7
- */
8
- export declare function buildAgentPrompt(config: AgentConfig, cwd: string, env: {
9
- isGitRepo: boolean;
10
- branch: string;
11
- platform: string;
12
- }, parentSystemPrompt: string): string;
13
- //# sourceMappingURL=prompts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,MAAM,EACX,GAAG,EAAE;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC7D,kBAAkB,EAAE,MAAM,GACzB,MAAM,CAwBR"}
package/dist/prompts.js DELETED
@@ -1,31 +0,0 @@
1
- /**
2
- * @pi-unipi/subagents — System prompt builder
3
- */
4
- /**
5
- * Build system prompt for an agent.
6
- */
7
- export function buildAgentPrompt(config, cwd, env, parentSystemPrompt) {
8
- if (config.promptMode === "append") {
9
- // Append mode: parent prompt + agent additions
10
- return [
11
- parentSystemPrompt,
12
- "",
13
- "---",
14
- "",
15
- `## Agent Role: ${config.displayName ?? config.name}`,
16
- config.systemPrompt,
17
- ].join("\n");
18
- }
19
- // Replace mode: standalone prompt
20
- return [
21
- `# ${config.displayName ?? config.name}`,
22
- "",
23
- config.systemPrompt,
24
- "",
25
- "---",
26
- "",
27
- `Working directory: ${cwd}`,
28
- `Git: ${env.isGitRepo ? `${env.branch} on ${env.platform}` : "not a git repo"}`,
29
- ].join("\n");
30
- }
31
- //# sourceMappingURL=prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAmB,EACnB,GAAW,EACX,GAA6D,EAC7D,kBAA0B;IAE1B,IAAI,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACnC,+CAA+C;QAC/C,OAAO;YACL,kBAAkB;YAClB,EAAE;YACF,KAAK;YACL,EAAE;YACF,kBAAkB,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE;YACrD,MAAM,CAAC,YAAY;SACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,kCAAkC;IAClC,OAAO;QACL,KAAK,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,EAAE;QACxC,EAAE;QACF,MAAM,CAAC,YAAY;QACnB,EAAE;QACF,KAAK;QACL,EAAE;QACF,sBAAsB,GAAG,EAAE;QAC3B,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE;KAChF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,79 +0,0 @@
1
- /**
2
- * @pi-unipi/subagents — Type definitions
3
- */
4
- import type { ThinkingLevel } from "@mariozechner/pi-agent-core";
5
- import type { AgentSession } from "@mariozechner/pi-coding-agent";
6
- export type { ThinkingLevel };
7
- /** Agent type name: built-in or user-defined. */
8
- export type AgentType = string;
9
- /** Built-in agent type names. */
10
- export declare const BUILTIN_TYPES: readonly ["explore", "work"];
11
- /** Memory scope for persistent agent memory. */
12
- export type MemoryScope = "user" | "project" | "local";
13
- /** Unified agent configuration. */
14
- export interface AgentConfig {
15
- name: string;
16
- displayName?: string;
17
- description: string;
18
- builtinToolNames?: string[];
19
- disallowedTools?: string[];
20
- extensions: true | string[] | false;
21
- skills: true | string[] | false;
22
- model?: string;
23
- thinking?: ThinkingLevel;
24
- maxTurns?: number;
25
- systemPrompt: string;
26
- promptMode: "replace" | "append";
27
- inheritContext?: boolean;
28
- runInBackground?: boolean;
29
- isolated?: boolean;
30
- memory?: MemoryScope;
31
- isDefault?: boolean;
32
- enabled?: boolean;
33
- source?: "builtin" | "project" | "global";
34
- }
35
- /** Agent record — tracks a running agent. */
36
- export interface AgentRecord {
37
- id: string;
38
- type: AgentType;
39
- description: string;
40
- status: "queued" | "running" | "completed" | "aborted" | "stopped" | "error";
41
- result?: string;
42
- error?: string;
43
- toolUses: number;
44
- startedAt: number;
45
- completedAt?: number;
46
- session?: AgentSession;
47
- abortController?: AbortController;
48
- promise?: Promise<string>;
49
- /** Set when result consumed via get_result — suppresses notification. */
50
- resultConsumed?: boolean;
51
- /** Files locked by this agent. */
52
- lockedFiles: Set<string>;
53
- }
54
- /** File lock entry. */
55
- export interface FileLockEntry {
56
- agentId: string;
57
- filePath: string;
58
- promise: Promise<void>;
59
- release: () => void;
60
- }
61
- /** Extension config. */
62
- export interface SubagentsConfig {
63
- maxConcurrent: number;
64
- enabled: boolean;
65
- types: Record<string, {
66
- enabled?: boolean;
67
- }>;
68
- }
69
- /** Agent activity for widget display. */
70
- export interface AgentActivity {
71
- activeTools: Map<string, string>;
72
- toolUses: number;
73
- turnCount: number;
74
- maxTurns?: number;
75
- tokens: string;
76
- responseText: string;
77
- session?: AgentSession;
78
- }
79
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * @pi-unipi/subagents — Type definitions
3
- */
4
- /** Built-in agent type names. */
5
- export const BUILTIN_TYPES = ["explore", "work"];
6
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,iCAAiC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,CAAU,CAAC"}
package/dist/widget.d.ts DELETED
@@ -1,26 +0,0 @@
1
- /**
2
- * @pi-unipi/subagents — Live widget
3
- *
4
- * Shows running agents above the editor.
5
- * Uses setWidget with tui.requestRender() for updates.
6
- */
7
- import type { AgentManager } from "./agent-manager.js";
8
- import type { AgentActivity } from "./types.js";
9
- export declare class AgentWidget {
10
- private manager;
11
- private activity;
12
- private spinnerFrame;
13
- private timer?;
14
- private uiCtx?;
15
- private tui?;
16
- private widgetRegistered;
17
- constructor(manager: AgentManager, activity: Map<string, AgentActivity>);
18
- setUICtx(ctx: any): void;
19
- ensureTimer(): void;
20
- markFinished(_id: string): void;
21
- update(): void;
22
- private triggerRender;
23
- private renderWidget;
24
- dispose(): void;
25
- }
26
- //# sourceMappingURL=widget.d.ts.map
@@ -1 +0,0 @@
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"}