@mageyuki/opencode-subagent-statusline 0.0.0-stage → 0.7.1
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/LICENSE +21 -0
- package/README.md +265 -2
- package/assets/opencode_full.webp +0 -0
- package/assets/opencode_sidebar.webp +0 -0
- package/assets/subagents_monitor_banner.webp +0 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +1505 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/tui-v1.d.ts +130 -0
- package/dist/tui-v1.js +4380 -0
- package/dist/tui-v2.d.ts +5 -0
- package/dist/tui-v2.js +2922 -0
- package/dist/tui.d.ts +7 -0
- package/dist/tui.js +15 -0
- package/package.json +105 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"src/reconcile.ts":{"bytes":14661,"imports":[],"format":"esm"},"src/internal-policy.ts":{"bytes":683,"imports":[],"format":"esm"},"src/subagent-classification.ts":{"bytes":5658,"imports":[],"format":"esm"},"src/state.ts":{"bytes":23087,"imports":[{"path":"crypto","kind":"import-statement","external":true},{"path":"fs/promises","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"os","kind":"import-statement","external":true},{"path":"src/internal-policy.ts","kind":"import-statement","original":"./internal-policy.js"},{"path":"src/subagent-classification.ts","kind":"import-statement","original":"./subagent-classification.js"}],"format":"esm"},"src/events.ts":{"bytes":30594,"imports":[{"path":"src/reconcile.ts","kind":"import-statement","original":"./reconcile.js"},{"path":"src/state.ts","kind":"import-statement","original":"./state.js"}],"format":"esm"},"src/render.ts":{"bytes":7065,"imports":[{"path":"src/state.ts","kind":"import-statement","original":"./state.js"},{"path":"src/subagent-classification.ts","kind":"import-statement","original":"./subagent-classification.js"}],"format":"esm"},"src/index.ts":{"bytes":1269,"imports":[{"path":"src/events.ts","kind":"import-statement","original":"./events.js"},{"path":"src/render.ts","kind":"import-statement","original":"./render.js"},{"path":"src/state.ts","kind":"import-statement","original":"./state.js"}],"format":"esm"},"src/logs.ts":{"bytes":514,"imports":[{"path":"fs","kind":"import-statement","external":true},{"path":"src/internal-policy.ts","kind":"import-statement","original":"./internal-policy.js"}],"format":"esm"},"src/tui-focus.ts":{"bytes":2463,"imports":[],"format":"esm"},"src/text-width.ts":{"bytes":2418,"imports":[],"format":"esm"},"src/tui-commands.ts":{"bytes":5379,"imports":[],"format":"esm"},"src/i18n.ts":{"bytes":2058,"imports":[],"format":"esm"},"src/tui-view.tsx":{"bytes":185866,"imports":[{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"module","kind":"import-statement","external":true},{"path":"solid-js","kind":"import-statement","external":true},{"path":"src/render.ts","kind":"import-statement","original":"./render.js"},{"path":"src/state.ts","kind":"import-statement","original":"./state.js"},{"path":"src/text-width.ts","kind":"import-statement","original":"./text-width.js"},{"path":"src/tui-focus.ts","kind":"import-statement","original":"./tui-focus.js"},{"path":"src/i18n.ts","kind":"import-statement","original":"./i18n.js"}],"format":"esm"},"src/tui-v1.tsx":{"bytes":208703,"imports":[{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"child_process","kind":"import-statement","external":true},{"path":"fs","kind":"import-statement","external":true},{"path":"os","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"solid-js","kind":"import-statement","external":true},{"path":"src/events.ts","kind":"import-statement","original":"./events.js"},{"path":"src/logs.ts","kind":"import-statement","original":"./logs.js"},{"path":"src/internal-policy.ts","kind":"import-statement","original":"./internal-policy.js"},{"path":"src/render.ts","kind":"import-statement","original":"./render.js"},{"path":"src/reconcile.ts","kind":"import-statement","original":"./reconcile.js"},{"path":"src/tui-focus.ts","kind":"import-statement","original":"./tui-focus.js"},{"path":"src/state.ts","kind":"import-statement","original":"./state.js"},{"path":"src/text-width.ts","kind":"import-statement","original":"./text-width.js"},{"path":"src/tui-commands.ts","kind":"import-statement","original":"./tui-commands.js"},{"path":"src/tui-view.tsx","kind":"import-statement","original":"./tui-view.js"},{"path":"src/tui-view.tsx","kind":"import-statement","original":"./tui-view.js"}],"format":"esm"},"src/tui-v2-state.ts":{"bytes":21388,"imports":[{"path":"src/state.ts","kind":"import-statement","original":"./state.js"},{"path":"src/reconcile.ts","kind":"import-statement","original":"./reconcile.js"},{"path":"src/internal-policy.ts","kind":"import-statement","original":"./internal-policy.js"}],"format":"esm"},"src/tui-v2-snapshot.ts":{"bytes":2234,"imports":[{"path":"path","kind":"import-statement","external":true},{"path":"src/render.ts","kind":"import-statement","original":"./render.js"},{"path":"src/state.ts","kind":"import-statement","original":"./state.js"}],"format":"esm"},"src/tui-v2-focus.ts":{"bytes":3258,"imports":[{"path":"src/internal-policy.ts","kind":"import-statement","original":"./internal-policy.js"}],"format":"esm"},"src/tui-v2.tsx":{"bytes":56501,"imports":[{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opencode/plugin/tui","kind":"import-statement","external":true},{"path":"solid-js","kind":"import-statement","external":true},{"path":"src/state.ts","kind":"import-statement","original":"./state.js"},{"path":"src/text-width.ts","kind":"import-statement","original":"./text-width.js"},{"path":"src/i18n.ts","kind":"import-statement","original":"./i18n.js"},{"path":"src/tui-v2-state.ts","kind":"import-statement","original":"./tui-v2-state.js"},{"path":"src/tui-v2-snapshot.ts","kind":"import-statement","original":"./tui-v2-snapshot.js"},{"path":"src/tui-v2-focus.ts","kind":"import-statement","original":"./tui-v2-focus.js"},{"path":"src/tui-view.tsx","kind":"import-statement","original":"./tui-view.js"}],"format":"esm"}},"outputs":{"dist/index.js":{"imports":[{"path":"crypto","kind":"import-statement","external":true},{"path":"fs/promises","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"os","kind":"import-statement","external":true}],"exports":["SubagentStatusline"],"entryPoint":"src/index.ts","inputs":{"src/reconcile.ts":{"bytesInOutput":2406},"src/state.ts":{"bytesInOutput":17204},"src/internal-policy.ts":{"bytesInOutput":129},"src/subagent-classification.ts":{"bytesInOutput":3623},"src/events.ts":{"bytesInOutput":25393},"src/render.ts":{"bytesInOutput":4951},"src/index.ts":{"bytesInOutput":737}},"bytes":54645},"dist/tui-v1.js":{"imports":[{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"child_process","kind":"import-statement","external":true},{"path":"fs","kind":"import-statement","external":true},{"path":"os","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"solid-js","kind":"import-statement","external":true},{"path":"crypto","kind":"import-statement","external":true},{"path":"fs/promises","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"os","kind":"import-statement","external":true},{"path":"fs","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"module","kind":"import-statement","external":true},{"path":"solid-js","kind":"import-statement","external":true}],"exports":["backfillHydratedTargetSessionIDs","createTuiMaintenanceTimers","default","formatChildModelLine","hydratePreviousSubagents","preservedSidebarAnchorScrollTop","preservedSidebarScrollTop","probeRunningEvidence","resolveSidebarSubagentSnapshot","resolveTuiSubagentSnapshot","runTuiStateMaintenance","subagentRowHeight","wrapCompactText"],"entryPoint":"src/tui-v1.tsx","inputs":{"src/tui-v1.tsx":{"bytesInOutput":48658},"src/reconcile.ts":{"bytesInOutput":11104},"src/state.ts":{"bytesInOutput":16278},"src/internal-policy.ts":{"bytesInOutput":260},"src/subagent-classification.ts":{"bytesInOutput":3623},"src/events.ts":{"bytesInOutput":25454},"src/logs.ts":{"bytesInOutput":375},"src/render.ts":{"bytesInOutput":4953},"src/tui-focus.ts":{"bytesInOutput":1490},"src/text-width.ts":{"bytesInOutput":2049},"src/tui-commands.ts":{"bytesInOutput":3943},"src/tui-view.tsx":{"bytesInOutput":46983},"src/i18n.ts":{"bytesInOutput":1157}},"bytes":167034},"dist/tui-v2.js":{"imports":[{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opencode/plugin/tui","kind":"import-statement","external":true},{"path":"solid-js","kind":"import-statement","external":true},{"path":"crypto","kind":"import-statement","external":true},{"path":"fs/promises","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"os","kind":"import-statement","external":true},{"path":"path","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"@opentui/solid","kind":"import-statement","external":true},{"path":"module","kind":"import-statement","external":true},{"path":"solid-js","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/tui-v2.tsx","inputs":{"src/tui-v2.tsx":{"bytesInOutput":14544},"src/state.ts":{"bytesInOutput":16284},"src/internal-policy.ts":{"bytesInOutput":359},"src/subagent-classification.ts":{"bytesInOutput":3623},"src/text-width.ts":{"bytesInOutput":2049},"src/i18n.ts":{"bytesInOutput":1157},"src/reconcile.ts":{"bytesInOutput":354},"src/tui-v2-state.ts":{"bytesInOutput":16656},"src/tui-v2-snapshot.ts":{"bytesInOutput":1354},"src/render.ts":{"bytesInOutput":4953},"src/tui-v2-focus.ts":{"bytesInOutput":2333},"src/tui-view.tsx":{"bytesInOutput":46816},"src/tui-focus.ts":{"bytesInOutput":155}},"bytes":111052}}}
|
package/dist/tui-v1.d.ts
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { TuiPluginModule, TuiPluginApi } from '@opencode-ai/plugin/tui';
|
|
2
|
+
|
|
3
|
+
type RunningReconcileEvidence = {
|
|
4
|
+
status?: "running" | "done" | "error";
|
|
5
|
+
endedAt?: string;
|
|
6
|
+
checkedMessages?: boolean;
|
|
7
|
+
sawRunningEvidence?: boolean;
|
|
8
|
+
probeFailed?: boolean;
|
|
9
|
+
canApplyStaleFallback?: boolean;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
type ChildStatus = "running" | "done" | "error";
|
|
13
|
+
interface ChildTokenState {
|
|
14
|
+
input?: number;
|
|
15
|
+
output?: number;
|
|
16
|
+
total?: number;
|
|
17
|
+
contextPercent?: number;
|
|
18
|
+
}
|
|
19
|
+
interface ChildModelState {
|
|
20
|
+
providerID: string;
|
|
21
|
+
modelID: string;
|
|
22
|
+
variant?: string;
|
|
23
|
+
}
|
|
24
|
+
interface ChildSessionState {
|
|
25
|
+
id: string;
|
|
26
|
+
title: string;
|
|
27
|
+
summary?: string;
|
|
28
|
+
agentName?: string;
|
|
29
|
+
parentID: string;
|
|
30
|
+
messageID?: string;
|
|
31
|
+
source?: "session" | "subtask" | "tool";
|
|
32
|
+
toolName?: string;
|
|
33
|
+
targetSessionID?: string;
|
|
34
|
+
status: ChildStatus;
|
|
35
|
+
color: "yellow" | "green" | "red";
|
|
36
|
+
startedAt: string;
|
|
37
|
+
updatedAt: string;
|
|
38
|
+
endedAt?: string;
|
|
39
|
+
elapsedMs?: number;
|
|
40
|
+
tokens?: ChildTokenState;
|
|
41
|
+
model?: ChildModelState;
|
|
42
|
+
}
|
|
43
|
+
interface StatuslineState {
|
|
44
|
+
children: Record<string, ChildSessionState>;
|
|
45
|
+
countedChildIDs: Record<string, true>;
|
|
46
|
+
totalExecuted: number;
|
|
47
|
+
updatedAt: string;
|
|
48
|
+
}
|
|
49
|
+
interface StatusCounts {
|
|
50
|
+
running: number;
|
|
51
|
+
done: number;
|
|
52
|
+
error: number;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
interface SidebarScrollAnchor {
|
|
56
|
+
childIDs: string[];
|
|
57
|
+
intraRowOffset: number;
|
|
58
|
+
}
|
|
59
|
+
interface SidebarScrollRowLayout {
|
|
60
|
+
id: string;
|
|
61
|
+
height: number;
|
|
62
|
+
}
|
|
63
|
+
declare function preservedSidebarAnchorScrollTop(input: {
|
|
64
|
+
expanded: boolean;
|
|
65
|
+
anchor?: SidebarScrollAnchor;
|
|
66
|
+
rows: SidebarScrollRowLayout[];
|
|
67
|
+
leadingHeight?: number;
|
|
68
|
+
scrollTop: number;
|
|
69
|
+
scrollHeight: number;
|
|
70
|
+
viewportHeight: number;
|
|
71
|
+
}): number | undefined;
|
|
72
|
+
declare function preservedSidebarScrollTop(input: {
|
|
73
|
+
expanded: boolean;
|
|
74
|
+
offsetTop: number;
|
|
75
|
+
anchor?: SidebarScrollAnchor;
|
|
76
|
+
rows?: SidebarScrollRowLayout[];
|
|
77
|
+
leadingHeight?: number;
|
|
78
|
+
scrollTop: number;
|
|
79
|
+
scrollHeight: number;
|
|
80
|
+
viewportHeight: number;
|
|
81
|
+
}): number | undefined;
|
|
82
|
+
declare function wrapCompactText(value: string, width: number, maxLines: number): string[];
|
|
83
|
+
declare function subagentRowHeight(input: {
|
|
84
|
+
child: ChildSessionState;
|
|
85
|
+
nowMs: number;
|
|
86
|
+
sidebarWidth?: number;
|
|
87
|
+
reservedWidth?: number;
|
|
88
|
+
usageLabel?: string;
|
|
89
|
+
childHint?: string;
|
|
90
|
+
}): number;
|
|
91
|
+
interface TuiSubagentSnapshot {
|
|
92
|
+
visibleChildren: ChildSessionState[];
|
|
93
|
+
visibleCounts: StatusCounts;
|
|
94
|
+
totalExecuted: number;
|
|
95
|
+
showingOtherSessions: boolean;
|
|
96
|
+
}
|
|
97
|
+
declare function resolveTuiSubagentSnapshot(input: {
|
|
98
|
+
state: StatuslineState;
|
|
99
|
+
sessionID?: string;
|
|
100
|
+
nowMs?: number;
|
|
101
|
+
showCompletedHistory?: boolean;
|
|
102
|
+
}): TuiSubagentSnapshot;
|
|
103
|
+
declare function resolveSidebarSubagentSnapshot(input: {
|
|
104
|
+
state: StatuslineState;
|
|
105
|
+
sessionID: string;
|
|
106
|
+
nowMs?: number;
|
|
107
|
+
showCompletedHistory?: boolean;
|
|
108
|
+
}): TuiSubagentSnapshot;
|
|
109
|
+
|
|
110
|
+
declare function runTuiStateMaintenance(api: TuiPluginApi, current: StatuslineState): StatuslineState;
|
|
111
|
+
declare function createTuiMaintenanceTimers(input: {
|
|
112
|
+
onElapsedTick: () => void;
|
|
113
|
+
onMaintenanceTick: () => void;
|
|
114
|
+
}): {
|
|
115
|
+
syncElapsedTimer: (hasRunningChild: boolean) => void;
|
|
116
|
+
dispose: () => void;
|
|
117
|
+
};
|
|
118
|
+
declare function backfillHydratedTargetSessionIDs(state: StatuslineState, parentSessionID: string): boolean;
|
|
119
|
+
declare function formatChildModelLine(child: ChildSessionState, providers: TuiPluginApi["state"]["provider"], width: number): string | undefined;
|
|
120
|
+
declare function hydratePreviousSubagents(api: TuiPluginApi, currentSessionID: string, statePath: string, textPath: string, setState: (fn: (prev: StatuslineState) => StatuslineState) => void): Promise<boolean>;
|
|
121
|
+
declare function probeRunningEvidence(input: {
|
|
122
|
+
api: TuiPluginApi;
|
|
123
|
+
targetSessionID: string;
|
|
124
|
+
directory: string;
|
|
125
|
+
candidateAgeMs: number;
|
|
126
|
+
nowMs: number;
|
|
127
|
+
}): Promise<RunningReconcileEvidence>;
|
|
128
|
+
declare const plugin: TuiPluginModule;
|
|
129
|
+
|
|
130
|
+
export { type SidebarScrollAnchor, type SidebarScrollRowLayout, type TuiSubagentSnapshot, backfillHydratedTargetSessionIDs, createTuiMaintenanceTimers, plugin as default, formatChildModelLine, hydratePreviousSubagents, preservedSidebarAnchorScrollTop, preservedSidebarScrollTop, probeRunningEvidence, resolveSidebarSubagentSnapshot, resolveTuiSubagentSnapshot, runTuiStateMaintenance, subagentRowHeight, wrapCompactText };
|