@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
@@ -1,217 +1,215 @@
1
1
  <template>
2
- <Teleport to="body">
3
- <div class="gx-devtools-overlay" @click.self="$emit('close')">
4
- <div class="gx-devtools-modal">
5
- <header class="gx-devtools-header">
6
- <h2>GxP Dev Tools</h2>
7
- <div class="gx-devtools-tabs">
8
- <button
9
- v-for="tab in tabs"
10
- :key="tab.id"
11
- :class="['gx-devtools-tab', { active: activeTab === tab.id }]"
12
- @click="activeTab = tab.id"
13
- >
14
- {{ tab.label }}
15
- </button>
16
- </div>
17
- <button class="gx-devtools-close" @click="$emit('close')" title="Close (Esc)">
18
- &times;
19
- </button>
20
- </header>
21
-
22
- <main class="gx-devtools-content">
23
- <StoreInspector
24
- v-if="activeTab === 'store'"
25
- :store="store"
26
- />
27
- <LayoutSwitcher
28
- v-else-if="activeTab === 'layout'"
29
- :current-layout="currentLayout"
30
- @change-layout="$emit('change-layout', $event)"
31
- />
32
- <SocketSimulator
33
- v-else-if="activeTab === 'socket'"
34
- :store="store"
35
- />
36
- <MockDataEditor
37
- v-else-if="activeTab === 'data'"
38
- :store="store"
39
- />
40
- </main>
41
-
42
- <footer class="gx-devtools-footer">
43
- <span class="gx-devtools-hint">
44
- Press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>D</kbd> or <kbd>Esc</kbd> to close
45
- </span>
46
- <span class="gx-devtools-version">GxP Toolkit Dev Tools</span>
47
- </footer>
48
- </div>
49
- </div>
50
- </Teleport>
2
+ <Teleport to="body">
3
+ <div class="gx-devtools-overlay" @click.self="$emit('close')">
4
+ <div class="gx-devtools-modal">
5
+ <header class="gx-devtools-header">
6
+ <h2>GxP Dev Tools</h2>
7
+ <div class="gx-devtools-tabs">
8
+ <button
9
+ v-for="tab in tabs"
10
+ :key="tab.id"
11
+ :class="['gx-devtools-tab', { active: activeTab === tab.id }]"
12
+ @click="activeTab = tab.id"
13
+ >
14
+ {{ tab.label }}
15
+ </button>
16
+ </div>
17
+ <button
18
+ class="gx-devtools-close"
19
+ @click="$emit('close')"
20
+ title="Close (Esc)"
21
+ >
22
+ &times;
23
+ </button>
24
+ </header>
25
+
26
+ <main class="gx-devtools-content">
27
+ <StoreInspector v-if="activeTab === 'store'" :store="store" />
28
+ <LayoutSwitcher
29
+ v-else-if="activeTab === 'layout'"
30
+ :current-layout="currentLayout"
31
+ @change-layout="$emit('change-layout', $event)"
32
+ />
33
+ <SocketSimulator v-else-if="activeTab === 'socket'" :store="store" />
34
+ <MockDataEditor v-else-if="activeTab === 'data'" :store="store" />
35
+ </main>
36
+
37
+ <footer class="gx-devtools-footer">
38
+ <span class="gx-devtools-hint">
39
+ Press <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>D</kbd> or
40
+ <kbd>Esc</kbd> to close
41
+ </span>
42
+ <span class="gx-devtools-version">GxP Toolkit Dev Tools</span>
43
+ </footer>
44
+ </div>
45
+ </div>
46
+ </Teleport>
51
47
  </template>
52
48
 
53
49
  <script setup>
54
- import { ref, onMounted, onUnmounted } from 'vue';
55
- import StoreInspector from './StoreInspector.vue';
56
- import LayoutSwitcher from './LayoutSwitcher.vue';
57
- import SocketSimulator from './SocketSimulator.vue';
58
- import MockDataEditor from './MockDataEditor.vue';
50
+ import { ref, onMounted, onUnmounted } from "vue"
51
+ import StoreInspector from "./StoreInspector.vue"
52
+ import LayoutSwitcher from "./LayoutSwitcher.vue"
53
+ import SocketSimulator from "./SocketSimulator.vue"
54
+ import MockDataEditor from "./MockDataEditor.vue"
59
55
 
