@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.
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 +191 -139
  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,211 +4,209 @@
4
4
  * Manages browser extensions for Firefox and Chrome.
5
5
  */
6
6
 
7
- const path = require("path");
8
- const fs = require("fs");
9
- const shell = require("shelljs");
10
- const { findProjectRoot, resolveGxPaths } = require("../utils");
7
+ const path = require("path")
8
+ const fs = require("fs")
9
+ const shell = require("shelljs")
10
+ const { findProjectRoot, resolveGxPaths } = require("../utils")
11
11
 
12
12
  /**
13
13
  * Launch Firefox with extension command
14
14
  */
15
15
  function extensionFirefoxCommand() {
16
- const projectPath = findProjectRoot();
17
- let extensionPath = path.join(projectPath, "browser-extensions", "firefox");
16
+ const projectPath = findProjectRoot()
17
+ let extensionPath = path.join(projectPath, "browser-extensions", "firefox")
18
18
 
19
19
  // If local extension doesn't exist, try to use the toolkit's own extensions
20
20
  if (!fs.existsSync(extensionPath)) {
21
- const paths = resolveGxPaths();
21
+ const paths = resolveGxPaths()
22
22
  const toolkitExtensionPath = path.join(
23
23
  paths.packageRoot,
24
24
  "browser-extensions",
25
- "firefox"
26
- );
25
+ "firefox",
26
+ )
27
27
 
28
28
  if (fs.existsSync(toolkitExtensionPath)) {
29
- console.log("🔍 Using GxToolkit's built-in Firefox extension");
30
- extensionPath = toolkitExtensionPath;
29
+ console.log("🔍 Using GxToolkit's built-in Firefox extension")
30
+ extensionPath = toolkitExtensionPath
31
31
  } else {
32
- console.error("❌ Firefox extension directory not found");
32
+ console.error("❌ Firefox extension directory not found")
33
33
  console.log(
34
34
  "📁 Looking for extensions in:",
35
- path.join(projectPath, "browser-extensions", "firefox")
36
- );
35
+ path.join(projectPath, "browser-extensions", "firefox"),
36
+ )
37
37
  console.log(
38
- "💡 Run 'gxdev init' to create a project with browser extensions"
39
- );
40
- process.exit(1);
38
+ "💡 Run 'gxdev init' to create a project with browser extensions",
39
+ )
40
+ process.exit(1)
41
41
  }
42
42
  } else {
43
- console.log("🔍 Using project's Firefox extension");
43
+ console.log("🔍 Using project's Firefox extension")
44
44
  }
45
45
 
46
- console.log("🦊 Launching Firefox with extension...");
47
- console.log("📁 Extension path:", extensionPath);
48
- shell.exec(`npx web-ext run --source-dir "${extensionPath}"`);
46
+ console.log("🦊 Launching Firefox with extension...")
47
+ console.log("📁 Extension path:", extensionPath)
48
+ shell.exec(`npx web-ext run --source-dir "${extensionPath}"`)
49
49
  }
50
50
 
51
51
  /**
52
52
  * Launch Chrome with extension command
53
53
  */
