@gxp-dev/tools 2.0.5 → 2.0.6

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 (169) hide show
  1. package/dist/tui/App.d.ts +13 -0
  2. package/dist/tui/App.d.ts.map +1 -0
  3. package/dist/tui/App.js +480 -0
  4. package/dist/tui/App.js.map +1 -0
  5. package/dist/tui/components/CommandInput.d.ts +13 -0
  6. package/dist/tui/components/CommandInput.d.ts.map +1 -0
  7. package/dist/tui/components/CommandInput.js +180 -0
  8. package/dist/tui/components/CommandInput.js.map +1 -0
  9. package/dist/tui/components/GeminiPanel.d.ts +7 -0
  10. package/dist/tui/components/GeminiPanel.d.ts.map +1 -0
  11. package/dist/tui/components/GeminiPanel.js +99 -0
  12. package/dist/tui/components/GeminiPanel.js.map +1 -0
  13. package/dist/tui/components/Header.d.ts +6 -0
  14. package/dist/tui/components/Header.d.ts.map +1 -0
  15. package/dist/tui/components/Header.js +6 -0
  16. package/dist/tui/components/Header.js.map +1 -0
  17. package/dist/tui/components/LogPanel.d.ts +8 -0
  18. package/dist/tui/components/LogPanel.d.ts.map +1 -0
  19. package/dist/tui/components/LogPanel.js +89 -0
  20. package/dist/tui/components/LogPanel.js.map +1 -0
  21. package/dist/tui/components/TabBar.d.ts +9 -0
  22. package/dist/tui/components/TabBar.d.ts.map +1 -0
  23. package/dist/tui/components/TabBar.js +23 -0
  24. package/dist/tui/components/TabBar.js.map +1 -0
  25. package/dist/tui/components/WelcomeScreen.d.ts +2 -0
  26. package/dist/tui/components/WelcomeScreen.d.ts.map +1 -0
  27. package/dist/tui/components/WelcomeScreen.js +14 -0
  28. package/dist/tui/components/WelcomeScreen.js.map +1 -0
  29. package/dist/tui/index.d.ts +8 -0
  30. package/dist/tui/index.d.ts.map +1 -0
  31. package/dist/tui/index.js +47 -0
  32. package/dist/tui/index.js.map +1 -0
  33. package/dist/tui/package.json +1 -0
  34. package/dist/tui/services/ExtensionService.d.ts +11 -0
  35. package/dist/tui/services/ExtensionService.d.ts.map +1 -0
  36. package/dist/tui/services/ExtensionService.js +101 -0
  37. package/dist/tui/services/ExtensionService.js.map +1 -0
  38. package/dist/tui/services/GeminiService.d.ts +40 -0
  39. package/dist/tui/services/GeminiService.d.ts.map +1 -0
  40. package/dist/tui/services/GeminiService.js +327 -0
  41. package/dist/tui/services/GeminiService.js.map +1 -0
  42. package/dist/tui/services/ServiceManager.d.ts +40 -0
  43. package/dist/tui/services/ServiceManager.d.ts.map +1 -0
  44. package/dist/tui/services/ServiceManager.js +283 -0
  45. package/dist/tui/services/ServiceManager.js.map +1 -0
  46. package/dist/tui/services/SocketService.d.ts +19 -0
  47. package/dist/tui/services/SocketService.d.ts.map +1 -0
  48. package/dist/tui/services/SocketService.js +163 -0
  49. package/dist/tui/services/SocketService.js.map +1 -0
  50. package/dist/tui/services/ViteService.d.ts +8 -0
  51. package/dist/tui/services/ViteService.d.ts.map +1 -0
  52. package/dist/tui/services/ViteService.js +89 -0
  53. package/dist/tui/services/ViteService.js.map +1 -0
  54. package/dist/tui/services/index.d.ts +6 -0
  55. package/dist/tui/services/index.d.ts.map +1 -0
  56. package/dist/tui/services/index.js +6 -0
  57. package/dist/tui/services/index.js.map +1 -0
  58. package/package.json +6 -1
  59. package/.github/workflows/npm-publish.yml +0 -48
  60. package/CLAUDE.md +0 -400
  61. package/REFACTOR_PLAN.md +0 -194
  62. package/browser-extensions/README.md +0 -1
  63. package/browser-extensions/chrome/background.js +0 -857
  64. package/browser-extensions/chrome/content.js +0 -51
  65. package/browser-extensions/chrome/devtools.html +0 -9
  66. package/browser-extensions/chrome/devtools.js +0 -23
  67. package/browser-extensions/chrome/icons/gx_off_128.png +0 -0
  68. package/browser-extensions/chrome/icons/gx_off_16.png +0 -0
  69. package/browser-extensions/chrome/icons/gx_off_32.png +0 -0
  70. package/browser-extensions/chrome/icons/gx_off_64.png +0 -0
  71. package/browser-extensions/chrome/icons/gx_on_128.png +0 -0
  72. package/browser-extensions/chrome/icons/gx_on_16.png +0 -0
  73. package/browser-extensions/chrome/icons/gx_on_32.png +0 -0
  74. package/browser-extensions/chrome/icons/gx_on_64.png +0 -0
  75. package/browser-extensions/chrome/inspector.js +0 -1087
  76. package/browser-extensions/chrome/manifest.json +0 -70
  77. package/browser-extensions/chrome/panel.html +0 -638
  78. package/browser-extensions/chrome/panel.js +0 -862
  79. package/browser-extensions/chrome/popup.html +0 -399
  80. package/browser-extensions/chrome/popup.js +0 -515
  81. package/browser-extensions/chrome/rules.json +0 -1
  82. package/browser-extensions/chrome/test-chrome.html +0 -145
  83. package/browser-extensions/chrome/test-mixed-content.html +0 -190
  84. package/browser-extensions/chrome/test-uri-pattern.html +0 -199
  85. package/browser-extensions/firefox/README.md +0 -134
  86. package/browser-extensions/firefox/background.js +0 -804
  87. package/browser-extensions/firefox/content.js +0 -120
  88. package/browser-extensions/firefox/debug-errors.html +0 -229
  89. package/browser-extensions/firefox/debug-https.html +0 -113
  90. package/browser-extensions/firefox/devtools.html +0 -9
  91. package/browser-extensions/firefox/devtools.js +0 -24
  92. package/browser-extensions/firefox/icons/gx_off_128.png +0 -0
  93. package/browser-extensions/firefox/icons/gx_off_16.png +0 -0
  94. package/browser-extensions/firefox/icons/gx_off_32.png +0 -0
  95. package/browser-extensions/firefox/icons/gx_off_64.png +0 -0
  96. package/browser-extensions/firefox/icons/gx_on_128.png +0 -0
  97. package/browser-extensions/firefox/icons/gx_on_16.png +0 -0
  98. package/browser-extensions/firefox/icons/gx_on_32.png +0 -0
  99. package/browser-extensions/firefox/icons/gx_on_64.png +0 -0
  100. package/browser-extensions/firefox/inspector.js +0 -1087
  101. package/browser-extensions/firefox/manifest.json +0 -67
  102. package/browser-extensions/firefox/panel.html +0 -638
  103. package/browser-extensions/firefox/panel.js +0 -862
  104. package/browser-extensions/firefox/popup.html +0 -525
  105. package/browser-extensions/firefox/popup.js +0 -536
  106. package/browser-extensions/firefox/test-gramercy.html +0 -126
  107. package/browser-extensions/firefox/test-imports.html +0 -58
  108. package/browser-extensions/firefox/test-masking.html +0 -147
  109. package/browser-extensions/firefox/test-uri-pattern.html +0 -199
  110. package/docs/DOCUSAURUS_IMPORT.md +0 -378
  111. package/docs/_category_.json +0 -8
  112. package/docs/app-manifest.md +0 -272
  113. package/docs/building-for-platform.md +0 -315
  114. package/docs/dev-tools.md +0 -291
  115. package/docs/getting-started.md +0 -180
  116. package/docs/gxp-store.md +0 -305
  117. package/docs/index.md +0 -44
  118. package/runtime/PortalContainer.vue +0 -326
  119. package/runtime/dev-tools/DevToolsModal.vue +0 -217
  120. package/runtime/dev-tools/LayoutSwitcher.vue +0 -221
  121. package/runtime/dev-tools/MockDataEditor.vue +0 -621
  122. package/runtime/dev-tools/SocketSimulator.vue +0 -562
  123. package/runtime/dev-tools/StoreInspector.vue +0 -644
  124. package/runtime/dev-tools/index.js +0 -6
  125. package/runtime/gxpStringsPlugin.js +0 -428
  126. package/runtime/index.html +0 -22
  127. package/runtime/main.js +0 -32
  128. package/runtime/mock-api/auth-middleware.js +0 -97
  129. package/runtime/mock-api/image-generator.js +0 -221
  130. package/runtime/mock-api/index.js +0 -197
  131. package/runtime/mock-api/response-generator.js +0 -394
  132. package/runtime/mock-api/route-generator.js +0 -323
  133. package/runtime/mock-api/socket-triggers.js +0 -371
  134. package/runtime/mock-api/spec-loader.js +0 -300
  135. package/runtime/server.js +0 -180
  136. package/runtime/stores/gxpPortalConfigStore.js +0 -554
  137. package/runtime/stores/index.js +0 -6
  138. package/runtime/vite-inspector-plugin.js +0 -749
  139. package/runtime/vite-source-tracker-plugin.js +0 -232
  140. package/runtime/vite.config.js +0 -402
  141. package/scripts/launch-chrome.js +0 -90
  142. package/scripts/pack-chrome.js +0 -91
  143. package/socket-events/AiSessionMessageCreated.json +0 -18
  144. package/socket-events/SocialStreamPostCreated.json +0 -24
  145. package/socket-events/SocialStreamPostVariantCompleted.json +0 -23
  146. package/template/README.md +0 -332
  147. package/template/app-manifest.json +0 -32
  148. package/template/dev-assets/images/avatar-placeholder.png +0 -0
  149. package/template/dev-assets/images/background-placeholder.jpg +0 -0
  150. package/template/dev-assets/images/banner-placeholder.jpg +0 -0
  151. package/template/dev-assets/images/icon-placeholder.png +0 -0
  152. package/template/dev-assets/images/logo-placeholder.png +0 -0
  153. package/template/dev-assets/images/product-placeholder.jpg +0 -0
  154. package/template/dev-assets/images/thumbnail-placeholder.jpg +0 -0
  155. package/template/env.example +0 -51
  156. package/template/gitignore +0 -53
  157. package/template/index.html +0 -22
  158. package/template/main.js +0 -28
  159. package/template/src/DemoPage.vue +0 -459
  160. package/template/src/Plugin.vue +0 -38
  161. package/template/src/stores/index.js +0 -9
  162. package/template/src/stores/test-data.json +0 -173
  163. package/template/theme-layouts/AdditionalStyling.css +0 -0
  164. package/template/theme-layouts/PrivateLayout.vue +0 -39
  165. package/template/theme-layouts/PublicLayout.vue +0 -39
  166. package/template/theme-layouts/SystemLayout.vue +0 -39
  167. package/template/vite.config.js +0 -333
  168. package/tsconfig.tui.json +0 -21
  169. package/vite.config.js +0 -164
