@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.
@@ -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}}}
@@ -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 };