@elaraai/e3-ui-cli 1.0.28

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 (64) hide show
  1. package/CLA.md +26 -0
  2. package/CONTRIBUTING.md +28 -0
  3. package/LICENSE.md +31 -0
  4. package/README.md +158 -0
  5. package/bin/e3-ui.mjs +13 -0
  6. package/dist/app/assets/dm-sans-latin-ext-wght-normal-BOFOeGcA.woff2 +0 -0
  7. package/dist/app/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2 +0 -0
  8. package/dist/app/assets/engine-Daqj4eDD-BQb68g_1.js +4 -0
  9. package/dist/app/assets/index-30g1JIHt.js +2255 -0
  10. package/dist/app/assets/index-CYR-0Grb.css +1 -0
  11. package/dist/app/assets/inter-tight-cyrillic-ext-wght-normal-okcGN4Nq.woff2 +0 -0
  12. package/dist/app/assets/inter-tight-cyrillic-wght-normal-BS41q_Tv.woff2 +0 -0
  13. package/dist/app/assets/inter-tight-greek-ext-wght-normal-DQgQPNk4.woff2 +0 -0
  14. package/dist/app/assets/inter-tight-greek-wght-normal-sS1B39LI.woff2 +0 -0
  15. package/dist/app/assets/inter-tight-latin-ext-wght-normal-B4u9PlvR.woff2 +0 -0
  16. package/dist/app/assets/inter-tight-latin-wght-normal-DX-nOvPD.woff2 +0 -0
  17. package/dist/app/assets/inter-tight-vietnamese-wght-normal-TKKdAiBA.woff2 +0 -0
  18. package/dist/app/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2 +0 -0
  19. package/dist/app/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2 +0 -0
  20. package/dist/app/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
  21. package/dist/app/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
  22. package/dist/app/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2 +0 -0
  23. package/dist/app/index.html +13 -0
  24. package/dist/browser.d.ts +88 -0
  25. package/dist/browser.d.ts.map +1 -0
  26. package/dist/browser.js +249 -0
  27. package/dist/browser.js.map +1 -0
  28. package/dist/capture.d.ts +80 -0
  29. package/dist/capture.d.ts.map +1 -0
  30. package/dist/capture.js +275 -0
  31. package/dist/capture.js.map +1 -0
  32. package/dist/cli.d.ts +6 -0
  33. package/dist/cli.d.ts.map +1 -0
  34. package/dist/cli.js +70 -0
  35. package/dist/cli.js.map +1 -0
  36. package/dist/commands/shot.d.ts +42 -0
  37. package/dist/commands/shot.d.ts.map +1 -0
  38. package/dist/commands/shot.js +134 -0
  39. package/dist/commands/shot.js.map +1 -0
  40. package/dist/e3-server.d.ts +21 -0
  41. package/dist/e3-server.d.ts.map +1 -0
  42. package/dist/e3-server.js +34 -0
  43. package/dist/e3-server.js.map +1 -0
  44. package/dist/index.d.ts +17 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +17 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/load-source.d.ts +21 -0
  49. package/dist/load-source.d.ts.map +1 -0
  50. package/dist/load-source.js +163 -0
  51. package/dist/load-source.js.map +1 -0
  52. package/dist/payload.d.ts +26 -0
  53. package/dist/payload.d.ts.map +1 -0
  54. package/dist/payload.js +87 -0
  55. package/dist/payload.js.map +1 -0
  56. package/dist/render.d.ts +80 -0
  57. package/dist/render.d.ts.map +1 -0
  58. package/dist/render.js +79 -0
  59. package/dist/render.js.map +1 -0
  60. package/dist/shot-payload.d.ts +31 -0
  61. package/dist/shot-payload.d.ts.map +1 -0
  62. package/dist/shot-payload.js +6 -0
  63. package/dist/shot-payload.js.map +1 -0
  64. package/package.json +82 -0
