@gxp-dev/tools 2.0.62 → 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.
Files changed (182) hide show
  1. package/README.md +32 -31
  2. package/bin/gx-devtools.js +74 -54
  3. package/bin/lib/cli.js +23 -21
  4. package/bin/lib/commands/add-dependency.js +366 -325
  5. package/bin/lib/commands/assets.js +137 -139
  6. package/bin/lib/commands/build.js +169 -174
  7. package/bin/lib/commands/datastore.js +181 -183
  8. package/bin/lib/commands/dev.js +127 -131
  9. package/bin/lib/commands/extensions.js +147 -149
  10. package/bin/lib/commands/extract-config.js +73 -67
  11. package/bin/lib/commands/index.js +12 -12
  12. package/bin/lib/commands/init.js +342 -240
  13. package/bin/lib/commands/publish.js +69 -75
  14. package/bin/lib/commands/socket.js +69 -69
  15. package/bin/lib/commands/ssl.js +14 -14
  16. package/bin/lib/constants.js +10 -24
  17. package/bin/lib/tui/App.tsx +761 -705
  18. package/bin/lib/tui/components/AIPanel.tsx +191 -171
  19. package/bin/lib/tui/components/CommandInput.tsx +394 -343
  20. package/bin/lib/tui/components/GeminiPanel.tsx +175 -151
  21. package/bin/lib/tui/components/Header.tsx +23 -21
  22. package/bin/lib/tui/components/LogPanel.tsx +244 -220
  23. package/bin/lib/tui/components/TabBar.tsx +50 -48
  24. package/bin/lib/tui/components/WelcomeScreen.tsx +126 -71
  25. package/bin/lib/tui/index.tsx +37 -39
  26. package/bin/lib/tui/services/AIService.ts +518 -462
  27. package/bin/lib/tui/services/ExtensionService.ts +140 -129
  28. package/bin/lib/tui/services/GeminiService.ts +367 -337
  29. package/bin/lib/tui/services/ServiceManager.ts +344 -322
  30. package/bin/lib/tui/services/SocketService.ts +168 -168
  31. package/bin/lib/tui/services/ViteService.ts +88 -88
  32. package/bin/lib/tui/services/index.ts +47 -22
  33. package/bin/lib/utils/ai-scaffold.js +291 -280
  34. package/bin/lib/utils/extract-config.js +157 -140
  35. package/bin/lib/utils/files.js +82 -86
  36. package/bin/lib/utils/index.js +7 -7
  37. package/bin/lib/utils/paths.js +34 -34
  38. package/bin/lib/utils/prompts.js +194 -169
  39. package/bin/lib/utils/ssl.js +79 -81
  40. package/browser-extensions/README.md +0 -1
  41. package/browser-extensions/chrome/background.js +244 -237
  42. package/browser-extensions/chrome/content.js +32 -29
  43. package/browser-extensions/chrome/devtools.html +7 -7
  44. package/browser-extensions/chrome/devtools.js +19 -19
  45. package/browser-extensions/chrome/inspector.js +802 -767
  46. package/browser-extensions/chrome/manifest.json +71 -63
  47. package/browser-extensions/chrome/panel.html +674 -636
  48. package/browser-extensions/chrome/panel.js +722 -712
  49. package/browser-extensions/chrome/popup.html +586 -543
  50. package/browser-extensions/chrome/popup.js +282 -244
  51. package/browser-extensions/chrome/rules.json +1 -1
  52. package/browser-extensions/chrome/test-chrome.html +216 -136
  53. package/browser-extensions/chrome/test-mixed-content.html +284 -189
  54. package/browser-extensions/chrome/test-uri-pattern.html +221 -198
  55. package/browser-extensions/firefox/README.md +9 -6
  56. package/browser-extensions/firefox/background.js +221 -218
  57. package/browser-extensions/firefox/content.js +55 -52
  58. package/browser-extensions/firefox/debug-errors.html +386 -228
  59. package/browser-extensions/firefox/debug-https.html +153 -105
  60. package/browser-extensions/firefox/devtools.html +7 -7
  61. package/browser-extensions/firefox/devtools.js +23 -20
  62. package/browser-extensions/firefox/inspector.js +802 -767
  63. package/browser-extensions/firefox/manifest.json +68 -68
  64. package/browser-extensions/firefox/panel.html +674 -636
  65. package/browser-extensions/firefox/panel.js +722 -712
  66. package/browser-extensions/firefox/popup.html +572 -535
  67. package/browser-extensions/firefox/popup.js +281 -236
  68. package/browser-extensions/firefox/test-gramercy.html +170 -125
  69. package/browser-extensions/firefox/test-imports.html +59 -55
  70. package/browser-extensions/firefox/test-masking.html +231 -140
  71. package/browser-extensions/firefox/test-uri-pattern.html +221 -198
  72. package/dist/tui/App.d.ts +1 -1
  73. package/dist/tui/App.d.ts.map +1 -1
  74. package/dist/tui/App.js +154 -150
  75. package/dist/tui/App.js.map +1 -1
  76. package/dist/tui/components/AIPanel.d.ts.map +1 -1
  77. package/dist/tui/components/AIPanel.js +42 -35
  78. package/dist/tui/components/AIPanel.js.map +1 -1
  79. package/dist/tui/components/CommandInput.d.ts +1 -1
  80. package/dist/tui/components/CommandInput.d.ts.map +1 -1
  81. package/dist/tui/components/CommandInput.js +92 -62
  82. package/dist/tui/components/CommandInput.js.map +1 -1
  83. package/dist/tui/components/GeminiPanel.d.ts.map +1 -1
  84. package/dist/tui/components/GeminiPanel.js +37 -30
  85. package/dist/tui/components/GeminiPanel.js.map +1 -1
  86. package/dist/tui/components/Header.d.ts.map +1 -1
  87. package/dist/tui/components/Header.js +1 -1
  88. package/dist/tui/components/Header.js.map +1 -1
  89. package/dist/tui/components/LogPanel.d.ts +1 -1
  90. package/dist/tui/components/LogPanel.d.ts.map +1 -1
  91. package/dist/tui/components/LogPanel.js +26 -24
  92. package/dist/tui/components/LogPanel.js.map +1 -1
  93. package/dist/tui/components/TabBar.d.ts +2 -2
  94. package/dist/tui/components/TabBar.d.ts.map +1 -1
  95. package/dist/tui/components/TabBar.js +11 -11
  96. package/dist/tui/components/TabBar.js.map +1 -1
  97. package/dist/tui/components/WelcomeScreen.d.ts.map +1 -1
  98. package/dist/tui/components/WelcomeScreen.js +6 -6
  99. package/dist/tui/components/WelcomeScreen.js.map +1 -1
  100. package/dist/tui/index.d.ts.map +1 -1
  101. package/dist/tui/index.js +8 -8
  102. package/dist/tui/index.js.map +1 -1
  103. package/dist/tui/services/AIService.d.ts +2 -2
  104. package/dist/tui/services/AIService.d.ts.map +1 -1
  105. package/dist/tui/services/AIService.js +165 -125
  106. package/dist/tui/services/AIService.js.map +1 -1
  107. package/dist/tui/services/ExtensionService.d.ts +1 -1
  108. package/dist/tui/services/ExtensionService.d.ts.map +1 -1
  109. package/dist/tui/services/ExtensionService.js +33 -26
  110. package/dist/tui/services/ExtensionService.js.map +1 -1
  111. package/dist/tui/services/GeminiService.d.ts +1 -1
  112. package/dist/tui/services/GeminiService.d.ts.map +1 -1
  113. package/dist/tui/services/GeminiService.js +87 -76
  114. package/dist/tui/services/GeminiService.js.map +1 -1
  115. package/dist/tui/services/ServiceManager.d.ts +3 -3
  116. package/dist/tui/services/ServiceManager.d.ts.map +1 -1
  117. package/dist/tui/services/ServiceManager.js +72 -58
  118. package/dist/tui/services/ServiceManager.js.map +1 -1
  119. package/dist/tui/services/SocketService.d.ts.map +1 -1
  120. package/dist/tui/services/SocketService.js +32 -32
  121. package/dist/tui/services/SocketService.js.map +1 -1
  122. package/dist/tui/services/ViteService.d.ts.map +1 -1
  123. package/dist/tui/services/ViteService.js +26 -28
  124. package/dist/tui/services/ViteService.js.map +1 -1
  125. package/dist/tui/services/index.d.ts +6 -6
  126. package/dist/tui/services/index.d.ts.map +1 -1
  127. package/dist/tui/services/index.js +6 -6
  128. package/dist/tui/services/index.js.map +1 -1
  129. package/mcp/gxp-api-server.js +83 -81
  130. package/package.json +109 -93
  131. package/runtime/PortalContainer.vue +258 -234
  132. package/runtime/dev-tools/DevToolsModal.vue +153 -155
  133. package/runtime/dev-tools/LayoutSwitcher.vue +144 -140
  134. package/runtime/dev-tools/MockDataEditor.vue +456 -433
  135. package/runtime/dev-tools/SocketSimulator.vue +379 -371
  136. package/runtime/dev-tools/StoreInspector.vue +517 -455
  137. package/runtime/dev-tools/index.js +5 -5
  138. package/runtime/fallback-layouts/PrivateLayout.vue +2 -2
  139. package/runtime/fallback-layouts/PublicLayout.vue +2 -2
  140. package/runtime/fallback-layouts/SystemLayout.vue +2 -2
  141. package/runtime/gxpStringsPlugin.js +159 -134
  142. package/runtime/index.html +17 -19
  143. package/runtime/main.js +24 -22
  144. package/runtime/mock-api/auth-middleware.js +15 -15
  145. package/runtime/mock-api/image-generator.js +46 -46
  146. package/runtime/mock-api/index.js +55 -55
  147. package/runtime/mock-api/response-generator.js +116 -105
  148. package/runtime/mock-api/route-generator.js +107 -84
  149. package/runtime/mock-api/socket-triggers.js +94 -93
  150. package/runtime/mock-api/spec-loader.js +79 -80
  151. package/runtime/package.json +3 -0
  152. package/runtime/server.js +68 -68
  153. package/runtime/stores/gxpPortalConfigStore.js +204 -186
  154. package/runtime/stores/index.js +2 -2
  155. package/runtime/vite-inspector-plugin.js +858 -707
  156. package/runtime/vite-source-tracker-plugin.js +132 -113
  157. package/runtime/vite.config.js +207 -132
  158. package/scripts/launch-chrome.js +41 -41
  159. package/scripts/pack-chrome.js +38 -39
  160. package/socket-events/AiSessionMessageCreated.json +17 -17
  161. package/socket-events/SocialStreamPostCreated.json +23 -23
  162. package/socket-events/SocialStreamPostVariantCompleted.json +22 -22
  163. package/template/.claude/agents/gxp-developer.md +100 -99
  164. package/template/.claude/settings.json +7 -7
  165. package/template/AGENTS.md +30 -23
  166. package/template/GEMINI.md +20 -20
  167. package/template/README.md +70 -53
  168. package/template/app-manifest.json +2 -4
  169. package/template/configuration.json +10 -10
  170. package/template/default-styling.css +1 -1
  171. package/template/index.html +18 -20
  172. package/template/main.js +24 -22
  173. package/template/src/DemoPage.vue +415 -362
  174. package/template/src/Plugin.vue +76 -85
  175. package/template/src/stores/index.js +3 -3
  176. package/template/src/stores/test-data.json +164 -172
  177. package/template/theme-layouts/AdditionalStyling.css +50 -50
  178. package/template/theme-layouts/PrivateLayout.vue +8 -12
  179. package/template/theme-layouts/PublicLayout.vue +8 -12
  180. package/template/theme-layouts/SystemLayout.vue +8 -12
  181. package/template/vite.extend.js +45 -0
  182. package/template/vite.config.js +0 -409
