@elaraai/e3-ui-cli 1.0.79 → 1.0.80

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 (119) hide show
  1. package/README.md +8 -6
  2. package/dist/app/assets/{engine-DAHqaY4g-B9nTMQVT.js → engine-Bq3Rqc8f-Bi5uj9DS.js} +1 -1
  3. package/dist/app/assets/{index-CIIzwdrV.js → index-Cn_whZOl.js} +106 -106
  4. package/dist/app/index.html +1 -1
  5. package/dist/cli.js +2 -0
  6. package/dist/cli.js.map +1 -1
  7. package/dist/commands/tui.d.ts +15 -3
  8. package/dist/commands/tui.d.ts.map +1 -1
  9. package/dist/commands/tui.js +14 -4
  10. package/dist/commands/tui.js.map +1 -1
  11. package/dist/e3-server.d.ts +6 -1
  12. package/dist/e3-server.d.ts.map +1 -1
  13. package/dist/e3-server.js +6 -1
  14. package/dist/e3-server.js.map +1 -1
  15. package/dist/load-source.d.ts +13 -11
  16. package/dist/load-source.d.ts.map +1 -1
  17. package/dist/load-source.js +9 -10
  18. package/dist/load-source.js.map +1 -1
  19. package/dist/tui/api.d.ts +15 -1
  20. package/dist/tui/api.d.ts.map +1 -1
  21. package/dist/tui/api.js +5 -1
  22. package/dist/tui/api.js.map +1 -1
  23. package/dist/tui/app.d.ts.map +1 -1
  24. package/dist/tui/app.js +19 -1
  25. package/dist/tui/app.js.map +1 -1
  26. package/dist/tui/controller.d.ts +3 -1
  27. package/dist/tui/controller.d.ts.map +1 -1
  28. package/dist/tui/controller.js +48 -20
  29. package/dist/tui/controller.js.map +1 -1
  30. package/dist/tui/data/dataflow.d.ts +1 -2
  31. package/dist/tui/data/dataflow.d.ts.map +1 -1
  32. package/dist/tui/data/dataflow.js +1 -3
  33. package/dist/tui/data/dataflow.js.map +1 -1
  34. package/dist/tui/data/dataset.d.ts +24 -5
  35. package/dist/tui/data/dataset.d.ts.map +1 -1
  36. package/dist/tui/data/dataset.js +100 -25
  37. package/dist/tui/data/dataset.js.map +1 -1
  38. package/dist/tui/data/feeds.d.ts +3 -0
  39. package/dist/tui/data/feeds.d.ts.map +1 -1
  40. package/dist/tui/data/feeds.js +16 -1
  41. package/dist/tui/data/feeds.js.map +1 -1
  42. package/dist/tui/data/records.d.ts +63 -0
  43. package/dist/tui/data/records.d.ts.map +1 -0
  44. package/dist/tui/data/records.js +144 -0
  45. package/dist/tui/data/records.js.map +1 -0
  46. package/dist/tui/input/commands.d.ts +14 -11
  47. package/dist/tui/input/commands.d.ts.map +1 -1
  48. package/dist/tui/input/commands.js +20 -15
  49. package/dist/tui/input/commands.js.map +1 -1
  50. package/dist/tui/input/completion.d.ts +10 -4
  51. package/dist/tui/input/completion.d.ts.map +1 -1
  52. package/dist/tui/input/completion.js +6 -0
  53. package/dist/tui/input/completion.js.map +1 -1
  54. package/dist/tui/model/catalogue.d.ts.map +1 -1
  55. package/dist/tui/model/catalogue.js +39 -3
  56. package/dist/tui/model/catalogue.js.map +1 -1
  57. package/dist/tui/model/help.d.ts.map +1 -1
  58. package/dist/tui/model/help.js +44 -4
  59. package/dist/tui/model/help.js.map +1 -1
  60. package/dist/tui/model/status.d.ts +31 -2
  61. package/dist/tui/model/status.d.ts.map +1 -1
  62. package/dist/tui/model/status.js +63 -4
  63. package/dist/tui/model/status.js.map +1 -1
  64. package/dist/tui/model/tree.d.ts +36 -1
  65. package/dist/tui/model/tree.d.ts.map +1 -1
  66. package/dist/tui/model/tree.js +58 -8
  67. package/dist/tui/model/tree.js.map +1 -1
  68. package/dist/tui/render/glyphs.d.ts +2 -0
  69. package/dist/tui/render/glyphs.d.ts.map +1 -1
  70. package/dist/tui/render/glyphs.js +2 -0
  71. package/dist/tui/render/glyphs.js.map +1 -1
  72. package/dist/tui/render/layout.d.ts +1 -1
  73. package/dist/tui/render/layout.d.ts.map +1 -1
  74. package/dist/tui/render/layout.js +36 -5
  75. package/dist/tui/render/layout.js.map +1 -1
  76. package/dist/tui/session.d.ts.map +1 -1
  77. package/dist/tui/session.js +7 -0
  78. package/dist/tui/session.js.map +1 -1
  79. package/dist/tui/state/actions.d.ts +64 -5
  80. package/dist/tui/state/actions.d.ts.map +1 -1
  81. package/dist/tui/state/actions.js +9 -1
  82. package/dist/tui/state/actions.js.map +1 -1
  83. package/dist/tui/state/persist.d.ts +1 -1
  84. package/dist/tui/state/persist.d.ts.map +1 -1
  85. package/dist/tui/state/reducer.d.ts.map +1 -1
  86. package/dist/tui/state/reducer.js +16 -2
  87. package/dist/tui/state/reducer.js.map +1 -1
  88. package/dist/tui/ui/App.js +1 -1
  89. package/dist/tui/ui/App.js.map +1 -1
  90. package/dist/tui/ui/shell/chrome.d.ts +6 -1
  91. package/dist/tui/ui/shell/chrome.d.ts.map +1 -1
  92. package/dist/tui/ui/shell/chrome.js +26 -23
  93. package/dist/tui/ui/shell/chrome.js.map +1 -1
  94. package/dist/tui/ui/views/all.d.ts +1 -0
  95. package/dist/tui/ui/views/all.d.ts.map +1 -1
  96. package/dist/tui/ui/views/all.js +1 -0
  97. package/dist/tui/ui/views/all.js.map +1 -1
  98. package/dist/tui/ui/views/dashboard.d.ts +66 -15
  99. package/dist/tui/ui/views/dashboard.d.ts.map +1 -1
  100. package/dist/tui/ui/views/dashboard.js +160 -37
  101. package/dist/tui/ui/views/dashboard.js.map +1 -1
  102. package/dist/tui/ui/views/help.js +1 -1
  103. package/dist/tui/ui/views/record.d.ts +38 -0
  104. package/dist/tui/ui/views/record.d.ts.map +1 -0
  105. package/dist/tui/ui/views/record.js +298 -0
  106. package/dist/tui/ui/views/record.js.map +1 -0
  107. package/dist/tui/ui/widgets/reads.d.ts +7 -7
  108. package/dist/tui/ui/widgets/reads.d.ts.map +1 -1
  109. package/dist/tui/ui/widgets/reads.js +9 -21
  110. package/dist/tui/ui/widgets/reads.js.map +1 -1
  111. package/dist/tui/ui/widgets/runs.d.ts +2 -2
  112. package/dist/tui/ui/widgets/runs.d.ts.map +1 -1
  113. package/dist/tui/ui/widgets/runs.js +3 -2
  114. package/dist/tui/ui/widgets/runs.js.map +1 -1
  115. package/dist/tui/ui/widgets/tree.d.ts +11 -6
  116. package/dist/tui/ui/widgets/tree.d.ts.map +1 -1
  117. package/dist/tui/ui/widgets/tree.js +28 -17
  118. package/dist/tui/ui/widgets/tree.js.map +1 -1
  119. package/package.json +14 -14
