@aui.io/apollo 0.1.21 → 0.1.22
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 +183 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/bundles.js +34 -9
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/bundles.js.map +1 -1
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/curl.d.ts +10 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/curl.js +63 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/curl.js.map +1 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/doctor.d.ts +13 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/doctor.js +89 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/doctor.js.map +1 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/hierarchy.js +24 -7
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/hierarchy.js.map +1 -1
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/runtime-version.d.ts +10 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/runtime-version.js +116 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/runtime-version.js.map +1 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/status.js +1 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/commands/status.js.map +1 -1
- package/node_modules/@aui.io/apollo-cli/dist/src/index.d.ts +1 -0
- package/node_modules/@aui.io/apollo-cli/dist/src/index.js +26 -1
- package/node_modules/@aui.io/apollo-cli/dist/src/index.js.map +1 -1
- package/node_modules/@aui.io/apollo-cli/package.json +3 -3
- package/node_modules/@aui.io/apollo-core/dist/src/api/agent-settings.d.ts +147 -5
- package/node_modules/@aui.io/apollo-core/dist/src/api/agent-settings.js +95 -0
- package/node_modules/@aui.io/apollo-core/dist/src/api/agent-settings.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/api/capture.d.ts +22 -0
- package/node_modules/@aui.io/apollo-core/dist/src/api/capture.js +75 -0
- package/node_modules/@aui.io/apollo-core/dist/src/api/capture.js.map +1 -0
- package/node_modules/@aui.io/apollo-core/dist/src/api/management.d.ts +0 -1
- package/node_modules/@aui.io/apollo-core/dist/src/api/management.js +0 -6
- package/node_modules/@aui.io/apollo-core/dist/src/api/management.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/api/network.d.ts +19 -0
- package/node_modules/@aui.io/apollo-core/dist/src/api/network.js +53 -0
- package/node_modules/@aui.io/apollo-core/dist/src/api/network.js.map +1 -0
- package/node_modules/@aui.io/apollo-core/dist/src/api/transport.d.ts +14 -2
- package/node_modules/@aui.io/apollo-core/dist/src/api/transport.js +15 -28
- package/node_modules/@aui.io/apollo-core/dist/src/api/transport.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/config/index.d.ts +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/config/index.js +16 -1
- package/node_modules/@aui.io/apollo-core/dist/src/config/index.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/config/store.d.ts +10 -0
- package/node_modules/@aui.io/apollo-core/dist/src/config/store.js +24 -0
- package/node_modules/@aui.io/apollo-core/dist/src/config/store.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/config/types.d.ts +18 -1
- package/node_modules/@aui.io/apollo-core/dist/src/index.d.ts +9 -4
- package/node_modules/@aui.io/apollo-core/dist/src/index.js +8 -3
- package/node_modules/@aui.io/apollo-core/dist/src/index.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/runtime-version/index.d.ts +72 -0
- package/node_modules/@aui.io/apollo-core/dist/src/runtime-version/index.js +114 -0
- package/node_modules/@aui.io/apollo-core/dist/src/runtime-version/index.js.map +1 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/bundles.d.ts +47 -1
- package/node_modules/@aui.io/apollo-core/dist/src/services/bundles.js +60 -6
- package/node_modules/@aui.io/apollo-core/dist/src/services/bundles.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/services/clients.d.ts +4 -1
- package/node_modules/@aui.io/apollo-core/dist/src/services/clients.js +19 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/clients.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/services/doctor.d.ts +39 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/doctor.js +586 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/doctor.js.map +1 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/hierarchy.d.ts +78 -2
- package/node_modules/@aui.io/apollo-core/dist/src/services/hierarchy.js +177 -17
- package/node_modules/@aui.io/apollo-core/dist/src/services/hierarchy.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/dist/src/services/requests.d.ts +22 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/requests.js +73 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/requests.js.map +1 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/status.service.d.ts +2 -0
- package/node_modules/@aui.io/apollo-core/dist/src/services/status.service.js +10 -2
- package/node_modules/@aui.io/apollo-core/dist/src/services/status.service.js.map +1 -1
- package/node_modules/@aui.io/apollo-core/package.json +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/actions/registry.js +16 -2
- package/node_modules/@aui.io/apollo-tui/dist/src/actions/registry.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivityDrawer.js +31 -16
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivityDrawer.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/requests.d.ts +19 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/requests.js +29 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/activity/requests.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/author/AuthorHome.d.ts +3 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/author/AuthorHome.js +6 -18
- package/node_modules/@aui.io/apollo-tui/dist/src/author/AuthorHome.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/author/ResourcesView.js +26 -4
- package/node_modules/@aui.io/apollo-tui/dist/src/author/ResourcesView.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/context/ContextSwitcher.js +6 -2
- package/node_modules/@aui.io/apollo-tui/dist/src/context/ContextSwitcher.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/actions.js +93 -14
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/actions.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/commands.d.ts +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/commands.js +20 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/commands.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/diagnostics.d.ts +8 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/diagnostics.js +109 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/diagnostics.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/scope.d.ts +2 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/scope.js +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/lib/scope.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/opentui-app.js +2 -2
- package/node_modules/@aui.io/apollo-tui/dist/src/opentui-app.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/Breadcrumb.d.ts +4 -2
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/Breadcrumb.js +5 -3
- package/node_modules/@aui.io/apollo-tui/dist/src/shell/Breadcrumb.js.map +1 -1
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/SplashCard.d.ts +5 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/SplashCard.js +56 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/SplashCard.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/wordmark.d.ts +73 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/wordmark.js +488 -0
- package/node_modules/@aui.io/apollo-tui/dist/src/ui/wordmark.js.map +1 -0
- package/node_modules/@aui.io/apollo-tui/package.json +2 -2
- package/package.json +4 -4
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splash wordmark animation — pure frame math for the welcome card's block
|
|
3
|
+
* "apollo" mark. The component (ui/SplashCard.tsx) ticks a frame counter on
|
|
4
|
+
* an interval; everything visible derives deterministically from that number
|
|
5
|
+
* here (hash-based, no Math.random), so the whole sequence is unit-testable
|
|
6
|
+
* without a renderer and identical across runs.
|
|
7
|
+
*
|
|
8
|
+
* Two layouts share the same phases:
|
|
9
|
+
*
|
|
10
|
+
* compact (44 wide) — the mark, its reflection, and twinkling gutter stars
|
|
11
|
+
* field (64 wide) — the mark suspended in a thinking neural field: a
|
|
12
|
+
* constellation of synapse nodes joined by dotted
|
|
13
|
+
* links, firing pulses that travel the graph, pass
|
|
14
|
+
* behind the word, and feed it through five ports —
|
|
15
|
+
* letters surge with light as each thought arrives
|
|
16
|
+
*
|
|
17
|
+
* The shared sequence:
|
|
18
|
+
*
|
|
19
|
+
* ignite — columns materialize left→right out of half-block static,
|
|
20
|
+
* each cell flashing bright as it snaps into place; the
|
|
21
|
+
* field wakes only after the mark has settled
|
|
22
|
+
* aurora — a diagonal light band sweeps the mark every few seconds,
|
|
23
|
+
* alternating direction, its crest cycling mint → ice →
|
|
24
|
+
* violet; field pulses carry the active crest color
|
|
25
|
+
* reflection — a mirrored, rippling echo of the mark's bottom row
|
|
26
|
+
* decode — the subtitle types on through cycling static
|
|
27
|
+
*
|
|
28
|
+
* Colors are hex literals on the theme's teal axis (#4fb8b0 = TEAL,
|
|
29
|
+
* #2e6b66 = TEAL_DIM): the animated path only runs on unicode + color
|
|
30
|
+
* terminals (SplashCard gates on it), so these never reach NO_COLOR frames,
|
|
31
|
+
* where tokens must resolve to the terminal default. Field chrome stays in
|
|
32
|
+
* the dark range so the wordmark is always the brightest thing on screen.
|
|
33
|
+
*/
|
|
34
|
+
export declare const TICK_MS = 80;
|
|
35
|
+
/** Compact card outer width (narrow terminals). */
|
|
36
|
+
export declare const CARD_WIDTH = 44;
|
|
37
|
+
/** Neural-field card outer width (roomy terminals). */
|
|
38
|
+
export declare const CARD_WIDTH_FIELD = 64;
|
|
39
|
+
/** One run of same-colored cells on a splash row. */
|
|
40
|
+
export interface Chunk {
|
|
41
|
+
text: string;
|
|
42
|
+
fg: string;
|
|
43
|
+
}
|
|
44
|
+
export interface SplashFrame {
|
|
45
|
+
/** Compact: mark rows + reflection. Field: the full six-row canvas. */
|
|
46
|
+
rows: Chunk[][];
|
|
47
|
+
/** Card border — breathes near TEAL_DIM, catching the band at the edges. */
|
|
48
|
+
border: string;
|
|
49
|
+
/** Version line tone: faint during ignition, settles to dim. */
|
|
50
|
+
version: string;
|
|
51
|
+
/** Decoding subtitle: [locked, forming, caret cell, pad]. Constant width. */
|
|
52
|
+
subtitle: Chunk[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The splash's own glyph face: 4×6-pixel letters (4 cols × 3 half-block
|
|
56
|
+
* rows) covering what "apollo" needs. @opentui/core's tiny face is only two
|
|
57
|
+
* rows tall — at card size the word read as a thin ribbon, and the aurora
|
|
58
|
+
* and reflection could overwhelm it. Heavier full-block strokes keep the
|
|
59
|
+
* word legible while the effects play. Only MIRROR-alphabet characters are
|
|
60
|
+
* used, so the reflection stays a faithful vertical flip (asserted in
|
|
61
|
+
* tests/wordmark.test.ts).
|
|
62
|
+
*/
|
|
63
|
+
export declare const APOLLO_CHARS: Readonly<Record<string, readonly string[]>>;
|
|
64
|
+
/** Sample the teal ramp at t ∈ [0,1] (clamped); `peak` tints the crest. */
|
|
65
|
+
export declare function gradientAt(t: number, peak?: string): string;
|
|
66
|
+
/**
|
|
67
|
+
* Lay a word out in a cfonts-style glyph face (rows of half-block strings,
|
|
68
|
+
* e.g. `fonts.tiny` from @opentui/core — injected so this module stays
|
|
69
|
+
* renderer-free). Returns one string per glyph row, all the same width.
|
|
70
|
+
*/
|
|
71
|
+
export declare function wordGrid(word: string, chars: Readonly<Record<string, readonly string[] | undefined>>): string[];
|
|
72
|
+
/** Compute one full frame of the splash from a tick counter. */
|
|
73
|
+
export declare function splashFrame(frame: number, grid: readonly string[], subtitle: string, field?: boolean): SplashFrame;
|
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splash wordmark animation — pure frame math for the welcome card's block
|
|
3
|
+
* "apollo" mark. The component (ui/SplashCard.tsx) ticks a frame counter on
|
|
4
|
+
* an interval; everything visible derives deterministically from that number
|
|
5
|
+
* here (hash-based, no Math.random), so the whole sequence is unit-testable
|
|
6
|
+
* without a renderer and identical across runs.
|
|
7
|
+
*
|
|
8
|
+
* Two layouts share the same phases:
|
|
9
|
+
*
|
|
10
|
+
* compact (44 wide) — the mark, its reflection, and twinkling gutter stars
|
|
11
|
+
* field (64 wide) — the mark suspended in a thinking neural field: a
|
|
12
|
+
* constellation of synapse nodes joined by dotted
|
|
13
|
+
* links, firing pulses that travel the graph, pass
|
|
14
|
+
* behind the word, and feed it through five ports —
|
|
15
|
+
* letters surge with light as each thought arrives
|
|
16
|
+
*
|
|
17
|
+
* The shared sequence:
|
|
18
|
+
*
|
|
19
|
+
* ignite — columns materialize left→right out of half-block static,
|
|
20
|
+
* each cell flashing bright as it snaps into place; the
|
|
21
|
+
* field wakes only after the mark has settled
|
|
22
|
+
* aurora — a diagonal light band sweeps the mark every few seconds,
|
|
23
|
+
* alternating direction, its crest cycling mint → ice →
|
|
24
|
+
* violet; field pulses carry the active crest color
|
|
25
|
+
* reflection — a mirrored, rippling echo of the mark's bottom row
|
|
26
|
+
* decode — the subtitle types on through cycling static
|
|
27
|
+
*
|
|
28
|
+
* Colors are hex literals on the theme's teal axis (#4fb8b0 = TEAL,
|
|
29
|
+
* #2e6b66 = TEAL_DIM): the animated path only runs on unicode + color
|
|
30
|
+
* terminals (SplashCard gates on it), so these never reach NO_COLOR frames,
|
|
31
|
+
* where tokens must resolve to the terminal default. Field chrome stays in
|
|
32
|
+
* the dark range so the wordmark is always the brightest thing on screen.
|
|
33
|
+
*/
|
|
34
|
+
export const TICK_MS = 80;
|
|
35
|
+
/** Compact card outer width (narrow terminals). */
|
|
36
|
+
export const CARD_WIDTH = 44;
|
|
37
|
+
/** Neural-field card outer width (roomy terminals). */
|
|
38
|
+
export const CARD_WIDTH_FIELD = 64;
|
|
39
|
+
const INNER_COMPACT = CARD_WIDTH - 2;
|
|
40
|
+
const INNER_FIELD = CARD_WIDTH_FIELD - 2;
|
|
41
|
+
const SCRAMBLE = "▖▗▘▝▚▞";
|
|
42
|
+
const DECODE = "░▒∙·";
|
|
43
|
+
/** Vertical mirror for half-block glyphs — the reflection's alphabet. */
|
|
44
|
+
const MIRROR = {
|
|
45
|
+
"▀": "▄",
|
|
46
|
+
"▄": "▀",
|
|
47
|
+
"▘": "▖",
|
|
48
|
+
"▖": "▘",
|
|
49
|
+
"▝": "▗",
|
|
50
|
+
"▗": "▝",
|
|
51
|
+
"▚": "▞",
|
|
52
|
+
"▞": "▚",
|
|
53
|
+
"█": "█",
|
|
54
|
+
};
|
|
55
|
+
/** Crest color per sweep — mint, ice, violet, then around again. */
|
|
56
|
+
const AURORA = ["#f2fffd", "#bfe8ff", "#d9c9ff"];
|
|
57
|
+
/**
|
|
58
|
+
* The splash's own glyph face: 4×6-pixel letters (4 cols × 3 half-block
|
|
59
|
+
* rows) covering what "apollo" needs. @opentui/core's tiny face is only two
|
|
60
|
+
* rows tall — at card size the word read as a thin ribbon, and the aurora
|
|
61
|
+
* and reflection could overwhelm it. Heavier full-block strokes keep the
|
|
62
|
+
* word legible while the effects play. Only MIRROR-alphabet characters are
|
|
63
|
+
* used, so the reflection stays a faithful vertical flip (asserted in
|
|
64
|
+
* tests/wordmark.test.ts).
|
|
65
|
+
*/
|
|
66
|
+
export const APOLLO_CHARS = {
|
|
67
|
+
A: ["▄▀▀▄", "█▀▀█", "█ █"],
|
|
68
|
+
P: ["█▀▀▄", "█▀▀ ", "█ "],
|
|
69
|
+
O: ["▄▀▀▄", "█ █", "▀▄▄▀"],
|
|
70
|
+
L: ["█ ", "█ ", "█▄▄▄"],
|
|
71
|
+
" ": [" ", " ", " "],
|
|
72
|
+
};
|
|
73
|
+
const IGNITE_SPAN = 14; // frames for the ignition front to cross the mark
|
|
74
|
+
const LEAD = 4; // scramble frames before a cell snaps into place
|
|
75
|
+
const FLASH = 2; // bright frames as it snaps
|
|
76
|
+
const TYPE_START = 6; // subtitle decoding begins mid-ignition
|
|
77
|
+
const CARET_BLINKS = 24; // frames the caret lingers after the line locks
|
|
78
|
+
const WAVE_START = 26; // first aurora sweep begins after ignition settles
|
|
79
|
+
const WAVE_PERIOD = 44; // frames from one sweep start to the next
|
|
80
|
+
const WAVE_LEN = 22; // frames a sweep takes to cross the mark
|
|
81
|
+
const SPARK_PERIOD = 16; // one glint window per period, most stay empty
|
|
82
|
+
const REST = 0.35; // gradient position of the resting base (= TEAL)
|
|
83
|
+
// Neural field geometry and rhythm.
|
|
84
|
+
const FIELD_ROWS_TOP = 2; // canvas rows above the mark
|
|
85
|
+
const FIELD_ROWS_BOTTOM = 1; // canvas rows below the reflection
|
|
86
|
+
const NODE_COUNT = 12;
|
|
87
|
+
const LINK_COUNT = 7;
|
|
88
|
+
const PULSE_TRAVEL = 18; // frames a pulse takes to cross its link
|
|
89
|
+
const NODES_WAKE = 16; // nodes fade in as ignition ends
|
|
90
|
+
const LINKS_WAKE = 20; // constellation dots follow
|
|
91
|
+
const PULSES_WAKE = WAVE_START; // thoughts start with the first sweep
|
|
92
|
+
/** Deterministic 32-bit hash — the animation's only source of "randomness". */
|
|
93
|
+
function hash(n) {
|
|
94
|
+
let x = n | 0;
|
|
95
|
+
x = Math.imul(x ^ (x >>> 16), 0x45d9f3b);
|
|
96
|
+
x = Math.imul(x ^ (x >>> 16), 0x45d9f3b);
|
|
97
|
+
return (x ^ (x >>> 16)) >>> 0;
|
|
98
|
+
}
|
|
99
|
+
function lerpHex(a, b, t) {
|
|
100
|
+
const ah = parseInt(a.slice(1), 16);
|
|
101
|
+
const bh = parseInt(b.slice(1), 16);
|
|
102
|
+
const mix = (sa, sb) => Math.round(sa + (sb - sa) * t);
|
|
103
|
+
const r = mix((ah >> 16) & 0xff, (bh >> 16) & 0xff);
|
|
104
|
+
const g = mix((ah >> 8) & 0xff, (bh >> 8) & 0xff);
|
|
105
|
+
const bl = mix(ah & 0xff, bh & 0xff);
|
|
106
|
+
return `#${((r << 16) | (g << 8) | bl).toString(16).padStart(6, "0")}`;
|
|
107
|
+
}
|
|
108
|
+
/** Sample the teal ramp at t ∈ [0,1] (clamped); `peak` tints the crest. */
|
|
109
|
+
export function gradientAt(t, peak = "#f2fffd") {
|
|
110
|
+
const stops = [
|
|
111
|
+
{ at: 0, hex: "#2e6b66" }, // trough — TEAL_DIM
|
|
112
|
+
{ at: REST, hex: "#4fb8b0" }, // resting base — TEAL
|
|
113
|
+
{ at: 0.75, hex: "#8ff2e9" }, // highlight mint
|
|
114
|
+
{ at: 1, hex: peak }, // crest — aurora color of the pass
|
|
115
|
+
];
|
|
116
|
+
const x = Math.min(Math.max(t, 0), 1);
|
|
117
|
+
let prev = stops[0] ?? { at: 0, hex: "#4fb8b0" };
|
|
118
|
+
for (const stop of stops) {
|
|
119
|
+
if (x <= stop.at) {
|
|
120
|
+
const span = stop.at - prev.at;
|
|
121
|
+
return span <= 0 ? stop.hex : lerpHex(prev.hex, stop.hex, (x - prev.at) / span);
|
|
122
|
+
}
|
|
123
|
+
prev = stop;
|
|
124
|
+
}
|
|
125
|
+
return prev.hex;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Lay a word out in a cfonts-style glyph face (rows of half-block strings,
|
|
129
|
+
* e.g. `fonts.tiny` from @opentui/core — injected so this module stays
|
|
130
|
+
* renderer-free). Returns one string per glyph row, all the same width.
|
|
131
|
+
*/
|
|
132
|
+
export function wordGrid(word, chars) {
|
|
133
|
+
// Glyph faces key on single ASCII chars, so charAt indexing is exact here.
|
|
134
|
+
const upper = word.toUpperCase();
|
|
135
|
+
const letters = [];
|
|
136
|
+
for (let i = 0; i < upper.length; i++)
|
|
137
|
+
letters.push(upper.charAt(i));
|
|
138
|
+
const lines = Math.max(...letters.map((ch) => chars[ch]?.length ?? 0), 1);
|
|
139
|
+
const rows = Array.from({ length: lines }, () => "");
|
|
140
|
+
letters.forEach((ch, i) => {
|
|
141
|
+
const glyph = chars[ch] ?? chars[" "] ?? [];
|
|
142
|
+
const width = Math.max(...glyph.map((line) => line.length), 0);
|
|
143
|
+
const gap = i < letters.length - 1 ? " " : "";
|
|
144
|
+
for (let row = 0; row < lines; row++) {
|
|
145
|
+
rows[row] = `${rows[row] ?? ""}${(glyph[row] ?? "").padEnd(width)}${gap}`;
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
return rows;
|
|
149
|
+
}
|
|
150
|
+
/** Frame when the cell at (row, col) snaps from static to its real glyph. */
|
|
151
|
+
function birthAt(row, col, cols) {
|
|
152
|
+
const sweep = Math.round((col / Math.max(cols - 1, 1)) * IGNITE_SPAN);
|
|
153
|
+
return sweep + (hash(col * 31 + row * 17) % 4);
|
|
154
|
+
}
|
|
155
|
+
/** Merge a cell run into chunks; spaces adopt the current color to merge. */
|
|
156
|
+
function toChunks(cells) {
|
|
157
|
+
const chunks = [];
|
|
158
|
+
let runText = "";
|
|
159
|
+
let runFg = "";
|
|
160
|
+
for (const cell of cells) {
|
|
161
|
+
const fg = cell.ch === " " && runFg !== "" ? runFg : cell.fg;
|
|
162
|
+
if (fg !== runFg && runText.length > 0) {
|
|
163
|
+
chunks.push({ text: runText, fg: runFg });
|
|
164
|
+
runText = "";
|
|
165
|
+
}
|
|
166
|
+
runFg = fg;
|
|
167
|
+
runText += cell.ch;
|
|
168
|
+
}
|
|
169
|
+
if (runText.length > 0)
|
|
170
|
+
chunks.push({ text: runText, fg: runFg });
|
|
171
|
+
return chunks;
|
|
172
|
+
}
|
|
173
|
+
const ease = (u) => u * u * (3 - 2 * u);
|
|
174
|
+
/** Scatter synapse nodes across the canvas, off the mark and spread out. */
|
|
175
|
+
function fieldNodes(rows, colsTotal, excluded) {
|
|
176
|
+
const nodes = [];
|
|
177
|
+
for (let i = 0; i < NODE_COUNT; i++) {
|
|
178
|
+
let placed;
|
|
179
|
+
for (let attempt = 0; attempt < 40 && placed === undefined; attempt++) {
|
|
180
|
+
const x = hash(i * 57 + attempt * 101 + 11) % colsTotal;
|
|
181
|
+
const y = hash(i * 43 + attempt * 89 + 7) % rows;
|
|
182
|
+
if (excluded(x, y))
|
|
183
|
+
continue;
|
|
184
|
+
if (nodes.some((n) => Math.abs(n.x - x) + Math.abs(n.y - y) * 3 < 6))
|
|
185
|
+
continue;
|
|
186
|
+
placed = { x, y };
|
|
187
|
+
}
|
|
188
|
+
// Fallback lands on the outer rows, which are never excluded.
|
|
189
|
+
nodes.push(placed ?? { x: (i * 9 + 2) % colsTotal, y: i % 2 === 0 ? 0 : rows - 1 });
|
|
190
|
+
}
|
|
191
|
+
return nodes;
|
|
192
|
+
}
|
|
193
|
+
/** Compute one full frame of the splash from a tick counter. */
|
|
194
|
+
export function splashFrame(frame, grid, subtitle, field = false) {
|
|
195
|
+
const inner = field ? INNER_FIELD : INNER_COMPACT;
|
|
196
|
+
const cols = grid.reduce((w, line) => Math.max(w, line.length), 0);
|
|
197
|
+
const leftPad = Math.max(Math.floor((inner - cols) / 2), 0);
|
|
198
|
+
const rightPad = Math.max(inner - cols - leftPad, 0);
|
|
199
|
+
// Aurora band: alternating direction, crest color cycling per sweep.
|
|
200
|
+
const sweepIdx = frame >= WAVE_START ? Math.floor((frame - WAVE_START) / WAVE_PERIOD) : -1;
|
|
201
|
+
const phase = frame >= WAVE_START ? (frame - WAVE_START) % WAVE_PERIOD : -1;
|
|
202
|
+
const sweeping = phase >= 0 && phase < WAVE_LEN;
|
|
203
|
+
const crest = AURORA[((sweepIdx % AURORA.length) + AURORA.length) % AURORA.length] ?? "#f2fffd";
|
|
204
|
+
let center = 0;
|
|
205
|
+
if (sweeping) {
|
|
206
|
+
const u = phase / WAVE_LEN;
|
|
207
|
+
const from = -4;
|
|
208
|
+
const to = cols + 10;
|
|
209
|
+
center = sweepIdx % 2 === 0 ? from + (to - from) * u : to - (to - from) * u;
|
|
210
|
+
}
|
|
211
|
+
const bandAt = (col, row) => {
|
|
212
|
+
if (!sweeping)
|
|
213
|
+
return 0;
|
|
214
|
+
const d = col + row * 2 - center;
|
|
215
|
+
return Math.exp(-(d * d) / (2 * 2.4 * 2.4));
|
|
216
|
+
};
|
|
217
|
+
// Glints: at most one lit cell, two frames long, in a third of the windows.
|
|
218
|
+
const filled = [];
|
|
219
|
+
grid.forEach((line, row) => {
|
|
220
|
+
for (let col = 0; col < line.length; col++) {
|
|
221
|
+
if (line.charAt(col) !== " ")
|
|
222
|
+
filled.push({ row, col });
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
const sparkWindow = Math.floor(frame / SPARK_PERIOD);
|
|
226
|
+
const sparkOn = frame >= WAVE_START &&
|
|
227
|
+
frame % SPARK_PERIOD < FLASH &&
|
|
228
|
+
filled.length > 0 &&
|
|
229
|
+
hash(sparkWindow) % 3 === 0;
|
|
230
|
+
const spark = sparkOn ? filled[hash(sparkWindow * 7 + 1) % filled.length] : undefined;
|
|
231
|
+
// ------------------------------------------------------------------ //
|
|
232
|
+
// Neural field (field mode): nodes, links, and thought pulses. Pulses
|
|
233
|
+
// feeding the mark accumulate per-column excitement the logo colors read.
|
|
234
|
+
// ------------------------------------------------------------------ //
|
|
235
|
+
const excite = Array.from({ length: cols }, () => 0);
|
|
236
|
+
const markTop = FIELD_ROWS_TOP;
|
|
237
|
+
const reflRow = FIELD_ROWS_TOP + grid.length;
|
|
238
|
+
const canvasRows = FIELD_ROWS_TOP + grid.length + 1 + FIELD_ROWS_BOTTOM;
|
|
239
|
+
const canvas = field
|
|
240
|
+
? Array.from({ length: canvasRows }, () => Array.from({ length: inner }, () => ({ ch: " ", fg: "#143430" })))
|
|
241
|
+
: undefined;
|
|
242
|
+
if (canvas) {
|
|
243
|
+
const stamp = (x, y, ch, fg) => {
|
|
244
|
+
const cx = Math.round(x);
|
|
245
|
+
const cy = Math.round(y);
|
|
246
|
+
if (cy < 0 || cy >= canvas.length)
|
|
247
|
+
return;
|
|
248
|
+
const rowArr = canvas[cy];
|
|
249
|
+
if (!rowArr || cx < 0 || cx >= rowArr.length)
|
|
250
|
+
return;
|
|
251
|
+
// Never draw over the mark or its water — pulses pass behind the word.
|
|
252
|
+
if (cy >= markTop && cy <= reflRow && cx >= leftPad - 1 && cx <= leftPad + cols)
|
|
253
|
+
return;
|
|
254
|
+
rowArr[cx] = { ch, fg };
|
|
255
|
+
};
|
|
256
|
+
const nodeExcluded = (x, y) => y >= markTop && y <= reflRow && x >= leftPad - 2 && x <= leftPad + cols + 1;
|
|
257
|
+
const nodes = fieldNodes(canvasRows, inner, nodeExcluded);
|
|
258
|
+
const nodeAt = (i) => nodes[i % nodes.length] ?? { x: 0, y: 0 };
|
|
259
|
+
const links = Array.from({ length: LINK_COUNT }, (_v, i) => {
|
|
260
|
+
const a = hash(i * 91 + 3) % NODE_COUNT;
|
|
261
|
+
const b = (a + 1 + (hash(i * 17 + 5) % (NODE_COUNT - 1))) % NODE_COUNT;
|
|
262
|
+
return {
|
|
263
|
+
from: nodeAt(a),
|
|
264
|
+
to: nodeAt(b),
|
|
265
|
+
period: 34 + (hash(i * 29 + 1) % 26),
|
|
266
|
+
phase: hash(i * 61 + 9) % 60,
|
|
267
|
+
port: -1,
|
|
268
|
+
};
|
|
269
|
+
});
|
|
270
|
+
// Ports: where thoughts reach the word — three above, one per side.
|
|
271
|
+
// Columns are fractions of the mark so they track the glyph face.
|
|
272
|
+
const portCol = (f) => Math.min(Math.max(Math.round((cols - 1) * f), 0), cols - 1);
|
|
273
|
+
const portDefs = [
|
|
274
|
+
{ target: { x: leftPad + portCol(0.15), y: markTop - 0.6 }, logoCol: portCol(0.15) },
|
|
275
|
+
{ target: { x: leftPad + portCol(0.5), y: markTop - 0.6 }, logoCol: portCol(0.5) },
|
|
276
|
+
{ target: { x: leftPad + portCol(0.85), y: markTop - 0.6 }, logoCol: portCol(0.85) },
|
|
277
|
+
{ target: { x: leftPad - 1.8, y: markTop + 0.6 }, logoCol: 0 },
|
|
278
|
+
{ target: { x: leftPad + cols + 0.8, y: markTop + 1.4 }, logoCol: cols - 1 },
|
|
279
|
+
];
|
|
280
|
+
const portLinks = portDefs.map((def, i) => ({
|
|
281
|
+
from: nodeAt(hash(i * 37 + 13) % NODE_COUNT),
|
|
282
|
+
to: def.target,
|
|
283
|
+
period: 40 + (hash(i * 23 + 3) % 28),
|
|
284
|
+
phase: hash(i * 53 + 17) % 80,
|
|
285
|
+
port: def.logoCol,
|
|
286
|
+
}));
|
|
287
|
+
// Constellation: two faint dots hint at each link's path.
|
|
288
|
+
if (frame >= LINKS_WAKE) {
|
|
289
|
+
for (const link of [...links, ...portLinks]) {
|
|
290
|
+
for (const u of [0.35, 0.65]) {
|
|
291
|
+
stamp(link.from.x + (link.to.x - link.from.x) * u, link.from.y + (link.to.y - link.from.y) * u, "·", "#16413c");
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Nodes idle-shimmer on their own cycles.
|
|
296
|
+
if (frame >= NODES_WAKE) {
|
|
297
|
+
nodes.forEach((n, id) => {
|
|
298
|
+
const period = 18 + (hash(id * 3 + 2) % 14);
|
|
299
|
+
const tw = (frame + hash(id * 29 + 4)) % period;
|
|
300
|
+
const active = tw < 3;
|
|
301
|
+
stamp(n.x, n.y, active ? "●" : "○", active ? "#2e6b66" : "#1f524d");
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
// Pulses: a bright head with a fading tail, smoothstepped along the
|
|
305
|
+
// link; port pulses excite the mark as they arrive and flash on impact.
|
|
306
|
+
if (frame >= PULSES_WAKE) {
|
|
307
|
+
for (const link of [...links, ...portLinks]) {
|
|
308
|
+
const tick = (frame + link.phase) % link.period;
|
|
309
|
+
if (tick < PULSE_TRAVEL) {
|
|
310
|
+
const at = (u) => ({
|
|
311
|
+
x: link.from.x + (link.to.x - link.from.x) * ease(u),
|
|
312
|
+
y: link.from.y + (link.to.y - link.from.y) * ease(u),
|
|
313
|
+
});
|
|
314
|
+
const head = at(tick / PULSE_TRAVEL);
|
|
315
|
+
stamp(head.x, head.y, "•", sweeping ? crest : "#8ff2e9");
|
|
316
|
+
if (tick >= 2) {
|
|
317
|
+
const trail = at((tick - 1.5) / PULSE_TRAVEL);
|
|
318
|
+
stamp(trail.x, trail.y, "∙", "#2e6b66");
|
|
319
|
+
}
|
|
320
|
+
if (tick >= 4) {
|
|
321
|
+
const tail = at((tick - 3) / PULSE_TRAVEL);
|
|
322
|
+
stamp(tail.x, tail.y, "·", "#1b4a45");
|
|
323
|
+
}
|
|
324
|
+
if (tick < 2)
|
|
325
|
+
stamp(link.from.x, link.from.y, "✦", "#f2fffd");
|
|
326
|
+
}
|
|
327
|
+
if (link.port >= 0) {
|
|
328
|
+
// Arrival glow: swells just before impact, decays just after.
|
|
329
|
+
const arr = tick - PULSE_TRAVEL;
|
|
330
|
+
if (arr > -4 && arr < 5) {
|
|
331
|
+
const s = arr < 0 ? (4 + arr) / 4 : (5 - arr) / 5;
|
|
332
|
+
for (let dc = -2; dc <= 2; dc++) {
|
|
333
|
+
const col = link.port + dc;
|
|
334
|
+
if (col >= 0 && col < cols) {
|
|
335
|
+
excite[col] = (excite[col] ?? 0) + s * Math.exp(-(dc * dc) / 2.5);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
if (arr >= 0 && arr < 2)
|
|
339
|
+
stamp(link.to.x, link.to.y, "✦", "#f2fffd");
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
const colorAt = (row, col) => {
|
|
346
|
+
// The base breathes a touch around REST; the band lifts it to the
|
|
347
|
+
// crest, and arriving thoughts surge the nearby columns.
|
|
348
|
+
const t = REST +
|
|
349
|
+
0.05 * Math.sin(frame / 9 + col / 5 + row) +
|
|
350
|
+
0.65 * bandAt(col, row) +
|
|
351
|
+
0.5 * Math.min(excite[col] ?? 0, 1);
|
|
352
|
+
// Quantize so neighboring cells merge into longer same-color runs.
|
|
353
|
+
return gradientAt(Math.round(Math.min(Math.max(t, 0), 1) * 14) / 14, crest);
|
|
354
|
+
};
|
|
355
|
+
// Wordmark cells (logo coordinates, placed into the layout below).
|
|
356
|
+
const logo = grid.map((line, row) => {
|
|
357
|
+
const cells = [];
|
|
358
|
+
for (let col = 0; col < line.length; col++) {
|
|
359
|
+
const glyph = line.charAt(col);
|
|
360
|
+
if (glyph === " ") {
|
|
361
|
+
cells.push({ ch: " ", fg: "#4fb8b0" });
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
364
|
+
const born = birthAt(row, col, cols);
|
|
365
|
+
if (frame < born - LEAD) {
|
|
366
|
+
cells.push({ ch: " ", fg: "#4fb8b0" });
|
|
367
|
+
}
|
|
368
|
+
else if (frame < born) {
|
|
369
|
+
cells.push({
|
|
370
|
+
ch: SCRAMBLE.charAt(hash(frame * 97 + col * 13 + row * 7) % SCRAMBLE.length),
|
|
371
|
+
fg: "#2e6b66",
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
else if (frame < born + FLASH) {
|
|
375
|
+
cells.push({ ch: glyph, fg: "#f2fffd" });
|
|
376
|
+
}
|
|
377
|
+
else if (spark?.row === row && spark?.col === col) {
|
|
378
|
+
cells.push({ ch: glyph, fg: "#f2fffd" });
|
|
379
|
+
}
|
|
380
|
+
else {
|
|
381
|
+
cells.push({ ch: glyph, fg: colorAt(row, col) });
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
return cells;
|
|
385
|
+
});
|
|
386
|
+
// Reflection: the bottom row mirrored under the mark, rippling like water
|
|
387
|
+
// and lit faintly by the band. Kept sparse (under half the cells) and deep
|
|
388
|
+
// in the dark range so the water never competes with the letterforms.
|
|
389
|
+
const bottom = logo[logo.length - 1] ?? [];
|
|
390
|
+
const reflection = bottom.map((cell, col) => {
|
|
391
|
+
const mirrored = MIRROR[cell.ch] ?? " ";
|
|
392
|
+
const ripple = Math.sin(frame / 6 + col / 1.7 + (hash(col * 29) % 10) / 3);
|
|
393
|
+
if (mirrored === " " || ripple <= 0.2)
|
|
394
|
+
return { ch: " ", fg: "#143430" };
|
|
395
|
+
return {
|
|
396
|
+
ch: mirrored,
|
|
397
|
+
fg: lerpHex("#0f2a27", "#245852", Math.min(bandAt(col, 2), 0.8)),
|
|
398
|
+
};
|
|
399
|
+
});
|
|
400
|
+
let rows;
|
|
401
|
+
if (canvas) {
|
|
402
|
+
// Place the mark and its water into the field canvas.
|
|
403
|
+
logo.forEach((cells, row) => {
|
|
404
|
+
const rowArr = canvas[markTop + row];
|
|
405
|
+
if (!rowArr)
|
|
406
|
+
return;
|
|
407
|
+
cells.forEach((cell, col) => {
|
|
408
|
+
rowArr[leftPad + col] = cell;
|
|
409
|
+
});
|
|
410
|
+
});
|
|
411
|
+
const reflArr = canvas[reflRow];
|
|
412
|
+
if (reflArr) {
|
|
413
|
+
reflection.forEach((cell, col) => {
|
|
414
|
+
reflArr[leftPad + col] = cell;
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
rows = canvas.map(toChunks);
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
// Compact: star gutters beside the mark, reflection underneath.
|
|
421
|
+
const gutters = grid.map((_line, row) => {
|
|
422
|
+
const left = Array.from({ length: leftPad }, () => ({ ch: " ", fg: "#4fb8b0" }));
|
|
423
|
+
const right = Array.from({ length: rightPad }, () => ({ ch: " ", fg: "#4fb8b0" }));
|
|
424
|
+
if (frame >= WAVE_START - 4) {
|
|
425
|
+
for (let k = 0; k < 2; k++) {
|
|
426
|
+
for (const [side, cellsSide, padWidth] of [
|
|
427
|
+
[0, left, leftPad],
|
|
428
|
+
[1, right, rightPad],
|
|
429
|
+
]) {
|
|
430
|
+
if (padWidth < 3)
|
|
431
|
+
continue;
|
|
432
|
+
const id = side * 16 + row * 2 + k;
|
|
433
|
+
const col = hash(id * 97 + 5) % (padWidth - 1);
|
|
434
|
+
const period = 20 + (hash(id * 7 + 3) % 16);
|
|
435
|
+
const tick = (frame + hash(id * 13 + 1)) % period;
|
|
436
|
+
const cell = cellsSide[col];
|
|
437
|
+
if (cell === undefined)
|
|
438
|
+
continue;
|
|
439
|
+
if (tick < 2) {
|
|
440
|
+
cell.ch = "✦";
|
|
441
|
+
cell.fg = "#8ff2e9";
|
|
442
|
+
}
|
|
443
|
+
else if (tick < 4) {
|
|
444
|
+
cell.ch = "·";
|
|
445
|
+
cell.fg = "#2e6b66";
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
return [left, right];
|
|
451
|
+
});
|
|
452
|
+
const pad = (width) => Array.from({ length: width }, () => ({ ch: " ", fg: "#143430" }));
|
|
453
|
+
rows = [
|
|
454
|
+
...logo.map((cells, row) => {
|
|
455
|
+
const side = gutters[row] ?? [[], []];
|
|
456
|
+
return toChunks([...(side[0] ?? []), ...cells, ...(side[1] ?? [])]);
|
|
457
|
+
}),
|
|
458
|
+
toChunks([...pad(leftPad), ...reflection, ...pad(rightPad)]),
|
|
459
|
+
];
|
|
460
|
+
}
|
|
461
|
+
// Border: breathes near TEAL_DIM and catches the band entering or leaving.
|
|
462
|
+
const breathe = lerpHex("#2e6b66", "#3e938c", 0.5 + 0.5 * Math.sin(frame / 16));
|
|
463
|
+
const edgeGlow = Math.max(bandAt(0, 0), bandAt(cols - 1, 1));
|
|
464
|
+
const border = lerpHex(breathe, crest, edgeGlow * 0.4);
|
|
465
|
+
// Subtitle decodes on: locked text, then a short zone of cycling static,
|
|
466
|
+
// then the caret. Width stays constant so nothing reflows.
|
|
467
|
+
const lockedLen = Math.min(Math.max(frame - TYPE_START, 0), subtitle.length);
|
|
468
|
+
const formingLen = lockedLen < subtitle.length ? Math.min(2, subtitle.length - lockedLen) : 0;
|
|
469
|
+
let forming = "";
|
|
470
|
+
for (let i = 0; i < formingLen; i++) {
|
|
471
|
+
forming += DECODE.charAt(hash(frame * 31 + i * 11) % DECODE.length);
|
|
472
|
+
}
|
|
473
|
+
const doneAt = TYPE_START + subtitle.length;
|
|
474
|
+
const caretOn = lockedLen < subtitle.length ||
|
|
475
|
+
(frame < doneAt + CARET_BLINKS && (frame - doneAt) % 8 < 4);
|
|
476
|
+
return {
|
|
477
|
+
rows,
|
|
478
|
+
border,
|
|
479
|
+
version: frame < IGNITE_SPAN + 8 ? "#5c5c5c" : "#8a8a8a",
|
|
480
|
+
subtitle: [
|
|
481
|
+
{ text: subtitle.slice(0, lockedLen), fg: "#8a8a8a" },
|
|
482
|
+
{ text: forming, fg: "#2e6b66" },
|
|
483
|
+
{ text: caretOn ? "▌" : " ", fg: "#4fb8b0" },
|
|
484
|
+
{ text: " ".repeat(subtitle.length - lockedLen - formingLen), fg: "#8a8a8a" },
|
|
485
|
+
],
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=wordmark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wordmark.js","sourceRoot":"","sources":["../../../src/ui/wordmark.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aui.io/apollo-tui",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"description": "Interactive Apollo operator TUI built on OpenTUI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"start": "node ./bin/apollo-tui.js"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@aui.io/apollo-core": "0.1.
|
|
38
|
+
"@aui.io/apollo-core": "0.1.22",
|
|
39
39
|
"@opentui/core": "^0.4.5",
|
|
40
40
|
"@opentui/react": "^0.4.5",
|
|
41
41
|
"diff": "8.0.2",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aui.io/apollo",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.22",
|
|
4
4
|
"description": "Apollo operator console — CLI + interactive TUI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"postpack": "node ./scripts/clean-bundle.mjs"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@aui.io/apollo-core": "0.1.
|
|
35
|
-
"@aui.io/apollo-cli": "0.1.
|
|
36
|
-
"@aui.io/apollo-tui": "0.1.
|
|
34
|
+
"@aui.io/apollo-core": "0.1.22",
|
|
35
|
+
"@aui.io/apollo-cli": "0.1.22",
|
|
36
|
+
"@aui.io/apollo-tui": "0.1.22",
|
|
37
37
|
"picocolors": "^1.1.1",
|
|
38
38
|
"yaml": "^2.9.0",
|
|
39
39
|
"commander": "^14.0.3",
|