opencode-subagents-sidebar-plugin 0.1.3 → 0.1.5
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 -5
- 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/tasks.d.ts +2 -0
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +11 -0
- package/dist/tasks.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +443 -251
- package/dist/tui.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,11 +6,17 @@ parent session (or when viewing one of its child sessions).
|
|
|
6
6
|
|
|
7
7
|
Each subagent uses a compact 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
|
-
model details
|
|
13
|
-
|
|
9
|
+
right-aligned elapsed runtime. Click anywhere on a card to open a non-modal,
|
|
10
|
+
live popover attached to that card (left first, then right, with above/below
|
|
11
|
+
fallbacks on narrow terminals). It shows status, foreground/background mode,
|
|
12
|
+
child session ID, model details, and the newest visible assistant reply as a
|
|
13
|
+
single truncated line. When the public TUI state has not populated the child
|
|
14
|
+
transcript yet, the plugin hydrates it without overriding newer live state. It
|
|
15
|
+
waits for the child session or assistant reply when that information is not
|
|
16
|
+
available yet. Opening another card replaces the popover; navigating away,
|
|
17
|
+
opening a host dialog, or closing the popover dismisses it. The popup's **Open
|
|
18
|
+
Session** action is available once the child session exists (unless it is
|
|
19
|
+
already open); **Close** dismisses the popover.
|
|
14
20
|
Completed tasks are hidden unless OpenCode still reports their background child
|
|
15
21
|
session as active.
|
|
16
22
|
|
|
@@ -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/tasks.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ 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;
|
|
12
14
|
export declare function resolveTaskModel(part: VisibleTaskPart, childSession: Session | undefined, childMessages: ReadonlyArray<Message>): TaskModel | undefined;
|
|
13
15
|
export declare function taskModelLabel(model: TaskModel | undefined, displayName?: string): string;
|
|
14
16
|
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;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"}
|
|
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;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,EAChC,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,aAAa,CAAC,IAAI,CAAC,GAC1D,MAAM,GAAG,SAAS,CAcpB;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,6 +24,17 @@ 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
|
+
}
|
|
27
38
|
function taskMetadataModel(part) {
|
|
28
39
|
const model = objectValue(taskMetadata(part).model);
|
|
29
40
|
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","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":[]}
|
|
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":[]}
|
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;AAknBvF,QAAA,MAAM,MAAM;;;CAGe,CAAA;AAE3B,eAAe,MAAM,CAAA"}
|