@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.
- package/README.md +46 -21
- package/bin/e3-ui.mjs +6 -0
- package/dist/app/assets/{engine-BKZbmXkC-DmcCFcnb.js → engine-Bm-cIDd_-DwUdGcTZ.js} +1 -1
- package/dist/app/assets/{index-BJNWHnRv.js → index-mj-YVVN1.js} +91 -91
- package/dist/app/index.html +1 -1
- package/dist/cli.js +36 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/tui.d.ts +84 -0
- package/dist/commands/tui.d.ts.map +1 -0
- package/dist/commands/tui.js +89 -0
- package/dist/commands/tui.js.map +1 -0
- package/dist/tui/api.d.ts +108 -0
- package/dist/tui/api.d.ts.map +1 -0
- package/dist/tui/api.js +130 -0
- package/dist/tui/api.js.map +1 -0
- package/dist/tui/app.d.ts +23 -0
- package/dist/tui/app.d.ts.map +1 -0
- package/dist/tui/app.js +244 -0
- package/dist/tui/app.js.map +1 -0
- package/dist/tui/controller.d.ts +116 -0
- package/dist/tui/controller.d.ts.map +1 -0
- package/dist/tui/controller.js +644 -0
- package/dist/tui/controller.js.map +1 -0
- package/dist/tui/data/dataflow.d.ts +68 -0
- package/dist/tui/data/dataflow.d.ts.map +1 -0
- package/dist/tui/data/dataflow.js +137 -0
- package/dist/tui/data/dataflow.js.map +1 -0
- package/dist/tui/data/dataset.d.ts +80 -0
- package/dist/tui/data/dataset.d.ts.map +1 -0
- package/dist/tui/data/dataset.js +297 -0
- package/dist/tui/data/dataset.js.map +1 -0
- package/dist/tui/data/edit-buffer.d.ts +74 -0
- package/dist/tui/data/edit-buffer.d.ts.map +1 -0
- package/dist/tui/data/edit-buffer.js +120 -0
- package/dist/tui/data/edit-buffer.js.map +1 -0
- package/dist/tui/data/feeds.d.ts +45 -0
- package/dist/tui/data/feeds.d.ts.map +1 -0
- package/dist/tui/data/feeds.js +318 -0
- package/dist/tui/data/feeds.js.map +1 -0
- package/dist/tui/data/logs.d.ts +68 -0
- package/dist/tui/data/logs.d.ts.map +1 -0
- package/dist/tui/data/logs.js +134 -0
- package/dist/tui/data/logs.js.map +1 -0
- package/dist/tui/input/commands.d.ts +159 -0
- package/dist/tui/input/commands.d.ts.map +1 -0
- package/dist/tui/input/commands.js +259 -0
- package/dist/tui/input/commands.js.map +1 -0
- package/dist/tui/input/completion.d.ts +63 -0
- package/dist/tui/input/completion.d.ts.map +1 -0
- package/dist/tui/input/completion.js +128 -0
- package/dist/tui/input/completion.js.map +1 -0
- package/dist/tui/input/keymap.d.ts +153 -0
- package/dist/tui/input/keymap.d.ts.map +1 -0
- package/dist/tui/input/keymap.js +206 -0
- package/dist/tui/input/keymap.js.map +1 -0
- package/dist/tui/input/mouse.d.ts +52 -0
- package/dist/tui/input/mouse.d.ts.map +1 -0
- package/dist/tui/input/mouse.js +55 -0
- package/dist/tui/input/mouse.js.map +1 -0
- package/dist/tui/lifecycle.d.ts +61 -0
- package/dist/tui/lifecycle.d.ts.map +1 -0
- package/dist/tui/lifecycle.js +99 -0
- package/dist/tui/lifecycle.js.map +1 -0
- package/dist/tui/model/catalogue.d.ts +28 -0
- package/dist/tui/model/catalogue.d.ts.map +1 -0
- package/dist/tui/model/catalogue.js +94 -0
- package/dist/tui/model/catalogue.js.map +1 -0
- package/dist/tui/model/help.d.ts +37 -0
- package/dist/tui/model/help.d.ts.map +1 -0
- package/dist/tui/model/help.js +210 -0
- package/dist/tui/model/help.js.map +1 -0
- package/dist/tui/model/index.d.ts +42 -0
- package/dist/tui/model/index.d.ts.map +1 -0
- package/dist/tui/model/index.js +50 -0
- package/dist/tui/model/index.js.map +1 -0
- package/dist/tui/model/status.d.ts +88 -0
- package/dist/tui/model/status.d.ts.map +1 -0
- package/dist/tui/model/status.js +137 -0
- package/dist/tui/model/status.js.map +1 -0
- package/dist/tui/model/tree.d.ts +126 -0
- package/dist/tui/model/tree.d.ts.map +1 -0
- package/dist/tui/model/tree.js +217 -0
- package/dist/tui/model/tree.js.map +1 -0
- package/dist/tui/model/types.d.ts +21 -0
- package/dist/tui/model/types.d.ts.map +1 -0
- package/dist/tui/model/types.js +46 -0
- package/dist/tui/model/types.js.map +1 -0
- package/dist/tui/render/glyphs.d.ts +122 -0
- package/dist/tui/render/glyphs.d.ts.map +1 -0
- package/dist/tui/render/glyphs.js +122 -0
- package/dist/tui/render/glyphs.js.map +1 -0
- package/dist/tui/render/layout.d.ts +145 -0
- package/dist/tui/render/layout.d.ts.map +1 -0
- package/dist/tui/render/layout.js +209 -0
- package/dist/tui/render/layout.js.map +1 -0
- package/dist/tui/render/text.d.ts +153 -0
- package/dist/tui/render/text.d.ts.map +1 -0
- package/dist/tui/render/text.js +320 -0
- package/dist/tui/render/text.js.map +1 -0
- package/dist/tui/render/theme.d.ts +88 -0
- package/dist/tui/render/theme.d.ts.map +1 -0
- package/dist/tui/render/theme.js +145 -0
- package/dist/tui/render/theme.js.map +1 -0
- package/dist/tui/session.d.ts +78 -0
- package/dist/tui/session.d.ts.map +1 -0
- package/dist/tui/session.js +237 -0
- package/dist/tui/session.js.map +1 -0
- package/dist/tui/state/actions.d.ts +584 -0
- package/dist/tui/state/actions.d.ts.map +1 -0
- package/dist/tui/state/actions.js +62 -0
- package/dist/tui/state/actions.js.map +1 -0
- package/dist/tui/state/persist.d.ts +114 -0
- package/dist/tui/state/persist.d.ts.map +1 -0
- package/dist/tui/state/persist.js +187 -0
- package/dist/tui/state/persist.js.map +1 -0
- package/dist/tui/state/poll.d.ts +99 -0
- package/dist/tui/state/poll.d.ts.map +1 -0
- package/dist/tui/state/poll.js +160 -0
- package/dist/tui/state/poll.js.map +1 -0
- package/dist/tui/state/reducer.d.ts +16 -0
- package/dist/tui/state/reducer.d.ts.map +1 -0
- package/dist/tui/state/reducer.js +363 -0
- package/dist/tui/state/reducer.js.map +1 -0
- package/dist/tui/state/store.d.ts +37 -0
- package/dist/tui/state/store.d.ts.map +1 -0
- package/dist/tui/state/store.js +84 -0
- package/dist/tui/state/store.js.map +1 -0
- package/dist/tui/suspend.d.ts +17 -0
- package/dist/tui/suspend.d.ts.map +1 -0
- package/dist/tui/suspend.js +33 -0
- package/dist/tui/suspend.js.map +1 -0
- package/dist/tui/ui/App.d.ts +44 -0
- package/dist/tui/ui/App.d.ts.map +1 -0
- package/dist/tui/ui/App.js +105 -0
- package/dist/tui/ui/App.js.map +1 -0
- package/dist/tui/ui/frame.d.ts +86 -0
- package/dist/tui/ui/frame.d.ts.map +1 -0
- package/dist/tui/ui/frame.js +42 -0
- package/dist/tui/ui/frame.js.map +1 -0
- package/dist/tui/ui/lines.d.ts +92 -0
- package/dist/tui/ui/lines.d.ts.map +1 -0
- package/dist/tui/ui/lines.js +94 -0
- package/dist/tui/ui/lines.js.map +1 -0
- package/dist/tui/ui/shell/chrome.d.ts +61 -0
- package/dist/tui/ui/shell/chrome.d.ts.map +1 -0
- package/dist/tui/ui/shell/chrome.js +272 -0
- package/dist/tui/ui/shell/chrome.js.map +1 -0
- package/dist/tui/ui/shell/widgets.d.ts +116 -0
- package/dist/tui/ui/shell/widgets.d.ts.map +1 -0
- package/dist/tui/ui/shell/widgets.js +183 -0
- package/dist/tui/ui/shell/widgets.js.map +1 -0
- package/dist/tui/ui/views/about.d.ts +20 -0
- package/dist/tui/ui/views/about.d.ts.map +1 -0
- package/dist/tui/ui/views/about.js +40 -0
- package/dist/tui/ui/views/about.js.map +1 -0
- package/dist/tui/ui/views/all.d.ts +17 -0
- package/dist/tui/ui/views/all.d.ts.map +1 -0
- package/dist/tui/ui/views/all.js +17 -0
- package/dist/tui/ui/views/all.js.map +1 -0
- package/dist/tui/ui/views/dashboard.d.ts +211 -0
- package/dist/tui/ui/views/dashboard.d.ts.map +1 -0
- package/dist/tui/ui/views/dashboard.js +651 -0
- package/dist/tui/ui/views/dashboard.js.map +1 -0
- package/dist/tui/ui/views/help.d.ts +17 -0
- package/dist/tui/ui/views/help.d.ts.map +1 -0
- package/dist/tui/ui/views/help.js +65 -0
- package/dist/tui/ui/views/help.js.map +1 -0
- package/dist/tui/ui/views/index.d.ts +42 -0
- package/dist/tui/ui/views/index.d.ts.map +1 -0
- package/dist/tui/ui/views/index.js +42 -0
- package/dist/tui/ui/views/index.js.map +1 -0
- package/dist/tui/ui/views/input.d.ts +6 -0
- package/dist/tui/ui/views/input.d.ts.map +1 -0
- package/dist/tui/ui/views/input.js +494 -0
- package/dist/tui/ui/views/input.js.map +1 -0
- package/dist/tui/ui/views/launch.d.ts +16 -0
- package/dist/tui/ui/views/launch.d.ts.map +1 -0
- package/dist/tui/ui/views/launch.js +43 -0
- package/dist/tui/ui/views/launch.js.map +1 -0
- package/dist/tui/ui/views/refusal.d.ts +20 -0
- package/dist/tui/ui/views/refusal.d.ts.map +1 -0
- package/dist/tui/ui/views/refusal.js +47 -0
- package/dist/tui/ui/views/refusal.js.map +1 -0
- package/dist/tui/ui/views/repos.d.ts +10 -0
- package/dist/tui/ui/views/repos.d.ts.map +1 -0
- package/dist/tui/ui/views/repos.js +93 -0
- package/dist/tui/ui/views/repos.js.map +1 -0
- package/dist/tui/ui/views/task.d.ts +17 -0
- package/dist/tui/ui/views/task.d.ts.map +1 -0
- package/dist/tui/ui/views/task.js +309 -0
- package/dist/tui/ui/views/task.js.map +1 -0
- package/dist/tui/ui/views/wordmark.d.ts +15 -0
- package/dist/tui/ui/views/wordmark.d.ts.map +1 -0
- package/dist/tui/ui/views/wordmark.js +50 -0
- package/dist/tui/ui/views/wordmark.js.map +1 -0
- package/dist/tui/ui/views/workspaces.d.ts +17 -0
- package/dist/tui/ui/views/workspaces.d.ts.map +1 -0
- package/dist/tui/ui/views/workspaces.js +127 -0
- package/dist/tui/ui/views/workspaces.js.map +1 -0
- package/dist/tui/ui/widgets/leaf-editor.d.ts +58 -0
- package/dist/tui/ui/widgets/leaf-editor.d.ts.map +1 -0
- package/dist/tui/ui/widgets/leaf-editor.js +119 -0
- package/dist/tui/ui/widgets/leaf-editor.js.map +1 -0
- package/dist/tui/ui/widgets/logs.d.ts +99 -0
- package/dist/tui/ui/widgets/logs.d.ts.map +1 -0
- package/dist/tui/ui/widgets/logs.js +291 -0
- package/dist/tui/ui/widgets/logs.js.map +1 -0
- package/dist/tui/ui/widgets/reads.d.ts +62 -0
- package/dist/tui/ui/widgets/reads.d.ts.map +1 -0
- package/dist/tui/ui/widgets/reads.js +122 -0
- package/dist/tui/ui/widgets/reads.js.map +1 -0
- package/dist/tui/ui/widgets/runs.d.ts +51 -0
- package/dist/tui/ui/widgets/runs.d.ts.map +1 -0
- package/dist/tui/ui/widgets/runs.js +86 -0
- package/dist/tui/ui/widgets/runs.js.map +1 -0
- package/dist/tui/ui/widgets/tree.d.ts +149 -0
- package/dist/tui/ui/widgets/tree.d.ts.map +1 -0
- package/dist/tui/ui/widgets/tree.js +584 -0
- package/dist/tui/ui/widgets/tree.js.map +1 -0
- package/package.json +22 -12
|
@@ -0,0 +1,40 @@
|
|
|
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 about view — the wordmark, the version, the server, the repository,
|
|
7
|
+
* the terminal, the state file and the licence.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
import { formatInt } from '../../render/text.js';
|
|
12
|
+
import { blank, b, d, t } from '../lines.js';
|
|
13
|
+
import { wordmark } from './wordmark.js';
|
|
14
|
+
/** The about body. */
|
|
15
|
+
export function renderAbout(state, ctx, facts) {
|
|
16
|
+
const width = ctx.layout.columns;
|
|
17
|
+
const session = state.session;
|
|
18
|
+
const row = (label, value) => [t(' '), d(label.padEnd(11)), t(value)];
|
|
19
|
+
const server = session === null ? '—'
|
|
20
|
+
: session.kind === 'local'
|
|
21
|
+
? `embedded @elaraai/e3-api-server ${ctx.version} · ${session.apiUrl} · repo ${session.repo}`
|
|
22
|
+
: `${session.apiUrl}${session.repo !== null ? ` · repo ${session.repo}` : ''}${session.identity !== null ? ` · signed in as ${session.identity}` : ''}`;
|
|
23
|
+
const repository = session === null ? '—'
|
|
24
|
+
: `${session.path ?? session.target}${facts !== null ? ` · ${formatInt(facts.objects)} objects · ${facts.packages} packages · ${facts.workspaces} workspaces` : ''}`;
|
|
25
|
+
return [
|
|
26
|
+
blank(width),
|
|
27
|
+
...wordmark(ctx.g.tabL === '[').map(line => [t(' '), b(line, 'brand')]),
|
|
28
|
+
blank(width),
|
|
29
|
+
[t(' '), b(`e3-ui ${ctx.version}`)],
|
|
30
|
+
blank(width),
|
|
31
|
+
row('server', server),
|
|
32
|
+
row('repository', repository),
|
|
33
|
+
row('terminal', ctx.about.terminal),
|
|
34
|
+
row('state', ctx.about.statePath),
|
|
35
|
+
row('licence', 'AGPL-3.0-or-later · commercial licence available'),
|
|
36
|
+
];
|
|
37
|
+
}
|
|
38
|
+
/** The about hints. */
|
|
39
|
+
export const aboutHints = { left: 'esc back', right: '' };
|
|
40
|
+
//# sourceMappingURL=about.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"about.js","sourceRoot":"","sources":["../../../../src/tui/ui/views/about.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAA6B,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,sBAAsB;AACtB,MAAM,UAAU,WAAW,CAAC,KAAe,EAAE,GAAc,EAAE,KAAuB;IAChF,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,GAAG,GAAG,CAAC,KAAa,EAAE,KAAa,EAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG;QACjC,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;YACtB,CAAC,CAAC,mCAAmC,GAAG,CAAC,OAAO,MAAM,OAAO,CAAC,MAAM,WAAW,OAAO,CAAC,IAAI,EAAE;YAC7F,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,mBAAmB,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAChK,MAAM,UAAU,GAAG,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG;QACrC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,KAAK,CAAC,QAAQ,eAAe,KAAK,CAAC,UAAU,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACzK,OAAO;QACH,KAAK,CAAC,KAAK,CAAC;QACZ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACzE,KAAK,CAAC,KAAK,CAAC;QACZ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,CAAC,KAAK,CAAC;QACZ,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;QACrB,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;QAC7B,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;QACnC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;QACjC,GAAG,CAAC,SAAS,EAAE,kDAAkD,CAAC;KACrE,CAAC;AACN,CAAC;AAED,uBAAuB;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
* Every view module, imported for its registrations (renderer, list
|
|
7
|
+
* model, controller hooks). The app entry and the test harness import
|
|
8
|
+
* this once.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import './dashboard.js';
|
|
13
|
+
import './repos.js';
|
|
14
|
+
import './workspaces.js';
|
|
15
|
+
import './task.js';
|
|
16
|
+
import './input.js';
|
|
17
|
+
//# sourceMappingURL=all.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../../../src/tui/ui/views/all.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,YAAY,CAAC;AACpB,OAAO,iBAAiB,CAAC;AACzB,OAAO,WAAW,CAAC;AACnB,OAAO,YAAY,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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
|
+
* Every view module, imported for its registrations (renderer, list
|
|
7
|
+
* model, controller hooks). The app entry and the test harness import
|
|
8
|
+
* this once.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import './dashboard.js';
|
|
13
|
+
import './repos.js';
|
|
14
|
+
import './workspaces.js';
|
|
15
|
+
import './task.js';
|
|
16
|
+
import './input.js';
|
|
17
|
+
//# sourceMappingURL=all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../../../src/tui/ui/views/all.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,gBAAgB,CAAC;AACxB,OAAO,YAAY,CAAC;AACpB,OAAO,iBAAiB,CAAC;AACzB,OAAO,WAAW,CAAC;AACnB,OAAO,YAAY,CAAC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
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 workspace dashboard — the title line, then one scrolling column:
|
|
7
|
+
* the TASKS / DATASETS counts with the accounted bar, the execution panel
|
|
8
|
+
* (the last run's failures, or the live per-task feed while it runs), the
|
|
9
|
+
* tasks table and the inputs table. `⏎` opens the task, the input, or a
|
|
10
|
+
* failed task's logs. Status detail is inline (`✗ failed · exit 2`,
|
|
11
|
+
* `◐ waiting`, `◔ in-progress`).
|
|
12
|
+
*
|
|
13
|
+
* The column is built in two steps. {@link dashboardModel} derives what
|
|
14
|
+
* follows from the data and the width — the counts, the events the panel
|
|
15
|
+
* lists, the latest event per task, the dataset map, the fitted table
|
|
16
|
+
* plans, each row's cells and where each selectable row sits — once per
|
|
17
|
+
* data change: a single-entry cache keyed on the identity of the status,
|
|
18
|
+
* the execution, the dataset list, the task list, the width and the
|
|
19
|
+
* breakpoint. {@link dashboardLines} then renders only the lines on
|
|
20
|
+
* screen, restyling the selected row and stamping the clock and the
|
|
21
|
+
* spinner. A selection move costs the window, not the workspace.
|
|
22
|
+
*
|
|
23
|
+
* @packageDocumentation
|
|
24
|
+
*/
|
|
25
|
+
import type { DataflowEvent, WorkspaceStatusResult } from '@elaraai/e3-api-client';
|
|
26
|
+
import type { Glyphs } from '../../render/glyphs.js';
|
|
27
|
+
import { type Breakpoint, type ColumnSpec } from '../../render/layout.js';
|
|
28
|
+
import type { ExecutionData, NavOp, TuiState } from '../../state/actions.js';
|
|
29
|
+
import { type Controller } from '../../controller.js';
|
|
30
|
+
import type { Hit, Pane } from '../frame.js';
|
|
31
|
+
import { type Line, type RenderCtx } from '../lines.js';
|
|
32
|
+
import { type TableRow } from '../shell/widgets.js';
|
|
33
|
+
type TaskInfo = WorkspaceStatusResult['tasks'][number];
|
|
34
|
+
/** What the column builder needs from the render context. */
|
|
35
|
+
export interface DashboardCtx {
|
|
36
|
+
g: Glyphs;
|
|
37
|
+
now: number;
|
|
38
|
+
columns: number;
|
|
39
|
+
bp: Breakpoint;
|
|
40
|
+
spinner: number;
|
|
41
|
+
}
|
|
42
|
+
/** A selectable row of the column: what `⏎` opens, and its line index. */
|
|
43
|
+
export interface DashboardRow {
|
|
44
|
+
kind: 'logs' | 'task' | 'input';
|
|
45
|
+
name: string;
|
|
46
|
+
line: number;
|
|
47
|
+
}
|
|
48
|
+
/** Event rows the execution panel shows at most. */
|
|
49
|
+
export declare const MAX_EVENT_ROWS = 6;
|
|
50
|
+
/**
|
|
51
|
+
* The column builder's context from a render context.
|
|
52
|
+
*
|
|
53
|
+
* @param state - The store state
|
|
54
|
+
* @param ctx - The render context
|
|
55
|
+
* @returns The dashboard context
|
|
56
|
+
*/
|
|
57
|
+
export declare function dashboardCtx(state: TuiState, ctx: RenderCtx): DashboardCtx;
|
|
58
|
+
/** The dashboard title line: ` main ● DEPLOYED · demand@1.4.2 · deployed 3d ago · lock: none`. */
|
|
59
|
+
export declare function dashboardTitle(state: TuiState, ws: string, ctx: RenderCtx): Line;
|
|
60
|
+
/**
|
|
61
|
+
* The accounted bar: one cell per task (sampled past 40), lowest first —
|
|
62
|
+
* `✗` failed / error, `▁` ready, `▃` waiting, `▅` in progress, `▇`
|
|
63
|
+
* up-to-date — and `N of M accounted`, where a task is accounted for once
|
|
64
|
+
* the dataflow has touched it (anything but `ready`).
|
|
65
|
+
*
|
|
66
|
+
* @param tasks - The workspace's tasks
|
|
67
|
+
* @param g - The glyph set
|
|
68
|
+
* @returns The bar's spans and the counts
|
|
69
|
+
*/
|
|
70
|
+
export declare function accountedBar(tasks: readonly TaskInfo[], g: Glyphs): {
|
|
71
|
+
bar: Line;
|
|
72
|
+
accounted: number;
|
|
73
|
+
total: number;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* The latest event of each task, in order of first appearance.
|
|
77
|
+
*
|
|
78
|
+
* @param events - The execution's events
|
|
79
|
+
* @returns One event per task
|
|
80
|
+
*/
|
|
81
|
+
export declare function latestPerTask(events: readonly DataflowEvent[]): DataflowEvent[];
|
|
82
|
+
/** A task's row: the cells that follow from the data, and what the `SIZE · LAST RUN` cell is stamped from per frame. */
|
|
83
|
+
export interface TaskRowModel {
|
|
84
|
+
task: TaskInfo;
|
|
85
|
+
/** The cells the data decides (`size` is stamped at render — it carries the clock and the spinner while the task runs). */
|
|
86
|
+
cells: TableRow['cells'];
|
|
87
|
+
/** The output's size text (`12.1 MB` / `—`). */
|
|
88
|
+
size: string;
|
|
89
|
+
/** The task's latest dataflow event, if any. */
|
|
90
|
+
event: DataflowEvent | undefined;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The data-derived column: everything that follows from the workspace's
|
|
94
|
+
* data and the terminal width. Built by {@link dashboardModel}, rendered
|
|
95
|
+
* by {@link dashboardLines}.
|
|
96
|
+
*
|
|
97
|
+
* @property status - The status the model follows (undefined → `placeholder` is the whole column)
|
|
98
|
+
* @property placeholder - The column while there is no status: nothing deployed, an error, or loading
|
|
99
|
+
* @property counts - The counts block (the two stat groups and the accounted bar)
|
|
100
|
+
* @property execution - The execution the panel shows
|
|
101
|
+
* @property live - Whether the panel shows the live feed
|
|
102
|
+
* @property done - Events past `start` (the live feed's `N of M tasks`)
|
|
103
|
+
* @property events - The events the panel lists: the latest per task — the last ones while live, the failures after
|
|
104
|
+
* @property latest - The latest event per task
|
|
105
|
+
* @property taskPlan - The tasks table's fitted column plan
|
|
106
|
+
* @property tasks - The task rows
|
|
107
|
+
* @property inputPlan - The inputs table's fitted column plan
|
|
108
|
+
* @property inputs - The input rows
|
|
109
|
+
* @property inputNames - The input names, in row order
|
|
110
|
+
* @property rows - The selectable rows in column order (failures, tasks, inputs) with their line indices
|
|
111
|
+
* @property total - Lines in the column
|
|
112
|
+
* @property panelAt - The execution panel's first line
|
|
113
|
+
* @property tasksAt - The TASKS section line (the header follows, then the rows)
|
|
114
|
+
* @property inputsAt - The INPUTS section line
|
|
115
|
+
*/
|
|
116
|
+
export interface DashboardModel {
|
|
117
|
+
status: WorkspaceStatusResult | undefined;
|
|
118
|
+
placeholder: Line[];
|
|
119
|
+
counts: Line[];
|
|
120
|
+
execution: ExecutionData | undefined;
|
|
121
|
+
live: boolean;
|
|
122
|
+
done: number;
|
|
123
|
+
events: DataflowEvent[];
|
|
124
|
+
latest: ReadonlyMap<string, DataflowEvent>;
|
|
125
|
+
taskPlan: ColumnSpec[];
|
|
126
|
+
tasks: TaskRowModel[];
|
|
127
|
+
inputPlan: ColumnSpec[];
|
|
128
|
+
inputs: TableRow[];
|
|
129
|
+
inputNames: string[];
|
|
130
|
+
rows: DashboardRow[];
|
|
131
|
+
total: number;
|
|
132
|
+
panelAt: number;
|
|
133
|
+
tasksAt: number;
|
|
134
|
+
inputsAt: number;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* The dashboard model for a workspace — built once per data change and
|
|
138
|
+
* returned as the same object until the status, the execution, the
|
|
139
|
+
* dataset list, the task list, the width or the breakpoint changes. The
|
|
140
|
+
* clock, the spinner and the selection are not inputs: they restyle lines
|
|
141
|
+
* at render ({@link dashboardLines}).
|
|
142
|
+
*
|
|
143
|
+
* @param state - The store state
|
|
144
|
+
* @param ws - The workspace
|
|
145
|
+
* @param dctx - The dashboard context (its width and breakpoint key the cache)
|
|
146
|
+
* @returns The model
|
|
147
|
+
*/
|
|
148
|
+
export declare function dashboardModel(state: TuiState, ws: string, dctx: DashboardCtx): DashboardModel;
|
|
149
|
+
/**
|
|
150
|
+
* The column's lines in `[top, top + visible)` — the window the screen
|
|
151
|
+
* shows, rendered from the model with the selected row restyled and the
|
|
152
|
+
* clock and the spinner stamped in.
|
|
153
|
+
*
|
|
154
|
+
* @param model - The dashboard model
|
|
155
|
+
* @param dctx - The dashboard context
|
|
156
|
+
* @param sel - The selected row index
|
|
157
|
+
* @param top - The first line
|
|
158
|
+
* @param visible - Lines in the window
|
|
159
|
+
* @returns The lines (fewer when the column ends first)
|
|
160
|
+
*/
|
|
161
|
+
export declare function dashboardLines(model: DashboardModel, dctx: DashboardCtx, sel: number, top: number, visible: number): Line[];
|
|
162
|
+
/**
|
|
163
|
+
* The dashboard body: the fixed title, then the column window with its
|
|
164
|
+
* scrollbar — plus the window's clickable rows and pane for the mouse.
|
|
165
|
+
*
|
|
166
|
+
* @param state - The store state
|
|
167
|
+
* @param ctx - The render context
|
|
168
|
+
* @returns The body lines, hits and pane
|
|
169
|
+
*/
|
|
170
|
+
export declare function renderDashboard(state: TuiState, ctx: RenderCtx): {
|
|
171
|
+
body: Line[];
|
|
172
|
+
hits: Hit[];
|
|
173
|
+
pane: Pane | null;
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* Scrolls the column by lines (the wheel), or to a line (a thumb drag),
|
|
177
|
+
* keeping the selection inside the window.
|
|
178
|
+
*
|
|
179
|
+
* @param state - The store state
|
|
180
|
+
* @param controller - The controller
|
|
181
|
+
* @param to - `{ delta }` lines, or `{ top }` absolute
|
|
182
|
+
*/
|
|
183
|
+
export declare function scrollDashboard(state: TuiState, controller: Controller, to: {
|
|
184
|
+
delta: number;
|
|
185
|
+
} | {
|
|
186
|
+
top: number;
|
|
187
|
+
}): void;
|
|
188
|
+
/** The dashboard hints. */
|
|
189
|
+
export declare function dashboardHints(state: TuiState, ctx: RenderCtx): {
|
|
190
|
+
left: string;
|
|
191
|
+
right: string;
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Selects a row of the column (by index) and scrolls it into view.
|
|
195
|
+
*
|
|
196
|
+
* @param state - The store state
|
|
197
|
+
* @param controller - The controller
|
|
198
|
+
* @param index - The row index
|
|
199
|
+
*/
|
|
200
|
+
export declare function selectDashboardRow(state: TuiState, controller: Controller, index: number): void;
|
|
201
|
+
/**
|
|
202
|
+
* Moves the selection (or scrolls the column when it has no selectable
|
|
203
|
+
* rows); page moves step by a window of lines.
|
|
204
|
+
*
|
|
205
|
+
* @param state - The store state
|
|
206
|
+
* @param controller - The controller
|
|
207
|
+
* @param op - The navigation
|
|
208
|
+
*/
|
|
209
|
+
export declare function moveDashboard(state: TuiState, controller: Controller, op: NavOp): void;
|
|
210
|
+
export {};
|
|
211
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../../../src/tui/ui/views/dashboard.ts"],"names":[],"mappings":"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"}
|