60
56
  const props = defineProps({
61
- store: {
62
- type: Object,
63
- required: true
64
- },
65
- currentLayout: {
66
- type: String,
67
- default: 'public'
68
- }
69
- });
70
-
71
- const emit = defineEmits(['close', 'change-layout']);
57
+ store: {
58
+ type: Object,
59
+ required: true,
60
+ },
61
+ currentLayout: {
62
+ type: String,
63
+ default: "public",
64
+ },
65
+ })
66
+
67
+ const emit = defineEmits(["close", "change-layout"])
72
68
 
73
69
  const tabs = [
74
- { id: 'store', label: 'Store' },
75
- { id: 'layout', label: 'Layout' },
76
- { id: 'socket', label: 'Socket' },
77
- { id: 'data', label: 'Mock Data' }
78
- ];
70
+ { id: "store", label: "Store" },
71
+ { id: "layout", label: "Layout" },
72
+ { id: "socket", label: "Socket" },
73
+ { id: "data", label: "Mock Data" },
74
+ ]
79
75
 
80
- const activeTab = ref('store');
76
+ const activeTab = ref("store")
81
77
 
82
78
  // Handle escape key to close
83
79
  function handleKeydown(e) {
84
- if (e.key === 'Escape') {
85
- emit('close');
86
- }
80
+ if (e.key === "Escape") {
81
+ emit("close")
82
+ }
87
83
  }
88
84
 
89
85
  onMounted(() => {
90
- document.addEventListener('keydown', handleKeydown);
91
- // Prevent body scroll when modal is open
92
- document.body.style.overflow = 'hidden';
93
- });
86
+ document.addEventListener("keydown", handleKeydown)
87
+ // Prevent body scroll when modal is open
88
+ document.body.style.overflow = "hidden"
89
+ })
94
90
 
95
91
  onUnmounted(() => {
96
- document.removeEventListener('keydown', handleKeydown);
97
- document.body.style.overflow = '';
98
- });
92
+ document.removeEventListener("keydown", handleKeydown)
93
+ document.body.style.overflow = ""
94
+ })
99
95
  </script>
100
96
 
101
97
  <style scoped>
102
98
  .gx-devtools-overlay {
103
- position: fixed;
104
- top: 0;
105
- left: 0;
106
- right: 0;
107
- bottom: 0;
108
- background: rgba(0, 0, 0, 0.5);
109
- display: flex;
110
- align-items: center;
111
- justify-content: center;
112
- z-index: 99999;
113
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
99
+ position: fixed;
100
+ top: 0;
101
+ left: 0;
102
+ right: 0;
103
+ bottom: 0;
104
+ background: rgba(0, 0, 0, 0.5);
105
+ display: flex;
106
+ align-items: center;
107
+ justify-content: center;
108
+ z-index: 99999;
109
+ font-family:
110
+ -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu,
111
+ sans-serif;
114
112
  }
115
113
 
116
114
  .gx-devtools-modal {
117
- background: #1e1e1e;
118
- color: #e0e0e0;
119
- border-radius: 8px;
120
- width: 90%;
121
- max-width: 900px;
122
- max-height: 85vh;
123
- display: flex;
124
- flex-direction: column;
125
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
126
- overflow: hidden;
115
+ background: #1e1e1e;
116
+ color: #e0e0e0;
117
+ border-radius: 8px;
118
+ width: 90%;
119
+ max-width: 900px;
120
+ max-height: 85vh;
121
+ display: flex;
122
+ flex-direction: column;
123
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
124
+ overflow: hidden;
127
125
  }
128
126
 
