opencode-subagents-sidebar-plugin 0.1.3 → 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/README.md +11 -6
- package/dist/activity.d.ts +4 -0
- package/dist/activity.d.ts.map +1 -1
- package/dist/activity.js +39 -0
- package/dist/activity.js.map +1 -1
- package/dist/popover.d.ts +23 -0
- package/dist/popover.d.ts.map +1 -0
- package/dist/popover.js +57 -0
- package/dist/popover.js.map +1 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +510 -273
- package/dist/tui.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,13 +4,18 @@ An OpenCode 1.17.15+ TUI-only plugin that adds a **Subagents** section to the
|
|
|
4
4
|
sidebar footer. It shows pending and running task subagents for the current
|
|
5
5
|
parent session (or when viewing one of its child sessions).
|
|
6
6
|
|
|
7
|
-
Each subagent uses a
|
|
7
|
+
Each subagent uses a spaced two-line card: its role with model and raw
|
|
8
8
|
effort/reasoning variant, then its assigned task description with a
|
|
9
|
-
right-aligned elapsed runtime.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
right-aligned elapsed runtime. Model and effort colors match the metadata below
|
|
10
|
+
OpenCode's prompt. Click anywhere on a card to open a non-modal, live popover
|
|
11
|
+
attached to that card (left first, then right, with above/below fallbacks on
|
|
12
|
+
narrow terminals). It shows status, foreground/background mode, child session
|
|
13
|
+
ID, model details, and the newest live assistant activity—text, reasoning, or
|
|
14
|
+
tool work—as a single truncated line. The child transcript refreshes while the
|
|
15
|
+
popover is open even when public TUI state has not populated it yet. Opening
|
|
16
|
+
another card replaces the popover; clicking outside it, navigating away,
|
|
17
|
+
opening a host dialog, or using **Close** dismisses it. **Open Session** is
|
|
18
|
+
available once the child session exists (unless it is already open).
|
|
14
19
|
Completed tasks are hidden unless OpenCode still reports their background child
|
|
15
20
|
session as active.
|
|
16
21
|
|
package/dist/activity.d.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
|
+
import type { Message, Part } from "@opencode-ai/sdk/v2";
|
|
2
|
+
export declare function activityForPart(part: Part): string | undefined;
|
|
3
|
+
/** Returns the newest visible assistant activity as a single display line. */
|
|
4
|
+
export declare function latestAssistantActivity(messages: ReadonlyArray<Message>, partsForMessage: (messageID: string) => ReadonlyArray<Part>): string | undefined;
|
|
1
5
|
export declare function elapsedLabel(milliseconds: number): string;
|
|
2
6
|
//# sourceMappingURL=activity.d.ts.map
|
package/dist/activity.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAQzD"}
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../src/activity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAkBxD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAgB9D;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,aAAa,CAAC,IAAI,CAAC,GAC1D,MAAM,GAAG,SAAS,CAcpB;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAQzD"}
|
package/dist/activity.js
CHANGED
|
@@ -1,3 +1,42 @@
|
|
|
1
|
+
function normalizeActivity(value) {
|
|
2
|
+
if (typeof value !== "string") return undefined;
|
|
3
|
+
return value.replace(/\s+/g, " ").replace(/^[#>*_`\-\s]+/, "").replace(/[*_`]/g, "").trim() || undefined;
|
|
4
|
+
}
|
|
5
|
+
function toolName(value) {
|
|
6
|
+
return value.replace(/^multi_tool_use\./, "").replace(/[._-]+/g, " ").replace(/\b\w/g, character => character.toUpperCase());
|
|
7
|
+
}
|
|
8
|
+
export function activityForPart(part) {
|
|
9
|
+
if (part.type === "text" && !part.ignored) return normalizeActivity(part.text);
|
|
10
|
+
if (part.type === "reasoning") return normalizeActivity(part.text);
|
|
11
|
+
if (part.type === "subtask") {
|
|
12
|
+
const description = normalizeActivity(part.description);
|
|
13
|
+
return description ? `Delegating · ${description}` : "Delegating";
|
|
14
|
+
}
|
|
15
|
+
if (part.type === "retry") return `Retrying · attempt ${part.attempt}`;
|
|
16
|
+
if (part.type === "compaction") return "Compacting context…";
|
|
17
|
+
if (part.type !== "tool") return undefined;
|
|
18
|
+
const name = toolName(part.tool);
|
|
19
|
+
if (part.state.status === "pending" || part.state.status === "running") return `${name}…`;
|
|
20
|
+
if (part.state.status === "error") return `${name} failed`;
|
|
21
|
+
const title = normalizeActivity(part.state.title);
|
|
22
|
+
return title ? `${name} · ${title}` : `${name}…`;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Returns the newest visible assistant activity as a single display line. */
|
|
26
|
+
export function latestAssistantActivity(messages, partsForMessage) {
|
|
27
|
+
for (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex -= 1) {
|
|
28
|
+
const message = messages[messageIndex];
|
|
29
|
+
if (!message || message.role !== "assistant") continue;
|
|
30
|
+
const parts = partsForMessage(message.id);
|
|
31
|
+
for (let partIndex = parts.length - 1; partIndex >= 0; partIndex -= 1) {
|
|
32
|
+
const part = parts[partIndex];
|
|
33
|
+
if (!part) continue;
|
|
34
|
+
const activity = activityForPart(part);
|
|
35
|
+
if (activity) return activity;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
1
40
|
export function elapsedLabel(milliseconds) {
|
|
2
41
|
const seconds = Math.max(0, Math.floor(milliseconds / 1_000));
|
|
3
42
|
if (seconds < 60) return `${seconds}s`;
|
package/dist/activity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","names":["elapsedLabel","milliseconds","seconds","Math","max","floor","minutes","hours"],"sources":["../src/activity.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"activity.js","names":["normalizeActivity","value","undefined","replace","trim","toolName","character","toUpperCase","activityForPart","part","type","ignored","text","description","attempt","name","tool","state","status","title","latestAssistantActivity","messages","partsForMessage","messageIndex","length","message","role","parts","id","partIndex","activity","elapsedLabel","milliseconds","seconds","Math","max","floor","minutes","hours"],"sources":["../src/activity.ts"],"sourcesContent":["import type { Message, Part } from \"@opencode-ai/sdk/v2\"\n\nfunction normalizeActivity(value: unknown): string | undefined {\n if (typeof value !== \"string\") return undefined\n return value\n .replace(/\\s+/g, \" \")\n .replace(/^[#>*_`\\-\\s]+/, \"\")\n .replace(/[*_`]/g, \"\")\n .trim() || undefined\n}\n\nfunction toolName(value: string): string {\n return value\n .replace(/^multi_tool_use\\./, \"\")\n .replace(/[._-]+/g, \" \")\n .replace(/\\b\\w/g, (character) => character.toUpperCase())\n}\n\nexport function activityForPart(part: Part): string | undefined {\n if (part.type === \"text\" && !part.ignored) return normalizeActivity(part.text)\n if (part.type === \"reasoning\") return normalizeActivity(part.text)\n if (part.type === \"subtask\") {\n const description = normalizeActivity(part.description)\n return description ? `Delegating · ${description}` : \"Delegating\"\n }\n if (part.type === \"retry\") return `Retrying · attempt ${part.attempt}`\n if (part.type === \"compaction\") return \"Compacting context…\"\n if (part.type !== \"tool\") return undefined\n\n const name = toolName(part.tool)\n if (part.state.status === \"pending\" || part.state.status === \"running\") return `${name}…`\n if (part.state.status === \"error\") return `${name} failed`\n const title = normalizeActivity(part.state.title)\n return title ? `${name} · ${title}` : `${name}…`\n}\n\n/** Returns the newest visible assistant activity as a single display line. */\nexport function latestAssistantActivity(\n messages: ReadonlyArray<Message>,\n partsForMessage: (messageID: string) => ReadonlyArray<Part>,\n): string | undefined {\n for (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex -= 1) {\n const message = messages[messageIndex]\n if (!message || message.role !== \"assistant\") continue\n\n const parts = partsForMessage(message.id)\n for (let partIndex = parts.length - 1; partIndex >= 0; partIndex -= 1) {\n const part = parts[partIndex]\n if (!part) continue\n const activity = activityForPart(part)\n if (activity) return activity\n }\n }\n return undefined\n}\n\nexport function elapsedLabel(milliseconds: number): string {\n const seconds = Math.max(0, Math.floor(milliseconds / 1_000))\n if (seconds < 60) return `${seconds}s`\n const minutes = Math.floor(seconds / 60)\n if (minutes < 60) return `${minutes}m ${seconds % 60}s`\n const hours = Math.floor(minutes / 60)\n if (hours < 24) return `${hours}h ${minutes % 60}m`\n return `${Math.floor(hours / 24)}d ${hours % 24}h`\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type PopoverAnchor = {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
};
|
|
7
|
+
export type PopoverBounds = {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
};
|
|
11
|
+
export type PopoverPlacement = {
|
|
12
|
+
left: number;
|
|
13
|
+
top: number;
|
|
14
|
+
width: number;
|
|
15
|
+
height: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Positions a root-level popover against one edge of its anchor. Sidebar cards
|
|
19
|
+
* prefer horizontal attachment so cards near the bottom can shift the popover
|
|
20
|
+
* upward without losing contact with the card.
|
|
21
|
+
*/
|
|
22
|
+
export declare function placePopover(anchor: PopoverAnchor, terminal: PopoverBounds, requestedSize: PopoverBounds): PopoverPlacement;
|
|
23
|
+
//# sourceMappingURL=popover.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../src/popover.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,aAAa,EACvB,aAAa,EAAE,aAAa,GAC3B,gBAAgB,CAyBlB"}
|
package/dist/popover.js
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
function clamp(value, minimum, maximum) {
|
|
2
|
+
return Math.max(minimum, Math.min(value, maximum));
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Positions a root-level popover against one edge of its anchor. Sidebar cards
|
|
7
|
+
* prefer horizontal attachment so cards near the bottom can shift the popover
|
|
8
|
+
* upward without losing contact with the card.
|
|
9
|
+
*/
|
|
10
|
+
export function placePopover(anchor, terminal, requestedSize) {
|
|
11
|
+
const viewportWidth = Math.max(0, terminal.width);
|
|
12
|
+
const viewportHeight = Math.max(0, terminal.height);
|
|
13
|
+
const width = Math.min(Math.max(1, requestedSize.width), viewportWidth);
|
|
14
|
+
const height = Math.min(Math.max(1, requestedSize.height), viewportHeight);
|
|
15
|
+
const maxLeft = Math.max(0, viewportWidth - width);
|
|
16
|
+
const maxTop = Math.max(0, viewportHeight - height);
|
|
17
|
+
const sideTop = clamp(anchor.y, 0, maxTop);
|
|
18
|
+
const left = anchor.x - width;
|
|
19
|
+
if (left >= 0 && left <= maxLeft) return {
|
|
20
|
+
left,
|
|
21
|
+
top: sideTop,
|
|
22
|
+
width,
|
|
23
|
+
height
|
|
24
|
+
};
|
|
25
|
+
const right = anchor.x + anchor.width;
|
|
26
|
+
if (right >= 0 && right + width <= viewportWidth) return {
|
|
27
|
+
left: right,
|
|
28
|
+
top: sideTop,
|
|
29
|
+
width,
|
|
30
|
+
height
|
|
31
|
+
};
|
|
32
|
+
const verticalLeft = clamp(anchor.x, 0, maxLeft);
|
|
33
|
+
const below = anchor.y + anchor.height;
|
|
34
|
+
if (below >= 0 && below + height <= viewportHeight) return {
|
|
35
|
+
left: verticalLeft,
|
|
36
|
+
top: below,
|
|
37
|
+
width,
|
|
38
|
+
height
|
|
39
|
+
};
|
|
40
|
+
const above = anchor.y - height;
|
|
41
|
+
if (above >= 0 && above <= maxTop) return {
|
|
42
|
+
left: verticalLeft,
|
|
43
|
+
top: above,
|
|
44
|
+
width,
|
|
45
|
+
height
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// Extremely small viewports cannot preserve attachment without covering the
|
|
49
|
+
// anchor. Keep the requested box fully visible and bias toward below.
|
|
50
|
+
return {
|
|
51
|
+
left: verticalLeft,
|
|
52
|
+
top: clamp(below, 0, maxTop),
|
|
53
|
+
width,
|
|
54
|
+
height
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=popover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"popover.js","names":["clamp","value","minimum","maximum","Math","max","min","placePopover","anchor","terminal","requestedSize","viewportWidth","width","viewportHeight","height","maxLeft","maxTop","sideTop","y","left","x","top","right","verticalLeft","below","above"],"sources":["../src/popover.ts"],"sourcesContent":["export type PopoverAnchor = {\n x: number\n y: number\n width: number\n height: number\n}\n\nexport type PopoverBounds = {\n width: number\n height: number\n}\n\nexport type PopoverPlacement = {\n left: number\n top: number\n width: number\n height: number\n}\n\nfunction clamp(value: number, minimum: number, maximum: number): number {\n return Math.max(minimum, Math.min(value, maximum))\n}\n\n/**\n * Positions a root-level popover against one edge of its anchor. Sidebar cards\n * prefer horizontal attachment so cards near the bottom can shift the popover\n * upward without losing contact with the card.\n */\nexport function placePopover(\n anchor: PopoverAnchor,\n terminal: PopoverBounds,\n requestedSize: PopoverBounds,\n): PopoverPlacement {\n const viewportWidth = Math.max(0, terminal.width)\n const viewportHeight = Math.max(0, terminal.height)\n const width = Math.min(Math.max(1, requestedSize.width), viewportWidth)\n const height = Math.min(Math.max(1, requestedSize.height), viewportHeight)\n const maxLeft = Math.max(0, viewportWidth - width)\n const maxTop = Math.max(0, viewportHeight - height)\n const sideTop = clamp(anchor.y, 0, maxTop)\n const left = anchor.x - width\n\n if (left >= 0 && left <= maxLeft) return { left, top: sideTop, width, height }\n\n const right = anchor.x + anchor.width\n if (right >= 0 && right + width <= viewportWidth) return { left: right, top: sideTop, width, height }\n\n const verticalLeft = clamp(anchor.x, 0, maxLeft)\n const below = anchor.y + anchor.height\n if (below >= 0 && below + height <= viewportHeight) return { left: verticalLeft, top: below, width, height }\n\n const above = anchor.y - height\n if (above >= 0 && above <= maxTop) return { left: verticalLeft, top: above, width, height }\n\n // Extremely small viewports cannot preserve attachment without covering the\n // anchor. Keep the requested box fully visible and bias toward below.\n return { left: verticalLeft, top: clamp(below, 0, maxTop), width, height }\n}\n"],"mappings":"AAmBA,SAASA,KAAKA,CAACC,KAAa,EAAEC,OAAe,EAAEC,OAAe,EAAU;EACtE,OAAOC,IAAI,CAACC,GAAG,CAACH,OAAO,EAAEE,IAAI,CAACE,GAAG,CAACL,KAAK,EAAEE,OAAO,CAAC,CAAC;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,YAAYA,CAC1BC,MAAqB,EACrBC,QAAuB,EACvBC,aAA4B,EACV;EAClB,MAAMC,aAAa,GAAGP,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEI,QAAQ,CAACG,KAAK,CAAC;EACjD,MAAMC,cAAc,GAAGT,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEI,QAAQ,CAACK,MAAM,CAAC;EACnD,MAAMF,KAAK,GAAGR,IAAI,CAACE,GAAG,CAACF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEK,aAAa,CAACE,KAAK,CAAC,EAAED,aAAa,CAAC;EACvE,MAAMG,MAAM,GAAGV,IAAI,CAACE,GAAG,CAACF,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEK,aAAa,CAACI,MAAM,CAAC,EAAED,cAAc,CAAC;EAC1E,MAAME,OAAO,GAAGX,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEM,aAAa,GAAGC,KAAK,CAAC;EAClD,MAAMI,MAAM,GAAGZ,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEQ,cAAc,GAAGC,MAAM,CAAC;EACnD,MAAMG,OAAO,GAAGjB,KAAK,CAACQ,MAAM,CAACU,CAAC,EAAE,CAAC,EAAEF,MAAM,CAAC;EAC1C,MAAMG,IAAI,GAAGX,MAAM,CAACY,CAAC,GAAGR,KAAK;EAE7B,IAAIO,IAAI,IAAI,CAAC,IAAIA,IAAI,IAAIJ,OAAO,EAAE,OAAO;IAAEI,IAAI;IAAEE,GAAG,EAAEJ,OAAO;IAAEL,KAAK;IAAEE;EAAO,CAAC;EAE9E,MAAMQ,KAAK,GAAGd,MAAM,CAACY,CAAC,GAAGZ,MAAM,CAACI,KAAK;EACrC,IAAIU,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAGV,KAAK,IAAID,aAAa,EAAE,OAAO;IAAEQ,IAAI,EAAEG,KAAK;IAAED,GAAG,EAAEJ,OAAO;IAAEL,KAAK;IAAEE;EAAO,CAAC;EAErG,MAAMS,YAAY,GAAGvB,KAAK,CAACQ,MAAM,CAACY,CAAC,EAAE,CAAC,EAAEL,OAAO,CAAC;EAChD,MAAMS,KAAK,GAAGhB,MAAM,CAACU,CAAC,GAAGV,MAAM,CAACM,MAAM;EACtC,IAAIU,KAAK,IAAI,CAAC,IAAIA,KAAK,GAAGV,MAAM,IAAID,cAAc,EAAE,OAAO;IAAEM,IAAI,EAAEI,YAAY;IAAEF,GAAG,EAAEG,KAAK;IAAEZ,KAAK;IAAEE;EAAO,CAAC;EAE5G,MAAMW,KAAK,GAAGjB,MAAM,CAACU,CAAC,GAAGJ,MAAM;EAC/B,IAAIW,KAAK,IAAI,CAAC,IAAIA,KAAK,IAAIT,MAAM,EAAE,OAAO;IAAEG,IAAI,EAAEI,YAAY;IAAEF,GAAG,EAAEI,KAAK;IAAEb,KAAK;IAAEE;EAAO,CAAC;;EAE3F;EACA;EACA,OAAO;IAAEK,IAAI,EAAEI,YAAY;IAAEF,GAAG,EAAErB,KAAK,CAACwB,KAAK,EAAE,CAAC,EAAER,MAAM,CAAC;IAAEJ,KAAK;IAAEE;EAAO,CAAC;AAC5E","ignoreList":[]}
|
package/dist/tui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAiC,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAiC,MAAM,yBAAyB,CAAA;AAmoBvF,QAAA,MAAM,MAAM;;;CAGe,CAAA;AAE3B,eAAe,MAAM,CAAA"}
|