@elaraai/e3-ui-cli 1.0.72 → 1.0.73
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/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 +86 -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 +241 -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 +620 -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 +112 -0
- package/dist/tui/model/tree.d.ts.map +1 -0
- package/dist/tui/model/tree.js +178 -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 +149 -0
- package/dist/tui/render/text.d.ts.map +1 -0
- package/dist/tui/render/text.js +288 -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 +41 -0
- package/dist/tui/ui/App.d.ts.map +1 -0
- package/dist/tui/ui/App.js +92 -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 +75 -0
- package/dist/tui/ui/shell/widgets.d.ts.map +1 -0
- package/dist/tui/ui/shell/widgets.js +160 -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 +156 -0
- package/dist/tui/ui/views/dashboard.d.ts.map +1 -0
- package/dist/tui/ui/views/dashboard.js +599 -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,61 @@
|
|
|
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
|
+
/** The exit code for an unexpected failure (EX_SOFTWARE). */
|
|
6
|
+
export declare const EXIT_SOFTWARE = 70;
|
|
7
|
+
/** A line logger. */
|
|
8
|
+
export type Logger = (line: string) => void;
|
|
9
|
+
/**
|
|
10
|
+
* The debug logger: appends to `$XDG_STATE_HOME/e3-ui/debug.log` (beside
|
|
11
|
+
* the state file) when `E3_UI_DEBUG=1`, else a no-op.
|
|
12
|
+
*
|
|
13
|
+
* @param env - The environment
|
|
14
|
+
* @returns The logger and the log path (null when disabled)
|
|
15
|
+
*/
|
|
16
|
+
export declare function createDebugLogger(env: NodeJS.ProcessEnv): {
|
|
17
|
+
log: Logger;
|
|
18
|
+
file: string | null;
|
|
19
|
+
};
|
|
20
|
+
/** What the handlers call. */
|
|
21
|
+
export interface LifecycleHooks {
|
|
22
|
+
/** A termination signal arrived: unmount and stop. */
|
|
23
|
+
onSignal: (signal: NodeJS.Signals) => void;
|
|
24
|
+
/** An unexpected error: the terminal is restored by the caller, then this reports it. */
|
|
25
|
+
onFatal: (error: unknown) => void;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Installs the process handlers.
|
|
29
|
+
*
|
|
30
|
+
* @param hooks - The callbacks
|
|
31
|
+
* @returns A function that removes them
|
|
32
|
+
*/
|
|
33
|
+
export declare function installLifecycle(hooks: LifecycleHooks): () => void;
|
|
34
|
+
/**
|
|
35
|
+
* The stack (or message) of an unexpected error, for stderr after the
|
|
36
|
+
* terminal is restored.
|
|
37
|
+
*
|
|
38
|
+
* @param error - The error
|
|
39
|
+
* @returns The text
|
|
40
|
+
*/
|
|
41
|
+
export declare function fatalText(error: unknown): string;
|
|
42
|
+
/**
|
|
43
|
+
* A one-line terminal description for the about view
|
|
44
|
+
* (`kitty 0.36 · 120×36 · truecolor · mouse ● · kitty keyboard ○`).
|
|
45
|
+
*
|
|
46
|
+
* @param env - The environment
|
|
47
|
+
* @param size - The terminal size
|
|
48
|
+
* @param colorLevel - The colour level
|
|
49
|
+
* @param mouse - Whether mouse reporting is on
|
|
50
|
+
* @param glyphs - The glyphs for the dots
|
|
51
|
+
* @returns The description
|
|
52
|
+
*/
|
|
53
|
+
export declare function describeTerminal(env: NodeJS.ProcessEnv, size: {
|
|
54
|
+
columns: number;
|
|
55
|
+
rows: number;
|
|
56
|
+
}, colorLevel: number, mouse: boolean, glyphs: {
|
|
57
|
+
dot: string;
|
|
58
|
+
empty: string;
|
|
59
|
+
sep: string;
|
|
60
|
+
}): string;
|
|
61
|
+
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/tui/lifecycle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkBH,6DAA6D;AAC7D,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,qBAAqB;AACrB,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAE5C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAgB9F;AAED,8BAA8B;AAC9B,MAAM,WAAW,cAAc;IAC3B,sDAAsD;IACtD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;IAC3C,yFAAyF;IACzF,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,IAAI,CAalE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGhD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAC5B,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACvC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACpD,MAAM,CAMR"}
|
|
@@ -0,0 +1,99 @@
|
|
|
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
|
+
* Lifecycle — the process-level handlers the terminal UI installs:
|
|
7
|
+
* SIGINT / SIGTERM / SIGHUP unmount cleanly (Ctrl-C is a key while the
|
|
8
|
+
* UI runs, so SIGINT only arrives from outside), `uncaughtException` /
|
|
9
|
+
* `unhandledRejection` restore the terminal first, then print the stack
|
|
10
|
+
* and exit 70; and the `E3_UI_DEBUG=1` file logger, which never writes to
|
|
11
|
+
* stdout or stderr while the UI owns the screen.
|
|
12
|
+
*
|
|
13
|
+
* @packageDocumentation
|
|
14
|
+
*/
|
|
15
|
+
import * as fs from 'node:fs';
|
|
16
|
+
import * as path from 'node:path';
|
|
17
|
+
import * as os from 'node:os';
|
|
18
|
+
import { statePath } from './state/persist.js';
|
|
19
|
+
/** The exit code for an unexpected failure (EX_SOFTWARE). */
|
|
20
|
+
export const EXIT_SOFTWARE = 70;
|
|
21
|
+
/**
|
|
22
|
+
* The debug logger: appends to `$XDG_STATE_HOME/e3-ui/debug.log` (beside
|
|
23
|
+
* the state file) when `E3_UI_DEBUG=1`, else a no-op.
|
|
24
|
+
*
|
|
25
|
+
* @param env - The environment
|
|
26
|
+
* @returns The logger and the log path (null when disabled)
|
|
27
|
+
*/
|
|
28
|
+
export function createDebugLogger(env) {
|
|
29
|
+
if (env['E3_UI_DEBUG'] !== '1')
|
|
30
|
+
return { log: () => undefined, file: null };
|
|
31
|
+
const file = path.join(path.dirname(statePath(env, process.platform, os.homedir())), 'debug.log');
|
|
32
|
+
let ready = false;
|
|
33
|
+
const log = (line) => {
|
|
34
|
+
try {
|
|
35
|
+
if (!ready) {
|
|
36
|
+
fs.mkdirSync(path.dirname(file), { recursive: true, mode: 0o700 });
|
|
37
|
+
ready = true;
|
|
38
|
+
}
|
|
39
|
+
fs.appendFileSync(file, `${new Date().toISOString()} ${line}\n`, { mode: 0o600 });
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// The log must never take the UI down.
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
return { log, file };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Installs the process handlers.
|
|
49
|
+
*
|
|
50
|
+
* @param hooks - The callbacks
|
|
51
|
+
* @returns A function that removes them
|
|
52
|
+
*/
|
|
53
|
+
export function installLifecycle(hooks) {
|
|
54
|
+
const signals = ['SIGINT', 'SIGTERM', 'SIGHUP'];
|
|
55
|
+
const onSignal = (signal) => hooks.onSignal(signal);
|
|
56
|
+
const onException = (error) => hooks.onFatal(error);
|
|
57
|
+
const onRejection = (reason) => hooks.onFatal(reason);
|
|
58
|
+
for (const signal of signals)
|
|
59
|
+
process.on(signal, onSignal);
|
|
60
|
+
process.on('uncaughtException', onException);
|
|
61
|
+
process.on('unhandledRejection', onRejection);
|
|
62
|
+
return () => {
|
|
63
|
+
for (const signal of signals)
|
|
64
|
+
process.off(signal, onSignal);
|
|
65
|
+
process.off('uncaughtException', onException);
|
|
66
|
+
process.off('unhandledRejection', onRejection);
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The stack (or message) of an unexpected error, for stderr after the
|
|
71
|
+
* terminal is restored.
|
|
72
|
+
*
|
|
73
|
+
* @param error - The error
|
|
74
|
+
* @returns The text
|
|
75
|
+
*/
|
|
76
|
+
export function fatalText(error) {
|
|
77
|
+
if (error instanceof Error)
|
|
78
|
+
return error.stack ?? `${error.name}: ${error.message}`;
|
|
79
|
+
return String(error);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* A one-line terminal description for the about view
|
|
83
|
+
* (`kitty 0.36 · 120×36 · truecolor · mouse ● · kitty keyboard ○`).
|
|
84
|
+
*
|
|
85
|
+
* @param env - The environment
|
|
86
|
+
* @param size - The terminal size
|
|
87
|
+
* @param colorLevel - The colour level
|
|
88
|
+
* @param mouse - Whether mouse reporting is on
|
|
89
|
+
* @param glyphs - The glyphs for the dots
|
|
90
|
+
* @returns The description
|
|
91
|
+
*/
|
|
92
|
+
export function describeTerminal(env, size, colorLevel, mouse, glyphs) {
|
|
93
|
+
const program = env['TERM_PROGRAM'] ?? env['TERMINAL_EMULATOR'] ?? (env['TERM'] === 'xterm-kitty' ? 'kitty' : env['TERM'] ?? 'terminal');
|
|
94
|
+
const version = env['TERM_PROGRAM_VERSION'] !== undefined ? ` ${env['TERM_PROGRAM_VERSION']}` : '';
|
|
95
|
+
const colour = colorLevel >= 3 ? 'truecolor' : colorLevel === 2 ? '256 colours' : colorLevel === 1 ? '16 colours' : 'no colour';
|
|
96
|
+
const on = (flag) => (flag ? glyphs.dot : glyphs.empty);
|
|
97
|
+
return `${program}${version} ${glyphs.sep} ${size.columns}×${size.rows} ${glyphs.sep} ${colour} ${glyphs.sep} mouse ${on(mouse)}`;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/tui/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
import type { Catalogue } from '../input/completion.js';
|
|
6
|
+
import type { Glyphs } from '../render/glyphs.js';
|
|
7
|
+
import type { TuiState } from '../state/actions.js';
|
|
8
|
+
/**
|
|
9
|
+
* The entry of a dataset in the workspace's dataset list (type / size), by
|
|
10
|
+
* dotted path. The recursive listing shows a task's subtree as one leaf at
|
|
11
|
+
* `.tasks.<name>` carrying the output's type / hash / size, while the status
|
|
12
|
+
* names the output `.tasks.<name>.output` — both spellings resolve.
|
|
13
|
+
*/
|
|
14
|
+
export declare function datasetEntries(state: TuiState, ws: string): Map<string, {
|
|
15
|
+
type: string;
|
|
16
|
+
size: number | null;
|
|
17
|
+
hash: string | null;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Builds the catalogue.
|
|
21
|
+
*
|
|
22
|
+
* @param state - The store state
|
|
23
|
+
* @param g - The glyph set
|
|
24
|
+
* @param tags - Variant tags offered by `/tag` on the selected row
|
|
25
|
+
* @returns The catalogue
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildCatalogue(state: TuiState, g: Glyphs, tags?: string[]): Catalogue;
|
|
28
|
+
//# sourceMappingURL=catalogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../../src/tui/model/catalogue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAIpD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAmBnI;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CA+CrF"}
|
|
@@ -0,0 +1,94 @@
|
|
|
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
|
+
import { formatSize } from '../render/text.js';
|
|
6
|
+
import { compactType } from './types.js';
|
|
7
|
+
import { datasetStatusCell, statusText, taskStatusCell } from './status.js';
|
|
8
|
+
/**
|
|
9
|
+
* The entry of a dataset in the workspace's dataset list (type / size), by
|
|
10
|
+
* dotted path. The recursive listing shows a task's subtree as one leaf at
|
|
11
|
+
* `.tasks.<name>` carrying the output's type / hash / size, while the status
|
|
12
|
+
* names the output `.tasks.<name>.output` — both spellings resolve.
|
|
13
|
+
*/
|
|
14
|
+
export function datasetEntries(state, ws) {
|
|
15
|
+
const raw = new Map();
|
|
16
|
+
for (const entry of state.data.datasets[ws] ?? []) {
|
|
17
|
+
if (entry.type !== 'dataset')
|
|
18
|
+
continue;
|
|
19
|
+
raw.set(`.${entry.value.path.replace(/^\./, '')}`, {
|
|
20
|
+
type: entry.value.type,
|
|
21
|
+
size: entry.value.size.type === 'some' ? Number(entry.value.size.value) : null,
|
|
22
|
+
hash: entry.value.hash.type === 'some' ? entry.value.hash.value : null,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
for (const task of state.data.status[ws]?.result.tasks ?? []) {
|
|
26
|
+
if (raw.has(task.output))
|
|
27
|
+
continue;
|
|
28
|
+
const leaf = raw.get(task.output.replace(/\.output$/, ''));
|
|
29
|
+
if (leaf !== undefined)
|
|
30
|
+
raw.set(task.output, leaf);
|
|
31
|
+
}
|
|
32
|
+
const uiTasks = new Set((state.data.taskList[ws] ?? []).filter(t => t.kind.type === 'some' && t.kind.value === 'ui').map(t => `.tasks.${t.name}.output`));
|
|
33
|
+
const out = new Map();
|
|
34
|
+
for (const [path, entry] of raw)
|
|
35
|
+
out.set(path, { type: compactType(entry.type, uiTasks.has(path)), size: entry.size, hash: entry.hash });
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Builds the catalogue.
|
|
40
|
+
*
|
|
41
|
+
* @param state - The store state
|
|
42
|
+
* @param g - The glyph set
|
|
43
|
+
* @param tags - Variant tags offered by `/tag` on the selected row
|
|
44
|
+
* @returns The catalogue
|
|
45
|
+
*/
|
|
46
|
+
export function buildCatalogue(state, g, tags) {
|
|
47
|
+
const items = [];
|
|
48
|
+
for (const w of state.data.workspaces ?? []) {
|
|
49
|
+
const pkg = w.packageName.type === 'some' ? `${w.packageName.value}${w.packageVersion.type === 'some' ? `@${w.packageVersion.value}` : ''}` : '';
|
|
50
|
+
items.push({ kind: 'workspace', name: w.name, workspace: null, status: w.deployed ? `${g.dot} DEPLOYED` : `${g.empty} EMPTY`, type: pkg, detail: '' });
|
|
51
|
+
}
|
|
52
|
+
for (const [ws, { result }] of Object.entries(state.data.status)) {
|
|
53
|
+
const entries = datasetEntries(state, ws);
|
|
54
|
+
for (const task of result.tasks) {
|
|
55
|
+
const entry = entries.get(task.output);
|
|
56
|
+
items.push({
|
|
57
|
+
kind: 'task',
|
|
58
|
+
name: task.name,
|
|
59
|
+
workspace: ws,
|
|
60
|
+
status: statusText(taskStatusCell(task.status, g)),
|
|
61
|
+
type: entry?.type ?? '',
|
|
62
|
+
detail: entry?.size != null ? formatSize(entry.size) : '—',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
for (const dataset of result.datasets) {
|
|
66
|
+
const entry = entries.get(dataset.path);
|
|
67
|
+
const status = statusText(datasetStatusCell(dataset.status.type, g));
|
|
68
|
+
if (!dataset.isTaskOutput && dataset.path.startsWith('.inputs.')) {
|
|
69
|
+
items.push({
|
|
70
|
+
kind: 'input',
|
|
71
|
+
name: dataset.path.slice('.inputs.'.length),
|
|
72
|
+
workspace: ws,
|
|
73
|
+
status,
|
|
74
|
+
type: entry?.type ?? '',
|
|
75
|
+
detail: entry?.size != null ? formatSize(entry.size) : '—',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
items.push({
|
|
79
|
+
kind: 'dataset',
|
|
80
|
+
name: dataset.path,
|
|
81
|
+
workspace: ws,
|
|
82
|
+
status,
|
|
83
|
+
type: '',
|
|
84
|
+
detail: entry?.size != null ? formatSize(entry.size) : '—',
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
for (const name of state.data.repos?.names ?? []) {
|
|
89
|
+
const status = state.data.repos?.status[name];
|
|
90
|
+
items.push({ kind: 'repo', name, workspace: null, status: status !== undefined ? `${status.workspaceCount} workspaces` : '', type: '', detail: '' });
|
|
91
|
+
}
|
|
92
|
+
return { items, tags };
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=catalogue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogue.js","sourceRoot":"","sources":["../../../src/tui/model/catalogue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 help view's content — one tab per page (plus what works everywhere),
|
|
7
|
+
* so the commands and keys listed are exactly the ones that work where you
|
|
8
|
+
* are. `?` opens the tab of the page it was pressed on.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import type { HelpTab, ViewKind } from '../state/actions.js';
|
|
13
|
+
/** A help column: a heading and `[key, effect]` rows. */
|
|
14
|
+
export interface HelpColumn {
|
|
15
|
+
title: string;
|
|
16
|
+
rows: [string, string][];
|
|
17
|
+
}
|
|
18
|
+
/** The tabs in order, with their labels. */
|
|
19
|
+
export declare const HELP_TABS: readonly {
|
|
20
|
+
tab: HelpTab;
|
|
21
|
+
label: string;
|
|
22
|
+
}[];
|
|
23
|
+
/**
|
|
24
|
+
* The help tab a page opens on.
|
|
25
|
+
*
|
|
26
|
+
* @param from - The page `?` was pressed on
|
|
27
|
+
* @returns Its tab (`everywhere` for the launch / refusal / help / about screens)
|
|
28
|
+
*/
|
|
29
|
+
export declare function helpTabFor(from: ViewKind): HelpTab;
|
|
30
|
+
/**
|
|
31
|
+
* The columns of a help tab.
|
|
32
|
+
*
|
|
33
|
+
* @param tab - The tab
|
|
34
|
+
* @returns Three columns (some may be empty)
|
|
35
|
+
*/
|
|
36
|
+
export declare function helpColumns(tab: HelpTab): HelpColumn[];
|
|
37
|
+
//# sourceMappingURL=help.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/tui/model/help.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE7D,yDAAyD;AACzD,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CAC5B;AAED,4CAA4C;AAC5C,eAAO,MAAM,SAAS,EAAE,SAAS;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAO/D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CASlD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,EAAE,CA6KtD"}
|
|
@@ -0,0 +1,210 @@
|
|
|
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
|
+
/** The tabs in order, with their labels. */
|
|
6
|
+
export const HELP_TABS = [
|
|
7
|
+
{ tab: 'everywhere', label: 'Everywhere' },
|
|
8
|
+
{ tab: 'repos', label: 'Repos' },
|
|
9
|
+
{ tab: 'workspaces', label: 'Workspaces' },
|
|
10
|
+
{ tab: 'dashboard', label: 'Dashboard' },
|
|
11
|
+
{ tab: 'task', label: 'Task' },
|
|
12
|
+
{ tab: 'input', label: 'Input' },
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* The help tab a page opens on.
|
|
16
|
+
*
|
|
17
|
+
* @param from - The page `?` was pressed on
|
|
18
|
+
* @returns Its tab (`everywhere` for the launch / refusal / help / about screens)
|
|
19
|
+
*/
|
|
20
|
+
export function helpTabFor(from) {
|
|
21
|
+
switch (from) {
|
|
22
|
+
case 'repos': return 'repos';
|
|
23
|
+
case 'workspaces': return 'workspaces';
|
|
24
|
+
case 'dashboard': return 'dashboard';
|
|
25
|
+
case 'task': return 'task';
|
|
26
|
+
case 'input': return 'input';
|
|
27
|
+
default: return 'everywhere';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The columns of a help tab.
|
|
32
|
+
*
|
|
33
|
+
* @param tab - The tab
|
|
34
|
+
* @returns Three columns (some may be empty)
|
|
35
|
+
*/
|
|
36
|
+
export function helpColumns(tab) {
|
|
37
|
+
switch (tab) {
|
|
38
|
+
case 'everywhere':
|
|
39
|
+
return [
|
|
40
|
+
{
|
|
41
|
+
title: 'COMMANDS',
|
|
42
|
+
rows: [
|
|
43
|
+
['/task <name>', 'open a task'],
|
|
44
|
+
['/input <name>', 'open an input'],
|
|
45
|
+
['/dataset <path>', 'open a dataset'],
|
|
46
|
+
['/workspace <name>', 'switch workspace'],
|
|
47
|
+
['/workspaces /repos', 'the lists'],
|
|
48
|
+
['/repo <path|url>', 'open another repo'],
|
|
49
|
+
['/login <url>', 'device-flow login'],
|
|
50
|
+
['/refresh', 'poll everything now'],
|
|
51
|
+
['/help /about /quit', ''],
|
|
52
|
+
['', ''],
|
|
53
|
+
['typing without /', 'fuzzy-jumps anywhere'],
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
title: 'KEYS',
|
|
58
|
+
rows: [
|
|
59
|
+
['?', 'help for this page'],
|
|
60
|
+
['q ^c', 'quit'],
|
|
61
|
+
['esc ⌫', 'back'],
|
|
62
|
+
['tab ⇧tab', 'next / prev tab'],
|
|
63
|
+
['1 2 3 …', 'tabs'],
|
|
64
|
+
['R', 'refresh now'],
|
|
65
|
+
['/', 'a command'],
|
|
66
|
+
['↑↓ j k', 'move'],
|
|
67
|
+
['pgup pgdn ^u ^d', 'page'],
|
|
68
|
+
['gg G', 'top / bottom'],
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
title: 'MOUSE',
|
|
73
|
+
rows: [
|
|
74
|
+
['wheel', 'scroll'],
|
|
75
|
+
['click', 'select'],
|
|
76
|
+
['click ▸', 'toggle'],
|
|
77
|
+
['drag ▮', 'scrollbar'],
|
|
78
|
+
['click tab / crumb', 'act'],
|
|
79
|
+
['', ''],
|
|
80
|
+
['--no-mouse', 'keyboard only'],
|
|
81
|
+
],
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
case 'repos':
|
|
85
|
+
return [
|
|
86
|
+
{ title: 'COMMANDS', rows: [['/repo <name>', 'open a repository'], ['/login <url>', 'device-flow login'], ['/refresh', 'poll now']] },
|
|
87
|
+
{ title: 'KEYS', rows: [['↑↓ j k', 'move'], ['⏎ →', 'open the repository'], ['q', 'quit']] },
|
|
88
|
+
{ title: '', rows: [] },
|
|
89
|
+
];
|
|
90
|
+
case 'workspaces':
|
|
91
|
+
return [
|
|
92
|
+
{ title: 'COMMANDS', rows: [['/workspace <name>', 'open a workspace'], ['/repos', 'back to the repositories'], ['/refresh', 'poll now']] },
|
|
93
|
+
{ title: 'KEYS', rows: [['↑↓ j k', 'move'], ['⏎ →', 'open the workspace'], ['q', 'quit']] },
|
|
94
|
+
{ title: '', rows: [] },
|
|
95
|
+
];
|
|
96
|
+
case 'dashboard':
|
|
97
|
+
return [
|
|
98
|
+
{
|
|
99
|
+
title: 'COMMANDS',
|
|
100
|
+
rows: [
|
|
101
|
+
['/run [--force]', 'run the dataflow'],
|
|
102
|
+
['/run --filter <glob>', 'only matching tasks'],
|
|
103
|
+
['/run --concurrency <n>', ''],
|
|
104
|
+
['/stop', 'cancel the dataflow'],
|
|
105
|
+
['/task /input', 'open a row'],
|
|
106
|
+
['/logs <task> [stderr]', 'a task\'s logs'],
|
|
107
|
+
['/runs <task>', 'a task\'s runs'],
|
|
108
|
+
['/workspace <name>', 'switch workspace'],
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
title: 'KEYS',
|
|
113
|
+
rows: [
|
|
114
|
+
['↑↓ j k', 'move'],
|
|
115
|
+
['⏎ →', 'open the task / input'],
|
|
116
|
+
['r', 'prefill /run'],
|
|
117
|
+
['x', 'prefill /stop'],
|
|
118
|
+
['w', 'workspaces'],
|
|
119
|
+
['R', 'refresh now'],
|
|
120
|
+
],
|
|
121
|
+
},
|
|
122
|
+
{ title: 'ROWS', rows: [['tasks', '● up-to-date ◐ waiting ◔ running'], ['', '○ ready ✗ failed'], ['inputs', '● up-to-date ◐ stale ○ unset'], ['execution', '⏎ on a failed row → logs']] },
|
|
123
|
+
];
|
|
124
|
+
case 'task':
|
|
125
|
+
return [
|
|
126
|
+
{
|
|
127
|
+
title: 'COMMANDS',
|
|
128
|
+
rows: [
|
|
129
|
+
['/find <"key">', 'exact key'],
|
|
130
|
+
['/find <prefix>', 'key prefix'],
|
|
131
|
+
['/find f1|f2', 'struct-key fields'],
|
|
132
|
+
['/goto <row> /goto N%', 'jump'],
|
|
133
|
+
['/save [file]', 'write .beast2 / .log'],
|
|
134
|
+
['/logs [stderr] /runs', 'switch tab'],
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
title: 'KEYS · VALUE TREE',
|
|
139
|
+
rows: [
|
|
140
|
+
['↑↓ j k', 'move'],
|
|
141
|
+
['→ l', 'expand'],
|
|
142
|
+
['← h', 'collapse'],
|
|
143
|
+
['⏎ space', 'toggle'],
|
|
144
|
+
['⇧←', 'collapse subtree'],
|
|
145
|
+
['pgup pgdn ^u ^d', 'page'],
|
|
146
|
+
['gg G', 'top / bottom'],
|
|
147
|
+
['n N', 'next / prev match'],
|
|
148
|
+
['s', 'save .beast2'],
|
|
149
|
+
['1 2 3 4 5', 'Output Stdout Stderr Runs Reads'],
|
|
150
|
+
['tab ⇧tab', 'next / prev tab'],
|
|
151
|
+
],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
title: 'KEYS · STDOUT / STDERR',
|
|
155
|
+
rows: [
|
|
156
|
+
['↑↓ pgup pgdn', 'scroll'],
|
|
157
|
+
['G', 'end'],
|
|
158
|
+
['F', 'follow the tail'],
|
|
159
|
+
['← → tab', 'the other tabs'],
|
|
160
|
+
['n N', 'next / prev match'],
|
|
161
|
+
['s', 'save .log'],
|
|
162
|
+
['c', 'copy'],
|
|
163
|
+
['', ''],
|
|
164
|
+
['KEYS · RUNS', ''],
|
|
165
|
+
['⏎', 'expand the inputs'],
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
];
|
|
169
|
+
case 'input':
|
|
170
|
+
return [
|
|
171
|
+
{
|
|
172
|
+
title: 'COMMANDS',
|
|
173
|
+
rows: [
|
|
174
|
+
['/tag <name>', 'switch a variant tag'],
|
|
175
|
+
['/tag some /tag none', 'set / clear an option'],
|
|
176
|
+
['/add [key]', 'add an item / entry'],
|
|
177
|
+
['/remove', 'remove the item'],
|
|
178
|
+
['/apply /discard', 'the pending edits'],
|
|
179
|
+
['/find /goto', 'as in a task'],
|
|
180
|
+
],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
title: 'KEYS',
|
|
184
|
+
rows: [
|
|
185
|
+
['e', 'edit the leaf'],
|
|
186
|
+
['a', 'add'],
|
|
187
|
+
['x', 'remove'],
|
|
188
|
+
['t', 'tag / set / clear'],
|
|
189
|
+
['⏎', 'apply all'],
|
|
190
|
+
['esc', 'discard'],
|
|
191
|
+
['↑↓ → ←', 'move / expand / collapse'],
|
|
192
|
+
],
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
title: 'EDITING',
|
|
196
|
+
rows: [
|
|
197
|
+
['⏎', 'commit the leaf'],
|
|
198
|
+
['esc', 'cancel the leaf'],
|
|
199
|
+
['space', 'toggle a boolean'],
|
|
200
|
+
['', ''],
|
|
201
|
+
['◆ N DIRTY', 'the header pill'],
|
|
202
|
+
['┆', 'a changed row'],
|
|
203
|
+
['conflict', 'the server changed:'],
|
|
204
|
+
['', '⏎ reload · esc keep'],
|
|
205
|
+
],
|
|
206
|
+
},
|
|
207
|
+
];
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../src/tui/model/help.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
* View models — the pure selectors every view renders from and the
|
|
7
|
+
* controller navigates with. A view model is `{ rows, visible }` at
|
|
8
|
+
* minimum: the rows the primary list has and how many fit, so `list/move`
|
|
9
|
+
* is driven from one place.
|
|
10
|
+
*
|
|
11
|
+
* @packageDocumentation
|
|
12
|
+
*/
|
|
13
|
+
import { type ShellLayout } from '../render/layout.js';
|
|
14
|
+
import type { TuiState } from '../state/actions.js';
|
|
15
|
+
/** The rows of the current view's primary list and how many are visible. */
|
|
16
|
+
export interface ListModel {
|
|
17
|
+
count: number;
|
|
18
|
+
visible: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The shell layout for the state (the commit bar shows while editing, the
|
|
22
|
+
* completion list while it has items).
|
|
23
|
+
*
|
|
24
|
+
* @param state - The store state
|
|
25
|
+
* @returns The layout
|
|
26
|
+
*/
|
|
27
|
+
export declare function layoutOf(state: TuiState): ShellLayout;
|
|
28
|
+
/**
|
|
29
|
+
* Registers a view's list model (called by each view model module on load).
|
|
30
|
+
*
|
|
31
|
+
* @param kind - The view kind
|
|
32
|
+
* @param model - The selector
|
|
33
|
+
*/
|
|
34
|
+
export declare function registerListModel(kind: string, model: (state: TuiState, layout: ShellLayout) => ListModel): void;
|
|
35
|
+
/**
|
|
36
|
+
* The current view's primary list model.
|
|
37
|
+
*
|
|
38
|
+
* @param state - The store state
|
|
39
|
+
* @returns The rows and visible count (0 / 0 for views without a list)
|
|
40
|
+
*/
|
|
41
|
+
export declare function listModel(state: TuiState): ListModel;
|
|
42
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tui/model/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;GAOG;AAEH,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,4EAA4E;AAC5E,MAAM,WAAW,SAAS;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,CAKrD;AAKD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,KAAK,SAAS,GAAG,IAAI,CAEhH;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CAIpD"}
|