@@ -4,15 +4,15 @@
4
4
  * Handles SSL certificate generation and management using mkcert.
5
5
  */
6
6
 
7
- const path = require("path");
8
- const fs = require("fs");
9
- const shell = require("shelljs");
7
+ const path = require("path")
8
+ const fs = require("fs")
9
+ const shell = require("shelljs")
10
10
 
11
11
  /**
12
12
  * Checks if mkcert is installed globally
13
13
  */
14
14
  function isMkcertInstalled() {
15
- return shell.which("mkcert") !== null;
15
+ return shell.which("mkcert") !== null
16
16
  }
17
17
 
18
18
  /**
@@ -20,19 +20,19 @@ function isMkcertInstalled() {
20
20
  */
21
21
  function ensureMkcertInstalled() {
22
22
  if (isMkcertInstalled()) {
23
- console.log("✓ mkcert is already installed globally");
24
- return true;
23
+ console.log("✓ mkcert is already installed globally")
24
+ return true
25
25
  }
26
26
 
27
- console.log("Installing mkcert globally...");
28
- const result = shell.exec("npm install -g mkcert", { silent: true });
27
+ console.log("Installing mkcert globally...")
28
+ const result = shell.exec("npm install -g mkcert", { silent: true })
29
29
 
30
30
  if (result.code === 0) {
31
- console.log("✓ mkcert installed successfully");
32
- return true;
31
+ console.log("✓ mkcert installed successfully")
32
+ return true
33
33
  } else {
34
- console.warn("⚠ Could not install mkcert globally, will use local version");
35
- return false;
34
+ console.warn("⚠ Could not install mkcert globally, will use local version")
35
+ return false
36
36
  }
37
37
  }
