@elaraai/e3-ui-cli 1.0.72 → 1.0.74

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.
Files changed (220) hide show
  1. package/README.md +46 -21
  2. package/bin/e3-ui.mjs +6 -0
  3. package/dist/app/assets/{engine-BKZbmXkC-DmcCFcnb.js → engine-Bm-cIDd_-DwUdGcTZ.js} +1 -1
  4. package/dist/app/assets/{index-BJNWHnRv.js → index-mj-YVVN1.js} +91 -91
  5. package/dist/app/index.html +1 -1
  6. package/dist/cli.js +36 -5
  7. package/dist/cli.js.map +1 -1
  8. package/dist/commands/tui.d.ts +84 -0
  9. package/dist/commands/tui.d.ts.map +1 -0
  10. package/dist/commands/tui.js +89 -0
  11. package/dist/commands/tui.js.map +1 -0
  12. package/dist/tui/api.d.ts +108 -0
  13. package/dist/tui/api.d.ts.map +1 -0
  14. package/dist/tui/api.js +130 -0
  15. package/dist/tui/api.js.map +1 -0
  16. package/dist/tui/app.d.ts +23 -0
  17. package/dist/tui/app.d.ts.map +1 -0
  18. package/dist/tui/app.js +244 -0
  19. package/dist/tui/app.js.map +1 -0
  20. package/dist/tui/controller.d.ts +116 -0
  21. package/dist/tui/controller.d.ts.map +1 -0
  22. package/dist/tui/controller.js +644 -0
  23. package/dist/tui/controller.js.map +1 -0
  24. package/dist/tui/data/dataflow.d.ts +68 -0
  25. package/dist/tui/data/dataflow.d.ts.map +1 -0
  26. package/dist/tui/data/dataflow.js +137 -0
  27. package/dist/tui/data/dataflow.js.map +1 -0
  28. package/dist/tui/data/dataset.d.ts +80 -0
  29. package/dist/tui/data/dataset.d.ts.map +1 -0
  30. package/dist/tui/data/dataset.js +297 -0
  31. package/dist/tui/data/dataset.js.map +1 -0
  32. package/dist/tui/data/edit-buffer.d.ts +74 -0
  33. package/dist/tui/data/edit-buffer.d.ts.map +1 -0
  34. package/dist/tui/data/edit-buffer.js +120 -0
  35. package/dist/tui/data/edit-buffer.js.map +1 -0
  36. package/dist/tui/data/feeds.d.ts +45 -0
  37. package/dist/tui/data/feeds.d.ts.map +1 -0
  38. package/dist/tui/data/feeds.js +318 -0
  39. package/dist/tui/data/feeds.js.map +1 -0
  40. package/dist/tui/data/logs.d.ts +68 -0
  41. package/dist/tui/data/logs.d.ts.map +1 -0
  42. package/dist/tui/data/logs.js +134 -0
  43. package/dist/tui/data/logs.js.map +1 -0
  44. package/dist/tui/input/commands.d.ts +159 -0
  45. package/dist/tui/input/commands.d.ts.map +1 -0
  46. package/dist/tui/input/commands.js +259 -0
  47. package/dist/tui/input/commands.js.map +1 -0
  48. package/dist/tui/input/completion.d.ts +63 -0
  49. package/dist/tui/input/completion.d.ts.map +1 -0
  50. package/dist/tui/input/completion.js +128 -0
  51. package/dist/tui/input/completion.js.map +1 -0
  52. package/dist/tui/input/keymap.d.ts +153 -0
  53. package/dist/tui/input/keymap.d.ts.map +1 -0
  54. package/dist/tui/input/keymap.js +206 -0
  55. package/dist/tui/input/keymap.js.map +1 -0
  56. package/dist/tui/input/mouse.d.ts +52 -0
  57. package/dist/tui/input/mouse.d.ts.map +1 -0
  58. package/dist/tui/input/mouse.js +55 -0
  59. package/dist/tui/input/mouse.js.map +1 -0
  60. package/dist/tui/lifecycle.d.ts +61 -0
  61. package/dist/tui/lifecycle.d.ts.map +1 -0
  62. package/dist/tui/lifecycle.js +99 -0
  63. package/dist/tui/lifecycle.js.map +1 -0
  64. package/dist/tui/model/catalogue.d.ts +28 -0
  65. package/dist/tui/model/catalogue.d.ts.map +1 -0
  66. package/dist/tui/model/catalogue.js +94 -0
  67. package/dist/tui/model/catalogue.js.map +1 -0
  68. package/dist/tui/model/help.d.ts +37 -0
  69. package/dist/tui/model/help.d.ts.map +1 -0
  70. package/dist/tui/model/help.js +210 -0
  71. package/dist/tui/model/help.js.map +1 -0
  72. package/dist/tui/model/index.d.ts +42 -0
  73. package/dist/tui/model/index.d.ts.map +1 -0
  74. package/dist/tui/model/index.js +50 -0
  75. package/dist/tui/model/index.js.map +1 -0
  76. package/dist/tui/model/status.d.ts +88 -0
  77. package/dist/tui/model/status.d.ts.map +1 -0
  78. package/dist/tui/model/status.js +137 -0
  79. package/dist/tui/model/status.js.map +1 -0
  80. package/dist/tui/model/tree.d.ts +126 -0
  81. package/dist/tui/model/tree.d.ts.map +1 -0
  82. package/dist/tui/model/tree.js +217 -0
  83. package/dist/tui/model/tree.js.map +1 -0
  84. package/dist/tui/model/types.d.ts +21 -0
  85. package/dist/tui/model/types.d.ts.map +1 -0
  86. package/dist/tui/model/types.js +46 -0
  87. package/dist/tui/model/types.js.map +1 -0
  88. package/dist/tui/render/glyphs.d.ts +122 -0
  89. package/dist/tui/render/glyphs.d.ts.map +1 -0
  90. package/dist/tui/render/glyphs.js +122 -0
  91. package/dist/tui/render/glyphs.js.map +1 -0
  92. package/dist/tui/render/layout.d.ts +145 -0
  93. package/dist/tui/render/layout.d.ts.map +1 -0
  94. package/dist/tui/render/layout.js +209 -0
  95. package/dist/tui/render/layout.js.map +1 -0
  96. package/dist/tui/render/text.d.ts +153 -0
  97. package/dist/tui/render/text.d.ts.map +1 -0
  98. package/dist/tui/render/text.js +320 -0
  99. package/dist/tui/render/text.js.map +1 -0
  100. package/dist/tui/render/theme.d.ts +88 -0
  101. package/dist/tui/render/theme.d.ts.map +1 -0
  102. package/dist/tui/render/theme.js +145 -0
  103. package/dist/tui/render/theme.js.map +1 -0
  104. package/dist/tui/session.d.ts +78 -0
  105. package/dist/tui/session.d.ts.map +1 -0
  106. package/dist/tui/session.js +237 -0
  107. package/dist/tui/session.js.map +1 -0
  108. package/dist/tui/state/actions.d.ts +584 -0
  109. package/dist/tui/state/actions.d.ts.map +1 -0
  110. package/dist/tui/state/actions.js +62 -0
  111. package/dist/tui/state/actions.js.map +1 -0
  112. package/dist/tui/state/persist.d.ts +114 -0
  113. package/dist/tui/state/persist.d.ts.map +1 -0
  114. package/dist/tui/state/persist.js +187 -0
  115. package/dist/tui/state/persist.js.map +1 -0
  116. package/dist/tui/state/poll.d.ts +99 -0
  117. package/dist/tui/state/poll.d.ts.map +1 -0
  118. package/dist/tui/state/poll.js +160 -0
  119. package/dist/tui/state/poll.js.map +1 -0
  120. package/dist/tui/state/reducer.d.ts +16 -0
  121. package/dist/tui/state/reducer.d.ts.map +1 -0
  122. package/dist/tui/state/reducer.js +363 -0
  123. package/dist/tui/state/reducer.js.map +1 -0
  124. package/dist/tui/state/store.d.ts +37 -0
  125. package/dist/tui/state/store.d.ts.map +1 -0
  126. package/dist/tui/state/store.js +84 -0
  127. package/dist/tui/state/store.js.map +1 -0
  128. package/dist/tui/suspend.d.ts +17 -0
  129. package/dist/tui/suspend.d.ts.map +1 -0
  130. package/dist/tui/suspend.js +33 -0
  131. package/dist/tui/suspend.js.map +1 -0
  132. package/dist/tui/ui/App.d.ts +44 -0
  133. package/dist/tui/ui/App.d.ts.map +1 -0
  134. package/dist/tui/ui/App.js +105 -0
  135. package/dist/tui/ui/App.js.map +1 -0
  136. package/dist/tui/ui/frame.d.ts +86 -0
  137. package/dist/tui/ui/frame.d.ts.map +1 -0
  138. package/dist/tui/ui/frame.js +42 -0
  139. package/dist/tui/ui/frame.js.map +1 -0
  140. package/dist/tui/ui/lines.d.ts +92 -0
  141. package/dist/tui/ui/lines.d.ts.map +1 -0
  142. package/dist/tui/ui/lines.js +94 -0
  143. package/dist/tui/ui/lines.js.map +1 -0
  144. package/dist/tui/ui/shell/chrome.d.ts +61 -0
  145. package/dist/tui/ui/shell/chrome.d.ts.map +1 -0
  146. package/dist/tui/ui/shell/chrome.js +272 -0
  147. package/dist/tui/ui/shell/chrome.js.map +1 -0
  148. package/dist/tui/ui/shell/widgets.d.ts +116 -0
  149. package/dist/tui/ui/shell/widgets.d.ts.map +1 -0
  150. package/dist/tui/ui/shell/widgets.js +183 -0
  151. package/dist/tui/ui/shell/widgets.js.map +1 -0
  152. package/dist/tui/ui/views/about.d.ts +20 -0
  153. package/dist/tui/ui/views/about.d.ts.map +1 -0
  154. package/dist/tui/ui/views/about.js +40 -0
  155. package/dist/tui/ui/views/about.js.map +1 -0
  156. package/dist/tui/ui/views/all.d.ts +17 -0
  157. package/dist/tui/ui/views/all.d.ts.map +1 -0
  158. package/dist/tui/ui/views/all.js +17 -0
  159. package/dist/tui/ui/views/all.js.map +1 -0
  160. package/dist/tui/ui/views/dashboard.d.ts +211 -0
  161. package/dist/tui/ui/views/dashboard.d.ts.map +1 -0
  162. package/dist/tui/ui/views/dashboard.js +651 -0
  163. package/dist/tui/ui/views/dashboard.js.map +1 -0
  164. package/dist/tui/ui/views/help.d.ts +17 -0
  165. package/dist/tui/ui/views/help.d.ts.map +1 -0
  166. package/dist/tui/ui/views/help.js +65 -0
  167. package/dist/tui/ui/views/help.js.map +1 -0
  168. package/dist/tui/ui/views/index.d.ts +42 -0
  169. package/dist/tui/ui/views/index.d.ts.map +1 -0
  170. package/dist/tui/ui/views/index.js +42 -0
  171. package/dist/tui/ui/views/index.js.map +1 -0
  172. package/dist/tui/ui/views/input.d.ts +6 -0
  173. package/dist/tui/ui/views/input.d.ts.map +1 -0
  174. package/dist/tui/ui/views/input.js +494 -0
  175. package/dist/tui/ui/views/input.js.map +1 -0
  176. package/dist/tui/ui/views/launch.d.ts +16 -0
  177. package/dist/tui/ui/views/launch.d.ts.map +1 -0
  178. package/dist/tui/ui/views/launch.js +43 -0
  179. package/dist/tui/ui/views/launch.js.map +1 -0
  180. package/dist/tui/ui/views/refusal.d.ts +20 -0
  181. package/dist/tui/ui/views/refusal.d.ts.map +1 -0
  182. package/dist/tui/ui/views/refusal.js +47 -0
  183. package/dist/tui/ui/views/refusal.js.map +1 -0
  184. package/dist/tui/ui/views/repos.d.ts +10 -0
  185. package/dist/tui/ui/views/repos.d.ts.map +1 -0
  186. package/dist/tui/ui/views/repos.js +93 -0
  187. package/dist/tui/ui/views/repos.js.map +1 -0
  188. package/dist/tui/ui/views/task.d.ts +17 -0
  189. package/dist/tui/ui/views/task.d.ts.map +1 -0
  190. package/dist/tui/ui/views/task.js +309 -0
  191. package/dist/tui/ui/views/task.js.map +1 -0
  192. package/dist/tui/ui/views/wordmark.d.ts +15 -0
  193. package/dist/tui/ui/views/wordmark.d.ts.map +1 -0
  194. package/dist/tui/ui/views/wordmark.js +50 -0
  195. package/dist/tui/ui/views/wordmark.js.map +1 -0
  196. package/dist/tui/ui/views/workspaces.d.ts +17 -0
  197. package/dist/tui/ui/views/workspaces.d.ts.map +1 -0
  198. package/dist/tui/ui/views/workspaces.js +127 -0
  199. package/dist/tui/ui/views/workspaces.js.map +1 -0
  200. package/dist/tui/ui/widgets/leaf-editor.d.ts +58 -0
  201. package/dist/tui/ui/widgets/leaf-editor.d.ts.map +1 -0
  202. package/dist/tui/ui/widgets/leaf-editor.js +119 -0
  203. package/dist/tui/ui/widgets/leaf-editor.js.map +1 -0
  204. package/dist/tui/ui/widgets/logs.d.ts +99 -0
  205. package/dist/tui/ui/widgets/logs.d.ts.map +1 -0
  206. package/dist/tui/ui/widgets/logs.js +291 -0
  207. package/dist/tui/ui/widgets/logs.js.map +1 -0
  208. package/dist/tui/ui/widgets/reads.d.ts +62 -0
  209. package/dist/tui/ui/widgets/reads.d.ts.map +1 -0
  210. package/dist/tui/ui/widgets/reads.js +122 -0
  211. package/dist/tui/ui/widgets/reads.js.map +1 -0
  212. package/dist/tui/ui/widgets/runs.d.ts +51 -0
  213. package/dist/tui/ui/widgets/runs.d.ts.map +1 -0
  214. package/dist/tui/ui/widgets/runs.js +86 -0
  215. package/dist/tui/ui/widgets/runs.js.map +1 -0
  216. package/dist/tui/ui/widgets/tree.d.ts +149 -0
  217. package/dist/tui/ui/widgets/tree.d.ts.map +1 -0
  218. package/dist/tui/ui/widgets/tree.js +584 -0
  219. package/dist/tui/ui/widgets/tree.js.map +1 -0
  220. package/package.json +22 -12