@@ -0,0 +1,13 @@
1
+ import { ServiceStatus } from './services/index.js';
2
+ export interface Service {
3
+ id: string;
4
+ name: string;
5
+ status: ServiceStatus;
6
+ logs: string[];
7
+ }
8
+ export interface AppProps {
9
+ autoStart?: string[];
10
+ args?: Record<string, unknown>;
11
+ }
12
+ export default function App({ autoStart, args }: AppProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=App.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../bin/lib/tui/App.tsx"],"names":[],"mappings":"AAQA,OAAO,EAUL,aAAa,EAKd,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,2CAkjBxD"}
@@ -0,0 +1,480 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect, useCallback } from 'react';
3
+ import { Box, useApp, useInput, useStdout } from 'ink';
4
+ import WelcomeScreen from './components/WelcomeScreen.js';
5
+ import Header from './components/Header.js';
6
+ import TabBar from './components/TabBar.js';
7
+ import LogPanel from './components/LogPanel.js';
8
+ import CommandInput from './components/CommandInput.js';
9
+ import GeminiPanel from './components/GeminiPanel.js';
10
+ import { serviceManager, startVite, stopVite, startSocket, stopSocket, startExtension, stopExtension, listSocketEvents, sendSocketEvent, geminiService, isAuthenticated, clearAuthTokens, } from './services/index.js';
11
+ export default function App({ autoStart, args }) {
12
+ const { exit } = useApp();
13
+ const { stdout } = useStdout();
14
+ const [showGemini, setShowGemini] = useState(false);
15
+ const [services, setServices] = useState([]);
16
+ const [activeTab, setActiveTab] = useState(0);
17
+ const [suggestionRows, setSuggestionRows] = useState(0);
18
+ // Get terminal height for full screen
19
+ const terminalHeight = stdout?.rows || 24;
20
+ // Sync services from ServiceManager
21
+ const syncServices = useCallback(() => {
22
+ const managerServices = serviceManager.getAllServices();
23
+ setServices(managerServices.map(s => ({
24
+ id: s.id,
25
+ name: s.name,
26
+ status: s.status,
27
+ logs: s.logs,
28
+ })));
29
+ }, []);
30
+ // Set up ServiceManager event listeners
31
+ useEffect(() => {
32
+ const onLog = (id, message) => {
33
+ setServices(prev => prev.map(s => s.id === id ? { ...s, logs: [...s.logs, message] } : s));
34
+ };
35
+ const onStatusChange = (id, status) => {
36
+ setServices(prev => prev.map(s => s.id === id ? { ...s, status } : s));
37
+ };
38
+ const onLogsCleared = (id) => {
39
+ setServices(prev => prev.map(s => s.id === id ? { ...s, logs: [] } : s));
40
+ };
41
+ serviceManager.on('log', onLog);
42
+ serviceManager.on('statusChange', onStatusChange);
43
+ serviceManager.on('logsCleared', onLogsCleared);
44
+ return () => {
45
+ serviceManager.off('log', onLog);
46
+ serviceManager.off('statusChange', onStatusChange);
47
+ serviceManager.off('logsCleared', onLogsCleared);
48
+ };
49
+ }, []);
50
+ // Cleanup on exit
51
+ useEffect(() => {
52
+ const cleanup = () => {
53
+ serviceManager.forceStopAll();
54
+ };
55
+ process.on('SIGINT', cleanup);
56
+ process.on('SIGTERM', cleanup);
57
+ return () => {
58
+ cleanup();
59
+ process.off('SIGINT', cleanup);
60
+ process.off('SIGTERM', cleanup);
61
+ };
62
+ }, []);
63
+ // Handle keyboard shortcuts
64
+ useInput((input, key) => {
65
+ // Ctrl+C to exit
66
+ if (key.ctrl && input === 'c') {
67
+ serviceManager.forceStopAll();
68
+ exit();
69
+ return;
70
+ }
71
+ // Ctrl+L to clear current log
72
+ if (key.ctrl && input === 'l') {
73
+ if (services[activeTab]) {
74
+ serviceManager.clearLogs(services[activeTab].id);
75
+ }
76
+ return;
77
+ }
78
+ // Ctrl+K to stop current service
79
+ if (key.ctrl && input === 'k') {
80
+ if (services[activeTab] && services[activeTab].id !== 'system') {
81
+ stopService(services[activeTab].id);
82
+ }
83
+ return;
84
+ }
85
+ // Tab to cycle through tabs (when not in input)
86
+ if (key.tab && services.length > 0) {
87
+ const nextTab = key.shift
88
+ ? (activeTab - 1 + services.length) % services.length
89
+ : (activeTab + 1) % services.length;
90
+ setActiveTab(nextTab);
91
+ return;
92
+ }
93
+ // Left/Right arrow to switch tabs
94
+ if (key.leftArrow && services.length > 0) {
95
+ setActiveTab((activeTab - 1 + services.length) % services.length);
96
+ return;
97
+ }
98
+ if (key.rightArrow && services.length > 0) {
99
+ setActiveTab((activeTab + 1) % services.length);
100
+ return;
101
+ }
102
+ // Ctrl+1-9 or Cmd+1-9 to switch tabs (for compatibility)
103
+ if ((key.ctrl || key.meta) && /^[1-9]$/.test(input)) {
104
+ const tabIndex = parseInt(input) - 1;
105
+ if (tabIndex < services.length) {
106
+ setActiveTab(tabIndex);
107
+ }
108
+ return;
109
+ }
110
+ });
111
+ // Handle auto-start commands
112
+ useEffect(() => {
113
+ if (autoStart?.length) {
114
+ setTimeout(() => {
115
+ autoStart.forEach(cmd => {
116
+ handleCommand(`/${cmd}`);
117
+ });
118
+ }, 100);
119
+ }
120
+ }, []);
121
+ const handleCommand = (input) => {
122
+ const trimmed = input.trim();
123
+ if (!trimmed.startsWith('/'))
124
+ return;
125
+ const parts = trimmed.slice(1).split(' ');
126
+ const command = parts[0];
127
+ const cmdArgs = parts.slice(1);
128
+ switch (command) {
129
+ case 'help':
130
+ addSystemLog(getHelpText());
131
+ break;
132
+ case 'dev':
133
+ startDevServer(cmdArgs);
134
+ break;
135
+ case 'socket':
136
+ if (cmdArgs[0] === 'send') {
137
+ handleSocketSend(cmdArgs.slice(1));
138
+ }
139
+ else if (cmdArgs[0] === 'list') {
140
+ handleSocketList();
141
+ }
142
+ else {
143
+ const socketWithMock = cmdArgs.includes('--with-mock') || args?.withMock === true;
144
+ startSocketServer(socketWithMock);
145
+ }
146
+ break;
147
+ case 'mock':
148
+ // Shorthand for /socket --with-mock
149
+ startSocketServer(true);
150
+ break;
151
+ case 'ext':
152
+ const browser = cmdArgs[0] || 'chrome';
153
+ launchExtension(browser);
154
+ break;
155
+ case 'stop':
156
+ stopService(cmdArgs[0]);
157
+ break;
158
+ case 'restart':
159
+ restartService(cmdArgs[0]);
160
+ break;
161
+ case 'clear':
162
+ if (services[activeTab]) {
163
+ serviceManager.clearLogs(services[activeTab].id);
164
+ }
165
+ break;
166
+ case 'quit':
167
+ case 'exit':
168
+ serviceManager.forceStopAll();
169
+ exit();
170
+ break;
171
+ case 'gemini':
172
+ case 'ai':
173
+ handleGeminiCommand(cmdArgs);
174
+ break;
175
+ default:
176
+ addSystemLog(`Unknown command: ${command}. Type /help for available commands.`);
177
+ }
178
+ };
179
+ const startDevServer = (cmdArgs) => {
180
+ const noHttps = cmdArgs.includes('--no-https') || args?.noHttps === true;
181
+ const noSocket = cmdArgs.includes('--no-socket') || args?.noSocket === true;
182
+ const withSocket = cmdArgs.includes('--with-socket') || args?.withSocket === true;
183
+ const withMock = cmdArgs.includes('--with-mock') || args?.withMock === true;
184
+ const withFirefox = cmdArgs.includes('--firefox') || args?.firefox === true;
185
+ const withChrome = cmdArgs.includes('--chrome') || args?.chrome === true;
186
+ // Determine port from env or default
187
+ const port = process.env.NODE_PORT || 3060;
188
+ const useHttps = !noHttps;
189
+ // Check SOCKET_IO_ENABLED env var (default to socket if enabled, unless --no-socket)
190
+ const socketEnabled = process.env.SOCKET_IO_ENABLED === 'true';
191
+ // Mock API requires socket server
192
+ const shouldStartSocket = !noSocket && (withSocket || socketEnabled || withMock);
193
+ // Check if already running
194
+ if (serviceManager.isRunning('vite')) {
195
+ addSystemLog('Vite dev server is already running.');
196
+ // Switch to vite tab
197
+ const viteIdx = services.findIndex(s => s.id === 'vite');
198
+ if (viteIdx >= 0)
199
+ setActiveTab(viteIdx);
200
+ return;
201
+ }
202
+ startVite({ noHttps });
203
+ // Also start socket server based on flags/env (with mock if requested)
204
+ if (shouldStartSocket && !serviceManager.isRunning('socket')) {
205
+ startSocket({ withMock });
206
+ }
207
+ // Launch browser extensions if requested (pass URL options)
208
+ if (withFirefox && !serviceManager.isRunning('ext-firefox')) {
209
+ startExtension({ browser: 'firefox', useHttps, port });
210
+ }
211
+ if (withChrome && !serviceManager.isRunning('ext-chrome')) {
212
+ startExtension({ browser: 'chrome', useHttps, port });
213
+ }
214
+ // Sync and switch to the new vite tab
215
+ const updatedServices = serviceManager.getAllServices();
216
+ const viteIdx = updatedServices.findIndex(s => s.id === 'vite');
217
+ setServices(updatedServices.map(s => ({
218
+ id: s.id,
219
+ name: s.name,
220
+ status: s.status,
221
+ logs: s.logs,
222
+ })));
223
+ setActiveTab(viteIdx >= 0 ? viteIdx : Math.max(0, updatedServices.length - 1));
224
+ };
225
+ const startSocketServer = (withMock = false) => {
226
+ if (serviceManager.isRunning('socket')) {
227
+ addSystemLog('Socket.IO server is already running.');
228
+ const socketIdx = services.findIndex(s => s.id === 'socket');
229
+ if (socketIdx >= 0)
230
+ setActiveTab(socketIdx);
231
+ return;
232
+ }
233
+ startSocket({ withMock });
234
+ // Sync and switch to the new socket tab
235
+ const updatedServices = serviceManager.getAllServices();
236
+ const socketIdx = updatedServices.findIndex(s => s.id === 'socket');
237
+ setServices(updatedServices.map(s => ({
238
+ id: s.id,
239
+ name: s.name,
240
+ status: s.status,
241
+ logs: s.logs,
242
+ })));
243
+ setActiveTab(socketIdx >= 0 ? socketIdx : Math.max(0, updatedServices.length - 1));
244
+ };
245
+ const launchExtension = (browser) => {
246
+ const browserType = browser.toLowerCase();
247
+ if (browserType !== 'chrome' && browserType !== 'firefox') {
248
+ addSystemLog(`Invalid browser: ${browser}. Use 'chrome' or 'firefox'.`);
249
+ return;
250
+ }
251
+ const serviceId = `ext-${browserType}`;
252
+ if (serviceManager.isRunning(serviceId)) {
253
+ addSystemLog(`${browser} extension is already running.`);
254
+ const extIdx = services.findIndex(s => s.id === serviceId);
255
+ if (extIdx >= 0)
256
+ setActiveTab(extIdx);
257
+ return;
258
+ }
259
+ startExtension({ browser: browserType });
260
+ // Sync and switch to the new extension tab
261
+ const updatedServices = serviceManager.getAllServices();
262
+ const extIdx = updatedServices.findIndex(s => s.id === serviceId);
263
+ setServices(updatedServices.map(s => ({
264
+ id: s.id,
265
+ name: s.name,
266
+ status: s.status,
267
+ logs: s.logs,
268
+ })));
269
+ setActiveTab(extIdx >= 0 ? extIdx : Math.max(0, updatedServices.length - 1));
270
+ };
271
+ const stopService = (serviceId) => {
272
+ const targetId = serviceId || services[activeTab]?.id;
273
+ if (!targetId) {
274
+ addSystemLog('No service specified. Usage: /stop <service-id>');
275
+ return;
276
+ }
277
+ if (targetId === 'vite') {
278
+ stopVite();
279
+ }
280
+ else if (targetId === 'socket') {
281
+ stopSocket();
282
+ }
283
+ else if (targetId.startsWith('ext-')) {
284
+ const browser = targetId.replace('ext-', '');
285
+ stopExtension(browser);
286
+ }
287
+ else {
288
+ serviceManager.stop(targetId);
289
+ }
290
+ syncServices();
291
+ };
292
+ const restartService = (serviceId) => {
293
+ const targetId = serviceId || services[activeTab]?.id;
294
+ if (!targetId) {
295
+ addSystemLog('No service to restart. Usage: /restart [service-id]');
296
+ return;
297
+ }
298
+ if (targetId === 'system') {
299
+ addSystemLog('Cannot restart the system service.');
300
+ return;
301
+ }
302
+ const success = serviceManager.restart(targetId);
303
+ if (!success) {
304
+ addSystemLog(`Cannot restart "${targetId}". Service config not found.`);
305
+ }
306
+ syncServices();
307
+ };
308
+ const handleGeminiCommand = async (cmdArgs) => {
309
+ const subCommand = cmdArgs[0];
310
+ switch (subCommand) {
311
+ case 'enable':
312
+ addSystemLog('Starting Google OAuth flow...');
313
+ addSystemLog('A browser window will open for authentication.');
314
+ const result = await geminiService.startOAuthFlow();
315
+ if (result.success) {
316
+ addSystemLog(`✅ ${result.message}`);
317
+ }
318
+ else {
319
+ addSystemLog(`❌ ${result.message}`);
320
+ }
321
+ break;
322
+ case 'logout':
323
+ case 'disable':
324
+ clearAuthTokens();
325
+ addSystemLog('Logged out from Gemini AI.');
326
+ break;
327
+ case 'status':
328
+ if (isAuthenticated()) {
329
+ addSystemLog('✅ Gemini AI is authenticated and ready.');
330
+ }
331
+ else {
332
+ addSystemLog('❌ Not authenticated. Run /gemini enable to set up.');
333
+ }
334
+ break;
335
+ case 'ask':
336
+ // Quick question without opening panel
337
+ const question = cmdArgs.slice(1).join(' ');
338
+ if (!question) {
339
+ addSystemLog('Usage: /gemini ask <your question>');
340
+ return;
341
+ }
342
+ if (!isAuthenticated()) {
343
+ addSystemLog('Not authenticated. Run /gemini enable first.');
344
+ return;
345
+ }
346
+ addSystemLog(`Asking Gemini: ${question}`);
347
+ try {
348
+ geminiService.loadProjectContext(process.cwd());
349
+ const response = await geminiService.sendMessage(question);
350
+ addSystemLog(`Gemini: ${response}`);
351
+ }
352
+ catch (err) {
353
+ addSystemLog(`Error: ${err instanceof Error ? err.message : 'Unknown error'}`);
354
+ }
355
+ break;
356
+ case 'clear':
357
+ geminiService.clearConversation();
358
+ addSystemLog('Conversation history cleared.');
359
+ break;
360
+ default:
361
+ // No subcommand = open chat panel
362
+ if (!isAuthenticated()) {
363
+ addSystemLog('Not authenticated. Run /gemini enable to set up Google authentication.');
364
+ return;
365
+ }
366
+ setShowGemini(true);
367
+ }
368
+ };
369
+ const addSystemLog = (message) => {
370
+ // Find or create system service for general messages
371
+ let systemService = services.find(s => s.id === 'system');
372
+ if (!systemService) {
373
+ const newService = {
374
+ id: 'system',
375
+ name: 'System',
376
+ status: 'running',
377
+ logs: [message],
378
+ };
379
+ setServices(prev => {
380
+ const updated = [...prev, newService];
381
+ return updated;
382
+ });
383
+ if (services.length === 0)
384
+ setActiveTab(0);
385
+ }
386
+ else {
387
+ setServices(prev => prev.map(s => s.id === 'system' ? { ...s, logs: [...s.logs, message] } : s));
388
+ }
389
+ // Switch to system tab
390
+ setTimeout(() => {
391
+ const sysIdx = services.findIndex(s => s.id === 'system');
392
+ if (sysIdx >= 0)
393
+ setActiveTab(sysIdx);
394
+ }, 50);
395
+ };
396
+ const handleSocketSend = async (eventArgs) => {
397
+ if (!eventArgs.length) {
398
+ addSystemLog('Usage: /socket send <event-name> [identifier]');
399
+ return;
400
+ }
401
+ const eventName = eventArgs[0];
402
+ const identifier = eventArgs[1];
403
+ addSystemLog(`Sending socket event: ${eventName}...`);
404
+ const result = await sendSocketEvent(eventName, identifier);
405
+ if (result.success) {
406
+ addSystemLog(`✅ ${result.message}`);
407
+ }
408
+ else {
409
+ addSystemLog(`❌ ${result.message}`);
410
+ }
411
+ };
412
+ const handleSocketList = () => {
413
+ const events = listSocketEvents();
414
+ if (events.length === 0) {
415
+ addSystemLog('No socket events found. Check your socket-events directory.');
416
+ return;
417
+ }
418
+ let message = 'Available socket events:\n';
419
+ for (const event of events) {
420
+ message += `\n ${event.name}\n`;
421
+ message += ` Event: ${event.event}\n`;
422
+ message += ` Channel: ${event.channel}`;
423
+ }
424
+ message += '\n\nUsage: /socket send <event-name> [identifier]';
425
+ addSystemLog(message);
426
+ };
427
+ const getHelpText = () => `
428
+ Available commands:
429
+ /dev Start Vite (+ Socket if SOCKET_IO_ENABLED=true)
430
+ /dev --with-socket Start Vite + Socket.IO together
431
+ /dev --with-mock Start Vite + Socket.IO + Mock API server
432
+ /dev --no-socket Start Vite only (skip Socket.IO)
433
+ /dev --no-https Start Vite without SSL
434
+ /dev --firefox Start Vite + Firefox extension
435
+ /dev --chrome Start Vite + Chrome extension
436
+ /socket Start Socket.IO server
437
+ /socket --with-mock Start Socket.IO with Mock API enabled
438
+ /socket send <event> Send socket event
439
+ /socket list List available events
440
+ /mock Start Socket.IO + Mock API (shorthand)
441
+ /ext chrome Launch Chrome extension
442
+ /ext firefox Launch Firefox extension
443
+ /stop [service] Stop a running service
444
+ /restart [service] Restart a service
445
+ /clear Clear current log panel
446
+ /gemini Open Gemini AI chat panel
447
+ /gemini enable Set up Google authentication
448
+ /gemini ask <query> Quick question to Gemini
449
+ /gemini status Check authentication status
450
+ /gemini logout Log out from Gemini
451
+ /help Show this help message
452
+ /quit Exit the application
453
+
454
+ Keyboard shortcuts:
455
+ Tab / Shift+Tab Cycle through tabs
456
+ Left/Right Switch tabs
457
+ Cmd+1/2/3... Jump to tab (Mac)
458
+ Shift+Up/Down Scroll logs
459
+ Cmd+Up/Down Jump to top/bottom of logs
460
+ Ctrl+L Clear current log
461
+ Ctrl+C Exit application
462
+ Up/Down Command history (in input)
463
+ `;
464
+ // Show Gemini panel
465
+ if (showGemini) {
466
+ return (_jsx(GeminiPanel, { onClose: () => setShowGemini(false), onLog: addSystemLog }));
467
+ }
468
+ const currentService = services[activeTab];
469
+ // Calculate log panel height to make room for suggestions
470
+ // Fixed elements: Header (3), TabBar (1), Log border (2), Input (3), Hints (1) = 10 rows minimum
471
+ const fixedRows = 10;
472
+ const availableForLog = terminalHeight - fixedRows - suggestionRows;
473
+ const logPanelHeight = Math.max(3, availableForLog); // Minimum 3 rows for log panel
474
+ return (_jsxs(Box, { flexDirection: "column", height: terminalHeight, children: [_jsx(Header, { projectName: process.cwd().split('/').pop() || 'gxdev' }), services.length > 0 && (_jsx(TabBar, { services: services, activeTab: activeTab, onTabChange: setActiveTab })), _jsx(Box, { height: logPanelHeight, flexDirection: "column", borderStyle: "single", borderColor: "gray", overflow: "hidden", children: currentService ? (_jsx(LogPanel, { logs: currentService.logs, maxHeight: logPanelHeight })) : (_jsx(WelcomeScreen, {})) }), _jsx(CommandInput, { onSubmit: handleCommand, activeService: currentService ? {
475
+ id: currentService.id,
476
+ name: currentService.name,
477
+ status: currentService.status
478
+ } : null, onSuggestionsChange: setSuggestionRows })] }));
479
+ }
480
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../bin/lib/tui/App.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ interface ActiveService {
2
+ id: string;
3
+ name: string;
4
+ status: string;
5
+ }
6
+ interface CommandInputProps {
7
+ onSubmit: (command: string) => void;
8
+ activeService?: ActiveService | null;
9
+ onSuggestionsChange?: (count: number) => void;
10
+ }
11
+ export default function CommandInput({ onSubmit, activeService, onSuggestionsChange }: CommandInputProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=CommandInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandInput.d.ts","sourceRoot":"","sources":["../../../bin/lib/tui/components/CommandInput.tsx"],"names":[],"mappings":"AA4BA,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,EAAE,iBAAiB,2CA6OvG"}