package/CLA.md ADDED
@@ -0,0 +1,26 @@
1
+ # Contributor License Agreement
2
+
3
+ This Contributor License Agreement ("Agreement") is entered into between Elara AI Pty Ltd ("Company") and you (the "Contributor").
4
+
5
+ ## Grant of Copyright License
6
+
7
+ You hereby grant to the Company and to recipients of software distributed by the Company a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, distribute, and use Your Contributions and such derivative works.
8
+
9
+ ## Grant of Patent License
10
+
11
+ You hereby grant to the Company and to recipients of software distributed by the Company a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer Your Contributions.
12
+
13
+ ## Relicensing Rights
14
+
15
+ You grant the Company the right to license Your Contributions under any license terms, including but not limited to commercial licenses, in addition to the open source license under which the project is distributed.
16
+
17
+ ## Your Representations
18
+
19
+ You represent that:
20
+ - You are legally entitled to grant the above licenses
21
+ - Each of Your Contributions is Your original creation
22
+ - Your Contribution submissions include complete details of any third-party license or other restriction of which you are aware
23
+
24
+ ## Agreement
25
+
26
+ By signing this Agreement through CLA Assistant or by submitting a Contribution, you accept and agree to the terms of this Agreement.
@@ -0,0 +1,28 @@
1
+ # Contributing to e3-ui-cli
2
+
3
+ Thank you for your interest in contributing! We welcome contributions from the community.
4
+
5
+ ## Contributor License Agreement (CLA)
6
+
7
+ Before we can accept your contribution, you must sign our Contributor License Agreement (CLA). This agreement gives Elara AI Pty Ltd the right to use and relicense your contributions, including under commercial licenses, while you retain ownership of your contribution.
8
+
9
+ **Why do we require a CLA?**
10
+ This project is dual-licensed under AGPL-3.0 and commercial licenses. The CLA allows us to offer commercial licenses to users who wish to use this software in proprietary applications.
11
+
12
+ ### Signing the CLA
13
+
14
+ When you submit your first pull request, the CLA Assistant bot will automatically comment on your PR with a link to sign the CLA electronically. It only takes a minute, and you'll only need to sign it once.
15
+
16
+ ## Contributing Process
17
+
18
+ 1. Fork the [east-workspace monorepo](https://github.com/elaraai/east-workspace)
19
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
20
+ 3. Make your changes
21
+ 4. Commit your changes (`git commit -m 'Add amazing feature'`)
22
+ 5. Push to the branch (`git push origin feature/amazing-feature`)
23
+ 6. Open a Pull Request
24
+ 7. Sign the CLA when the bot prompts you
25
+
26
+ ## Questions?
27
+
28
+ Contact us at support@elara.ai
package/LICENSE.md ADDED
@@ -0,0 +1,31 @@
1
+ Copyright (c) 2025 Elara AI Pty Ltd
2
+
3
+ # Dual License — AGPL-3.0 / Commercial
4
+
5
+ This software is available under two licenses. You may choose which license applies to your use:
6
+
7
+ ## Option 1: AGPL-3.0 (Open Source)
8
+
9
+ You may use, modify, and distribute this software under the terms of the GNU Affero General Public License v3.0.
10
+
11
+ This requires that if you use this software in a network service, you must make your complete source code available under AGPL-3.0.
12
+
13
+ Full text: https://www.gnu.org/licenses/agpl-3.0.html
14
+
15
+ ## Option 2: Commercial License
16
+
17
+ If you wish to use this software without the source code disclosure requirements of AGPL-3.0, you must obtain a commercial license from Elara AI Pty Ltd.
18
+
19
+ Contact: support@elara.ai
20
+
21
+ ## Contributions
22
+
23
+ Contributions are welcome. By submitting a pull request, you agree to license your contribution under both AGPL-3.0 and our commercial license terms.
24
+
25
+ ## Governing Law
26
+
27
+ This license is governed by the laws of New South Wales, Australia.
28
+
29
+ ---
30
+
31
+ *Elara AI Pty Ltd*
package/README.md ADDED
@@ -0,0 +1,158 @@
1
+ # e3-ui CLI
2
+
3
+ > Render east-ui / e3-ui components to PNG from the command line.
4
+
5
+ [![License](https://img.shields.io/badge/license-AGPL--3.0%20%2F%20Commercial-blue.svg)](LICENSE.md)
6
+ [![Node Version](https://img.shields.io/badge/node-%3E%3D22.0.0-brightgreen.svg)](https://nodejs.org)
7
+
8
+ **e3-ui CLI** 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 is the browser engine.
9
+
10
+ ## Features
11
+
12
+ - **Component screenshots**: render a `.ts`/`.tsx` source (`--from-source`) or serialized `.beast2`/`.json` IR (`--from-ir`) to a PNG.
13
+ - **Live task screenshots**: render a deployed e3 UI task's output with real, already-computed workspace data (`--from-task`).
14
+ - **Self-contained**: the renderer (React + Chakra UI v3 + the full component set) is pre-bundled; no app server or build step at use time.
15
+ - **Consistent with e3-cli**: extension-based format detection with a `--from` override, `-o/--output`, and esbuild TypeScript loading.
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ npm install -g @elaraai/e3-ui-cli # small — downloads no browser
21
+ e3-ui install-browser # one-time: fetch the version-matched headless Chromium
22
+ ```
23
+
24
+ The CLI depends on `playwright-core` (no install-time browser download). `e3-ui install-browser` fetches the `chromium-headless-shell` build (~100 MB lighter than full Chromium, no X11/D-Bus libraries) into the shared playwright cache, version-matched to the CLI. On a **fresh Linux server**, add the OS libraries in the same step:
25
+
26
+ ```bash
27
+ sudo e3-ui install-browser --with-deps # Linux only; Windows/macOS need no system libraries
28
+ ```
29
+
30
+ If the CLI already finds a system-installed Chrome/Chromium/Edge, `install-browser` is optional — the launch order is:
31
+
32
+ 1. `E3_UI_CHROMIUM_PATH` (or `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH`) — an explicit executable wins.
33
+ 2. The playwright-managed cache (what `install-browser` fills; honors `PLAYWRIGHT_BROWSERS_PATH`).
34
+ 3. A system Chrome / Chromium / Edge at the standard per-OS locations. **Ubuntu's snap chromium is detected and skipped** — its confinement breaks automation; use Google Chrome's `.deb` or `install-browser` instead.
35
+
36
+ Under the hood the CLI starts a throwaway local web server for its prebuilt renderer, launches headless Chromium at it, injects your component, and screenshots the result. Chromium runs sandbox-off (playwright's default) — appropriate for rendering trusted local components, and why running as root on a server just works.
37
+
38
+ ### Headless servers & CI
39
+
40
+ ```bash
41
+ e3-ui doctor # diagnoses the browser setup: env overrides, launch cascade, remediation
42
+ ```
43
+
44
+ - Share one browser cache across users/agents with `PLAYWRIGHT_BROWSERS_PATH=/opt/pw-browsers` (set it for both `install-browser` and `shot`).
45
+ - Reinstalling/upgrading the CLI can move to a new browser revision — if `shot` reports a missing executable, re-run `e3-ui install-browser`.
46
+ - Docker: `mcr.microsoft.com/playwright` images work out of the box, or add `e3-ui install-browser --with-deps` to your own image.
47
+
48
+ ## Quick Start
49
+
50
+ ```bash
51
+ # A .tsx exporting an East function returning a UIComponentType:
52
+ e3-ui shot --from-source ./dashboard.tsx -o dashboard.png
53
+
54
+ # Pick one export, set a viewport, also emit standalone HTML:
55
+ e3-ui shot --from-source ./widgets.tsx --export statCard --viewport 800x600 --html
56
+
57
+ # Serialized component IR (e.g. produced by an e3 export):
58
+ e3-ui shot --from-ir ./component.beast2 -o component.png
59
+
60
+ # A live e3 UI task's rendered output (dataflow must have already run):
61
+ e3-ui shot --from-task main.dashboard --repo ./my-repo -o dashboard.png
62
+ ```
63
+
64
+ ## Sources
65
+
66
+ One screenshot verb, one source per run (mirroring e3-cli's `--from-zip` / `--from-source`):
67
+
68
+ | Source | Description |
69
+ |---|---|
70
+ | `--from-source <file>` | A `.ts`/`.tsx` component source. Static and `State`-only components render with no backend. **Runs the file and its imports as Node code** (like ts-node) — only point it at code you trust. |
71
+ | `--from-ir <file>` | Serialized component IR (`.beast2`/`.json`); `-` reads from stdin. |
72
+ | `--from-task <ws.task> --repo <repo>` | A live e3 UI task's output with real bound data (via `@elaraai/e3-api-client`). The workspace dataflow must have already produced the task output. |
73
+
74
+ `e3-ui shot --help` lists all flags (`--export`, `--output`, `--html`, `--viewport`, `--dpr`, `--full-page`, `--element`, `--wait`, `--timeout`, `--storage-key`).
75
+
76
+ `--from-source` also accepts a file exporting an e3 `ui()` task (e.g. a create-e3 `--ui` scaffold's `src/ui/index.tsx`) — the task's stored component function is rendered. Tasks with compute-time inputs can't render standalone; use `--from-task` against a deployed workspace for those.
77
+
78
+ ## Programmatic API
79
+
80
+ ```ts
81
+ import { renderToPng } from "@elaraai/e3-ui-cli";
82
+
83
+ await renderToPng({
84
+ input: { path: "./dashboard.tsx" },
85
+ output: "dashboard.png",
86
+ });
87
+ ```
88
+
89
+ ## Development
90
+
91
+ `make build`, `make test`, `make lint` from this directory. See [`MAKEFILE_TARGETS.md`](../../../../docs/conventions/MAKEFILE_TARGETS.md) for the full target list. The browser app under `app/` is bundled into `dist/app` by `scripts/build-app.mjs` as the second half of `make build`.
92
+
93
+ ## Documentation
94
+
95
+ - [CONTRIBUTING.md](CONTRIBUTING.md) — contributing + CLA
96
+ - [LICENSE.md](LICENSE.md) — license
97
+
98
+ ## License
99
+
100
+ Dual-licensed under AGPL-3.0 and a commercial license. See [LICENSE.md](LICENSE.md).
101
+
102
+ <!-- Ecosystem block — keep in sync with docs/snippets/ECOSYSTEM.md -->
103
+
104
+ ### Ecosystem
105
+
106
+ - **[East](https://github.com/elaraai/east-workspace/tree/main/libs/east)**: Statically typed, expression-based language with serializable IR. Run portable logic across TypeScript, Python, C, and other runtimes.
107
+ - [@elaraai/east](https://www.npmjs.com/package/@elaraai/east): Core language SDK with type system, expressions, and reference JS compiler
108
+
109
+ - **[East Node](https://github.com/elaraai/east-workspace/tree/main/libs/east-node)**: Node.js platform functions for I/O, databases, and system operations.
110
+ - [@elaraai/east-node-std](https://www.npmjs.com/package/@elaraai/east-node-std): Console, FileSystem, Fetch, Crypto, Time, Path, Random
111
+ - [@elaraai/east-node-io](https://www.npmjs.com/package/@elaraai/east-node-io): SQLite, PostgreSQL, MySQL, MongoDB, Redis, S3, FTP, SFTP, XLSX, XML, compression
112
+ - [@elaraai/east-node-cli](https://www.npmjs.com/package/@elaraai/east-node-cli): CLI for running East IR programs in Node.js
113
+
114
+ - **[East C](https://github.com/elaraai/east-workspace/tree/main/libs/east-c)**: C11 native runtime for executing East IR. Tarballed for `linux-x64` and `linux-arm64`, attached to each GitHub Release.
115
+ - `east-c`: Core runtime — type system, IR interpreter, 200+ builtins, serialization (Beast2, JSON, CSV, East text)
116
+ - `east-c-std`: Console, FileSystem, Fetch, Crypto, Time, Path, Random
117
+ - `east-c-cli`: CLI for running East IR programs natively
118
+
119
+ - **[East Python](https://github.com/elaraai/east-workspace/tree/main/libs/east-py)**: Python runtime, standard platform, I/O, and data-science platform functions. Published to PyPI.
120
+ - [east-py](https://pypi.org/project/east-py/): Core Python runtime — type system, IR compiler, 212+ builtins, Cython-accelerated hot paths
121
+ - [east-py-std](https://pypi.org/project/east-py-std/): Console, FileSystem, Fetch, Crypto, Time, Path, Random
122
+ - [east-py-io](https://pypi.org/project/east-py-io/): SQLite, PostgreSQL, MySQL, MongoDB, Redis, S3, FTP, SFTP, XLSX, XML, compression
123
+ - [east-py-cli](https://pypi.org/project/east-py-cli/): CLI for running East IR programs in Python
124
+ - [east-py-datascience](https://pypi.org/project/east-py-datascience/) (PyPI) + [@elaraai/east-py-datascience](https://www.npmjs.com/package/@elaraai/east-py-datascience) (npm): Optimization (MADS, Optuna, ALNS, GoogleOR), ML (XGBoost, LightGBM, NGBoost, PyTorch, Lightning, GP), Bayesian inference (PyMC), explainability (SHAP), conformal prediction (MAPIE)
125
+
126
+ - **[East UI](https://github.com/elaraai/east-workspace/tree/main/libs/east-ui)**: Typed UI component definitions and React renderer, plus VS Code preview.
127
+ - [@elaraai/east-ui](https://www.npmjs.com/package/@elaraai/east-ui): 50+ typed UI components for layouts, forms, charts, tables, dialogs
128
+ - [@elaraai/east-ui-components](https://www.npmjs.com/package/@elaraai/east-ui-components): React renderer with Chakra UI v3 styling
129
+ - [@elaraai/e3-ui](https://www.npmjs.com/package/@elaraai/e3-ui): e3 + UI bridge — Data bindings, `e3.ui()` task, manifest
130
+ - [@elaraai/e3-ui-components](https://www.npmjs.com/package/@elaraai/e3-ui-components): React Query hooks and preview components for the e3 API
131
+ - [@elaraai/e3-ui-cli](https://www.npmjs.com/package/@elaraai/e3-ui-cli): Render east-ui / e3-ui components to PNG from the command line (`e3-ui shot`)
132
+ - [east-ui-preview](https://marketplace.visualstudio.com/items?itemName=ElaraAI.east-ui-preview): VS Code extension for live East UI component preview
133
+
134
+ - **[e3 — East Execution Engine](https://github.com/elaraai/east-workspace/tree/main/libs/e3)**: Durable execution engine for running East pipelines at scale. Git-like content-addressable storage, automatic memoization, reactive dataflow, real-time monitoring.
135
+ - [@elaraai/e3](https://www.npmjs.com/package/@elaraai/e3): SDK for authoring e3 packages with typed tasks and pipelines
136
+ - [@elaraai/e3-core](https://www.npmjs.com/package/@elaraai/e3-core): Object store, dataflow orchestrator, execution state
137
+ - [@elaraai/e3-types](https://www.npmjs.com/package/@elaraai/e3-types): Shared type definitions for e3 packages
138
+ - [@elaraai/e3-cli](https://www.npmjs.com/package/@elaraai/e3-cli): `e3 repo`, `e3 package`, `e3 workspace`, `e3 start`, `e3 watch`, `e3 logs` commands
139
+ - [@elaraai/e3-api-client](https://www.npmjs.com/package/@elaraai/e3-api-client): HTTP client for remote e3 repositories
140
+ - [@elaraai/e3-api-server](https://www.npmjs.com/package/@elaraai/e3-api-server): REST API server for e3 repositories
141
+ - [@elaraai/e3-api-tests](https://www.npmjs.com/package/@elaraai/e3-api-tests): Shared API compliance test suites
142
+
143
+ ## Links
144
+
145
+ - **Website**: https://elaraai.com/
146
+ - **Repository**: https://github.com/elaraai/east-workspace
147
+ - **Issues**: https://github.com/elaraai/east-workspace/issues
148
+ - **Email**: support@elara.ai
149
+
150
+ <!-- About Elara — keep in sync with docs/snippets/ABOUT_ELARA.md -->
151
+
152
+ ## About Elara
153
+
154
+ East is developed by [Elara AI Pty Ltd](https://elaraai.com/), an AI-powered platform that creates economic digital twins of businesses that optimize performance. Elara combines business objectives, decisions and data to help organizations make data-driven decisions across operations, purchasing, sales and customer engagement, and project and investment planning. East powers the computational layer of Elara solutions, enabling the expression of complex business logic and data in a simple, type-safe and portable language.
155
+
156
+ ---
157
+
158
+ *Developed by [Elara AI Pty Ltd](https://elaraai.com/).*
package/bin/e3-ui.mjs ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Copyright (c) 2025 Elara AI Pty Ltd
4
+ * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
5
+ *
6
+ * Static bin shim — committed so `pnpm install` can create the `e3-ui` bin
7
+ * symlink on a fresh checkout BEFORE the package is built. Delegates to the
8
+ * compiled CLI entry.
9
+ */
10
+ import('../dist/cli.js').catch((err) => {
11
+ console.error('e3-ui: failed to start — build the package first (npm run build).', err?.message ?? err);
12
+ process.exit(1);
13
+ });