54
54
  function extensionChromeCommand() {
55
- const projectPath = findProjectRoot();
56
- let extensionPath = path.join(projectPath, "browser-extensions", "chrome");
57
- let scriptPath = path.join(projectPath, "scripts", "launch-chrome.js");
55
+ const projectPath = findProjectRoot()
56
+ let extensionPath = path.join(projectPath, "browser-extensions", "chrome")
57
+ let scriptPath = path.join(projectPath, "scripts", "launch-chrome.js")
58
58
 
59
59
  // Check if we have a local extension first
60
60
  if (!fs.existsSync(extensionPath)) {
61
- const paths = resolveGxPaths();
61
+ const paths = resolveGxPaths()
62
62
  const toolkitExtensionPath = path.join(
63
63
  paths.packageRoot,
64
64
  "browser-extensions",
65
- "chrome"
66
- );
65
+ "chrome",
66
+ )
67
67
 
68
68
  if (fs.existsSync(toolkitExtensionPath)) {
69
- console.log("🔍 Using GxToolkit's built-in Chrome extension");
70
- extensionPath = toolkitExtensionPath;
69
+ console.log("🔍 Using GxToolkit's built-in Chrome extension")
70
+ extensionPath = toolkitExtensionPath
71
71
  // Use the toolkit's script instead
72
- scriptPath = path.join(paths.packageRoot, "scripts", "launch-chrome.js");
72
+ scriptPath = path.join(paths.packageRoot, "scripts", "launch-chrome.js")
73
73
  } else {
74
- console.error("❌ Chrome extension directory not found");
74
+ console.error("❌ Chrome extension directory not found")
75
75
  console.log(
76
76
  "📁 Looking for extensions in:",
77
- path.join(projectPath, "browser-extensions", "chrome")
78
- );
77
+ path.join(projectPath, "browser-extensions", "chrome"),
78
+ )
79
79
  console.log(
80
- "💡 Run 'gxdev init' to create a project with browser extensions"
81
- );
82
- process.exit(1);
80
+ "💡 Run 'gxdev init' to create a project with browser extensions",
81
+ )
82
+ process.exit(1)
83
83
  }
84
84
  } else {
85
- console.log("🔍 Using project's Chrome extension");
85
+ console.log("🔍 Using project's Chrome extension")
86
86
  }
87
87
 
88
88
  // Verify script exists
89
89
  if (!fs.existsSync(scriptPath)) {
90
90
  console.error(
91
- "❌ Chrome launcher script not found. Run 'gxdev init' to create it."
92
- );
93
- process.exit(1);
91
+ "❌ Chrome launcher script not found. Run 'gxdev init' to create it.",
92
+ )
93
+ process.exit(1)
94
94
  }
95
95
 
96
- console.log("🚀 Launching Chrome with extension...");
97
- console.log("📁 Extension path:", extensionPath);
96
+ console.log("🚀 Launching Chrome with extension...")
97
+ console.log("📁 Extension path:", extensionPath)
98
98
 
99
99
  // Set the extension path as an environment variable for the script
100
- process.env.CHROME_EXTENSION_PATH = extensionPath;
101
- shell.exec(`node "${scriptPath}"`);
100
+ process.env.CHROME_EXTENSION_PATH = extensionPath
101
+ shell.exec(`node "${scriptPath}"`)
102
102
  }
103
103
 
104
104
  /**
105
105
  * Install extension permanently in local browser
106
106
  */
107
107
  function extensionInstallCommand(argv) {
108
- const browser = argv.browser;
109
- const paths = resolveGxPaths();
108
+ const browser = argv.browser
109
+ const paths = resolveGxPaths()
110
110
 
111
111
  if (!browser || !["chrome", "firefox"].includes(browser)) {
112
- console.log("Usage: gxdev ext:install <chrome|firefox>");
113
- console.log("");
114
- console.log("This command helps you permanently install the extension");
115
- console.log("in your local browser for development.");
116
- process.exit(1);
112
+ console.log("Usage: gxdev ext:install <chrome|firefox>")
113
+ console.log("")
114
+ console.log("This command helps you permanently install the extension")
115
+ console.log("in your local browser for development.")
116
+ process.exit(1)
117
117
  }
118
118
 
119
119
  const extensionPath = path.join(
120
120
  paths.packageRoot,
121
121
  "browser-extensions",
122
- browser
123
- );
122
+ browser,
123
+ )
124
124
 
125
125
  if (!fs.existsSync(extensionPath)) {
126
126
  console.error(
127
127
  `❌ ${browser} extension directory not found at:`,
128
- extensionPath
129
- );
130
- process.exit(1);
128
+ extensionPath,
129
+ )
130
+ process.exit(1)
131
131
  }
132
132
 