38
38
 
@@ -41,38 +41,38 @@ function ensureMkcertInstalled() {
41
41
  */
42
42
  function findExistingCertificates(certsDir) {
43
43
  if (!fs.existsSync(certsDir)) {
44
- return null;
44
+ return null
45
45
  }
46
46
 
47
- const files = fs.readdirSync(certsDir);
47
+ const files = fs.readdirSync(certsDir)
48
48
 
49
49
  // Look for localhost certificates (with or without suffixes)
50
50
  const certFile = files.find(
51
51
  (f) =>
52
- f.startsWith("localhost") && f.endsWith(".pem") && !f.includes("-key")
53
- );
52
+ f.startsWith("localhost") && f.endsWith(".pem") && !f.includes("-key"),
53
+ )
54
54
  const keyFile = files.find(
55
- (f) => f.startsWith("localhost") && f.endsWith("-key.pem")
56
- );
55
+ (f) => f.startsWith("localhost") && f.endsWith("-key.pem"),
56
+ )
57
57
 
58
58
  if (certFile && keyFile) {
59
- const certPath = path.join(certsDir, certFile);
60
- const keyPath = path.join(certsDir, keyFile);
59
+ const certPath = path.join(certsDir, certFile)
60
+ const keyPath = path.join(certsDir, keyFile)
61
61
 
62
62
  // Verify files actually exist and have content
63
63
  try {
64
- const certStats = fs.statSync(certPath);
65
- const keyStats = fs.statSync(keyPath);
64
+ const certStats = fs.statSync(certPath)
65
+ const keyStats = fs.statSync(keyPath)
66
66
 
67
67
  if (certStats.size > 0 && keyStats.size > 0) {
68
- return { certPath, keyPath };
68
+ return { certPath, keyPath }
69
69
  }
70
70
  } catch (error) {
71
71
  // Files don't exist or can't be read
72
72
  }
73
73
  }
