@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.
- package/dist/tui/App.d.ts +13 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +480 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/components/CommandInput.d.ts +13 -0
- package/dist/tui/components/CommandInput.d.ts.map +1 -0
- package/dist/tui/components/CommandInput.js +180 -0
- package/dist/tui/components/CommandInput.js.map +1 -0
- package/dist/tui/components/GeminiPanel.d.ts +7 -0
- package/dist/tui/components/GeminiPanel.d.ts.map +1 -0
- package/dist/tui/components/GeminiPanel.js +99 -0
- package/dist/tui/components/GeminiPanel.js.map +1 -0
- package/dist/tui/components/Header.d.ts +6 -0
- package/dist/tui/components/Header.d.ts.map +1 -0
- package/dist/tui/components/Header.js +6 -0
- package/dist/tui/components/Header.js.map +1 -0
- package/dist/tui/components/LogPanel.d.ts +8 -0
- package/dist/tui/components/LogPanel.d.ts.map +1 -0
- package/dist/tui/components/LogPanel.js +89 -0
- package/dist/tui/components/LogPanel.js.map +1 -0
- package/dist/tui/components/TabBar.d.ts +9 -0
- package/dist/tui/components/TabBar.d.ts.map +1 -0
- package/dist/tui/components/TabBar.js +23 -0
- package/dist/tui/components/TabBar.js.map +1 -0
- package/dist/tui/components/WelcomeScreen.d.ts +2 -0
- package/dist/tui/components/WelcomeScreen.d.ts.map +1 -0
- package/dist/tui/components/WelcomeScreen.js +14 -0
- package/dist/tui/components/WelcomeScreen.js.map +1 -0
- package/dist/tui/index.d.ts +8 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +47 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/package.json +1 -0
- package/dist/tui/services/ExtensionService.d.ts +11 -0
- package/dist/tui/services/ExtensionService.d.ts.map +1 -0
- package/dist/tui/services/ExtensionService.js +101 -0
- package/dist/tui/services/ExtensionService.js.map +1 -0
- package/dist/tui/services/GeminiService.d.ts +40 -0
- package/dist/tui/services/GeminiService.d.ts.map +1 -0
- package/dist/tui/services/GeminiService.js +327 -0
- package/dist/tui/services/GeminiService.js.map +1 -0
- package/dist/tui/services/ServiceManager.d.ts +40 -0
- package/dist/tui/services/ServiceManager.d.ts.map +1 -0
- package/dist/tui/services/ServiceManager.js +283 -0
- package/dist/tui/services/ServiceManager.js.map +1 -0
- package/dist/tui/services/SocketService.d.ts +19 -0
- package/dist/tui/services/SocketService.d.ts.map +1 -0
- package/dist/tui/services/SocketService.js +163 -0
- package/dist/tui/services/SocketService.js.map +1 -0
- package/dist/tui/services/ViteService.d.ts +8 -0
- package/dist/tui/services/ViteService.d.ts.map +1 -0
- package/dist/tui/services/ViteService.js +89 -0
- package/dist/tui/services/ViteService.js.map +1 -0
- package/dist/tui/services/index.d.ts +6 -0
- package/dist/tui/services/index.d.ts.map +1 -0
- package/dist/tui/services/index.js +6 -0
- package/dist/tui/services/index.js.map +1 -0
- package/package.json +6 -1
- package/.github/workflows/npm-publish.yml +0 -48
- package/CLAUDE.md +0 -400
- package/REFACTOR_PLAN.md +0 -194
- package/browser-extensions/README.md +0 -1
- package/browser-extensions/chrome/background.js +0 -857
- package/browser-extensions/chrome/content.js +0 -51
- package/browser-extensions/chrome/devtools.html +0 -9
- package/browser-extensions/chrome/devtools.js +0 -23
- package/browser-extensions/chrome/icons/gx_off_128.png +0 -0
- package/browser-extensions/chrome/icons/gx_off_16.png +0 -0
- package/browser-extensions/chrome/icons/gx_off_32.png +0 -0
- package/browser-extensions/chrome/icons/gx_off_64.png +0 -0
- package/browser-extensions/chrome/icons/gx_on_128.png +0 -0
- package/browser-extensions/chrome/icons/gx_on_16.png +0 -0
- package/browser-extensions/chrome/icons/gx_on_32.png +0 -0
- package/browser-extensions/chrome/icons/gx_on_64.png +0 -0
- package/browser-extensions/chrome/inspector.js +0 -1087
- package/browser-extensions/chrome/manifest.json +0 -70
- package/browser-extensions/chrome/panel.html +0 -638
- package/browser-extensions/chrome/panel.js +0 -862
- package/browser-extensions/chrome/popup.html +0 -399
- package/browser-extensions/chrome/popup.js +0 -515
- package/browser-extensions/chrome/rules.json +0 -1
- package/browser-extensions/chrome/test-chrome.html +0 -145
- package/browser-extensions/chrome/test-mixed-content.html +0 -190
- package/browser-extensions/chrome/test-uri-pattern.html +0 -199
- package/browser-extensions/firefox/README.md +0 -134
- package/browser-extensions/firefox/background.js +0 -804
- package/browser-extensions/firefox/content.js +0 -120
- package/browser-extensions/firefox/debug-errors.html +0 -229
- package/browser-extensions/firefox/debug-https.html +0 -113
- package/browser-extensions/firefox/devtools.html +0 -9
- package/browser-extensions/firefox/devtools.js +0 -24
- package/browser-extensions/firefox/icons/gx_off_128.png +0 -0
- package/browser-extensions/firefox/icons/gx_off_16.png +0 -0
- package/browser-extensions/firefox/icons/gx_off_32.png +0 -0
- package/browser-extensions/firefox/icons/gx_off_64.png +0 -0
- package/browser-extensions/firefox/icons/gx_on_128.png +0 -0
- package/browser-extensions/firefox/icons/gx_on_16.png +0 -0
- package/browser-extensions/firefox/icons/gx_on_32.png +0 -0
- package/browser-extensions/firefox/icons/gx_on_64.png +0 -0
- package/browser-extensions/firefox/inspector.js +0 -1087
- package/browser-extensions/firefox/manifest.json +0 -67
- package/browser-extensions/firefox/panel.html +0 -638
- package/browser-extensions/firefox/panel.js +0 -862
- package/browser-extensions/firefox/popup.html +0 -525
- package/browser-extensions/firefox/popup.js +0 -536
- package/browser-extensions/firefox/test-gramercy.html +0 -126
- package/browser-extensions/firefox/test-imports.html +0 -58
- package/browser-extensions/firefox/test-masking.html +0 -147
- package/browser-extensions/firefox/test-uri-pattern.html +0 -199
- package/docs/DOCUSAURUS_IMPORT.md +0 -378
- package/docs/_category_.json +0 -8
- package/docs/app-manifest.md +0 -272
- package/docs/building-for-platform.md +0 -315
- package/docs/dev-tools.md +0 -291
- package/docs/getting-started.md +0 -180
- package/docs/gxp-store.md +0 -305
- package/docs/index.md +0 -44
- package/runtime/PortalContainer.vue +0 -326
- package/runtime/dev-tools/DevToolsModal.vue +0 -217
- package/runtime/dev-tools/LayoutSwitcher.vue +0 -221
- package/runtime/dev-tools/MockDataEditor.vue +0 -621
- package/runtime/dev-tools/SocketSimulator.vue +0 -562
- package/runtime/dev-tools/StoreInspector.vue +0 -644
- package/runtime/dev-tools/index.js +0 -6
- package/runtime/gxpStringsPlugin.js +0 -428
- package/runtime/index.html +0 -22
- package/runtime/main.js +0 -32
- package/runtime/mock-api/auth-middleware.js +0 -97
- package/runtime/mock-api/image-generator.js +0 -221
- package/runtime/mock-api/index.js +0 -197
- package/runtime/mock-api/response-generator.js +0 -394
- package/runtime/mock-api/route-generator.js +0 -323
- package/runtime/mock-api/socket-triggers.js +0 -371
- package/runtime/mock-api/spec-loader.js +0 -300
- package/runtime/server.js +0 -180
- package/runtime/stores/gxpPortalConfigStore.js +0 -554
- package/runtime/stores/index.js +0 -6
- package/runtime/vite-inspector-plugin.js +0 -749
- package/runtime/vite-source-tracker-plugin.js +0 -232
- package/runtime/vite.config.js +0 -402
- package/scripts/launch-chrome.js +0 -90
- package/scripts/pack-chrome.js +0 -91
- package/socket-events/AiSessionMessageCreated.json +0 -18
- package/socket-events/SocialStreamPostCreated.json +0 -24
- package/socket-events/SocialStreamPostVariantCompleted.json +0 -23
- package/template/README.md +0 -332
- package/template/app-manifest.json +0 -32
- package/template/dev-assets/images/avatar-placeholder.png +0 -0
- package/template/dev-assets/images/background-placeholder.jpg +0 -0
- package/template/dev-assets/images/banner-placeholder.jpg +0 -0
- package/template/dev-assets/images/icon-placeholder.png +0 -0
- package/template/dev-assets/images/logo-placeholder.png +0 -0
- package/template/dev-assets/images/product-placeholder.jpg +0 -0
- package/template/dev-assets/images/thumbnail-placeholder.jpg +0 -0
- package/template/env.example +0 -51
- package/template/gitignore +0 -53
- package/template/index.html +0 -22
- package/template/main.js +0 -28
- package/template/src/DemoPage.vue +0 -459
- package/template/src/Plugin.vue +0 -38
- package/template/src/stores/index.js +0 -9
- package/template/src/stores/test-data.json +0 -173
- package/template/theme-layouts/AdditionalStyling.css +0 -0
- package/template/theme-layouts/PrivateLayout.vue +0 -39
- package/template/theme-layouts/PublicLayout.vue +0 -39
- package/template/theme-layouts/SystemLayout.vue +0 -39
- package/template/vite.config.js +0 -333
- package/tsconfig.tui.json +0 -21
- 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"}
|
package/dist/tui/App.js
ADDED
|
@@ -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"}
|