133
- console.log("");
134
- console.log(`📦 Extension path: ${extensionPath}`);
135
- console.log("");
133
+ console.log("")
134
+ console.log(`📦 Extension path: ${extensionPath}`)
135
+ console.log("")
136
136
 
137
137
  if (browser === "chrome") {
138
- console.log("🚀 Chrome Permanent Installation Instructions:");
139
- console.log("─".repeat(50));
140
- console.log("");
141
- console.log("1. Open Chrome and navigate to:");
142
- console.log(" chrome://extensions/");
143
- console.log("");
144
- console.log('2. Enable "Developer mode" (toggle in top right corner)');
145
- console.log("");
146
- console.log('3. Click "Load unpacked" button');
147
- console.log("");
148
- console.log("4. Select this directory:");
149
- console.log(` ${extensionPath}`);
150
- console.log("");
151
- console.log("─".repeat(50));
152
- console.log("✅ The extension will persist across browser restarts.");
153
- console.log("🔄 After code changes, click the refresh icon on the");
154
- console.log(" extension card in chrome://extensions/ to reload.");
155
- console.log("");
138
+ console.log("🚀 Chrome Permanent Installation Instructions:")
139
+ console.log("─".repeat(50))
140
+ console.log("")
141
+ console.log("1. Open Chrome and navigate to:")
142
+ console.log(" chrome://extensions/")
143
+ console.log("")
144
+ console.log('2. Enable "Developer mode" (toggle in top right corner)')
145
+ console.log("")
146
+ console.log('3. Click "Load unpacked" button')
147
+ console.log("")
148
+ console.log("4. Select this directory:")
149
+ console.log(` ${extensionPath}`)
150
+ console.log("")
151
+ console.log("─".repeat(50))
152
+ console.log("✅ The extension will persist across browser restarts.")
153
+ console.log("🔄 After code changes, click the refresh icon on the")
154
+ console.log(" extension card in chrome://extensions/ to reload.")
155
+ console.log("")
156
156
 
157
157
  // Try to open Chrome to the extensions page
158
158
  const openCommand =
159
159
  process.platform === "darwin"
160
160
  ? 'open -a "Google Chrome" "chrome://extensions/"'
161
161
  : process.platform === "win32"
162
- ? 'start chrome "chrome://extensions/"'
163
- : 'google-chrome "chrome://extensions/"';
162
+ ? 'start chrome "chrome://extensions/"'
163
+ : 'google-chrome "chrome://extensions/"'
164
164
 
165
- console.log("🌐 Attempting to open Chrome extensions page...");
166
- shell.exec(openCommand, { silent: true });
165
+ console.log("🌐 Attempting to open Chrome extensions page...")
166
+ shell.exec(openCommand, { silent: true })
167
167
  } else if (browser === "firefox") {
168
- console.log("🦊 Firefox Installation Instructions:");
169
- console.log("─".repeat(50));
170
- console.log("");
171
- console.log("Option 1: Temporary Add-on (easiest, but doesn't persist)");
172
- console.log("─".repeat(50));
173
- console.log("1. Open Firefox and navigate to:");
174
- console.log(" about:debugging#/runtime/this-firefox");
175
- console.log("");
176
- console.log('2. Click "Load Temporary Add-on..."');
177
- console.log("");
178
- console.log("3. Select any file in this directory:");
179
- console.log(` ${extensionPath}`);
180
- console.log("");
181
- console.log("⚠️ Note: Temporary add-ons are removed when Firefox closes.");
182
- console.log("");
183
- console.log("─".repeat(50));
184
- console.log(
185
- "Option 2: Persistent Installation (Firefox Developer/Nightly)"
186
- );
187
- console.log("".repeat(50));
188
- console.log("1. Use Firefox Developer Edition or Firefox Nightly");
189
- console.log("");
190
- console.log("2. Go to about:config and set:");
191
- console.log(" xpinstall.signatures.required = false");
192
- console.log("");
193
- console.log("3. Then go to about:addons");
194
- console.log("");
195
- console.log("4. Click the gear icon and select:");
196
- console.log(' "Install Add-on From File..."');
197
- console.log("");
198
- console.log("5. Select the manifest.json in:");
199
- console.log(` ${extensionPath}`);
200
- console.log("");
168
+ console.log("🦊 Firefox Installation Instructions:")
169
+ console.log("─".repeat(50))
170
+ console.log("")
171
+ console.log("Option 1: Temporary Add-on (easiest, but doesn't persist)")
172
+ console.log("─".repeat(50))
173
+ console.log("1. Open Firefox and navigate to:")
174
+ console.log(" about:debugging#/runtime/this-firefox")
175
+ console.log("")
176
+ console.log('2. Click "Load Temporary Add-on..."')
177
+ console.log("")
178
+ console.log("3. Select any file in this directory:")
179
+ console.log(` ${extensionPath}`)
180
+ console.log("")
181
+ console.log("⚠️ Note: Temporary add-ons are removed when Firefox closes.")
182
+ console.log("")
183
+ console.log("─".repeat(50))
184
+ console.log("Option 2: Persistent Installation (Firefox Developer/Nightly)")
185
+ console.log("─".repeat(50))
186
+ console.log("1. Use Firefox Developer Edition or Firefox Nightly")
187
+ console.log("")
188
+ console.log("2. Go to about:config and set:")
189
+ console.log(" xpinstall.signatures.required = false")
190
+ console.log("")
191
+ console.log("3. Then go to about:addons")
192
+ console.log("")
193
+ console.log("4. Click the gear icon and select:")
194
+ console.log(' "Install Add-on From File..."')
195
+ console.log("")
196
+ console.log("5. Select the manifest.json in:")
197
+ console.log(` ${extensionPath}`)
198
+ console.log("")
201
199
 
202
200
  // Try to open Firefox to the debugging page
203
201
  const openCommand =
204
202
  process.platform === "darwin"
205
203
  ? 'open -a "Firefox" "about:debugging#/runtime/this-firefox"'
206
204
  : process.platform === "win32"
207
- ? 'start firefox "about:debugging#/runtime/this-firefox"'
208
- : 'firefox "about:debugging#/runtime/this-firefox"';
205
+ ? 'start firefox "about:debugging#/runtime/this-firefox"'
206
+ : 'firefox "about:debugging#/runtime/this-firefox"'
209
207
 
210
- console.log("🌐 Attempting to open Firefox debugging page...");
211
- shell.exec(openCommand, { silent: true });
208
+ console.log("🌐 Attempting to open Firefox debugging page...")
209
+ shell.exec(openCommand, { silent: true })
212
210
  }
