@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
@@ -5,46 +5,46 @@
5
5
  * then generates/updates app-manifest.json with extracted configuration.
6
6
  */
7
7
 
8
- const path = require("path");
9
- const fs = require("fs");
8
+ const path = require("path")
9
+ const fs = require("fs")
10
10
  const {
11
11
  findProjectRoot,
12
12
  extractConfigFromSource,
13
13
  mergeConfig,
14
14
  generateSummary,
15
- } = require("../utils");
15
+ } = require("../utils")
16
16
 
17
17
  /**
18
18
  * Main extract-config command handler
19
19
  * @param {Object} argv - Yargs arguments
20
20
  */
21
21
  async function extractConfigCommand(argv) {
22
- const projectPath = findProjectRoot();
23
- const srcDir = path.join(projectPath, "src");
24
- const manifestPath = path.join(projectPath, "app-manifest.json");
22
+ const projectPath = findProjectRoot()
23
+ const srcDir = path.join(projectPath, "src")
24
+ const manifestPath = path.join(projectPath, "app-manifest.json")
25
25
 
26
- const dryRun = argv.dryRun || argv["dry-run"] || false;
27
- const overwrite = argv.overwrite || false;
28
- const verbose = argv.verbose || false;
26
+ const dryRun = argv.dryRun || argv["dry-run"] || false
27
+ const overwrite = argv.overwrite || false
28
+ const verbose = argv.verbose || false
29
29
 
30
- console.log("🔍 Scanning source files for GxP configuration...");
31
- console.log(` Project: ${projectPath}`);
32
- console.log(` Source: ${srcDir}`);
33
- console.log("");
30
+ console.log("🔍 Scanning source files for GxP configuration...")
31
+ console.log(` Project: ${projectPath}`)
32
+ console.log(` Source: ${srcDir}`)
33
+ console.log("")
34
34
 
35
35
  // Check if src directory exists
36
36
  if (!fs.existsSync(srcDir)) {
37
- console.error("❌ Source directory not found: src/");
38
- console.log(" Make sure you are in a GxP project directory.");
39
- return;
37
+ console.error("❌ Source directory not found: src/")
38
+ console.log(" Make sure you are in a GxP project directory.")
39
+ return
40
40
  }
41
41
 
42
42
  // Extract configuration from source files
43
- const extractedConfig = extractConfigFromSource(srcDir);
43
+ const extractedConfig = extractConfigFromSource(srcDir)
44
44
 
45
45
  // Show summary of what was found
46
- const summary = generateSummary(extractedConfig);
47
- console.log(summary);
46
+ const summary = generateSummary(extractedConfig)
47
+ console.log(summary)
48
48
 
49
49
  // Check if anything was extracted
50
50
  const totalItems =
@@ -52,60 +52,66 @@ async function extractConfigCommand(argv) {
52
52
  Object.keys(extractedConfig.settings).length +
53
53
  Object.keys(extractedConfig.assets).length +
54
54
  Object.keys(extractedConfig.triggerState).length +
55
- extractedConfig.dependencies.length;
55
+ extractedConfig.dependencies.length
56
56
 
57
57
  if (totalItems === 0) {
58
- console.log("ℹ️ No GxP configuration found in source files.");
59
- console.log("");
60
- console.log("💡 Tips:");
61
- console.log(" - Use store.getString('key', 'default') in your components");
62
- console.log(" - Use gxp-string directive: <span gxp-string=\"key\">default</span>");
63
- console.log(" - Use gxp-src directive: <img gxp-src=\"key\" src=\"/default.jpg\" />");
64
- return;
58
+ console.log("ℹ️ No GxP configuration found in source files.")
59
+ console.log("")
60
+ console.log("💡 Tips:")
61
+ console.log(" - Use store.getString('key', 'default') in your components")
62
+ console.log(
63
+ ' - Use gxp-string directive: <span gxp-string="key">default</span>',
64
+ )
65
+ console.log(
66
+ ' - Use gxp-src directive: <img gxp-src="key" src="/default.jpg" />',
67
+ )
68
+ return
65
69
  }
66
70
 
67
71
  if (dryRun) {
68
- console.log("🔸 Dry run mode - no changes will be made.");
69
- console.log("");
70
- console.log("To apply changes, run without --dry-run flag:");
71
- console.log(" gxdev extract-config");
72
- return;
72
+ console.log("🔸 Dry run mode - no changes will be made.")
73
+ console.log("")
74
+ console.log("To apply changes, run without --dry-run flag:")
75
+ console.log(" gxdev extract-config")
76
+ return
73
77
  }
74
78
 
75
79
  // Load existing manifest or create new one
76
- let existingManifest = {};
80
+ let existingManifest = {}
77
81
  if (fs.existsSync(manifestPath)) {
78
82
  try {
79
- existingManifest = JSON.parse(fs.readFileSync(manifestPath, "utf-8"));
83
+ existingManifest = JSON.parse(fs.readFileSync(manifestPath, "utf-8"))
80
84
  if (verbose) {
81
- console.log("📄 Found existing app-manifest.json");
85
+ console.log("📄 Found existing app-manifest.json")
82
86
  }
83
87
  } catch (error) {
84
- console.warn("⚠ Could not parse existing app-manifest.json, creating new one");
85
- existingManifest = getDefaultManifest();
88
+ console.warn(
89
+ "⚠ Could not parse existing app-manifest.json, creating new one",
90
+ )
91
+ existingManifest = getDefaultManifest()
86
92
  }
87
93
  } else {
88
- console.log("📄 Creating new app-manifest.json");
89
- existingManifest = getDefaultManifest();
94
+ console.log("📄 Creating new app-manifest.json")
95
+ existingManifest = getDefaultManifest()
90
96
  }
91
97
 
92
98
  // Merge extracted config into manifest
93
99
  const mergedManifest = mergeConfig(existingManifest, extractedConfig, {
94
100
  overwrite,
95
- });
101
+ })
96
102
 