74
74
 
75
- return null;
75
+ return null
76
76
  }
77
77
 
78
78
  /**
@@ -80,31 +80,31 @@ function findExistingCertificates(certsDir) {
80
80
  */
81
81
  function cleanupOldCertificates(certsDir) {
82
82
  if (!fs.existsSync(certsDir)) {
83
- return;
83
+ return
84
84
  }
85
85
 
86
86
  try {
87
- const files = fs.readdirSync(certsDir);
87
+ const files = fs.readdirSync(certsDir)
88
88
  const certFiles = files.filter(
89
89
  (f) =>
90
90
  f.startsWith("localhost") &&
91
- (f.endsWith(".pem") || f.endsWith("-key.pem"))
92
- );
91
+ (f.endsWith(".pem") || f.endsWith("-key.pem")),
92
+ )
93
93
 
94
94
  if (certFiles.length > 0) {
95
- console.log("🧹 Cleaning up old certificate files...");
95
+ console.log("🧹 Cleaning up old certificate files...")
96
96
  certFiles.forEach((file) => {
97
- const filePath = path.join(certsDir, file);
97
+ const filePath = path.join(certsDir, file)
98
98
  try {
99
- fs.unlinkSync(filePath);
100
- console.log(` Removed: ${file}`);
99
+ fs.unlinkSync(filePath)
100
+ console.log(` Removed: ${file}`)
101
101
  } catch (error) {
102
- console.warn(` Could not remove ${file}: ${error.message}`);
102
+ console.warn(` Could not remove ${file}: ${error.message}`)
103
103
  }
104
- });
104
+ })
105
105
  }