213
211
  }
214
212
 
@@ -216,77 +214,77 @@ function extensionInstallCommand(argv) {
216
214
  * Build extensions command
217
215
  */
218
216
  function extensionBuildCommand() {
219
- const projectPath = findProjectRoot();
220
- const paths = resolveGxPaths();
217
+ const projectPath = findProjectRoot()
218
+ const paths = resolveGxPaths()
221
219
 
222
- console.log("📦 Building browser extensions...");
220
+ console.log("📦 Building browser extensions...")
223
221
 
224
222
  // Build Firefox extension
225
- let firefoxPath = path.join(projectPath, "browser-extensions", "firefox");
226
- let useProjectExtensions = true;
223
+ let firefoxPath = path.join(projectPath, "browser-extensions", "firefox")
224
+ let useProjectExtensions = true
227
225
 
228
226
  if (!fs.existsSync(firefoxPath)) {
229
227
  // Try toolkit's extensions
230
228
  const toolkitFirefoxPath = path.join(
231
229
  paths.packageRoot,
232
230
  "browser-extensions",
233
- "firefox"
234
- );
231
+ "firefox",
232
+ )
235
233
  if (fs.existsSync(toolkitFirefoxPath)) {
236
- firefoxPath = toolkitFirefoxPath;
237
- useProjectExtensions = false;
238
- console.log("🔍 Using GxToolkit's built-in Firefox extension");
234
+ firefoxPath = toolkitFirefoxPath
235
+ useProjectExtensions = false
236
+ console.log("🔍 Using GxToolkit's built-in Firefox extension")
239
237
  }
240
238
  }
241
239
 
242
240
  if (fs.existsSync(firefoxPath)) {
243
- console.log("🦊 Building Firefox extension...");
241
+ console.log("🦊 Building Firefox extension...")
244
242
  const outputDir = useProjectExtensions
245
243
  ? "dist/firefox"
246
- : path.join(projectPath, "dist/firefox");
244
+ : path.join(projectPath, "dist/firefox")
247
245
  shell.exec(
248
- `npx web-ext build --source-dir "${firefoxPath}" --artifacts-dir "${outputDir}"`
249
- );
246
+ `npx web-ext build --source-dir "${firefoxPath}" --artifacts-dir "${outputDir}"`,
247
+ )
250
248
  } else {
251
- console.log("⚠️ No Firefox extension found to build");
249
+ console.log("⚠️ No Firefox extension found to build")
252
250
  }
