opencode-subagents-sidebar-plugin 0.1.5 → 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 -12
- 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/tasks.d.ts +0 -2
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +0 -11
- package/dist/tasks.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +313 -268
- package/dist/tui.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,19 +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
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
opening a host dialog, or
|
|
18
|
-
|
|
19
|
-
already open); **Close** dismisses the popover.
|
|
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).
|
|
20
19
|
Completed tasks are hidden unless OpenCode still reports their background child
|
|
21
20
|
session as active.
|
|
22
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":"AAEA,SAASA,iBAAiBA,CAACC,KAAc,EAAsB;EAC7D,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAOC,SAAS;EAC/C,OAAOD,KAAK,CACTE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CACpBA,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAC5BA,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CACrBC,IAAI,CAAC,CAAC,IAAIF,SAAS;AACxB;AAEA,SAASG,QAAQA,CAACJ,KAAa,EAAU;EACvC,OAAOA,KAAK,CACTE,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAChCA,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CACvBA,OAAO,CAAC,OAAO,EAAGG,SAAS,IAAKA,SAAS,CAACC,WAAW,CAAC,CAAC,CAAC;AAC7D;AAEA,OAAO,SAASC,eAAeA,CAACC,IAAU,EAAsB;EAC9D,IAAIA,IAAI,CAACC,IAAI,KAAK,MAAM,IAAI,CAACD,IAAI,CAACE,OAAO,EAAE,OAAOX,iBAAiB,CAACS,IAAI,CAACG,IAAI,CAAC;EAC9E,IAAIH,IAAI,CAACC,IAAI,KAAK,WAAW,EAAE,OAAOV,iBAAiB,CAACS,IAAI,CAACG,IAAI,CAAC;EAClE,IAAIH,IAAI,CAACC,IAAI,KAAK,SAAS,EAAE;IAC3B,MAAMG,WAAW,GAAGb,iBAAiB,CAACS,IAAI,CAACI,WAAW,CAAC;IACvD,OAAOA,WAAW,GAAG,gBAAgBA,WAAW,EAAE,GAAG,YAAY;EACnE;EACA,IAAIJ,IAAI,CAACC,IAAI,KAAK,OAAO,EAAE,OAAO,sBAAsBD,IAAI,CAACK,OAAO,EAAE;EACtE,IAAIL,IAAI,CAACC,IAAI,KAAK,YAAY,EAAE,OAAO,qBAAqB;EAC5D,IAAID,IAAI,CAACC,IAAI,KAAK,MAAM,EAAE,OAAOR,SAAS;EAE1C,MAAMa,IAAI,GAAGV,QAAQ,CAACI,IAAI,CAACO,IAAI,CAAC;EAChC,IAAIP,IAAI,CAACQ,KAAK,CAACC,MAAM,KAAK,SAAS,IAAIT,IAAI,CAACQ,KAAK,CAACC,MAAM,KAAK,SAAS,EAAE,OAAO,GAAGH,IAAI,GAAG;EACzF,IAAIN,IAAI,CAACQ,KAAK,CAACC,MAAM,KAAK,OAAO,EAAE,OAAO,GAAGH,IAAI,SAAS;EAC1D,MAAMI,KAAK,GAAGnB,iBAAiB,CAACS,IAAI,CAACQ,KAAK,CAACE,KAAK,CAAC;EACjD,OAAOA,KAAK,GAAG,GAAGJ,IAAI,MAAMI,KAAK,EAAE,GAAG,GAAGJ,IAAI,GAAG;AAClD;;AAEA;AACA,OAAO,SAASK,uBAAuBA,CACrCC,QAAgC,EAChCC,eAA2D,EACvC;EACpB,KAAK,IAAIC,YAAY,GAAGF,QAAQ,CAACG,MAAM,GAAG,CAAC,EAAED,YAAY,IAAI,CAAC,EAAEA,YAAY,IAAI,CAAC,EAAE;IACjF,MAAME,OAAO,GAAGJ,QAAQ,CAACE,YAAY,CAAC;IACtC,IAAI,CAACE,OAAO,IAAIA,OAAO,CAACC,IAAI,KAAK,WAAW,EAAE;IAE9C,MAAMC,KAAK,GAAGL,eAAe,CAACG,OAAO,CAACG,EAAE,CAAC;IACzC,KAAK,IAAIC,SAAS,GAAGF,KAAK,CAACH,MAAM,GAAG,CAAC,EAAEK,SAAS,IAAI,CAAC,EAAEA,SAAS,IAAI,CAAC,EAAE;MACrE,MAAMpB,IAAI,GAAGkB,KAAK,CAACE,SAAS,CAAC;MAC7B,IAAI,CAACpB,IAAI,EAAE;MACX,MAAMqB,QAAQ,GAAGtB,eAAe,CAACC,IAAI,CAAC;MACtC,IAAIqB,QAAQ,EAAE,OAAOA,QAAQ;IAC/B;EACF;EACA,OAAO5B,SAAS;AAClB;AAEA,OAAO,SAAS6B,YAAYA,CAACC,YAAoB,EAAU;EACzD,MAAMC,OAAO,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,EAAED,IAAI,CAACE,KAAK,CAACJ,YAAY,GAAG,KAAK,CAAC,CAAC;EAC7D,IAAIC,OAAO,GAAG,EAAE,EAAE,OAAO,GAAGA,OAAO,GAAG;EACtC,MAAMI,OAAO,GAAGH,IAAI,CAACE,KAAK,CAACH,OAAO,GAAG,EAAE,CAAC;EACxC,IAAII,OAAO,GAAG,EAAE,EAAE,OAAO,GAAGA,OAAO,KAAKJ,OAAO,GAAG,EAAE,GAAG;EACvD,MAAMK,KAAK,GAAGJ,IAAI,CAACE,KAAK,CAACC,OAAO,GAAG,EAAE,CAAC;EACtC,IAAIC,KAAK,GAAG,EAAE,EAAE,OAAO,GAAGA,KAAK,KAAKD,OAAO,GAAG,EAAE,GAAG;EACnD,OAAO,GAAGH,IAAI,CAACE,KAAK,CAACE,KAAK,GAAG,EAAE,CAAC,KAAKA,KAAK,GAAG,EAAE,GAAG;AACpD","ignoreList":[]}
|
package/dist/tasks.d.ts
CHANGED
|
@@ -9,8 +9,6 @@ export declare function normalizeTaskDescription(value: unknown): string | undef
|
|
|
9
9
|
export declare function taskSessionID(part: ToolPart): string | undefined;
|
|
10
10
|
export declare function taskAgent(part: VisibleTaskPart): string;
|
|
11
11
|
export declare function taskDescription(part: VisibleTaskPart): string;
|
|
12
|
-
/** Returns the latest visible assistant response as a single display line. */
|
|
13
|
-
export declare function latestAssistantText(messages: ReadonlyArray<Message>, partsForMessage: (messageID: string) => ReadonlyArray<Part>): string | undefined;
|
|
14
12
|
export declare function resolveTaskModel(part: VisibleTaskPart, childSession: Session | undefined, childMessages: ReadonlyArray<Message>): TaskModel | undefined;
|
|
15
13
|
export declare function taskModelLabel(model: TaskModel | undefined, displayName?: string): string;
|
|
16
14
|
export declare function taskVariantLabel(model: TaskModel | undefined): string | undefined;
|
package/dist/tasks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE1F,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAA;AAEtC,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAcD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAO3E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAGhE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAE7D;
|
|
1
|
+
{"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../src/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE1F,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAA;AAEtC,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAcD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAO3E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAGhE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAE7D;AAgCD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,YAAY,EAAE,OAAO,GAAG,SAAS,EACjC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,GACpC,SAAS,GAAG,SAAS,CAYvB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAGzF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAEjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,WAAW,CAAC,EAAE,aAAa,GAAG,MAAM,CAM1F;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,YAAY,GAAG,YAAY,CAEhF;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAEnG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,eAAe,CAE9D;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,IAAI,EACV,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,GAC9D,IAAI,IAAI,eAAe,CASzB"}
|
package/dist/tasks.js
CHANGED
|
@@ -24,17 +24,6 @@ export function taskAgent(part) {
|
|
|
24
24
|
export function taskDescription(part) {
|
|
25
25
|
return normalizeTaskDescription(part.state.input.description) ?? normalizeTaskDescription(objectValue(part.state).title) ?? "Working";
|
|
26
26
|
}
|
|
27
|
-
|
|
28
|
-
/** Returns the latest visible assistant response as a single display line. */
|
|
29
|
-
export function latestAssistantText(messages, partsForMessage) {
|
|
30
|
-
for (let messageIndex = messages.length - 1; messageIndex >= 0; messageIndex -= 1) {
|
|
31
|
-
const message = messages[messageIndex];
|
|
32
|
-
if (!message || message.role !== "assistant") continue;
|
|
33
|
-
const text = partsForMessage(message.id).filter(part => part.type === "text" && !part.ignored).map(part => part.text).join(" ").replace(/\s+/g, " ").trim();
|
|
34
|
-
if (text) return text;
|
|
35
|
-
}
|
|
36
|
-
return undefined;
|
|
37
|
-
}
|
|
38
27
|
function taskMetadataModel(part) {
|
|
39
28
|
const model = objectValue(taskMetadata(part).model);
|
|
40
29
|
const providerID = stringValue(model.providerID);
|
package/dist/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","names":["objectValue","value","Array","isArray","stringValue","trim","undefined","taskMetadata","part","metadata","state","normalizeTaskDescription","text","replace","taskSessionID","sessionID","sessionId","taskAgent","input","subagent_type","taskDescription","description","title","latestAssistantText","messages","partsForMessage","messageIndex","length","message","role","id","filter","type","ignored","map","join","taskMetadataModel","model","providerID","modelID","childSessionModel","session","variant","childMessageModel","resolveTaskModel","childSession","childMessages","sessionModel","index","messageModel","taskModelLabel","displayName","taskVariantLabel","taskStatusLabel","childStatus","status","taskModeLabel","background","canOpenTaskSession","currentSessionID","Boolean","isTaskPart","tool","isVisibleTask","sessionStatus","childSessionID"],"sources":["../src/tasks.ts"],"sourcesContent":["import type { Message, Part, Session, SessionStatus, ToolPart } from \"@opencode-ai/sdk/v2\"\n\nexport type VisibleTaskPart = ToolPart\n\nexport type TaskModel = {\n providerID: string\n modelID: string\n variant?: string\n}\n\nfunction objectValue(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value) ? (value as Record<string, unknown>) : {}\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined\n}\n\nfunction taskMetadata(part: ToolPart): Record<string, unknown> {\n return { ...objectValue(part.metadata), ...objectValue(objectValue(part.state).metadata) }\n}\n\nexport function normalizeTaskDescription(value: unknown): string | undefined {\n const text = stringValue(value)\n return text\n ?.replace(/\\s+/g, \" \")\n .replace(/^[#>*_`\\-\\s]+/, \"\")\n .replace(/[*_`]/g, \"\")\n .trim() || undefined\n}\n\nexport function taskSessionID(part: ToolPart): string | undefined {\n const sessionID = taskMetadata(part).sessionId\n return stringValue(sessionID)\n}\n\nexport function taskAgent(part: VisibleTaskPart): string {\n return stringValue(part.state.input.subagent_type) ?? \"subagent\"\n}\n\nexport function taskDescription(part: VisibleTaskPart): string {\n return normalizeTaskDescription(part.state.input.description) ?? normalizeTaskDescription(objectValue(part.state).title) ?? \"Working\"\n}\n\n/** Returns the latest visible assistant response as a single display line. */\nexport function latestAssistantText(\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 text = partsForMessage(message.id)\n .filter((part): part is Extract<Part, { type: \"text\" }> => part.type === \"text\" && !part.ignored)\n .map((part) => part.text)\n .join(\" \")\n .replace(/\\s+/g, \" \")\n .trim()\n if (text) return text\n }\n return undefined\n}\n\nfunction taskMetadataModel(part: VisibleTaskPart): TaskModel | undefined {\n const model = objectValue(taskMetadata(part).model)\n const providerID = stringValue(model.providerID)\n const modelID = stringValue(model.modelID)\n // Task metadata is created before the child chooses a model variant. Do not\n // invent or retain a variant from this startup-only fallback.\n return providerID && modelID ? { providerID, modelID } : undefined\n}\n\nfunction childSessionModel(session: Session | undefined): TaskModel | undefined {\n const providerID = stringValue(session?.model?.providerID)\n const modelID = stringValue(session?.model?.id)\n const variant = stringValue(session?.model?.variant)\n return providerID && modelID ? { providerID, modelID, variant: variant ?? \"default\" } : undefined\n}\n\nfunction childMessageModel(message: Message): TaskModel | undefined {\n if (message.role === \"user\") {\n const providerID = stringValue(message.model.providerID)\n const modelID = stringValue(message.model.modelID)\n const variant = stringValue(message.model.variant)\n return providerID && modelID ? { providerID, modelID, variant: variant ?? \"default\" } : undefined\n }\n\n const providerID = stringValue(message.providerID)\n const modelID = stringValue(message.modelID)\n const variant = stringValue(message.variant)\n return providerID && modelID ? { providerID, modelID, variant: variant ?? \"default\" } : undefined\n}\n\nexport function resolveTaskModel(\n part: VisibleTaskPart,\n childSession: Session | undefined,\n childMessages: ReadonlyArray<Message>,\n): TaskModel | undefined {\n const sessionModel = childSessionModel(childSession)\n if (sessionModel) return sessionModel\n\n for (let index = childMessages.length - 1; index >= 0; index -= 1) {\n const message = childMessages[index]\n if (!message) continue\n const messageModel = childMessageModel(message)\n if (messageModel) return messageModel\n }\n\n return taskMetadataModel(part)\n}\n\nexport function taskModelLabel(model: TaskModel | undefined, displayName?: string): string {\n if (!model) return \"starting…\"\n return stringValue(displayName) ?? model.modelID\n}\n\nexport function taskVariantLabel(model: TaskModel | undefined): string | undefined {\n return model?.variant\n}\n\nexport function taskStatusLabel(part: VisibleTaskPart, childStatus?: SessionStatus): string {\n if (part.state.status === \"completed\" && childStatus && childStatus.type !== \"idle\") return \"Running\"\n if (part.state.status === \"pending\") return \"Pending\"\n if (part.state.status === \"running\") return \"Running\"\n if (part.state.status === \"completed\") return \"Completed\"\n return \"Failed\"\n}\n\nexport function taskModeLabel(part: VisibleTaskPart): \"Foreground\" | \"Background\" {\n return taskMetadata(part).background === true ? \"Background\" : \"Foreground\"\n}\n\nexport function canOpenTaskSession(sessionID: string | undefined, currentSessionID: string): boolean {\n return Boolean(sessionID && sessionID !== currentSessionID)\n}\n\nexport function isTaskPart(part: Part): part is VisibleTaskPart {\n return part.type === \"tool\" && part.tool === \"task\"\n}\n\nexport function isVisibleTask(\n part: Part,\n sessionStatus: (sessionID: string) => SessionStatus | undefined,\n): part is VisibleTaskPart {\n if (!isTaskPart(part)) return false\n if (part.state.status === \"pending\" || part.state.status === \"running\") return true\n if (part.state.status !== \"completed\" || taskMetadata(part).background !== true) return false\n\n const childSessionID = taskSessionID(part)\n if (!childSessionID) return false\n const status = sessionStatus(childSessionID)\n return status !== undefined && status.type !== \"idle\"\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"tasks.js","names":["objectValue","value","Array","isArray","stringValue","trim","undefined","taskMetadata","part","metadata","state","normalizeTaskDescription","text","replace","taskSessionID","sessionID","sessionId","taskAgent","input","subagent_type","taskDescription","description","title","taskMetadataModel","model","providerID","modelID","childSessionModel","session","id","variant","childMessageModel","message","role","resolveTaskModel","childSession","childMessages","sessionModel","index","length","messageModel","taskModelLabel","displayName","taskVariantLabel","taskStatusLabel","childStatus","status","type","taskModeLabel","background","canOpenTaskSession","currentSessionID","Boolean","isTaskPart","tool","isVisibleTask","sessionStatus","childSessionID"],"sources":["../src/tasks.ts"],"sourcesContent":["import type { Message, Part, Session, SessionStatus, ToolPart } from \"@opencode-ai/sdk/v2\"\n\nexport type VisibleTaskPart = ToolPart\n\nexport type TaskModel = {\n providerID: string\n modelID: string\n variant?: string\n}\n\nfunction objectValue(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\" && !Array.isArray(value) ? (value as Record<string, unknown>) : {}\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined\n}\n\nfunction taskMetadata(part: ToolPart): Record<string, unknown> {\n return { ...objectValue(part.metadata), ...objectValue(objectValue(part.state).metadata) }\n}\n\nexport function normalizeTaskDescription(value: unknown): string | undefined {\n const text = stringValue(value)\n return text\n ?.replace(/\\s+/g, \" \")\n .replace(/^[#>*_`\\-\\s]+/, \"\")\n .replace(/[*_`]/g, \"\")\n .trim() || undefined\n}\n\nexport function taskSessionID(part: ToolPart): string | undefined {\n const sessionID = taskMetadata(part).sessionId\n return stringValue(sessionID)\n}\n\nexport function taskAgent(part: VisibleTaskPart): string {\n return stringValue(part.state.input.subagent_type) ?? \"subagent\"\n}\n\nexport function taskDescription(part: VisibleTaskPart): string {\n return normalizeTaskDescription(part.state.input.description) ?? normalizeTaskDescription(objectValue(part.state).title) ?? \"Working\"\n}\n\nfunction taskMetadataModel(part: VisibleTaskPart): TaskModel | undefined {\n const model = objectValue(taskMetadata(part).model)\n const providerID = stringValue(model.providerID)\n const modelID = stringValue(model.modelID)\n // Task metadata is created before the child chooses a model variant. Do not\n // invent or retain a variant from this startup-only fallback.\n return providerID && modelID ? { providerID, modelID } : undefined\n}\n\nfunction childSessionModel(session: Session | undefined): TaskModel | undefined {\n const providerID = stringValue(session?.model?.providerID)\n const modelID = stringValue(session?.model?.id)\n const variant = stringValue(session?.model?.variant)\n return providerID && modelID ? { providerID, modelID, variant: variant ?? \"default\" } : undefined\n}\n\nfunction childMessageModel(message: Message): TaskModel | undefined {\n if (message.role === \"user\") {\n const providerID = stringValue(message.model.providerID)\n const modelID = stringValue(message.model.modelID)\n const variant = stringValue(message.model.variant)\n return providerID && modelID ? { providerID, modelID, variant: variant ?? \"default\" } : undefined\n }\n\n const providerID = stringValue(message.providerID)\n const modelID = stringValue(message.modelID)\n const variant = stringValue(message.variant)\n return providerID && modelID ? { providerID, modelID, variant: variant ?? \"default\" } : undefined\n}\n\nexport function resolveTaskModel(\n part: VisibleTaskPart,\n childSession: Session | undefined,\n childMessages: ReadonlyArray<Message>,\n): TaskModel | undefined {\n const sessionModel = childSessionModel(childSession)\n if (sessionModel) return sessionModel\n\n for (let index = childMessages.length - 1; index >= 0; index -= 1) {\n const message = childMessages[index]\n if (!message) continue\n const messageModel = childMessageModel(message)\n if (messageModel) return messageModel\n }\n\n return taskMetadataModel(part)\n}\n\nexport function taskModelLabel(model: TaskModel | undefined, displayName?: string): string {\n if (!model) return \"starting…\"\n return stringValue(displayName) ?? model.modelID\n}\n\nexport function taskVariantLabel(model: TaskModel | undefined): string | undefined {\n return model?.variant\n}\n\nexport function taskStatusLabel(part: VisibleTaskPart, childStatus?: SessionStatus): string {\n if (part.state.status === \"completed\" && childStatus && childStatus.type !== \"idle\") return \"Running\"\n if (part.state.status === \"pending\") return \"Pending\"\n if (part.state.status === \"running\") return \"Running\"\n if (part.state.status === \"completed\") return \"Completed\"\n return \"Failed\"\n}\n\nexport function taskModeLabel(part: VisibleTaskPart): \"Foreground\" | \"Background\" {\n return taskMetadata(part).background === true ? \"Background\" : \"Foreground\"\n}\n\nexport function canOpenTaskSession(sessionID: string | undefined, currentSessionID: string): boolean {\n return Boolean(sessionID && sessionID !== currentSessionID)\n}\n\nexport function isTaskPart(part: Part): part is VisibleTaskPart {\n return part.type === \"tool\" && part.tool === \"task\"\n}\n\nexport function isVisibleTask(\n part: Part,\n sessionStatus: (sessionID: string) => SessionStatus | undefined,\n): part is VisibleTaskPart {\n if (!isTaskPart(part)) return false\n if (part.state.status === \"pending\" || part.state.status === \"running\") return true\n if (part.state.status !== \"completed\" || taskMetadata(part).background !== true) return false\n\n const childSessionID = taskSessionID(part)\n if (!childSessionID) return false\n const status = sessionStatus(childSessionID)\n return status !== undefined && status.type !== \"idle\"\n}\n"],"mappings":"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","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"}
|