106
106
  } catch (error) {
107
- console.warn("⚠ Could not clean up old certificates:", error.message);
107
+ console.warn("⚠ Could not clean up old certificates:", error.message)
108
108
  }
109
109
  }
110
110
 
@@ -112,74 +112,72 @@ function cleanupOldCertificates(certsDir) {
112
112
  * Generates SSL certificates for localhost using mkcert
113
113
  */
114
114
  function generateSSLCertificates(projectPath) {
115
- const certsDir = path.join(projectPath, ".certs");
115
+ const certsDir = path.join(projectPath, ".certs")
116
116
 
117
117
  // Create .certs directory
118
118
  if (!fs.existsSync(certsDir)) {
119
- fs.mkdirSync(certsDir, { recursive: true });
119
+ fs.mkdirSync(certsDir, { recursive: true })
120
120
  }
121
121
 
122
122
  // Check for existing certificates (including those with suffixes like +2)
123
- const existingCerts = findExistingCertificates(certsDir);
123
+ const existingCerts = findExistingCertificates(certsDir)
124
124
  if (existingCerts) {
125
- console.log("✓ SSL certificates already exist");
126
- return existingCerts;
125
+ console.log("✓ SSL certificates already exist")
126
+ return existingCerts
127
127
  }
128
128
 
129
- console.log("Generating SSL certificates for localhost...");
129
+ console.log("Generating SSL certificates for localhost...")
130
130
 
131
131
  // Clean up any leftover certificate files to avoid naming conflicts
132
- cleanupOldCertificates(certsDir);
132
+ cleanupOldCertificates(certsDir)
133
133
 
134
134
  // Try global mkcert first
135
- let mkcertCmd = "mkcert";
135
+ let mkcertCmd = "mkcert"
136
136
  if (!isMkcertInstalled()) {
137
137
  // Use local mkcert via npx
138
- mkcertCmd = "npx mkcert";
138
+ mkcertCmd = "npx mkcert"
139
139
  }
140
140
 
141
141
  // Change to certs directory and generate certificates
142
- const currentDir = process.cwd();
142
+ const currentDir = process.cwd()
143
143
  try {
144
- process.chdir(certsDir);
144
+ process.chdir(certsDir)
145
145
 
146
146
  // Install CA if needed (only for global mkcert)
147
147
  if (isMkcertInstalled()) {
148
- shell.exec(`${mkcertCmd} -install`, { silent: true });
148
+ shell.exec(`${mkcertCmd} -install`, { silent: true })
149
149
  }
150
150
 
151
151
  // Generate certificates for localhost
152
152
  const result = shell.exec(`${mkcertCmd} localhost 127.0.0.1 ::1`, {
153
153
  silent: true,
154
- });
154
+ })
155
155
 
156
156
  if (result.code === 0) {
157
157
  // Find the actual generated certificate files
158
- const generatedCerts = findExistingCertificates(certsDir);
158
+ const generatedCerts = findExistingCertificates(certsDir)
159
159
  if (generatedCerts) {
160
- console.log("✓ SSL certificates generated successfully");
161
- console.log(
162
- `📁 Certificate: ${path.basename(generatedCerts.certPath)}`
163
- );
164
- console.log(`🔑 Key: ${path.basename(generatedCerts.keyPath)}`);
165
- return generatedCerts;
160
+ console.log("✓ SSL certificates generated successfully")
161
+ console.log(`📁 Certificate: ${path.basename(generatedCerts.certPath)}`)
162
+ console.log(`🔑 Key: ${path.basename(generatedCerts.keyPath)}`)
163
+ return generatedCerts
166
164
  } else {
167
165
  console.warn(
168
- "⚠ Certificates generated but not found in expected location"
169
- );
170
- return null;
166
+ "⚠ Certificates generated but not found in expected location",
167
+ )
168
+ return null
171
169
  }
172
170
  } else {
173
171
  console.warn(
174
- "⚠ Failed to generate SSL certificates, falling back to HTTP"
175
- );
176
- return null;
172
+ "⚠ Failed to generate SSL certificates, falling back to HTTP",
173
+ )
174
+ return null
177
175
  }