package/README.md CHANGED
@@ -5,11 +5,11 @@
5
5
  [![License](https://img.shields.io/badge/license-AGPL--3.0%20%2F%20Commercial-blue.svg)](LICENSE.md)
6
6
  [![Node Version](https://img.shields.io/badge/node-%3E%3D22.0.0-brightgreen.svg)](https://nodejs.org)
7
7
 
8
- **e3-ui CLI** is two things in one command. With no subcommand it is a full-screen **terminal UI** over an [e3](https://github.com/elaraai/east-workspace/tree/main/libs/e3) repository — local or remote — showing a workspace's task and dataset status, its dataflow runs (start and cancel them), every task's output as a lazily paged value tree, its logs and run history, and editable inputs. With `shot` / `shots` it renders [East UI](https://github.com/elaraai/east-workspace/tree/main/libs/east-ui) components — East functions returning a `UIComponentType` — to PNG images using headless Chromium, for automating UI/UX reviews and generating screenshots. The East→React renderer is pre-bundled into the package; the component is injected as data at runtime, so the only runtime dependency of the screenshots is the browser engine, and the terminal UI never needs one.
8
+ **e3-ui CLI** is two things in one command. With no subcommand it is a full-screen **terminal UI** over an [e3](https://github.com/elaraai/east-workspace/tree/main/libs/e3) repository — local or remote — showing a workspace's task and dataset status, its dataflow runs (start and cancel them, and watch the budget they run under), every task's output as a lazily paged value tree, its logs and run history, editable inputs, and its records — their rows, through any of their indexes, and their commits. With `shot` / `shots` it renders [East UI](https://github.com/elaraai/east-workspace/tree/main/libs/east-ui) components — East functions returning a `UIComponentType` — to PNG images using headless Chromium, for automating UI/UX reviews and generating screenshots. The East→React renderer is pre-bundled into the package; the component is injected as data at runtime, so the only runtime dependency of the screenshots is the browser engine, and the terminal UI never needs one.
9
9
 
10
10
  ## Features
11
11
 
12
- - **Terminal UI** (`e3-ui [repo] [workspace]`): the workspace dashboard, `/run` and `/stop` with a live event feed, task views (a paged value tree with `/find` and `/goto`, logs with tail-follow, the run history, a `ui()` task's manifest), editable inputs with a commit bar and conflict detection, a command box with completion, vim-style keys and the mouse, remote repositories over the same credentials as `e3 auth`.
12
+ - **Terminal UI** (`e3-ui [repo] [workspace]`): the workspace dashboard, `/run` and `/stop` with a live event feed and the scheduler (the cores and memory in use, units waiting for room and requeued, each task's peak memory), task views (a paged value tree with `/find` and `/goto`, stdout and stderr with tail-follow, the run history, a `ui()` task's manifest), editable inputs with a commit bar and conflict detection, records (a read-only view of their rows, through any of their indexes, and their commits), a command box with completion, vim-style keys and the mouse, remote repositories over the same credentials as `e3 auth`.
13
13
  - **Component screenshots**: render a `.ts`/`.tsx` source (`--from-source`) or serialized `.beast2`/`.json` IR (`--from-ir`) to a PNG.
14
14
  - **Live task screenshots**: render a deployed e3 UI task's output with real, already-computed workspace data (`--from-task`).
15
15
  - **Self-contained**: the renderer (React + Chakra UI v3 + the full component set) is pre-bundled; no app server or build step at use time.
@@ -32,15 +32,17 @@ e3-ui ./my-repo main --task forecast # straight to a task (--input <name> fo
32
32
  e3-ui https://e3.example.com/repos/demo # remote — after: e3-ui auth login https://e3.example.com
33
33
  e3-ui https://e3.example.com # a bare origin: the repositories list
34
34
  e3-ui --no-mouse --ascii ./my-repo # keyboard only, box-drawing off (also E3_UI_ASCII=1)
35
+ e3-ui -j 8 --memory 16G ./my-repo # the embedded server's budget, as for e3 dataflow run
35
36
  ```
36
37
 
37
- A local repository is served by an embedded `@elaraai/e3-api-server` for the session; a remote one is reached with the token `e3-ui auth login` saved (the same device flow and `~/.e3/credentials.json` store as `e3 auth`, so either login serves both). Everything is one screen at a time — repositories, workspaces, a workspace's dashboard, a task (`1 Output · 2 Stdout · 3 Stderr · 4 Runs`, plus `5 Reads` for a `ui()` task), an input — with a **command box** along the bottom:
38
+ A local repository is served by an embedded `@elaraai/e3-api-server` for the session, whose runs go under the budget `-j` / `--memory` set (default: `E3_JOBS` / `E3_MEMORY`, else the machine's); a remote one is reached with the token `e3-ui auth login` saved (the same device flow and `~/.e3/credentials.json` store as `e3 auth`, so either login serves both). Everything is one screen at a time — repositories, workspaces, a workspace's dashboard, a task (`1 Output · 2 Stdout · 3 Stderr · 4 Runs`, plus `5 Reads` for a `ui()` task), an input, a record (`1 State · 2 History`) — with a **command box** along the bottom:
38
39
 
39
40
  | Type | Effect |
40
41
  |---|---|
41
- | `/task <name>` · `/input <name>` · `/workspace <name>` · `/repo <path\|url>` | open things; plain text without `/` fuzzy-jumps to any of them |
42
- | `/run [--force] [--filter <glob>] [--concurrency <n>]` · `/stop` | start / cancel the dataflow (`r` / `x` prefill them); the header pill and the execution panel follow it live |
42
+ | `/task <name>` · `/input <name>` · `/record <name>` · `/workspace <name>` · `/repo <path\|url>` | open things; plain text without `/` fuzzy-jumps to any of them |
43
+ | `/run [--force] [--filter <glob>]` · `/stop` | start / cancel the dataflow (`r` / `x` prefill them); the header pill and the execution panel follow it live, with the cores and memory the server's budget holds |
43
44
  | `/find <key>` · `/goto <row\|N%>` · `/save [file]` | in a value tree: exact `"key"`, prefix, or struct-key fields `a\|b`; jump; write the `.beast2` bytes |
45
+ | `/index <name>` · `/index primary` | in a record: page through one of its indexes (`/find` then searches the index's key), or its rows again |
44
46
  | `e` `a` `x` `t` · `⏎ APPLY` · `esc DISCARD` | in an input: edit a leaf, add, remove, tag / set; the commit bar sums the pending changes |
45
47
  | `?` | help for the page you are on; `q` quits, `esc` goes back |
46
48
 
@@ -160,7 +162,7 @@ Dual-licensed under AGPL-3.0 and a commercial license. See [LICENSE.md](LICENSE.
160
162
  - [@elaraai/e3](https://www.npmjs.com/package/@elaraai/e3): SDK for authoring e3 packages with typed tasks and pipelines
161
163
  - [@elaraai/e3-core](https://www.npmjs.com/package/@elaraai/e3-core): Object store, dataflow orchestrator, execution state
162
164
  - [@elaraai/e3-types](https://www.npmjs.com/package/@elaraai/e3-types): Shared type definitions for e3 packages
163
- - [@elaraai/e3-cli](https://www.npmjs.com/package/@elaraai/e3-cli): `e3 repo`, `e3 package`, `e3 workspace`, `e3 start`, `e3 watch`, `e3 logs` commands
165
+ - [@elaraai/e3-cli](https://www.npmjs.com/package/@elaraai/e3-cli): `e3 repo`, `e3 package`, `e3 workspace`, `e3 dataflow run`, `e3 watch`, `e3 task logs` commands
164
166
  - [@elaraai/e3-api-client](https://www.npmjs.com/package/@elaraai/e3-api-client): HTTP client for remote e3 repositories
165
167
  - [@elaraai/e3-api-server](https://www.npmjs.com/package/@elaraai/e3-api-server): REST API server for e3 repositories
166
168
  - [@elaraai/e3-api-tests](https://www.npmjs.com/package/@elaraai/e3-api-tests): Shared API compliance test suites