253
251
 
254
252
  // Build Chrome extension
255
- let chromeScriptPath = path.join(projectPath, "scripts", "pack-chrome.js");
253
+ let chromeScriptPath = path.join(projectPath, "scripts", "pack-chrome.js")
256
254
  let chromeExtensionPath = path.join(
257
255
  projectPath,
258
256
  "browser-extensions",
259
- "chrome"
260
- );
257
+ "chrome",
258
+ )
261
259
 
262
260
  if (!fs.existsSync(chromeScriptPath) || !fs.existsSync(chromeExtensionPath)) {
263
261
  // Try toolkit's scripts and extensions
264
262
  const toolkitScriptPath = path.join(
265
263
  paths.packageRoot,
266
264
  "scripts",
267
- "pack-chrome.js"
268
- );
265
+ "pack-chrome.js",
266
+ )
269
267
  const toolkitChromePath = path.join(
270
268
  paths.packageRoot,
271
269
  "browser-extensions",
272
- "chrome"
273
- );
270
+ "chrome",
271
+ )
274
272
 
275
273
  if (fs.existsSync(toolkitScriptPath) && fs.existsSync(toolkitChromePath)) {
276
- chromeScriptPath = toolkitScriptPath;
277
- chromeExtensionPath = toolkitChromePath;
278
- console.log("🔍 Using GxToolkit's built-in Chrome extension");
274
+ chromeScriptPath = toolkitScriptPath
275
+ chromeExtensionPath = toolkitChromePath
276
+ console.log("🔍 Using GxToolkit's built-in Chrome extension")
279
277
  }
280
278
  }
281
279
 
282
280
  if (fs.existsSync(chromeScriptPath)) {
283
- console.log("🚀 Building Chrome extension...");
281
+ console.log("🚀 Building Chrome extension...")
284
282
  // Set environment variable for the script to know where the extension is
285
- process.env.CHROME_EXTENSION_PATH = chromeExtensionPath;
286
- process.env.CHROME_BUILD_OUTPUT = path.join(projectPath, "dist/chrome");
287
- shell.exec(`node "${chromeScriptPath}"`);
283
+ process.env.CHROME_EXTENSION_PATH = chromeExtensionPath
284
+ process.env.CHROME_BUILD_OUTPUT = path.join(projectPath, "dist/chrome")
285
+ shell.exec(`node "${chromeScriptPath}"`)
288
286
  } else {
289
- console.log("⚠️ No Chrome extension found to build");
287
+ console.log("⚠️ No Chrome extension found to build")
290
288
  }
291
289
  }
292
290
 
@@ -295,4 +293,4 @@ module.exports = {
295
293
  extensionChromeCommand,
296
294
  extensionBuildCommand,
297
295
  extensionInstallCommand,
298
- };
296
+ }