97
103
  // Write updated manifest
98
104
  try {
99
- fs.writeFileSync(manifestPath, JSON.stringify(mergedManifest, null, "\t"));
100
- console.log("✅ Updated app-manifest.json");
105
+ fs.writeFileSync(manifestPath, JSON.stringify(mergedManifest, null, "\t"))
106
+ console.log("✅ Updated app-manifest.json")
101
107
 
102
108
  if (verbose) {
103
- console.log("");
104
- console.log("📋 Changes applied:");
105
- logChanges(existingManifest, mergedManifest, extractedConfig);
109
+ console.log("")
110
+ console.log("📋 Changes applied:")
111
+ logChanges(existingManifest, mergedManifest, extractedConfig)
106
112
  }
107
113
  } catch (error) {
108
- console.error("❌ Error writing app-manifest.json:", error.message);
114
+ console.error("❌ Error writing app-manifest.json:", error.message)
109
115
  }
110
116
  }
111
117
 
@@ -131,7 +137,7 @@ function getDefaultManifest() {
131
137
  triggerState: {},
132
138
  dependencies: [],
133
139
  permissions: [],
134
- };
140
+ }
135
141
  }
136
142
 
137
143
  /**
@@ -141,46 +147,46 @@ function getDefaultManifest() {
141
147
  * @param {Object} extracted - Extracted configuration
142
148
  */