178
176
  } catch (error) {
179
- console.warn("⚠ Error generating SSL certificates:", error.message);
180
- return null;
177
+ console.warn("⚠ Error generating SSL certificates:", error.message)
178
+ return null
181
179
  } finally {
182
- process.chdir(currentDir);
180
+ process.chdir(currentDir)
183
181
  }
184
182
  }
185
183
 
@@ -187,39 +185,39 @@ function generateSSLCertificates(projectPath) {
187
185
  * Updates the .env file with the actual SSL certificate paths
188
186
  */
189
187
  function updateEnvWithCertPaths(projectPath, certs) {
190
- const envPath = path.join(projectPath, ".env");
188
+ const envPath = path.join(projectPath, ".env")
191
189
 
192
190
  if (!fs.existsSync(envPath)) {
193
- console.warn("⚠ .env file not found, skipping certificate path update");
194
- return;
191
+ console.warn("⚠ .env file not found, skipping certificate path update")
192
+ return
195
193
  }
196
194
 
197
195
  try {
198
- let envContent = fs.readFileSync(envPath, "utf-8");
196
+ let envContent = fs.readFileSync(envPath, "utf-8")
199
197
 
200
198
  // Get just the filenames from the full paths
201
- const certFileName = path.basename(certs.certPath);
202
- const keyFileName = path.basename(certs.keyPath);
199
+ const certFileName = path.basename(certs.certPath)
200
+ const keyFileName = path.basename(certs.keyPath)
203
201
 
204
202
  // Update CERT_PATH and KEY_PATH with actual filenames
205
203
  envContent = envContent.replace(
206
204
  /CERT_PATH=.*$/m,
207
- `CERT_PATH=.certs/${certFileName}`
208
- );
205
+ `CERT_PATH=.certs/${certFileName}`,
206
+ )
209
207
  envContent = envContent.replace(
210
208
  /KEY_PATH=.*$/m,
211
- `KEY_PATH=.certs/${keyFileName}`
212
- );
209
+ `KEY_PATH=.certs/${keyFileName}`,
210
+ )
213
211
 
214
- fs.writeFileSync(envPath, envContent);
215
- console.log("✓ Updated .env with SSL certificate paths");
216
- console.log(` CERT_PATH=.certs/${certFileName}`);
217
- console.log(` KEY_PATH=.certs/${keyFileName}`);
212
+ fs.writeFileSync(envPath, envContent)
213
+ console.log("✓ Updated .env with SSL certificate paths")
214
+ console.log(` CERT_PATH=.certs/${certFileName}`)
215
+ console.log(` KEY_PATH=.certs/${keyFileName}`)
218
216
  } catch (error) {
219
217
  console.warn(
220
218
  "⚠ Could not update .env with certificate paths:",
221
- error.message
222
- );
219
+ error.message,
220
+ )
223
221
  }
224
222
  }
225
223
 
@@ -230,4 +228,4 @@ module.exports = {
230
228
  cleanupOldCertificates,
231
229
  generateSSLCertificates,
232
230
  updateEnvWithCertPaths,
233
- };
231
+ }
@@ -1 +0,0 @@
1
-