@aui.io/apollo 0.1.21 → 0.1.25

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 (110) hide show
  1. package/README.md +183 -0
  2. package/node_modules/@aui.io/apollo-cli/dist/src/commands/bundles.js +34 -9
  3. package/node_modules/@aui.io/apollo-cli/dist/src/commands/bundles.js.map +1 -1
  4. package/node_modules/@aui.io/apollo-cli/dist/src/commands/curl.d.ts +10 -0
  5. package/node_modules/@aui.io/apollo-cli/dist/src/commands/curl.js +63 -0
  6. package/node_modules/@aui.io/apollo-cli/dist/src/commands/curl.js.map +1 -0
  7. package/node_modules/@aui.io/apollo-cli/dist/src/commands/doctor.d.ts +13 -0
  8. package/node_modules/@aui.io/apollo-cli/dist/src/commands/doctor.js +89 -0
  9. package/node_modules/@aui.io/apollo-cli/dist/src/commands/doctor.js.map +1 -0
  10. package/node_modules/@aui.io/apollo-cli/dist/src/commands/hierarchy.js +24 -7
  11. package/node_modules/@aui.io/apollo-cli/dist/src/commands/hierarchy.js.map +1 -1
  12. package/node_modules/@aui.io/apollo-cli/dist/src/commands/runtime-version.d.ts +10 -0
  13. package/node_modules/@aui.io/apollo-cli/dist/src/commands/runtime-version.js +116 -0
  14. package/node_modules/@aui.io/apollo-cli/dist/src/commands/runtime-version.js.map +1 -0
  15. package/node_modules/@aui.io/apollo-cli/dist/src/commands/scenarios.js +3 -3
  16. package/node_modules/@aui.io/apollo-cli/dist/src/commands/scenarios.js.map +1 -1
  17. package/node_modules/@aui.io/apollo-cli/dist/src/commands/status.js +1 -0
  18. package/node_modules/@aui.io/apollo-cli/dist/src/commands/status.js.map +1 -1
  19. package/node_modules/@aui.io/apollo-cli/dist/src/index.d.ts +1 -0
  20. package/node_modules/@aui.io/apollo-cli/dist/src/index.js +26 -1
  21. package/node_modules/@aui.io/apollo-cli/dist/src/index.js.map +1 -1
  22. package/node_modules/@aui.io/apollo-cli/package.json +3 -3
  23. package/node_modules/@aui.io/apollo-core/dist/src/api/agent-settings.d.ts +166 -26
  24. package/node_modules/@aui.io/apollo-core/dist/src/api/agent-settings.js +106 -20
  25. package/node_modules/@aui.io/apollo-core/dist/src/api/agent-settings.js.map +1 -1
  26. package/node_modules/@aui.io/apollo-core/dist/src/api/capture.d.ts +22 -0
  27. package/node_modules/@aui.io/apollo-core/dist/src/api/capture.js +75 -0
  28. package/node_modules/@aui.io/apollo-core/dist/src/api/capture.js.map +1 -0
  29. package/node_modules/@aui.io/apollo-core/dist/src/api/management.d.ts +0 -1
  30. package/node_modules/@aui.io/apollo-core/dist/src/api/management.js +0 -6
  31. package/node_modules/@aui.io/apollo-core/dist/src/api/management.js.map +1 -1
  32. package/node_modules/@aui.io/apollo-core/dist/src/api/network.d.ts +19 -0
  33. package/node_modules/@aui.io/apollo-core/dist/src/api/network.js +53 -0
  34. package/node_modules/@aui.io/apollo-core/dist/src/api/network.js.map +1 -0
  35. package/node_modules/@aui.io/apollo-core/dist/src/api/transport.d.ts +14 -2
  36. package/node_modules/@aui.io/apollo-core/dist/src/api/transport.js +15 -28
  37. package/node_modules/@aui.io/apollo-core/dist/src/api/transport.js.map +1 -1
  38. package/node_modules/@aui.io/apollo-core/dist/src/config/index.d.ts +1 -1
  39. package/node_modules/@aui.io/apollo-core/dist/src/config/index.js +16 -1
  40. package/node_modules/@aui.io/apollo-core/dist/src/config/index.js.map +1 -1
  41. package/node_modules/@aui.io/apollo-core/dist/src/config/store.d.ts +10 -0
  42. package/node_modules/@aui.io/apollo-core/dist/src/config/store.js +24 -0
  43. package/node_modules/@aui.io/apollo-core/dist/src/config/store.js.map +1 -1
  44. package/node_modules/@aui.io/apollo-core/dist/src/config/types.d.ts +18 -1
  45. package/node_modules/@aui.io/apollo-core/dist/src/index.d.ts +10 -5
  46. package/node_modules/@aui.io/apollo-core/dist/src/index.js +9 -4
  47. package/node_modules/@aui.io/apollo-core/dist/src/index.js.map +1 -1
  48. package/node_modules/@aui.io/apollo-core/dist/src/runtime-version/index.d.ts +72 -0
  49. package/node_modules/@aui.io/apollo-core/dist/src/runtime-version/index.js +114 -0
  50. package/node_modules/@aui.io/apollo-core/dist/src/runtime-version/index.js.map +1 -0
  51. package/node_modules/@aui.io/apollo-core/dist/src/services/bundles.d.ts +47 -1
  52. package/node_modules/@aui.io/apollo-core/dist/src/services/bundles.js +60 -6
  53. package/node_modules/@aui.io/apollo-core/dist/src/services/bundles.js.map +1 -1
  54. package/node_modules/@aui.io/apollo-core/dist/src/services/clients.d.ts +4 -1
  55. package/node_modules/@aui.io/apollo-core/dist/src/services/clients.js +19 -0
  56. package/node_modules/@aui.io/apollo-core/dist/src/services/clients.js.map +1 -1
  57. package/node_modules/@aui.io/apollo-core/dist/src/services/doctor.d.ts +39 -0
  58. package/node_modules/@aui.io/apollo-core/dist/src/services/doctor.js +586 -0
  59. package/node_modules/@aui.io/apollo-core/dist/src/services/doctor.js.map +1 -0
  60. package/node_modules/@aui.io/apollo-core/dist/src/services/hierarchy.d.ts +78 -2
  61. package/node_modules/@aui.io/apollo-core/dist/src/services/hierarchy.js +177 -17
  62. package/node_modules/@aui.io/apollo-core/dist/src/services/hierarchy.js.map +1 -1
  63. package/node_modules/@aui.io/apollo-core/dist/src/services/requests.d.ts +22 -0
  64. package/node_modules/@aui.io/apollo-core/dist/src/services/requests.js +73 -0
  65. package/node_modules/@aui.io/apollo-core/dist/src/services/requests.js.map +1 -0
  66. package/node_modules/@aui.io/apollo-core/dist/src/services/scenarios.d.ts +15 -8
  67. package/node_modules/@aui.io/apollo-core/dist/src/services/scenarios.js +80 -58
  68. package/node_modules/@aui.io/apollo-core/dist/src/services/scenarios.js.map +1 -1
  69. package/node_modules/@aui.io/apollo-core/dist/src/services/status.service.d.ts +2 -0
  70. package/node_modules/@aui.io/apollo-core/dist/src/services/status.service.js +10 -2
  71. package/node_modules/@aui.io/apollo-core/dist/src/services/status.service.js.map +1 -1
  72. package/node_modules/@aui.io/apollo-core/package.json +1 -1
  73. package/node_modules/@aui.io/apollo-tui/dist/src/actions/registry.js +16 -2
  74. package/node_modules/@aui.io/apollo-tui/dist/src/actions/registry.js.map +1 -1
  75. package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivityDrawer.js +31 -16
  76. package/node_modules/@aui.io/apollo-tui/dist/src/activity/ActivityDrawer.js.map +1 -1
  77. package/node_modules/@aui.io/apollo-tui/dist/src/activity/requests.d.ts +19 -0
  78. package/node_modules/@aui.io/apollo-tui/dist/src/activity/requests.js +29 -0
  79. package/node_modules/@aui.io/apollo-tui/dist/src/activity/requests.js.map +1 -0
  80. package/node_modules/@aui.io/apollo-tui/dist/src/author/AuthorHome.d.ts +3 -1
  81. package/node_modules/@aui.io/apollo-tui/dist/src/author/AuthorHome.js +6 -18
  82. package/node_modules/@aui.io/apollo-tui/dist/src/author/AuthorHome.js.map +1 -1
  83. package/node_modules/@aui.io/apollo-tui/dist/src/author/ResourcesView.js +26 -4
  84. package/node_modules/@aui.io/apollo-tui/dist/src/author/ResourcesView.js.map +1 -1
  85. package/node_modules/@aui.io/apollo-tui/dist/src/context/ContextSwitcher.js +6 -2
  86. package/node_modules/@aui.io/apollo-tui/dist/src/context/ContextSwitcher.js.map +1 -1
  87. package/node_modules/@aui.io/apollo-tui/dist/src/lib/actions.js +95 -16
  88. package/node_modules/@aui.io/apollo-tui/dist/src/lib/actions.js.map +1 -1
  89. package/node_modules/@aui.io/apollo-tui/dist/src/lib/commands.d.ts +1 -1
  90. package/node_modules/@aui.io/apollo-tui/dist/src/lib/commands.js +20 -0
  91. package/node_modules/@aui.io/apollo-tui/dist/src/lib/commands.js.map +1 -1
  92. package/node_modules/@aui.io/apollo-tui/dist/src/lib/diagnostics.d.ts +8 -0
  93. package/node_modules/@aui.io/apollo-tui/dist/src/lib/diagnostics.js +109 -0
  94. package/node_modules/@aui.io/apollo-tui/dist/src/lib/diagnostics.js.map +1 -0
  95. package/node_modules/@aui.io/apollo-tui/dist/src/lib/scope.d.ts +2 -0
  96. package/node_modules/@aui.io/apollo-tui/dist/src/lib/scope.js +1 -0
  97. package/node_modules/@aui.io/apollo-tui/dist/src/lib/scope.js.map +1 -1
  98. package/node_modules/@aui.io/apollo-tui/dist/src/opentui-app.js +2 -2
  99. package/node_modules/@aui.io/apollo-tui/dist/src/opentui-app.js.map +1 -1
  100. package/node_modules/@aui.io/apollo-tui/dist/src/shell/Breadcrumb.d.ts +4 -2
  101. package/node_modules/@aui.io/apollo-tui/dist/src/shell/Breadcrumb.js +5 -3
  102. package/node_modules/@aui.io/apollo-tui/dist/src/shell/Breadcrumb.js.map +1 -1
  103. package/node_modules/@aui.io/apollo-tui/dist/src/ui/SplashCard.d.ts +5 -0
  104. package/node_modules/@aui.io/apollo-tui/dist/src/ui/SplashCard.js +56 -0
  105. package/node_modules/@aui.io/apollo-tui/dist/src/ui/SplashCard.js.map +1 -0
  106. package/node_modules/@aui.io/apollo-tui/dist/src/ui/wordmark.d.ts +73 -0
  107. package/node_modules/@aui.io/apollo-tui/dist/src/ui/wordmark.js +488 -0
  108. package/node_modules/@aui.io/apollo-tui/dist/src/ui/wordmark.js.map +1 -0
  109. package/node_modules/@aui.io/apollo-tui/package.json +2 -2
  110. 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.21",
3
+ "version": "0.1.25",
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.21",
38
+ "@aui.io/apollo-core": "0.1.25",
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.21",
3
+ "version": "0.1.25",
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.21",
35
- "@aui.io/apollo-cli": "0.1.21",
36
- "@aui.io/apollo-tui": "0.1.21",
34
+ "@aui.io/apollo-core": "0.1.25",
35
+ "@aui.io/apollo-cli": "0.1.25",
36
+ "@aui.io/apollo-tui": "0.1.25",
37
37
  "picocolors": "^1.1.1",
38
38
  "yaml": "^2.9.0",
39
39
  "commander": "^14.0.3",