143
149
  function logChanges(oldManifest, newManifest, extracted) {
144
- const oldStrings = oldManifest.strings?.default || {};
145
- const newStrings = newManifest.strings?.default || {};
150
+ const oldStrings = oldManifest.strings?.default || {}
151
+ const newStrings = newManifest.strings?.default || {}
146
152
 
147
153
  // Count new additions
148
- let addedStrings = 0;
149
- let addedSettings = 0;
150
- let addedAssets = 0;
151
- let addedState = 0;
152
- let addedDeps = 0;
154
+ let addedStrings = 0
155
+ let addedSettings = 0
156
+ let addedAssets = 0
157
+ let addedState = 0
158
+ let addedDeps = 0
153
159
 
154
160
  for (const key of Object.keys(extracted.strings)) {
155
- if (!oldStrings[key]) addedStrings++;
161
+ if (!oldStrings[key]) addedStrings++
156
162
  }
157
163
 
158
164
  for (const key of Object.keys(extracted.settings)) {
159
- if (oldManifest.settings?.[key] === undefined) addedSettings++;
165
+ if (oldManifest.settings?.[key] === undefined) addedSettings++
160
166
  }
161
167
 
162
168
  for (const key of Object.keys(extracted.assets)) {
163
- if (!oldManifest.assets?.[key]) addedAssets++;
169
+ if (!oldManifest.assets?.[key]) addedAssets++
164
170
  }
165
171
 
166
172
  for (const key of Object.keys(extracted.triggerState)) {
167
- if (oldManifest.triggerState?.[key] === undefined) addedState++;
173
+ if (oldManifest.triggerState?.[key] === undefined) addedState++
168
174
  }
169
175
 
170
176
  for (const dep of extracted.dependencies) {
171
177
  const exists = (oldManifest.dependencies || []).some(
172
- (d) => d.identifier === dep.identifier
173
- );
174
- if (!exists) addedDeps++;
178
+ (d) => d.identifier === dep.identifier,
179
+ )
180
+ if (!exists) addedDeps++
175
181
  }
176
182
 
177
- if (addedStrings > 0) console.log(` + ${addedStrings} new string(s)`);
178
- if (addedSettings > 0) console.log(` + ${addedSettings} new setting(s)`);
179
- if (addedAssets > 0) console.log(` + ${addedAssets} new asset(s)`);
180
- if (addedState > 0) console.log(` + ${addedState} new state value(s)`);
181
- if (addedDeps > 0) console.log(` + ${addedDeps} new dependency(ies)`);
183
+ if (addedStrings > 0) console.log(` + ${addedStrings} new string(s)`)
184
+ if (addedSettings > 0) console.log(` + ${addedSettings} new setting(s)`)
185
+ if (addedAssets > 0) console.log(` + ${addedAssets} new asset(s)`)
186
+ if (addedState > 0) console.log(` + ${addedState} new state value(s)`)
187
+ if (addedDeps > 0) console.log(` + ${addedDeps} new dependency(ies)`)
182
188
  }
183
189
 
184
190
  module.exports = {
185
191
  extractConfigCommand,
186
- };
192
+ }
@@ -4,22 +4,22 @@
4
4
  * Re-exports all command modules for convenient importing.
5
5
  */
6
6
 
7
- const { initCommand } = require("./init");
8
- const { devCommand } = require("./dev");
9
- const { buildCommand } = require("./build");
10
- const { publishCommand } = require("./publish");
11
- const { setupSSLCommand } = require("./ssl");
12
- const { datastoreCommand } = require("./datastore");
13
- const { socketCommand } = require("./socket");
14
- const { assetsCommand } = require("./assets");
7
+ const { initCommand } = require("./init")
8
+ const { devCommand } = require("./dev")
9
+ const { buildCommand } = require("./build")
10
+ const { publishCommand } = require("./publish")
11
+ const { setupSSLCommand } = require("./ssl")
12
+ const { datastoreCommand } = require("./datastore")
13
+ const { socketCommand } = require("./socket")
14
+ const { assetsCommand } = require("./assets")
15
15
  const {
16
16
  extensionFirefoxCommand,
17
17
  extensionChromeCommand,
18
18
  extensionBuildCommand,
19
19
  extensionInstallCommand,
20
- } = require("./extensions");
21
- const { extractConfigCommand } = require("./extract-config");
22
- const { addDependencyCommand } = require("./add-dependency");
20
+ } = require("./extensions")
21
+ const { extractConfigCommand } = require("./extract-config")
22
+ const { addDependencyCommand } = require("./add-dependency")
23
23
 
24
24
  module.exports = {
25
25
  initCommand,
@@ -36,4 +36,4 @@ module.exports = {
36
36
  extensionInstallCommand,
37
37
  extractConfigCommand,
38
38
  addDependencyCommand,
39
- };
39
+ }