@@ -0,0 +1,584 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /**
6
+ * The store's state and action types.
7
+ *
8
+ * One immutable `TuiState` holds the current view (with its selection,
9
+ * scroll and expand state), the back-stack, the command box, the toast,
10
+ * the terminal size, the session, the connection pill, the editable-input
11
+ * draft, and a `data` slice the pollers fill. Views are dumb renderers over
12
+ * selectors; every key press becomes an {@link Action} the pure reducer
13
+ * applies.
14
+ *
15
+ * @packageDocumentation
16
+ */
17
+ import type { EastTypeValue, ValueTypeOf } from '@elaraai/east';
18
+ import type { DataflowEvent, DataflowExecutionState, DatasetStatusDetail, ExecutionListItem, ListEntry, RepositoryStatus, TaskDetails, TaskListItem, WorkspaceInfo, WorkspaceStatusResult } from '@elaraai/e3-api-client';
19
+ import type { WorkspaceState } from '@elaraai/e3-types';
20
+ import type { ValueTree, ValueTreePagedRow } from '@elaraai/east-ui/internal';
21
+ import type { ConnectionState } from './poll.js';
22
+ import type { Size } from '../render/layout.js';
23
+ import type { Tone } from '../render/theme.js';
24
+ export type { Size, ConnectionState };
25
+ /** The decoded value of a materialized ValueTree node. */
26
+ export type ValueTreeNodeValue = ValueTypeOf<typeof ValueTree.Types.Node>;
27
+ /** The decoded value of one ValueTree path step. */
28
+ export type ValueTreeStepValue = ValueTypeOf<typeof ValueTree.Types.Step>;
29
+ /** A selected row and the first visible row of a list. */
30
+ export interface ListUi {
31
+ sel: number;
32
+ top: number;
33
+ }
34
+ /** A held key-search match: the range and the position within it. */
35
+ export interface MatchUi {
36
+ /** First matched root row. */
37
+ row: number;
38
+ /** Matched rows. */
39
+ count: number;
40
+ /** The current position within the range (0-based). */
41
+ index: number;
42
+ /** The query text, for the command box status. */
43
+ text: string;
44
+ /** The query form. */
45
+ form: 'exact' | 'prefix' | 'fields';
46
+ }
47
+ /** A value tree's UI state. */
48
+ export interface TreeUi extends ListUi {
49
+ /** Per-row expansion overrides keyed by row id. */
50
+ open: Record<string, boolean>;
51
+ /** The collapse-all / expand-all override of the open depth. */
52
+ baseDepth: number | undefined;
53
+ /** The held key-search match, if any. */
54
+ match: MatchUi | null;
55
+ }
56
+ /** A log pane's UI state (one per stream: the Stdout and Stderr tabs each keep their own). */
57
+ export interface LogsUi {
58
+ /** The first visible line. */
59
+ top: number;
60
+ /** Whether the pane follows the tail. */
61
+ follow: boolean;
62
+ /** The held substring search, if any. */
63
+ match: {
64
+ text: string;
65
+ index: number;
66
+ } | null;
67
+ }
68
+ /** The runs list's UI state. */
69
+ export interface RunsUi extends ListUi {
70
+ /** Whether the selected run's input hashes are listed. */
71
+ expanded: boolean;
72
+ }
73
+ /** An in-progress leaf edit in an input view. */
74
+ export interface LeafEditUi {
75
+ /** The row being edited. */
76
+ rowId: string;
77
+ /** The node path the edit reports. */
78
+ path: ValueTreeStepValue[];
79
+ /** The leaf kind. */
80
+ leaf: 'string' | 'integer' | 'float' | 'datetime' | 'boolean';
81
+ /** The text being typed. */
82
+ text: string;
83
+ cursor: number;
84
+ /** A validation message, if the text does not parse. */
85
+ error: string | null;
86
+ }
87
+ /** The task view's tabs. */
88
+ export type TaskTab = 'output' | 'stdout' | 'stderr' | 'runs' | 'reads';
89
+ /** Whether a task tab shows a log stream. */
90
+ export declare function isLogTab(tab: TaskTab): tab is 'stdout' | 'stderr';
91
+ /** The tabs of a task, in strip order (`reads` only for a `ui` task). */
92
+ export declare function taskTabsOf(state: TuiState, ws: string, task: string): TaskTab[];
93
+ /** The help view's tabs — one per page, plus what works everywhere. */
94
+ export type HelpTab = 'everywhere' | 'repos' | 'workspaces' | 'dashboard' | 'task' | 'input';
95
+ /** Why the session could not open — each maps to a refusal screen. */
96
+ export type Refusal = {
97
+ kind: 'not-repo';
98
+ target: string;
99
+ } | {
100
+ kind: 'not-logged-in';
101
+ origin: string;
102
+ repo: string | null;
103
+ } | {
104
+ kind: 'unreachable';
105
+ url: string;
106
+ error: string;
107
+ attempts: number;
108
+ } | {
109
+ kind: 'error';
110
+ message: string;
111
+ };
112
+ /** The views. */
113
+ export type View = {
114
+ kind: 'launch';
115
+ target: string;
116
+ step: string;
117
+ } | {
118
+ kind: 'refusal';
119
+ refusal: Refusal;
120
+ } | {
121
+ kind: 'repos';
122
+ list: ListUi;
123
+ } | {
124
+ kind: 'workspaces';
125
+ list: ListUi;
126
+ } | {
127
+ kind: 'dashboard';
128
+ ws: string;
129
+ list: ListUi;
130
+ } | {
131
+ kind: 'task';
132
+ ws: string;
133
+ task: string;
134
+ tab: TaskTab;
135
+ tree: TreeUi;
136
+ logs: Record<'stdout' | 'stderr', LogsUi>;
137
+ runs: RunsUi;
138
+ reads: ListUi;
139
+ } | {
140
+ kind: 'input';
141
+ ws: string;
142
+ name: string;
143
+ tree: TreeUi;
144
+ editing: LeafEditUi | null;
145
+ } | {
146
+ kind: 'help';
147
+ tab: HelpTab;
148
+ } | {
149
+ kind: 'about';
150
+ };
151
+ export type ViewKind = View['kind'];
152
+ /** An empty list UI. */
153
+ export declare const emptyList: () => ListUi;
154
+ /** An empty tree UI. */
155
+ export declare const emptyTree: () => TreeUi;
156
+ /** An empty logs UI. */
157
+ export declare const emptyLogs: () => LogsUi;
158
+ /** A task view with fresh UI state. */
159
+ export declare function taskView(ws: string, task: string, tab?: TaskTab): View;
160
+ /** An input view with fresh UI state. */
161
+ export declare function inputView(ws: string, name: string): View;
162
+ /** One completion row: what it inserts and its display columns. */
163
+ export interface Candidate {
164
+ kind: 'command' | 'flag' | 'task' | 'input' | 'dataset' | 'workspace' | 'repo' | 'tag' | 'stream' | 'file';
165
+ /** The text the box takes on Tab / Enter. */
166
+ insert: string;
167
+ /** The display columns (command, name, status, type, detail). */
168
+ cells: string[];
169
+ }
170
+ /** A confirmation held in the command box — Enter re-runs `command` (already carrying `--force`), Esc cancels. */
171
+ export interface Confirm {
172
+ /** The question shown in the box. */
173
+ question: string;
174
+ /** The command re-run on Enter. */
175
+ command: string;
176
+ }
177
+ /** The command box. */
178
+ export interface CommandUi {
179
+ /** `idle` shows the placeholder; `edit` is typing; `confirm` holds a question. */
180
+ mode: 'idle' | 'edit' | 'confirm';
181
+ text: string;
182
+ cursor: number;
183
+ completion: {
184
+ items: Candidate[];
185
+ index: number;
186
+ } | null;
187
+ confirm: Confirm | null;
188
+ }
189
+ /** An empty command box. */
190
+ export declare const emptyCommand: () => CommandUi;
191
+ /** A one-line toast in the hint row. */
192
+ export interface Toast {
193
+ id: number;
194
+ text: string;
195
+ tone: Tone;
196
+ /** The glyph before the text (the tone's glyph when absent). */
197
+ glyph?: string | undefined;
198
+ /** Epoch milliseconds when it expires. */
199
+ until: number;
200
+ }
201
+ /** What the header and the about view know about the open session. */
202
+ export interface SessionInfo {
203
+ kind: 'local' | 'remote' | 'origin';
204
+ /** The breadcrumb's first crumb (`demo-repo` / `e3.example.com`). */
205
+ label: string;
206
+ /** The repository id, or null for a bare origin. */
207
+ repo: string | null;
208
+ /** The API base URL. */
209
+ apiUrl: string;
210
+ /** The local repository path, for local sessions. */
211
+ path: string | null;
212
+ /** The remote origin, for remote / origin sessions. */
213
+ origin: string | null;
214
+ /** The signed-in identity (a JWT subject / email), for remote sessions. */
215
+ identity: string | null;
216
+ /** The persisted-state key for this repository. */
217
+ stateKey: string;
218
+ /** The argument the session was opened with (for `/about` and `lastRepo`). */
219
+ target: string;
220
+ }
221
+ /** The latest execution feed of a workspace. */
222
+ export interface ExecutionData {
223
+ /** The polled state, or null when the workspace has never run. */
224
+ state: DataflowExecutionState | null;
225
+ /** The events received so far for this execution (the cursor is their length). */
226
+ events: DataflowEvent[];
227
+ /** `startedAt` of the execution the events belong to. */
228
+ startedAt: string | null;
229
+ /** True between `/run` and the first poll that shows it running. */
230
+ settling: boolean;
231
+ /** True after a `/stop` until the poll shows the run stopped. */
232
+ stopping: boolean;
233
+ }
234
+ /** How a dataset is being shown. */
235
+ export type DatasetMode = {
236
+ kind: 'loading';
237
+ } | {
238
+ kind: 'unset';
239
+ } | {
240
+ kind: 'null';
241
+ } | {
242
+ kind: 'inline';
243
+ root: ValueTreeNodeValue;
244
+ value: unknown;
245
+ } | {
246
+ kind: 'paged';
247
+ totalRows: number;
248
+ totalBytes: number;
249
+ pages: ReadonlyMap<number, readonly ValueTreePagedRow[]>;
250
+ loading: readonly number[];
251
+ } | {
252
+ kind: 'too-large';
253
+ } | {
254
+ kind: 'not-indexed';
255
+ loadable: boolean;
256
+ } | {
257
+ kind: 'error';
258
+ message: string;
259
+ };
260
+ /** A dataset's status and content. */
261
+ export interface DatasetData {
262
+ status: DatasetStatusDetail | null;
263
+ /** The content hash the mode was built for. */
264
+ hash: string | null;
265
+ type: EastTypeValue | null;
266
+ size: number;
267
+ mode: DatasetMode;
268
+ /** Whether the whole value was loaded despite the inline limit (`⏎ load whole value`). */
269
+ forced: boolean;
270
+ }
271
+ /** A task's log stream. */
272
+ export interface LogsData {
273
+ text: string;
274
+ /** Bytes fetched so far. */
275
+ offset: number;
276
+ /** The stream's total size on the server. */
277
+ totalSize: number;
278
+ /** Whether `offset` reached `totalSize` on the last poll. */
279
+ complete: boolean;
280
+ /** Whether the 10 MB cap was hit. */
281
+ capped: boolean;
282
+ /** The last error, if a fetch failed. */
283
+ error: string | null;
284
+ }
285
+ /** A repository's last deployment, for the repositories view. */
286
+ export interface RepoDeploy {
287
+ workspace: string;
288
+ packageName: string;
289
+ packageVersion: string;
290
+ deployedAt: Date;
291
+ }
292
+ /** The data the pollers fill. */
293
+ export interface DataState {
294
+ /** Repositories on a bare origin, with lazily fetched statuses and last deployments. */
295
+ repos: {
296
+ names: string[];
297
+ status: Record<string, RepositoryStatus>;
298
+ deploy: Record<string, RepoDeploy | null>;
299
+ } | null;
300
+ workspaces: WorkspaceInfo[] | null;
301
+ /** Per workspace: the deployed state (deployedAt), null when not deployed. */
302
+ workspaceState: Record<string, WorkspaceState | null>;
303
+ /** Per workspace: the latest status poll. */
304
+ status: Record<string, {
305
+ result: WorkspaceStatusResult;
306
+ at: number;
307
+ }>;
308
+ /** Per workspace: the last status error. */
309
+ statusError: Record<string, string>;
310
+ /** Per workspace: the latest execution. */
311
+ execution: Record<string, ExecutionData>;
312
+ /** Per workspace: every dataset with its type / hash / size. */
313
+ datasets: Record<string, ListEntry[]>;
314
+ /** Per workspace: the task list (with kinds). */
315
+ taskList: Record<string, TaskListItem[]>;
316
+ /** Per workspace, per task: task details. */
317
+ taskDetails: Record<string, Record<string, TaskDetails>>;
318
+ /** Per workspace, per task: execution history. */
319
+ executions: Record<string, Record<string, ExecutionListItem[]>>;
320
+ /** Per workspace, per dataset path: status + content. */
321
+ dataset: Record<string, Record<string, DatasetData>>;
322
+ /** Per workspace, per task, per stream: log text. */
323
+ logs: Record<string, Record<string, Partial<Record<'stdout' | 'stderr', LogsData>>>>;
324
+ /** Epoch milliseconds of the last successful status poll. */
325
+ polledAt: number | null;
326
+ }
327
+ /** An empty data slice. */
328
+ export declare const emptyData: () => DataState;
329
+ /** One recorded edit of an input's draft. */
330
+ export type EditOp = {
331
+ kind: 'edit';
332
+ path: ValueTreeStepValue[];
333
+ leaf: {
334
+ type: string;
335
+ value: unknown;
336
+ };
337
+ } | {
338
+ kind: 'insert';
339
+ path: ValueTreeStepValue[];
340
+ } | {
341
+ kind: 'remove';
342
+ path: ValueTreeStepValue[];
343
+ } | {
344
+ kind: 'tag';
345
+ path: ValueTreeStepValue[];
346
+ tag: string;
347
+ };
348
+ /** The editable-input draft: the base value, the ops, and the draft they produce. */
349
+ export interface EditState {
350
+ ws: string;
351
+ path: string;
352
+ type: EastTypeValue;
353
+ /** The value the ops were applied to. */
354
+ base: unknown;
355
+ /** The content hash of `base`. */
356
+ baseHash: string;
357
+ ops: EditOp[];
358
+ /** `base` with `ops` applied. */
359
+ draft: unknown;
360
+ /** The draft, materialized. */
361
+ root: ValueTreeNodeValue;
362
+ /** Row ids the ops touched (`┆` markers). */
363
+ changed: string[];
364
+ /** A server-side change seen while dirty: the new hash. */
365
+ conflict: string | null;
366
+ /** True while an apply is in flight. */
367
+ applying: boolean;
368
+ }
369
+ /** The whole store state. */
370
+ export interface TuiState {
371
+ size: Size;
372
+ session: SessionInfo | null;
373
+ connection: ConnectionState;
374
+ view: View;
375
+ history: View[];
376
+ command: CommandUi;
377
+ toast: Toast | null;
378
+ edit: EditState | null;
379
+ data: DataState;
380
+ /** Pending multi-key prefix (`g` of `gg`). */
381
+ pendingKey: string | null;
382
+ /** Whether mouse reporting is on. */
383
+ mouse: boolean;
384
+ }
385
+ /** The initial state for a target being opened. */
386
+ export declare function initialState(size: Size, target: string): TuiState;
387
+ /** A list navigation operation. */
388
+ export type NavOp = 'up' | 'down' | 'pageUp' | 'pageDown' | 'home' | 'end';
389
+ /** Every store action. */
390
+ export type Action = {
391
+ type: 'size';
392
+ size: Size;
393
+ } | {
394
+ type: 'session';
395
+ session: SessionInfo | null;
396
+ } | {
397
+ type: 'connection';
398
+ connection: ConnectionState;
399
+ } | {
400
+ type: 'mouse';
401
+ enabled: boolean;
402
+ } | {
403
+ type: 'pendingKey';
404
+ key: string | null;
405
+ } | {
406
+ type: 'view/set';
407
+ view: View;
408
+ } | {
409
+ type: 'view/root';
410
+ view: View;
411
+ } | {
412
+ type: 'view/push';
413
+ view: View;
414
+ } | {
415
+ type: 'view/pop';
416
+ } | {
417
+ type: 'view/launchStep';
418
+ step: string;
419
+ } | {
420
+ type: 'list/move';
421
+ op: NavOp;
422
+ count: number;
423
+ visible: number;
424
+ } | {
425
+ type: 'list/select';
426
+ index: number;
427
+ count: number;
428
+ visible: number;
429
+ } | {
430
+ type: 'list/scroll';
431
+ delta: number;
432
+ count: number;
433
+ visible: number;
434
+ } | {
435
+ type: 'tree/toggle';
436
+ id: string;
437
+ expanded: boolean;
438
+ descendants?: string[];
439
+ } | {
440
+ type: 'tree/expandAll';
441
+ } | {
442
+ type: 'tree/collapseAll';
443
+ } | {
444
+ type: 'tree/restore';
445
+ open: Record<string, boolean>;
446
+ top: number;
447
+ baseDepth: number | undefined;
448
+ } | {
449
+ type: 'tree/match';
450
+ match: MatchUi | null;
451
+ } | {
452
+ type: 'task/tab';
453
+ tab: TaskTab;
454
+ } | {
455
+ type: 'runs/expand';
456
+ expanded: boolean;
457
+ } | {
458
+ type: 'logs/follow';
459
+ follow: boolean;
460
+ } | {
461
+ type: 'logs/scroll';
462
+ top: number;
463
+ } | {
464
+ type: 'logs/match';
465
+ match: {
466
+ text: string;
467
+ index: number;
468
+ } | null;
469
+ } | {
470
+ type: 'help/tab';
471
+ tab: HelpTab;
472
+ } | {
473
+ type: 'input/editing';
474
+ editing: LeafEditUi | null;
475
+ } | {
476
+ type: 'command/edit';
477
+ text: string;
478
+ cursor?: number;
479
+ } | {
480
+ type: 'command/insert';
481
+ text: string;
482
+ } | {
483
+ type: 'command/backspace';
484
+ } | {
485
+ type: 'command/delete';
486
+ } | {
487
+ type: 'command/cursor';
488
+ to: number | 'home' | 'end' | 'left' | 'right';
489
+ } | {
490
+ type: 'command/completion';
491
+ items: Candidate[];
492
+ } | {
493
+ type: 'command/completionMove';
494
+ delta: number;
495
+ } | {
496
+ type: 'command/clear';
497
+ } | {
498
+ type: 'command/confirm';
499
+ confirm: Confirm;
500
+ } | {
501
+ type: 'toast';
502
+ toast: Toast;
503
+ } | {
504
+ type: 'toast/clear';
505
+ id: number;
506
+ } | {
507
+ type: 'data/repos';
508
+ names: string[];
509
+ } | {
510
+ type: 'data/repoStatus';
511
+ repo: string;
512
+ status: RepositoryStatus;
513
+ } | {
514
+ type: 'data/repoDeploy';
515
+ repo: string;
516
+ deploy: RepoDeploy | null;
517
+ } | {
518
+ type: 'data/workspaces';
519
+ workspaces: WorkspaceInfo[];
520
+ } | {
521
+ type: 'data/workspaceState';
522
+ ws: string;
523
+ state: WorkspaceState | null;
524
+ } | {
525
+ type: 'data/status';
526
+ ws: string;
527
+ result: WorkspaceStatusResult;
528
+ at: number;
529
+ } | {
530
+ type: 'data/statusError';
531
+ ws: string;
532
+ error: string;
533
+ } | {
534
+ type: 'data/execution';
535
+ ws: string;
536
+ state: DataflowExecutionState | null;
537
+ events: DataflowEvent[];
538
+ startedAt: string | null;
539
+ } | {
540
+ type: 'data/executionFlag';
541
+ ws: string;
542
+ settling?: boolean;
543
+ stopping?: boolean;
544
+ } | {
545
+ type: 'data/datasets';
546
+ ws: string;
547
+ entries: ListEntry[];
548
+ } | {
549
+ type: 'data/taskList';
550
+ ws: string;
551
+ tasks: TaskListItem[];
552
+ } | {
553
+ type: 'data/taskDetails';
554
+ ws: string;
555
+ task: string;
556
+ details: TaskDetails;
557
+ } | {
558
+ type: 'data/executions';
559
+ ws: string;
560
+ task: string;
561
+ executions: ExecutionListItem[];
562
+ } | {
563
+ type: 'data/dataset';
564
+ ws: string;
565
+ path: string;
566
+ data: DatasetData;
567
+ } | {
568
+ type: 'data/datasetMode';
569
+ ws: string;
570
+ path: string;
571
+ mode: DatasetMode;
572
+ } | {
573
+ type: 'data/logs';
574
+ ws: string;
575
+ task: string;
576
+ stream: 'stdout' | 'stderr';
577
+ logs: LogsData;
578
+ } | {
579
+ type: 'data/reset';
580
+ } | {
581
+ type: 'edit/set';
582
+ edit: EditState | null;
583
+ };
584
+ //# sourceMappingURL=actions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/tui/state/actions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Copyright (c) 2025 Elara AI Pty Ltd
3
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
+ */
5
+ /** Whether a task tab shows a log stream. */
6
+ export function isLogTab(tab) {
7
+ return tab === 'stdout' || tab === 'stderr';
8
+ }
9
+ /** The tabs of a task, in strip order (`reads` only for a `ui` task). */
10
+ export function taskTabsOf(state, ws, task) {
11
+ const ui = (state.data.taskList[ws] ?? []).some(x => x.name === task && x.kind.type === 'some' && x.kind.value === 'ui');
12
+ return ui ? ['output', 'stdout', 'stderr', 'runs', 'reads'] : ['output', 'stdout', 'stderr', 'runs'];
13
+ }
14
+ /** An empty list UI. */
15
+ export const emptyList = () => ({ sel: 0, top: 0 });
16
+ /** An empty tree UI. */
17
+ export const emptyTree = () => ({ sel: 0, top: 0, open: {}, baseDepth: undefined, match: null });
18
+ /** An empty logs UI. */
19
+ export const emptyLogs = () => ({ top: 0, follow: true, match: null });
20
+ /** A task view with fresh UI state. */
21
+ export function taskView(ws, task, tab = 'output') {
22
+ return { kind: 'task', ws, task, tab, tree: emptyTree(), logs: { stdout: emptyLogs(), stderr: emptyLogs() }, runs: { sel: 0, top: 0, expanded: false }, reads: emptyList() };
23
+ }
24
+ /** An input view with fresh UI state. */
25
+ export function inputView(ws, name) {
26
+ return { kind: 'input', ws, name, tree: emptyTree(), editing: null };
27
+ }
28
+ /** An empty command box. */
29
+ export const emptyCommand = () => ({ mode: 'idle', text: '', cursor: 0, completion: null, confirm: null });
30
+ /** An empty data slice. */
31
+ export const emptyData = () => ({
32
+ repos: null,
33
+ workspaces: null,
34
+ workspaceState: {},
35
+ status: {},
36
+ statusError: {},
37
+ execution: {},
38
+ datasets: {},
39
+ taskList: {},
40
+ taskDetails: {},
41
+ executions: {},
42
+ dataset: {},
43
+ logs: {},
44
+ polledAt: null,
45
+ });
46
+ /** The initial state for a target being opened. */
47
+ export function initialState(size, target) {
48
+ return {
49
+ size,
50
+ session: null,
51
+ connection: { kind: 'idle' },
52
+ view: { kind: 'launch', target, step: 'starting' },
53
+ history: [],
54
+ command: emptyCommand(),
55
+ toast: null,
56
+ edit: null,
57
+ data: emptyData(),
58
+ pendingKey: null,
59
+ mouse: false,
60
+ };
61
+ }
62
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/tui/state/actions.ts"],"names":[],"mappings":"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"}