129
127
  .gx-devtools-header {
130
- display: flex;
131
- align-items: center;
132
- padding: 12px 16px;
133
- background: #2d2d2d;
134
- border-bottom: 1px solid #3d3d3d;
135
- gap: 16px;
128
+ display: flex;
129
+ align-items: center;
130
+ padding: 12px 16px;
131
+ background: #2d2d2d;
132
+ border-bottom: 1px solid #3d3d3d;
133
+ gap: 16px;
136
134
  }
137
135
 
138
136
  .gx-devtools-header h2 {
139
- margin: 0;
140
- font-size: 14px;
141
- font-weight: 600;
142
- color: #61dafb;
143
- white-space: nowrap;
137
+ margin: 0;
138
+ font-size: 14px;
139
+ font-weight: 600;
140
+ color: #61dafb;
141
+ white-space: nowrap;
144
142
  }
145
143
 
146
144
  .gx-devtools-tabs {
147
- display: flex;
148
- gap: 4px;
149
- flex: 1;
145
+ display: flex;
146
+ gap: 4px;
147
+ flex: 1;
150
148
  }
151
149
 
152
150
  .gx-devtools-tab {
153
- background: transparent;
154
- border: none;
155
- color: #888;
156
- padding: 6px 12px;
157
- cursor: pointer;
158
- border-radius: 4px;
159
- font-size: 13px;
160
- transition: all 0.2s;
151
+ background: transparent;
152
+ border: none;
153
+ color: #888;
154
+ padding: 6px 12px;
155
+ cursor: pointer;
156
+ border-radius: 4px;
157
+ font-size: 13px;
158
+ transition: all 0.2s;
161
159
  }
162
160
 
163
161
  .gx-devtools-tab:hover {
164
- color: #e0e0e0;
165
- background: #3d3d3d;
162
+ color: #e0e0e0;
163
+ background: #3d3d3d;
166
164
  }
167
165
 
168
166
  .gx-devtools-tab.active {
169
- color: #61dafb;
170
- background: #3d3d3d;
167
+ color: #61dafb;
168
+ background: #3d3d3d;
171
169
  }
172
170
 
173
171
  .gx-devtools-close {
174
- background: transparent;
175
- border: none;
176
- color: #888;
177
- font-size: 24px;
178
- cursor: pointer;
179
- padding: 0 8px;
180
- line-height: 1;
181
- transition: color 0.2s;
172
+ background: transparent;
173
+ border: none;
174
+ color: #888;
175
+ font-size: 24px;
176
+ cursor: pointer;
177
+ padding: 0 8px;
178
+ line-height: 1;
179
+ transition: color 0.2s;
182
180
  }
183
181
 
184
182
  .gx-devtools-close:hover {
185
- color: #ff6b6b;
183
+ color: #ff6b6b;
186
184
  }
187
185
 
188
186
  .gx-devtools-content {
189
- flex: 1;
190
- overflow: auto;
191
- padding: 16px;
192
- min-height: 400px;
187
+ flex: 1;
188
+ overflow: auto;
189
+ padding: 16px;
190
+ min-height: 400px;
193
191
  }
194
192
 
195
193
  .gx-devtools-footer {
196
- display: flex;
197
- justify-content: space-between;
198
- align-items: center;
199
- padding: 8px 16px;
200
- background: #2d2d2d;
201
- border-top: 1px solid #3d3d3d;
202
- font-size: 11px;
203
- color: #666;
194
+ display: flex;
195
+ justify-content: space-between;
196
+ align-items: center;
197
+ padding: 8px 16px;
198
+ background: #2d2d2d;
199
+ border-top: 1px solid #3d3d3d;
200
+ font-size: 11px;
201
+ color: #666;
204
202
  }
205
203
 
206
204
  .gx-devtools-hint kbd {
207
- background: #3d3d3d;
208
- padding: 2px 6px;
209
- border-radius: 3px;
210
- font-family: inherit;
211
- font-size: 10px;
205
+ background: #3d3d3d;
206
+ padding: 2px 6px;
207
+ border-radius: 3px;
208
+ font-family: inherit;
209
+ font-size: 10px;
212
210
  }
213
211
 
214
212
  .gx-devtools-version {
215
- color: #555;
213
+ color: #555;
216
214
  }
217
215
  </style>