@gxp-dev/tools 2.0.63 → 2.0.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -31
- package/bin/gx-devtools.js +74 -54
- package/bin/lib/cli.js +23 -21
- package/bin/lib/commands/add-dependency.js +366 -325
- package/bin/lib/commands/assets.js +137 -139
- package/bin/lib/commands/build.js +169 -174
- package/bin/lib/commands/datastore.js +181 -183
- package/bin/lib/commands/dev.js +127 -131
- package/bin/lib/commands/extensions.js +147 -149
- package/bin/lib/commands/extract-config.js +73 -67
- package/bin/lib/commands/index.js +12 -12
- package/bin/lib/commands/init.js +342 -240
- package/bin/lib/commands/publish.js +69 -75
- package/bin/lib/commands/socket.js +69 -69
- package/bin/lib/commands/ssl.js +14 -14
- package/bin/lib/constants.js +10 -24
- package/bin/lib/tui/App.tsx +761 -705
- package/bin/lib/tui/components/AIPanel.tsx +191 -171
- package/bin/lib/tui/components/CommandInput.tsx +394 -343
- package/bin/lib/tui/components/GeminiPanel.tsx +175 -151
- package/bin/lib/tui/components/Header.tsx +23 -21
- package/bin/lib/tui/components/LogPanel.tsx +244 -220
- package/bin/lib/tui/components/TabBar.tsx +50 -48
- package/bin/lib/tui/components/WelcomeScreen.tsx +126 -71
- package/bin/lib/tui/index.tsx +37 -39
- package/bin/lib/tui/services/AIService.ts +518 -462
- package/bin/lib/tui/services/ExtensionService.ts +140 -129
- package/bin/lib/tui/services/GeminiService.ts +367 -337
- package/bin/lib/tui/services/ServiceManager.ts +344 -322
- package/bin/lib/tui/services/SocketService.ts +168 -168
- package/bin/lib/tui/services/ViteService.ts +88 -88
- package/bin/lib/tui/services/index.ts +47 -22
- package/bin/lib/utils/ai-scaffold.js +291 -280
- package/bin/lib/utils/extract-config.js +157 -140
- package/bin/lib/utils/files.js +82 -86
- package/bin/lib/utils/index.js +7 -7
- package/bin/lib/utils/paths.js +34 -34
- package/bin/lib/utils/prompts.js +194 -169
- package/bin/lib/utils/ssl.js +79 -81
- package/browser-extensions/README.md +0 -1
- package/browser-extensions/chrome/background.js +244 -237
- package/browser-extensions/chrome/content.js +32 -29
- package/browser-extensions/chrome/devtools.html +7 -7
- package/browser-extensions/chrome/devtools.js +19 -19
- package/browser-extensions/chrome/inspector.js +802 -767
- package/browser-extensions/chrome/manifest.json +71 -63
- package/browser-extensions/chrome/panel.html +674 -636
- package/browser-extensions/chrome/panel.js +722 -712
- package/browser-extensions/chrome/popup.html +586 -543
- package/browser-extensions/chrome/popup.js +282 -244
- package/browser-extensions/chrome/rules.json +1 -1
- package/browser-extensions/chrome/test-chrome.html +216 -136
- package/browser-extensions/chrome/test-mixed-content.html +284 -189
- package/browser-extensions/chrome/test-uri-pattern.html +221 -198
- package/browser-extensions/firefox/README.md +9 -6
- package/browser-extensions/firefox/background.js +221 -218
- package/browser-extensions/firefox/content.js +55 -52
- package/browser-extensions/firefox/debug-errors.html +386 -228
- package/browser-extensions/firefox/debug-https.html +153 -105
- package/browser-extensions/firefox/devtools.html +7 -7
- package/browser-extensions/firefox/devtools.js +23 -20
- package/browser-extensions/firefox/inspector.js +802 -767
- package/browser-extensions/firefox/manifest.json +68 -68
- package/browser-extensions/firefox/panel.html +674 -636
- package/browser-extensions/firefox/panel.js +722 -712
- package/browser-extensions/firefox/popup.html +572 -535
- package/browser-extensions/firefox/popup.js +281 -236
- package/browser-extensions/firefox/test-gramercy.html +170 -125
- package/browser-extensions/firefox/test-imports.html +59 -55
- package/browser-extensions/firefox/test-masking.html +231 -140
- package/browser-extensions/firefox/test-uri-pattern.html +221 -198
- package/dist/tui/App.d.ts +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +154 -150
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/AIPanel.d.ts.map +1 -1
- package/dist/tui/components/AIPanel.js +42 -35
- package/dist/tui/components/AIPanel.js.map +1 -1
- package/dist/tui/components/CommandInput.d.ts +1 -1
- package/dist/tui/components/CommandInput.d.ts.map +1 -1
- package/dist/tui/components/CommandInput.js +92 -62
- package/dist/tui/components/CommandInput.js.map +1 -1
- package/dist/tui/components/GeminiPanel.d.ts.map +1 -1
- package/dist/tui/components/GeminiPanel.js +37 -30
- package/dist/tui/components/GeminiPanel.js.map +1 -1
- package/dist/tui/components/Header.d.ts.map +1 -1
- package/dist/tui/components/Header.js +1 -1
- package/dist/tui/components/Header.js.map +1 -1
- package/dist/tui/components/LogPanel.d.ts +1 -1
- package/dist/tui/components/LogPanel.d.ts.map +1 -1
- package/dist/tui/components/LogPanel.js +26 -24
- package/dist/tui/components/LogPanel.js.map +1 -1
- package/dist/tui/components/TabBar.d.ts +2 -2
- package/dist/tui/components/TabBar.d.ts.map +1 -1
- package/dist/tui/components/TabBar.js +11 -11
- package/dist/tui/components/TabBar.js.map +1 -1
- package/dist/tui/components/WelcomeScreen.d.ts.map +1 -1
- package/dist/tui/components/WelcomeScreen.js +6 -6
- package/dist/tui/components/WelcomeScreen.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +8 -8
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/services/AIService.d.ts +2 -2
- package/dist/tui/services/AIService.d.ts.map +1 -1
- package/dist/tui/services/AIService.js +165 -125
- package/dist/tui/services/AIService.js.map +1 -1
- package/dist/tui/services/ExtensionService.d.ts +1 -1
- package/dist/tui/services/ExtensionService.d.ts.map +1 -1
- package/dist/tui/services/ExtensionService.js +33 -26
- package/dist/tui/services/ExtensionService.js.map +1 -1
- package/dist/tui/services/GeminiService.d.ts +1 -1
- package/dist/tui/services/GeminiService.d.ts.map +1 -1
- package/dist/tui/services/GeminiService.js +87 -76
- package/dist/tui/services/GeminiService.js.map +1 -1
- package/dist/tui/services/ServiceManager.d.ts +3 -3
- package/dist/tui/services/ServiceManager.d.ts.map +1 -1
- package/dist/tui/services/ServiceManager.js +72 -58
- package/dist/tui/services/ServiceManager.js.map +1 -1
- package/dist/tui/services/SocketService.d.ts.map +1 -1
- package/dist/tui/services/SocketService.js +32 -32
- package/dist/tui/services/SocketService.js.map +1 -1
- package/dist/tui/services/ViteService.d.ts.map +1 -1
- package/dist/tui/services/ViteService.js +26 -28
- package/dist/tui/services/ViteService.js.map +1 -1
- package/dist/tui/services/index.d.ts +6 -6
- package/dist/tui/services/index.d.ts.map +1 -1
- package/dist/tui/services/index.js +6 -6
- package/dist/tui/services/index.js.map +1 -1
- package/mcp/gxp-api-server.js +83 -81
- package/package.json +109 -93
- package/runtime/PortalContainer.vue +258 -234
- package/runtime/dev-tools/DevToolsModal.vue +153 -155
- package/runtime/dev-tools/LayoutSwitcher.vue +144 -140
- package/runtime/dev-tools/MockDataEditor.vue +456 -433
- package/runtime/dev-tools/SocketSimulator.vue +379 -371
- package/runtime/dev-tools/StoreInspector.vue +517 -455
- package/runtime/dev-tools/index.js +5 -5
- package/runtime/fallback-layouts/PrivateLayout.vue +2 -2
- package/runtime/fallback-layouts/PublicLayout.vue +2 -2
- package/runtime/fallback-layouts/SystemLayout.vue +2 -2
- package/runtime/gxpStringsPlugin.js +159 -134
- package/runtime/index.html +17 -19
- package/runtime/main.js +24 -22
- package/runtime/mock-api/auth-middleware.js +15 -15
- package/runtime/mock-api/image-generator.js +46 -46
- package/runtime/mock-api/index.js +55 -55
- package/runtime/mock-api/response-generator.js +116 -105
- package/runtime/mock-api/route-generator.js +107 -84
- package/runtime/mock-api/socket-triggers.js +94 -93
- package/runtime/mock-api/spec-loader.js +79 -80
- package/runtime/package.json +3 -0
- package/runtime/server.js +68 -68
- package/runtime/stores/gxpPortalConfigStore.js +204 -186
- package/runtime/stores/index.js +2 -2
- package/runtime/vite-inspector-plugin.js +858 -707
- package/runtime/vite-source-tracker-plugin.js +132 -113
- package/runtime/vite.config.js +191 -139
- package/scripts/launch-chrome.js +41 -41
- package/scripts/pack-chrome.js +38 -39
- package/socket-events/AiSessionMessageCreated.json +17 -17
- package/socket-events/SocialStreamPostCreated.json +23 -23
- package/socket-events/SocialStreamPostVariantCompleted.json +22 -22
- package/template/.claude/agents/gxp-developer.md +100 -99
- package/template/.claude/settings.json +7 -7
- package/template/AGENTS.md +30 -23
- package/template/GEMINI.md +20 -20
- package/template/README.md +70 -53
- package/template/app-manifest.json +2 -4
- package/template/configuration.json +10 -10
- package/template/default-styling.css +1 -1
- package/template/index.html +18 -20
- package/template/main.js +24 -22
- package/template/src/DemoPage.vue +415 -362
- package/template/src/Plugin.vue +76 -85
- package/template/src/stores/index.js +3 -3
- package/template/src/stores/test-data.json +164 -172
- package/template/theme-layouts/AdditionalStyling.css +50 -50
- package/template/theme-layouts/PrivateLayout.vue +8 -12
- package/template/theme-layouts/PublicLayout.vue +8 -12
- package/template/theme-layouts/SystemLayout.vue +8 -12
- package/template/vite.extend.js +45 -0
- package/template/vite.config.js +0 -409
|
@@ -1,156 +1,167 @@
|
|
|
1
|
-
import { serviceManager, ServiceConfig } from
|
|
2
|
-
import path from
|
|
3
|
-
import fs from
|
|
4
|
-
import { fileURLToPath } from
|
|
1
|
+
import { serviceManager, ServiceConfig } from "./ServiceManager.js"
|
|
2
|
+
import path from "path"
|
|
3
|
+
import fs from "fs"
|
|
4
|
+
import { fileURLToPath } from "url"
|
|
5
5
|
|
|
6
|
-
export type BrowserType =
|
|
6
|
+
export type BrowserType = "chrome" | "firefox"
|
|
7
7
|
|
|
8
8
|
export interface ExtensionOptions {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
browser: BrowserType
|
|
10
|
+
cwd?: string
|
|
11
|
+
useHttps?: boolean
|
|
12
|
+
port?: number | string
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
// Get the toolkit root directory
|
|
16
16
|
function getToolkitRoot(): string {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
18
|
+
// Navigate from dist/tui/services to project root (3 levels up)
|
|
19
|
+
// dist/tui/services -> dist/tui -> dist -> gx-devtools
|
|
20
|
+
return path.resolve(__dirname, "..", "..", "..")
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Generate extension defaults based on environment variables
|
|
25
25
|
* This creates a defaults.json file that the popup.js reads on load
|
|
26
26
|
*/
|
|
27
|
-
function generateExtensionDefaults(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
27
|
+
function generateExtensionDefaults(
|
|
28
|
+
extensionPath: string,
|
|
29
|
+
useHttps: boolean,
|
|
30
|
+
port: number | string,
|
|
31
|
+
): void {
|
|
32
|
+
const protocol = useHttps ? "https" : "http"
|
|
33
|
+
const baseUrl = `${protocol}://localhost:${port}`
|
|
34
|
+
|
|
35
|
+
const defaults = {
|
|
36
|
+
// Extension should be enabled by default when launched from CLI
|
|
37
|
+
enabled: true,
|
|
38
|
+
// JS redirect URL based on env
|
|
39
|
+
jsRedirectUrl: `${baseUrl}/src/Plugin.vue`,
|
|
40
|
+
// CSS redirect URL (empty by default, uses blank CSS)
|
|
41
|
+
cssRedirectUrl: "",
|
|
42
|
+
// CSS override should be enabled by default
|
|
43
|
+
cssRuleEnabled: true,
|
|
44
|
+
// Return blank CSS by default
|
|
45
|
+
cssReturnBlank: true,
|
|
46
|
+
// Use custom URL pattern by default
|
|
47
|
+
jsUseCustomPattern: true,
|
|
48
|
+
cssUseCustomPattern: true,
|
|
49
|
+
// Cache settings
|
|
50
|
+
clearCacheOnEnable: true,
|
|
51
|
+
disableCacheForRedirects: true,
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const defaultsPath = path.join(extensionPath, "defaults.json")
|
|
55
|
+
fs.writeFileSync(defaultsPath, JSON.stringify(defaults, null, 2))
|
|
52
56
|
}
|
|
53
57
|
|
|
54
58
|
// Find the extension path (project-local or toolkit built-in)
|
|
55
59
|
function findExtensionPath(browser: BrowserType, cwd: string): string | null {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
60
|
+
// Check local project first
|
|
61
|
+
const localPath = path.join(cwd, "browser-extensions", browser)
|
|
62
|
+
if (fs.existsSync(localPath)) {
|
|
63
|
+
return localPath
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Fall back to toolkit's built-in extension
|
|
67
|
+
const toolkitPath = path.join(getToolkitRoot(), "browser-extensions", browser)
|
|
68
|
+
if (fs.existsSync(toolkitPath)) {
|
|
69
|
+
return toolkitPath
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return null
|
|
69
73
|
}
|
|
70
74
|
|
|
71
75
|
export function startExtension(options: ExtensionOptions): void {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
76
|
+
const { browser, useHttps = true, port = 3060 } = options
|
|
77
|
+
const cwd = options.cwd || process.cwd()
|
|
78
|
+
const serviceId = `ext-${browser}`
|
|
79
|
+
|
|
80
|
+
// Compute the start URL based on options
|
|
81
|
+
const protocol = useHttps ? "https" : "http"
|
|
82
|
+
const startUrl = `${protocol}://localhost:${port}`
|
|
83
|
+
|
|
84
|
+
// Check if already running
|
|
85
|
+
if (serviceManager.isRunning(serviceId)) {
|
|
86
|
+
return
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const extensionPath = findExtensionPath(browser, cwd)
|
|
90
|
+
if (!extensionPath) {
|
|
91
|
+
// Create a dummy service to show the error
|
|
92
|
+
const errorState = serviceManager.start({
|
|
93
|
+
id: serviceId,
|
|
94
|
+
name: `${browser.charAt(0).toUpperCase() + browser.slice(1)} Extension`,
|
|
95
|
+
command: "echo",
|
|
96
|
+
args: [`Extension not found for ${browser}`],
|
|
97
|
+
cwd,
|
|
98
|
+
})
|
|
99
|
+
return
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Generate defaults.json for the extension based on environment
|
|
103
|
+
generateExtensionDefaults(extensionPath, useHttps, port)
|
|
104
|
+
|
|
105
|
+
if (browser === "firefox") {
|
|
106
|
+
const config: ServiceConfig = {
|
|
107
|
+
id: serviceId,
|
|
108
|
+
name: "Firefox Extension",
|
|
109
|
+
command: "npx",
|
|
110
|
+
args: [
|
|
111
|
+
"web-ext",
|
|
112
|
+
"run",
|
|
113
|
+
"--source-dir",
|
|
114
|
+
extensionPath,
|
|
115
|
+
"--start-url",
|
|
116
|
+
startUrl,
|
|
117
|
+
],
|
|
118
|
+
cwd,
|
|
119
|
+
env: {
|
|
120
|
+
FORCE_COLOR: "1",
|
|
121
|
+
},
|
|
122
|
+
}
|
|
123
|
+
serviceManager.start(config)
|
|
124
|
+
} else if (browser === "chrome") {
|
|
125
|
+
// For Chrome, we need to use the launch script
|
|
126
|
+
const toolkitRoot = getToolkitRoot()
|
|
127
|
+
let scriptPath = path.join(cwd, "scripts", "launch-chrome.js")
|
|
128
|
+
|
|
129
|
+
if (!fs.existsSync(scriptPath)) {
|
|
130
|
+
scriptPath = path.join(toolkitRoot, "scripts", "launch-chrome.js")
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
if (!fs.existsSync(scriptPath)) {
|
|
134
|
+
const errorState = serviceManager.start({
|
|
135
|
+
id: serviceId,
|
|
136
|
+
name: "Chrome Extension",
|
|
137
|
+
command: "echo",
|
|
138
|
+
args: ["Chrome launcher script not found"],
|
|
139
|
+
cwd,
|
|
140
|
+
})
|
|
141
|
+
return
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const config: ServiceConfig = {
|
|
145
|
+
id: serviceId,
|
|
146
|
+
name: "Chrome Extension",
|
|
147
|
+
command: "node",
|
|
148
|
+
args: [scriptPath],
|
|
149
|
+
cwd,
|
|
150
|
+
env: {
|
|
151
|
+
FORCE_COLOR: "1",
|
|
152
|
+
CHROME_EXTENSION_PATH: extensionPath,
|
|
153
|
+
USE_HTTPS: String(useHttps),
|
|
154
|
+
NODE_PORT: String(port),
|
|
155
|
+
},
|
|
156
|
+
}
|
|
157
|
+
serviceManager.start(config)
|
|
158
|
+
}
|
|
148
159
|
}
|
|
149
160
|
|
|
150
161
|
export function stopExtension(browser: BrowserType): boolean {
|
|
151
|
-
|
|
162
|
+
return serviceManager.stop(`ext-${browser}`)
|
|
152
163
|
}
|
|
153
164
|
|
|
154
165
|
export function isExtensionRunning(browser: BrowserType): boolean {
|
|
155
|
-
|
|
166
|
+
return serviceManager.isRunning(`ext-${browser}`)
|
|
156
167
|
}
|