saeeol 1.4.0 → 1.4.2

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.
@@ -0,0 +1,302 @@
1
+ /**
2
+ * tui-walkthrough-slash.test.ts — 슬래시 명령어 전체 검증
3
+ *
4
+ * /help, /status, /models, /agents, /themes, /sessions, /new, /exit,
5
+ * /restart, /connect, /mcps, /mcp-refresh, /variants, /logs,
6
+ * /editor, /skills, /pointing, /timestamps, /thinking, /rename,
7
+ * /timeline, /fork, /compact, /copy, /export, /share, /unshare,
8
+ * /undo, /redo, /org, /quit, /q 등 전부.
9
+ */
10
+
11
+ import { describe, expect, test, beforeAll, afterAll } from "bun:test"
12
+ import { tmpdir, disposeAllInstances } from "../fixture/fixture"
13
+ import * as Log from "@saeeol/core/util/log"
14
+ import { Flag } from "@saeeol/core/flag/flag"
15
+ import { TuiDriver } from "./tui-walkthrough-driver"
16
+
17
+ void Log.init({ print: false })
18
+
19
+ describe("TUI walkthrough: slash commands", () => {
20
+ let driver: TuiDriver
21
+ let tmp: Awaited<ReturnType<typeof tmpdir>>
22
+
23
+ beforeAll(async () => {
24
+ tmp = await tmpdir({ git: true, config: {} })
25
+ Flag.SAEEOL_EXPERIMENTAL_HTTPAPI = false
26
+ driver = new TuiDriver(tmp.path)
27
+ await driver.wait(6000)
28
+ })
29
+
30
+ afterAll(async () => {
31
+ await driver.saveReport(".tui-slash-report.txt")
32
+ await driver.kill()
33
+ await disposeAllInstances()
34
+ Flag.SAEEOL_EXPERIMENTAL_HTTPAPI = true
35
+ })
36
+
37
+ // ── 시스템 슬래시 명령 ──
38
+
39
+ test("/help → help dialog", async () => {
40
+ await driver.slash("help")
41
+ driver.snapshot("slash-help")
42
+ expect(driver.errors()).toHaveLength(0)
43
+ await driver.dismiss()
44
+ })
45
+
46
+ test("/status → status dialog", async () => {
47
+ await driver.slash("status")
48
+ driver.snapshot("slash-status")
49
+ expect(driver.errors()).toHaveLength(0)
50
+ await driver.dismiss()
51
+ })
52
+
53
+ test("/themes → theme dialog", async () => {
54
+ await driver.slash("themes")
55
+ driver.snapshot("slash-themes")
56
+ expect(driver.errors()).toHaveLength(0)
57
+ await driver.dismiss()
58
+ })
59
+
60
+ test("/models → model dialog", async () => {
61
+ await driver.slash("models")
62
+ driver.snapshot("slash-models")
63
+ expect(driver.errors()).toHaveLength(0)
64
+ await driver.dismiss()
65
+ })
66
+
67
+ test("/agents → agent dialog", async () => {
68
+ await driver.slash("agents")
69
+ driver.snapshot("slash-agents")
70
+ expect(driver.errors()).toHaveLength(0)
71
+ await driver.dismiss()
72
+ })
73
+
74
+ test("/variants → variant dialog", async () => {
75
+ await driver.slash("variants")
76
+ driver.snapshot("slash-variants")
77
+ expect(driver.errors()).toHaveLength(0)
78
+ await driver.dismiss()
79
+ })
80
+
81
+ // ── 세션 슬래시 명령 ──
82
+
83
+ test("/sessions → session list", async () => {
84
+ await driver.slash("sessions")
85
+ driver.snapshot("slash-sessions")
86
+ expect(driver.errors()).toHaveLength(0)
87
+ await driver.dismiss()
88
+ })
89
+
90
+ test("/resume → session list alias", async () => {
91
+ await driver.slash("resume")
92
+ driver.snapshot("slash-resume")
93
+ expect(driver.errors()).toHaveLength(0)
94
+ await driver.dismiss()
95
+ })
96
+
97
+ test("/continue → session list alias", async () => {
98
+ await driver.slash("continue")
99
+ driver.snapshot("slash-continue")
100
+ expect(driver.errors()).toHaveLength(0)
101
+ await driver.dismiss()
102
+ })
103
+
104
+ test("/new → new session (home)", async () => {
105
+ await driver.slash("new")
106
+ driver.snapshot("slash-new")
107
+ expect(driver.errors()).toHaveLength(0)
108
+ })
109
+
110
+ test("/clear → alias for /new", async () => {
111
+ await driver.slash("clear")
112
+ driver.snapshot("slash-clear")
113
+ expect(driver.errors()).toHaveLength(0)
114
+ })
115
+
116
+ // ── 에이전트/MCP 슬래시 명령 ──
117
+
118
+ test("/mcps → MCP dialog", async () => {
119
+ await driver.slash("mcps")
120
+ driver.snapshot("slash-mcps")
121
+ expect(driver.errors()).toHaveLength(0)
122
+ await driver.dismiss()
123
+ })
124
+
125
+ test("/mcp-refresh → refresh MCP servers", async () => {
126
+ await driver.slash("mcp-refresh")
127
+ driver.snapshot("slash-mcp-refresh")
128
+ expect(driver.errors()).toHaveLength(0)
129
+ })
130
+
131
+ test("/connect → provider dialog", async () => {
132
+ await driver.slash("connect")
133
+ driver.snapshot("slash-connect")
134
+ expect(driver.errors()).toHaveLength(0)
135
+ await driver.dismiss()
136
+ })
137
+
138
+ // ── 세션 관리 슬래시 명령 ──
139
+
140
+ test("/timeline → timeline dialog", async () => {
141
+ await driver.slash("timeline")
142
+ driver.snapshot("slash-timeline")
143
+ expect(driver.errors()).toHaveLength(0)
144
+ await driver.dismiss()
145
+ })
146
+
147
+ test("/compact → compact session", async () => {
148
+ await driver.slash("compact")
149
+ driver.snapshot("slash-compact")
150
+ expect(driver.errors()).toHaveLength(0)
151
+ })
152
+
153
+ test("/summarize → alias for compact", async () => {
154
+ await driver.slash("summarize")
155
+ driver.snapshot("slash-summarize")
156
+ expect(driver.errors()).toHaveLength(0)
157
+ })
158
+
159
+ test("/rename → rename dialog", async () => {
160
+ await driver.slash("rename")
161
+ driver.snapshot("slash-rename")
162
+ expect(driver.errors()).toHaveLength(0)
163
+ await driver.dismiss()
164
+ })
165
+
166
+ test("/fork → fork dialog", async () => {
167
+ await driver.slash("fork")
168
+ driver.snapshot("slash-fork")
169
+ expect(driver.errors()).toHaveLength(0)
170
+ await driver.dismiss()
171
+ })
172
+
173
+ // ── 편집/내보내기 ──
174
+
175
+ test("/editor → open editor", async () => {
176
+ await driver.slash("editor")
177
+ driver.snapshot("slash-editor")
178
+ expect(driver.errors()).toHaveLength(0)
179
+ await driver.dismiss(1000)
180
+ })
181
+
182
+ test("/skills → skills dialog", async () => {
183
+ await driver.slash("skills")
184
+ driver.snapshot("slash-skills")
185
+ expect(driver.errors()).toHaveLength(0)
186
+ await driver.dismiss()
187
+ })
188
+
189
+ test("/copy → copy transcript", async () => {
190
+ await driver.slash("copy")
191
+ driver.snapshot("slash-copy")
192
+ expect(driver.errors()).toHaveLength(0)
193
+ })
194
+
195
+ test("/export → export dialog", async () => {
196
+ await driver.slash("export")
197
+ driver.snapshot("slash-export")
198
+ expect(driver.errors()).toHaveLength(0)
199
+ await driver.dismiss()
200
+ })
201
+
202
+ // ── 토글 ──
203
+
204
+ test("/timestamps → toggle timestamps", async () => {
205
+ await driver.slash("timestamps")
206
+ driver.snapshot("slash-timestamps")
207
+ expect(driver.errors()).toHaveLength(0)
208
+ })
209
+
210
+ test("/toggle-timestamps → alias", async () => {
211
+ await driver.slash("toggle-timestamps")
212
+ driver.snapshot("slash-toggle-timestamps")
213
+ expect(driver.errors()).toHaveLength(0)
214
+ })
215
+
216
+ test("/thinking → toggle thinking", async () => {
217
+ await driver.slash("thinking")
218
+ driver.snapshot("slash-thinking")
219
+ expect(driver.errors()).toHaveLength(0)
220
+ })
221
+
222
+ test("/toggle-thinking → alias", async () => {
223
+ await driver.slash("toggle-thinking")
224
+ driver.snapshot("slash-toggle-thinking")
225
+ expect(driver.errors()).toHaveLength(0)
226
+ })
227
+
228
+ // ── 포인팅 ──
229
+
230
+ test("/pointing → pointing dialog", async () => {
231
+ await driver.slash("pointing")
232
+ driver.snapshot("slash-pointing")
233
+ expect(driver.errors()).toHaveLength(0)
234
+ await driver.dismiss()
235
+ })
236
+
237
+ test("/point → alias for pointing", async () => {
238
+ await driver.slash("point")
239
+ driver.snapshot("slash-point")
240
+ expect(driver.errors()).toHaveLength(0)
241
+ await driver.dismiss()
242
+ })
243
+
244
+ test("/unpointing → clear pointing", async () => {
245
+ await driver.slash("unpointing")
246
+ driver.snapshot("slash-unpointing")
247
+ expect(driver.errors()).toHaveLength(0)
248
+ })
249
+
250
+ test("/unpoint → alias for unpointing", async () => {
251
+ await driver.slash("unpoint")
252
+ driver.snapshot("slash-unpoint")
253
+ expect(driver.errors()).toHaveLength(0)
254
+ })
255
+
256
+ // ── share ──
257
+
258
+ test("/share → share session", async () => {
259
+ await driver.slash("share")
260
+ driver.snapshot("slash-share")
261
+ expect(driver.errors()).toHaveLength(0)
262
+ await driver.dismiss()
263
+ })
264
+
265
+ test("/unshare → unshare session", async () => {
266
+ await driver.slash("unshare")
267
+ driver.snapshot("slash-unshare")
268
+ expect(driver.errors()).toHaveLength(0)
269
+ await driver.dismiss()
270
+ })
271
+
272
+ // ── undo/redo ──
273
+
274
+ test("/undo → undo message", async () => {
275
+ await driver.slash("undo")
276
+ driver.snapshot("slash-undo")
277
+ expect(driver.errors()).toHaveLength(0)
278
+ })
279
+
280
+ test("/redo → redo message", async () => {
281
+ await driver.slash("redo")
282
+ driver.snapshot("slash-redo")
283
+ expect(driver.errors()).toHaveLength(0)
284
+ })
285
+
286
+ // ── 로그 ──
287
+
288
+ test("/logs → open log file", async () => {
289
+ await driver.slash("logs")
290
+ driver.snapshot("slash-logs")
291
+ expect(driver.errors()).toHaveLength(0)
292
+ })
293
+
294
+ // ── 종료 (마지막) ──
295
+
296
+ test("/quit → exit alias", async () => {
297
+ await driver.slash("quit")
298
+ await driver.wait(2000)
299
+ driver.snapshot("slash-quit")
300
+ expect(driver.errors()).toHaveLength(0)
301
+ })
302
+ })
@@ -0,0 +1,208 @@
1
+ /**
2
+ * tui-walkthrough-system.test.ts — 시스템 토글 + 부팅 + 종료 검증
3
+ *
4
+ * - TUI 부팅 (alternate screen 진입)
5
+ * - Home 화면 렌더링
6
+ * - 커맨드 팔레트에서 시스템 명령 선택
7
+ * - 모든 토글 명령: notifications, animations, file_context,
8
+ * paste_summary, diffwrap, terminal_title, session_directory_filter
9
+ * - debug overlay, console toggle
10
+ * - /restart, /exit, /quit, /q, /rs
11
+ * - 전체 스냅샷 에러 재검사
12
+ */
13
+
14
+ import { describe, expect, test, beforeAll, afterAll } from "bun:test"
15
+ import { tmpdir, disposeAllInstances } from "../fixture/fixture"
16
+ import * as Log from "@saeeol/core/util/log"
17
+ import { Flag } from "@saeeol/core/flag/flag"
18
+ import { TuiDriver, Key, hasError } from "./tui-walkthrough-driver"
19
+ import path from "path"
20
+
21
+ void Log.init({ print: false })
22
+
23
+ describe("TUI walkthrough: system + boot + exit", () => {
24
+ let driver: TuiDriver
25
+ let tmp: Awaited<ReturnType<typeof tmpdir>>
26
+
27
+ beforeAll(async () => {
28
+ tmp = await tmpdir({ git: true, config: {} })
29
+ Flag.SAEEOL_EXPERIMENTAL_HTTPAPI = false
30
+ driver = new TuiDriver(tmp.path)
31
+ await driver.wait(6000)
32
+ })
33
+
34
+ afterAll(async () => {
35
+ await driver.saveReport(".tui-system-report.txt")
36
+ await driver.kill()
37
+ await disposeAllInstances()
38
+ Flag.SAEEOL_EXPERIMENTAL_HTTPAPI = true
39
+ })
40
+
41
+ // ── 부팅 검증 ──
42
+
43
+ test("boot: TUI enters alternate screen", async () => {
44
+ driver.snapshot("boot")
45
+ expect(driver.output).toMatch(/\x1b\[\?9001h|\x1b\[\?1004h/)
46
+ expect(driver.errors()).toHaveLength(0)
47
+ })
48
+
49
+ test("home: renders content", async () => {
50
+ const { plain } = driver.snapshot("home")
51
+ expect(plain.length).toBeGreaterThan(0)
52
+ expect(driver.errors()).toHaveLength(0)
53
+ })
54
+
55
+ // ── 시스템 슬래시 명령 ──
56
+
57
+ test("/restart → restart attempt", async () => {
58
+ await driver.slash("restart")
59
+ driver.snapshot("slash-restart")
60
+ expect(driver.errors()).toHaveLength(0)
61
+ // restart 후 재부팅 대기
62
+ await driver.wait(6000)
63
+ })
64
+
65
+ test("/rs → restart alias", async () => {
66
+ await driver.slash("rs")
67
+ driver.snapshot("slash-rs")
68
+ expect(driver.errors()).toHaveLength(0)
69
+ await driver.wait(6000)
70
+ })
71
+
72
+ // ── system toggles via command palette ──
73
+
74
+ test("toggle: notifications via palette", async () => {
75
+ driver.write(Key.ctrlP)
76
+ await driver.wait(1000)
77
+ driver.write("notifications")
78
+ await driver.wait(500)
79
+ driver.write(Key.enter)
80
+ await driver.wait(500)
81
+ driver.snapshot("toggle-notifications")
82
+ expect(driver.errors()).toHaveLength(0)
83
+ })
84
+
85
+ test("toggle: animations via palette", async () => {
86
+ driver.write(Key.ctrlP)
87
+ await driver.wait(1000)
88
+ driver.write("animations")
89
+ await driver.wait(500)
90
+ driver.write(Key.enter)
91
+ await driver.wait(500)
92
+ driver.snapshot("toggle-animations")
93
+ expect(driver.errors()).toHaveLength(0)
94
+ })
95
+
96
+ test("toggle: file context via palette", async () => {
97
+ driver.write(Key.ctrlP)
98
+ await driver.wait(1000)
99
+ driver.write("file context")
100
+ await driver.wait(500)
101
+ driver.write(Key.enter)
102
+ await driver.wait(500)
103
+ driver.snapshot("toggle-file-context")
104
+ expect(driver.errors()).toHaveLength(0)
105
+ })
106
+
107
+ test("toggle: paste summary via palette", async () => {
108
+ driver.write(Key.ctrlP)
109
+ await driver.wait(1000)
110
+ driver.write("paste summary")
111
+ await driver.wait(500)
112
+ driver.write(Key.enter)
113
+ await driver.wait(500)
114
+ driver.snapshot("toggle-paste-summary")
115
+ expect(driver.errors()).toHaveLength(0)
116
+ })
117
+
118
+ test("toggle: diffwrap via palette", async () => {
119
+ driver.write(Key.ctrlP)
120
+ await driver.wait(1000)
121
+ driver.write("diffwrap")
122
+ await driver.wait(500)
123
+ driver.write(Key.enter)
124
+ await driver.wait(500)
125
+ driver.snapshot("toggle-diffwrap")
126
+ expect(driver.errors()).toHaveLength(0)
127
+ })
128
+
129
+ test("toggle: session directory filter via palette", async () => {
130
+ driver.write(Key.ctrlP)
131
+ await driver.wait(1000)
132
+ driver.write("session directory filter")
133
+ await driver.wait(500)
134
+ driver.write(Key.enter)
135
+ await driver.wait(500)
136
+ driver.snapshot("toggle-session-dir-filter")
137
+ expect(driver.errors()).toHaveLength(0)
138
+ })
139
+
140
+ // ── 디버그/콘솔 ──
141
+
142
+ test("debug overlay via palette", async () => {
143
+ driver.write(Key.ctrlP)
144
+ await driver.wait(1000)
145
+ driver.write("debug")
146
+ await driver.wait(500)
147
+ driver.write(Key.enter)
148
+ await driver.wait(500)
149
+ driver.snapshot("debug-overlay")
150
+ expect(driver.errors()).toHaveLength(0)
151
+ })
152
+
153
+ test("console toggle via palette", async () => {
154
+ driver.write(Key.ctrlP)
155
+ await driver.wait(1000)
156
+ driver.write("console")
157
+ await driver.wait(500)
158
+ driver.write(Key.enter)
159
+ await driver.wait(500)
160
+ driver.snapshot("console-toggle")
161
+ expect(driver.errors()).toHaveLength(0)
162
+ })
163
+
164
+ // ── org 전환 (조건부) ──
165
+
166
+ test("/org → org switch dialog", async () => {
167
+ await driver.slash("org")
168
+ driver.snapshot("slash-org")
169
+ expect(driver.errors()).toHaveLength(0)
170
+ await driver.dismiss()
171
+ })
172
+
173
+ test("/orgs → alias", async () => {
174
+ await driver.slash("orgs")
175
+ driver.snapshot("slash-orgs")
176
+ expect(driver.errors()).toHaveLength(0)
177
+ await driver.dismiss()
178
+ })
179
+
180
+ test("/switch-org → alias", async () => {
181
+ await driver.slash("switch-org")
182
+ driver.snapshot("slash-switch-org")
183
+ expect(driver.errors()).toHaveLength(0)
184
+ await driver.dismiss()
185
+ })
186
+
187
+ // ── 종료 ──
188
+
189
+ test("/q → exit alias", async () => {
190
+ await driver.slash("q")
191
+ await driver.wait(2000)
192
+ driver.snapshot("slash-q-exit")
193
+ expect(driver.errors()).toHaveLength(0)
194
+ })
195
+
196
+ // ── 전체 스냅샷 에러 재검사 ──
197
+
198
+ test("all snapshots: no errors in any screen", async () => {
199
+ const allErrors: string[] = []
200
+ for (const snap of driver.snapshots) {
201
+ const snapErrors = hasError(snap.plain)
202
+ if (snapErrors.length > 0) {
203
+ allErrors.push(`[${snap.name}]: ${snapErrors.join("; ")}`)
204
+ }
205
+ }
206
+ expect(allErrors).toHaveLength(0)
207
+ })
208
+ })
@@ -1 +0,0 @@
1
- [?9001h[?1004h[?25l]0;● 새얼[?25h
@@ -1 +0,0 @@
1
- [?9001h[?1004h[?25l[?25h
@@ -1,122 +0,0 @@
1
- === boot (280 bytes) ===
2
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
3
-
4
-
5
- === home (280 bytes) ===
6
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
7
-
8
-
9
- === command-palette-open (280 bytes) ===
10
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
11
-
12
-
13
- === command-palette-closed (280 bytes) ===
14
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
15
-
16
-
17
- === session-list (280 bytes) ===
18
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
19
-
20
-
21
- === model-selector (280 bytes) ===
22
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
23
-
24
-
25
- === agent-selector (280 bytes) ===
26
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
27
-
28
-
29
- === status (280 bytes) ===
30
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
31
-
32
-
33
- === theme (280 bytes) ===
34
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
35
-
36
-
37
- === slash-help (280 bytes) ===
38
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
39
-
40
-
41
- === slash-status (280 bytes) ===
42
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
43
-
44
-
45
- === slash-models (280 bytes) ===
46
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
47
-
48
-
49
- === slash-agents (280 bytes) ===
50
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
51
-
52
-
53
- === slash-themes (280 bytes) ===
54
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
55
-
56
-
57
- === slash-sessions (280 bytes) ===
58
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
59
-
60
-
61
- === slash-connect (280 bytes) ===
62
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
63
-
64
-
65
- === slash-mcps (280 bytes) ===
66
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
67
-
68
-
69
- === slash-variants (280 bytes) ===
70
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
71
-
72
-
73
- === slash-new (280 bytes) ===
74
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
75
-
76
-
77
- === prompt-typed (280 bytes) ===
78
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
79
-
80
-
81
- === prompt-cleared (280 bytes) ===
82
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
83
-
84
-
85
- === new-session (280 bytes) ===
86
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
87
-
88
-
89
- === sidebar-open (280 bytes) ===
90
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
91
-
92
-
93
- === sidebar-closed (280 bytes) ===
94
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
95
-
96
-
97
- === scroll (280 bytes) ===
98
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
99
-
100
-
101
- === model-cycle-f2 (280 bytes) ===
102
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
103
-
104
-
105
- === agent-cycle-tab (280 bytes) ===
106
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
107
-
108
-
109
- === session-compact (280 bytes) ===
110
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
111
-
112
-
113
- === session-timeline (280 bytes) ===
114
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
115
-
116
-
117
- === cursor-movement (280 bytes) ===
118
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception
119
-
120
-
121
- === slash-quit (280 bytes) ===
122
- s service=default e=Export named 'jsx' not found in module 'C:\Users\PC\Desktop\SAEEOL\node_modules\.bun\@opentui+solid@0.2.2+37848aaf691d3d45\node_modules\@opentui\solid\jsx-runtime.d.ts'. exception