@jay-framework/aiditor 0.17.4 → 0.18.0
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 +1 -5
- package/dist/actions/check-add-page-route.jay-action +12 -0
- package/dist/actions/check-add-page-route.jay-action.d.ts +10 -0
- package/dist/actions/check-page-add-page-brief.jay-action +9 -0
- package/dist/actions/check-page-add-page-brief.jay-action.d.ts +8 -0
- package/dist/actions/check-plugin-update.jay-action +14 -0
- package/dist/actions/check-plugin-update.jay-action.d.ts +13 -0
- package/dist/actions/ensure-project-plugin.jay-action +9 -0
- package/dist/actions/ensure-project-plugin.jay-action.d.ts +8 -0
- package/dist/actions/generate-add-page-brief-from-image.jay-action +20 -0
- package/dist/actions/generate-add-page-brief-from-image.jay-action.d.ts +20 -0
- package/dist/actions/get-plugin-setup-status.jay-action +9 -0
- package/dist/actions/get-plugin-setup-status.jay-action.d.ts +6 -0
- package/dist/actions/list-jay-plugins.jay-action +8 -0
- package/dist/actions/list-jay-plugins.jay-action.d.ts +5 -0
- package/dist/actions/list-plugin-contracts.jay-action +11 -0
- package/dist/actions/list-plugin-contracts.jay-action.d.ts +9 -0
- package/dist/actions/open-add-page-from-brief.jay-action +20 -0
- package/dist/actions/open-add-page-from-brief.jay-action.d.ts +18 -0
- package/dist/actions/reclassify-add-page-asset.jay-action +12 -0
- package/dist/actions/reclassify-add-page-asset.jay-action.d.ts +10 -0
- package/dist/actions/rerun-plugin-setup.jay-action +12 -0
- package/dist/actions/rerun-plugin-setup.jay-action.d.ts +10 -0
- package/dist/actions/save-add-page-draft.jay-action +10 -0
- package/dist/actions/save-add-page-draft.jay-action.d.ts +9 -0
- package/dist/actions/start-add-page-request.jay-action +12 -0
- package/dist/actions/start-add-page-request.jay-action.d.ts +10 -0
- package/dist/actions/submit-add-page.jay-action +21 -0
- package/dist/actions/submit-add-page.jay-action.d.ts +17 -0
- package/dist/actions/submit-task.jay-action +1 -0
- package/dist/actions/submit-task.jay-action.d.ts +1 -0
- package/dist/actions/sync-add-page-plugin-manifest.jay-action +11 -0
- package/dist/actions/sync-add-page-plugin-manifest.jay-action.d.ts +9 -0
- package/dist/actions/upload-add-page-asset.jay-action +13 -0
- package/dist/actions/upload-add-page-asset.jay-action.d.ts +13 -0
- package/dist/actions/write-plugin-source.jay-action +13 -0
- package/dist/actions/write-plugin-source.jay-action.d.ts +12 -0
- package/dist/add-page-agent/SKILL.md +79 -0
- package/dist/add-page-agent/system.md +47 -0
- package/dist/index.client.js +2695 -277
- package/dist/index.d.ts +797 -6
- package/dist/index.js +2682 -14
- package/dist/pages/aiditor/page.jay-html +603 -2
- package/dist/prompts/add-page-figma-brief-prompt.md +163 -0
- package/dist/prompts/add-page-figma-design-definitions-prompt.md +256 -0
- package/dist/prompts/add-page-figma-design-from-image-prompt.md +144 -0
- package/package.json +24 -7
- package/plugin.yaml +34 -0
|
@@ -105,6 +105,15 @@
|
|
|
105
105
|
.chunk-error { color: #f48771; }
|
|
106
106
|
.chunk-thinking { color: #666; font-style: italic; }
|
|
107
107
|
.chunk-result { color: #89d185; }
|
|
108
|
+
.chunk-user { color: #c5e1a5; }
|
|
109
|
+
.chunk-user-prefix { color: #888; }
|
|
110
|
+
.agent-chat-row { display: flex; gap: 8px; padding: 8px 12px; border-top: 1px solid #3e3e3e; flex-shrink: 0; align-items: flex-end; }
|
|
111
|
+
.agent-chat-input { flex: 1; min-height: 32px; max-height: 96px; resize: none; background: #252526; color: #d4d4d4; border: 1px solid #3e3e3e; border-radius: 4px; padding: 6px 8px; font-family: 'Segoe UI', system-ui, sans-serif; font-size: 12px; line-height: 1.4; }
|
|
112
|
+
.agent-chat-input:focus { outline: none; border-color: #007acc; }
|
|
113
|
+
.agent-chat-input:disabled { opacity: 0.6; cursor: not-allowed; }
|
|
114
|
+
.agent-chat-send { background: #0e639c; color: #fff; border: none; border-radius: 4px; padding: 6px 14px; font-size: 12px; font-weight: 600; cursor: pointer; flex-shrink: 0; height: 32px; }
|
|
115
|
+
.agent-chat-send:hover:not(:disabled) { background: #1177bb; }
|
|
116
|
+
.agent-chat-send:disabled { opacity: 0.45; cursor: not-allowed; }
|
|
108
117
|
.tool-group-sep { width: 1px; background: #3e3e3e; align-self: stretch; margin: 0 4px; flex-shrink: 0; }
|
|
109
118
|
.file-link { color: #569cd6; text-decoration: underline; cursor: pointer; }
|
|
110
119
|
.file-link:hover { color: #9cdcfe; }
|
|
@@ -174,6 +183,110 @@
|
|
|
174
183
|
.snapshot-discard-confirm { display: flex; align-items: center; gap: 10px; font-size: 13px; color: #f48771; }
|
|
175
184
|
.snapshot-discard-confirm-msg { flex: 1; }
|
|
176
185
|
.snapshot-overlay .arrow-svg line { marker-end: url(#aiditor-snapshot-arrowhead); }
|
|
186
|
+
.add-page-open-btn { margin-left: 12px; background: #0e639c; color: #fff; border: none; border-radius: 6px; padding: 6px 14px; font-size: 12px; font-weight: 600; cursor: pointer; flex-shrink: 0; }
|
|
187
|
+
.add-page-open-btn:hover { background: #1177bb; }
|
|
188
|
+
.add-page-open-btn:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
189
|
+
.add-page-from-brief-btn { margin-left: 8px; background: #2d4a2d; color: #c5e1a5; border: 1px solid #4a6a4a; border-radius: 6px; padding: 6px 14px; font-size: 12px; font-weight: 600; cursor: pointer; flex-shrink: 0; }
|
|
190
|
+
.add-page-from-brief-btn:hover { background: #3a5a3a; color: #fff; }
|
|
191
|
+
.add-page-from-brief-btn:disabled { opacity: 0.5; cursor: not-allowed; }
|
|
192
|
+
.add-page-overlay { position: fixed; inset: 0; z-index: 300; background: rgba(0,0,0,0.45); display: flex; justify-content: flex-end; }
|
|
193
|
+
.project-settings-overlay { position: fixed; inset: 0; z-index: 350; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; padding: 24px; box-sizing: border-box; }
|
|
194
|
+
.project-settings-dialog { background: #252526; border: 1px solid #3e3e3e; border-radius: 8px; width: min(520px, 100%); max-height: min(80vh, 640px); display: flex; flex-direction: column; overflow: hidden; }
|
|
195
|
+
.project-settings-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid #3e3e3e; }
|
|
196
|
+
.project-settings-title { font-size: 14px; font-weight: 600; color: #fff; }
|
|
197
|
+
.project-settings-close { background: none; border: none; color: #888; font-size: 20px; cursor: pointer; line-height: 1; }
|
|
198
|
+
.project-settings-body { padding: 14px 16px; overflow: auto; display: flex; flex-direction: column; gap: 12px; }
|
|
199
|
+
.project-settings-btn { background: #333; color: #ccc; border: 1px solid #3e3e3e; border-radius: 4px; padding: 6px 12px; font-size: 12px; cursor: pointer; }
|
|
200
|
+
.project-settings-btn:hover { background: #444; color: #fff; }
|
|
201
|
+
.add-page-plugin-picker { width: 100%; background: #252526; color: #ccc; border: 1px solid #3e3e3e; border-radius: 4px; font-size: 12px; padding: 6px 8px; margin-top: 6px; }
|
|
202
|
+
.add-page-manage-link { font-size: 11px; color: #9cdcfe; cursor: pointer; margin-top: 6px; background: none; border: none; padding: 0; text-align: left; }
|
|
203
|
+
.add-page-slideover { width: min(480px, 100vw); height: 100%; background: #1e1e1e; border-left: 1px solid #3e3e3e; display: flex; flex-direction: column; box-shadow: -4px 0 24px rgba(0,0,0,0.4); position: relative; }
|
|
204
|
+
.add-page-header { display: flex; align-items: center; gap: 8px; padding: 14px 16px; border-bottom: 1px solid #3e3e3e; flex-shrink: 0; }
|
|
205
|
+
.add-page-title { font-size: 14px; font-weight: 600; color: #9cdcfe; flex: 1; }
|
|
206
|
+
.add-page-close { background: none; border: none; color: #888; font-size: 20px; cursor: pointer; line-height: 1; padding: 0 4px; }
|
|
207
|
+
.add-page-close:hover { color: #fff; }
|
|
208
|
+
.add-page-body { flex: 1; overflow: auto; padding: 14px 16px; display: flex; flex-direction: column; gap: 16px; }
|
|
209
|
+
.add-page-section-label { font-size: 11px; font-weight: 600; color: #888; text-transform: uppercase; letter-spacing: 0.4px; margin-bottom: 6px; }
|
|
210
|
+
.add-page-section-header-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 6px; }
|
|
211
|
+
.add-page-section-header-row .add-page-section-label { margin-bottom: 0; flex: 1; }
|
|
212
|
+
.add-page-fill-from-image-btn { background: #2d2d30; color: #9cdcfe; border: 1px solid #3e3e3e; border-radius: 4px; padding: 4px 10px; font-size: 11px; font-weight: 600; cursor: pointer; flex-shrink: 0; }
|
|
213
|
+
.add-page-fill-from-image-btn:hover { background: #3c3c3c; color: #fff; }
|
|
214
|
+
.add-page-fill-from-image-btn:disabled { opacity: 0.45; cursor: not-allowed; }
|
|
215
|
+
.add-page-suggested-route { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; background: #252526; border: 1px solid #3e3e3e; border-radius: 6px; padding: 8px 10px; font-size: 12px; color: #ccc; margin-bottom: 8px; }
|
|
216
|
+
.add-page-suggested-route code { font-family: ui-monospace, monospace; color: #ce9178; }
|
|
217
|
+
.add-page-brief-fill-popover { position: absolute; inset: 0; z-index: 10; background: rgba(0,0,0,0.55); display: flex; align-items: center; justify-content: center; padding: 16px; box-sizing: border-box; }
|
|
218
|
+
.add-page-brief-fill-panel { background: #252526; border: 1px solid #3e3e3e; border-radius: 8px; width: min(420px, 100%); max-height: 90%; overflow: auto; padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; }
|
|
219
|
+
.add-page-brief-fill-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
|
220
|
+
.add-page-brief-fill-title { font-size: 13px; font-weight: 600; color: #9cdcfe; }
|
|
221
|
+
.add-page-brief-fill-context { width: 100%; min-height: 64px; background: #1e1e1e; color: #d4d4d4; border: 1px solid #3e3e3e; border-radius: 6px; padding: 8px; font-size: 12px; font-family: ui-monospace, monospace; resize: vertical; box-sizing: border-box; }
|
|
222
|
+
.add-page-brief-fill-dropzone { border: 1px dashed #3e3e3e; border-radius: 8px; padding: 14px; text-align: center; color: #888; font-size: 12px; cursor: pointer; }
|
|
223
|
+
.add-page-brief-fill-dropzone-disabled { opacity: 0.45; cursor: not-allowed; pointer-events: none; }
|
|
224
|
+
.add-page-brief-fill-context:disabled { opacity: 0.6; cursor: not-allowed; }
|
|
225
|
+
.add-page-brief-fill-dropzone:focus { outline: 1px solid #0e639c; }
|
|
226
|
+
.add-page-brief-fill-thumbs { display: flex; flex-wrap: wrap; gap: 8px; }
|
|
227
|
+
.add-page-brief-fill-thumb { position: relative; width: 72px; height: 72px; border-radius: 6px; overflow: hidden; border: 1px solid #3e3e3e; background: #1e1e1e; }
|
|
228
|
+
.add-page-brief-fill-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
|
|
229
|
+
.add-page-brief-fill-thumb-remove { position: absolute; top: 2px; right: 2px; background: rgba(0,0,0,0.7); color: #fff; border: none; border-radius: 3px; width: 18px; height: 18px; font-size: 12px; line-height: 1; cursor: pointer; padding: 0; }
|
|
230
|
+
.add-page-brief-fill-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 4px; }
|
|
231
|
+
.add-page-route-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
|
|
232
|
+
.add-page-route-input { flex: 1; min-width: 160px; background: #252526; color: #d4d4d4; border: 1px solid #3e3e3e; border-radius: 6px; padding: 8px 10px; font-size: 13px; font-family: ui-monospace, monospace; box-sizing: border-box; }
|
|
233
|
+
.add-page-route-input:focus { border-color: #0e639c; outline: none; }
|
|
234
|
+
.add-page-route-badge { font-size: 10px; color: #ce9178; background: #2d2d30; padding: 2px 8px; border-radius: 4px; }
|
|
235
|
+
.add-page-field-error { font-size: 12px; color: #f48771; margin-top: 4px; }
|
|
236
|
+
.add-page-hint { font-size: 12px; color: #888; margin-top: 4px; }
|
|
237
|
+
.add-page-textarea { width: 100%; min-height: 120px; background: #252526; color: #d4d4d4; border: 1px solid #3e3e3e; border-radius: 6px; padding: 10px; font-size: 12px; font-family: ui-monospace, monospace; resize: vertical; box-sizing: border-box; outline: none; }
|
|
238
|
+
.add-page-textarea:focus { border-color: #0e639c; }
|
|
239
|
+
.add-page-dropzone { border: 1px dashed #3e3e3e; border-radius: 8px; padding: 16px; text-align: center; color: #888; font-size: 12px; }
|
|
240
|
+
.add-page-chips { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; }
|
|
241
|
+
.add-page-chip { display: flex; align-items: center; gap: 8px; background: #252526; border: 1px solid #3e3e3e; border-radius: 6px; padding: 6px 8px; font-size: 11px; }
|
|
242
|
+
.add-page-chip-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #ccc; }
|
|
243
|
+
.add-page-chip-path { font-size: 10px; color: #666; font-family: ui-monospace, monospace; }
|
|
244
|
+
.add-page-chip select { background: #1e1e1e; color: #ccc; border: 1px solid #3e3e3e; border-radius: 4px; font-size: 11px; padding: 2px 4px; }
|
|
245
|
+
.add-page-chip-remove { background: none; border: none; color: #888; cursor: pointer; font-size: 14px; padding: 0 4px; }
|
|
246
|
+
.add-page-chip-remove:hover { color: #f48771; }
|
|
247
|
+
.add-page-plugins { border: 1px solid #3e3e3e; border-radius: 6px; padding: 10px; margin-top: 8px; display: flex; flex-direction: column; gap: 12px; max-height: 320px; overflow: auto; }
|
|
248
|
+
.add-page-plugins-zone-title { font-size: 11px; font-weight: 600; color: #aaa; text-transform: uppercase; letter-spacing: 0.04em; margin-bottom: 4px; }
|
|
249
|
+
.add-page-plugin-row { display: flex; align-items: center; gap: 8px; padding: 4px 0; font-size: 11px; border-bottom: 1px solid #2d2d30; }
|
|
250
|
+
.add-page-plugin-row:last-child { border-bottom: none; }
|
|
251
|
+
.add-page-plugin-label { flex: 1; color: #ccc; }
|
|
252
|
+
.add-page-plugin-btn { background: #333; color: #ccc; border: 1px solid #3e3e3e; border-radius: 4px; padding: 2px 8px; font-size: 10px; cursor: pointer; }
|
|
253
|
+
.add-page-plugin-btn:hover { background: #444; color: #fff; }
|
|
254
|
+
.add-page-plugin-btn:disabled { opacity: 0.45; cursor: not-allowed; }
|
|
255
|
+
.add-page-setup-ok { color: #89d185; font-size: 10px; }
|
|
256
|
+
.add-page-setup-warn { color: #dcdcaa; font-size: 10px; }
|
|
257
|
+
.add-page-setup-error { color: #f48771; font-size: 10px; }
|
|
258
|
+
.add-page-plugin-contract { padding-left: 0; font-size: 11px; color: #999; display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
|
|
259
|
+
.add-page-plugin-contract-row { display: flex; align-items: center; gap: 8px; padding: 4px 0; border-bottom: 1px solid #2d2d30; }
|
|
260
|
+
.add-page-plugin-contract-row:last-child { border-bottom: none; }
|
|
261
|
+
.add-page-plugin-contract-name { flex: 1; color: #ccc; font-size: 11px; }
|
|
262
|
+
.add-page-plugin-contract-added { font-size: 10px; color: #89d185; }
|
|
263
|
+
.add-page-plugin-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
|
|
264
|
+
.add-page-plugin-chip { background: #2d2d30; border: 1px solid #3e3e3e; border-radius: 4px; padding: 2px 6px; font-size: 10px; color: #ccc; display: flex; align-items: center; gap: 4px; }
|
|
265
|
+
.add-page-plugin-chip-remove { background: none; border: none; color: #888; cursor: pointer; padding: 0 2px; }
|
|
266
|
+
.add-page-plugins-warn { font-size: 11px; color: #dcdcaa; margin-top: 4px; }
|
|
267
|
+
.add-page-install-live { font-size: 11px; color: #888; }
|
|
268
|
+
.add-page-local-plugin-form { display: flex; flex-direction: column; gap: 6px; margin-top: 8px; padding-top: 8px; border-top: 1px solid #3e3e3e; }
|
|
269
|
+
.add-page-local-plugin-form input { background: #252526; color: #ccc; border: 1px solid #3e3e3e; border-radius: 4px; padding: 4px 6px; font-size: 11px; }
|
|
270
|
+
.annotation-binding { margin-top: 6px; border-top: 1px solid #3e3e3e; padding-top: 6px; }
|
|
271
|
+
.annotation-binding-toggle { background: none; border: none; color: #9cdcfe; font-size: 11px; cursor: pointer; padding: 0; text-align: left; }
|
|
272
|
+
.annotation-binding-panel { display: flex; flex-direction: column; gap: 6px; margin-top: 6px; font-size: 11px; color: #ccc; }
|
|
273
|
+
.annotation-binding-preview { font-size: 10px; color: #89d185; margin: 0; }
|
|
274
|
+
.annotation-binding-panel label { display: flex; flex-direction: column; gap: 2px; }
|
|
275
|
+
.annotation-binding-panel select { background: #252526; color: #ccc; border: 1px solid #3e3e3e; border-radius: 4px; font-size: 11px; }
|
|
276
|
+
.annotation-binding-scope-row { display: flex; gap: 10px; flex-wrap: wrap; }
|
|
277
|
+
.annotation-binding-install { background: #0e639c; color: #fff; border: none; border-radius: 4px; padding: 4px 8px; font-size: 10px; cursor: pointer; align-self: flex-start; }
|
|
278
|
+
.add-page-footer { display: flex; gap: 8px; padding: 12px 16px; border-top: 1px solid #3e3e3e; flex-shrink: 0; }
|
|
279
|
+
.add-page-btn { flex: 1; padding: 10px; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; border: 1px solid #3e3e3e; }
|
|
280
|
+
.add-page-btn-cancel { background: #2d2d30; color: #ccc; }
|
|
281
|
+
.add-page-btn-primary { background: #0e639c; color: #fff; border-color: #0e639c; }
|
|
282
|
+
.add-page-btn-primary:disabled { opacity: 0.45; cursor: not-allowed; }
|
|
283
|
+
.add-page-result-banner { margin: 0 20px 8px; padding: 10px 14px; border-radius: 8px; font-size: 12px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
|
|
284
|
+
.add-page-result-success { background: #1e3a1e; border: 1px solid #3a5a3a; color: #89d185; }
|
|
285
|
+
.add-page-result-failed { background: #3a1f1f; border: 1px solid #5a3030; color: #f48771; }
|
|
286
|
+
.add-page-result-actions { display: flex; gap: 8px; margin-left: auto; }
|
|
287
|
+
.add-page-result-btn { background: #333; color: #ccc; border: 1px solid #3e3e3e; border-radius: 4px; padding: 4px 10px; font-size: 11px; cursor: pointer; }
|
|
288
|
+
.add-page-result-btn:hover { background: #444; color: #fff; }
|
|
289
|
+
.add-page-hidden-file { display: none; }
|
|
177
290
|
</style>
|
|
178
291
|
<script type="application/jay-data">
|
|
179
292
|
data:
|
|
@@ -191,6 +304,12 @@ data:
|
|
|
191
304
|
cssClass: string
|
|
192
305
|
filePath: string
|
|
193
306
|
toolName: string
|
|
307
|
+
showUserPrefix: boolean
|
|
308
|
+
agentChatMessage: string
|
|
309
|
+
showAgentChatInput: boolean
|
|
310
|
+
agentChatInputDisabled: boolean
|
|
311
|
+
agentChatSendDisabled: boolean
|
|
312
|
+
agentChatPlaceholder: string
|
|
194
313
|
hasChunks: boolean
|
|
195
314
|
outputEmpty: boolean
|
|
196
315
|
pageSelectOptions:
|
|
@@ -274,6 +393,31 @@ data:
|
|
|
274
393
|
name: string
|
|
275
394
|
thumbUrl: string
|
|
276
395
|
annotationId: string
|
|
396
|
+
bindingSectionOpen: boolean
|
|
397
|
+
showBindingControls: boolean
|
|
398
|
+
showMarkerHasBindingChips: boolean
|
|
399
|
+
showMarkerBindingEmptyHint: boolean
|
|
400
|
+
markerBindingChips:
|
|
401
|
+
- rowKey: string
|
|
402
|
+
label: string
|
|
403
|
+
pluginName: string
|
|
404
|
+
packageName: string
|
|
405
|
+
contractName: string
|
|
406
|
+
scope: string
|
|
407
|
+
markerPluginOptions:
|
|
408
|
+
- rowKey: string
|
|
409
|
+
value: string
|
|
410
|
+
label: string
|
|
411
|
+
showMarkerContractPicker: boolean
|
|
412
|
+
markerPickerPluginLabel: string
|
|
413
|
+
markerContractPickerRows:
|
|
414
|
+
- rowKey: string
|
|
415
|
+
pluginName: string
|
|
416
|
+
packageName: string
|
|
417
|
+
contractName: string
|
|
418
|
+
description: string
|
|
419
|
+
onPage: boolean
|
|
420
|
+
componentKey: string
|
|
277
421
|
recordingDraftUi:
|
|
278
422
|
id: string
|
|
279
423
|
kindLabel: string
|
|
@@ -360,6 +504,31 @@ data:
|
|
|
360
504
|
name: string
|
|
361
505
|
thumbUrl: string
|
|
362
506
|
annotationId: string
|
|
507
|
+
bindingSectionOpen: boolean
|
|
508
|
+
showBindingControls: boolean
|
|
509
|
+
showMarkerHasBindingChips: boolean
|
|
510
|
+
showMarkerBindingEmptyHint: boolean
|
|
511
|
+
markerBindingChips:
|
|
512
|
+
- rowKey: string
|
|
513
|
+
label: string
|
|
514
|
+
pluginName: string
|
|
515
|
+
packageName: string
|
|
516
|
+
contractName: string
|
|
517
|
+
scope: string
|
|
518
|
+
markerPluginOptions:
|
|
519
|
+
- rowKey: string
|
|
520
|
+
value: string
|
|
521
|
+
label: string
|
|
522
|
+
showMarkerContractPicker: boolean
|
|
523
|
+
markerPickerPluginLabel: string
|
|
524
|
+
markerContractPickerRows:
|
|
525
|
+
- rowKey: string
|
|
526
|
+
pluginName: string
|
|
527
|
+
packageName: string
|
|
528
|
+
contractName: string
|
|
529
|
+
description: string
|
|
530
|
+
onPage: boolean
|
|
531
|
+
componentKey: string
|
|
363
532
|
showVideoAnnotationsPanel: boolean
|
|
364
533
|
videoModalOverlayPointerNone: boolean
|
|
365
534
|
videoSubmitError: string
|
|
@@ -436,9 +605,146 @@ data:
|
|
|
436
605
|
name: string
|
|
437
606
|
thumbUrl: string
|
|
438
607
|
annotationId: string
|
|
608
|
+
bindingSectionOpen: boolean
|
|
609
|
+
showBindingControls: boolean
|
|
610
|
+
showMarkerHasBindingChips: boolean
|
|
611
|
+
showMarkerBindingEmptyHint: boolean
|
|
612
|
+
markerBindingChips:
|
|
613
|
+
- rowKey: string
|
|
614
|
+
label: string
|
|
615
|
+
pluginName: string
|
|
616
|
+
packageName: string
|
|
617
|
+
contractName: string
|
|
618
|
+
scope: string
|
|
619
|
+
markerPluginOptions:
|
|
620
|
+
- rowKey: string
|
|
621
|
+
value: string
|
|
622
|
+
label: string
|
|
623
|
+
showMarkerContractPicker: boolean
|
|
624
|
+
markerPickerPluginLabel: string
|
|
625
|
+
markerContractPickerRows:
|
|
626
|
+
- rowKey: string
|
|
627
|
+
pluginName: string
|
|
628
|
+
packageName: string
|
|
629
|
+
contractName: string
|
|
630
|
+
description: string
|
|
631
|
+
onPage: boolean
|
|
632
|
+
componentKey: string
|
|
439
633
|
showSnapshotAnnotationsPanel: boolean
|
|
440
634
|
showSnapshotSubmitError: boolean
|
|
441
635
|
snapshotSubmitError: string
|
|
636
|
+
showAddPageComposer: boolean
|
|
637
|
+
addPageRoute: string
|
|
638
|
+
addPageContentMd: string
|
|
639
|
+
addPageDesignMd: string
|
|
640
|
+
addPageRouteError: string
|
|
641
|
+
showAddPageRouteError: boolean
|
|
642
|
+
addPageComposerError: string
|
|
643
|
+
showAddPageComposerError: boolean
|
|
644
|
+
addPageUploadHint: string
|
|
645
|
+
showAddPageUploadHint: boolean
|
|
646
|
+
addPageIsDynamicRoute: boolean
|
|
647
|
+
addPageShowDesignHint: boolean
|
|
648
|
+
addPageCreateDisabled: boolean
|
|
649
|
+
addPageRunningHint: string
|
|
650
|
+
showAddPageRunningHint: boolean
|
|
651
|
+
showAddPageAttachments: boolean
|
|
652
|
+
addPageAttachmentRows:
|
|
653
|
+
- rowKey: string
|
|
654
|
+
id: string
|
|
655
|
+
filename: string
|
|
656
|
+
path: string
|
|
657
|
+
role: string
|
|
658
|
+
roleLabel: string
|
|
659
|
+
showProjectSettingsModal: boolean
|
|
660
|
+
showProjectSettingsPluginsPanel: boolean
|
|
661
|
+
showProjectSettingsInstallZone: boolean
|
|
662
|
+
showProjectSettingsInstalledZone: boolean
|
|
663
|
+
projectSettingsInstallRows:
|
|
664
|
+
- rowKey: string
|
|
665
|
+
pluginName: string
|
|
666
|
+
packageName: string
|
|
667
|
+
description: string
|
|
668
|
+
buttonLabel: string
|
|
669
|
+
buttonDisabled: boolean
|
|
670
|
+
projectSettingsInstalledRows:
|
|
671
|
+
- rowKey: string
|
|
672
|
+
pluginName: string
|
|
673
|
+
packageName: string
|
|
674
|
+
description: string
|
|
675
|
+
versionLabel: string
|
|
676
|
+
setupBadge: string
|
|
677
|
+
setupBadgeClass: string
|
|
678
|
+
configFile: string
|
|
679
|
+
showConfig: boolean
|
|
680
|
+
contractSummary: string
|
|
681
|
+
showCheckForUpdateBtn: boolean
|
|
682
|
+
showRunUpdateBtn: boolean
|
|
683
|
+
updateButtonLabel: string
|
|
684
|
+
updateButtonDisabled: boolean
|
|
685
|
+
showProjectSettingsPluginsError: boolean
|
|
686
|
+
showFixInstallWithAgent: boolean
|
|
687
|
+
fixInstallPluginName: string
|
|
688
|
+
projectSettingsPluginsError: string
|
|
689
|
+
showProjectSettingsInstallProgress: boolean
|
|
690
|
+
projectSettingsInstallProgress: string
|
|
691
|
+
showProjectSettingsWixConfigWarning: boolean
|
|
692
|
+
showProjectSettingsReloadPreview: boolean
|
|
693
|
+
showProjectLocalPluginForm: boolean
|
|
694
|
+
projectLocalPluginName: string
|
|
695
|
+
projectLocalPackageName: string
|
|
696
|
+
projectLocalPath: string
|
|
697
|
+
showAddPagePluginsPanel: boolean
|
|
698
|
+
showAddPagePagePluginsZone: boolean
|
|
699
|
+
addPagePluginPickerOptions:
|
|
700
|
+
- rowKey: string
|
|
701
|
+
value: string
|
|
702
|
+
label: string
|
|
703
|
+
addPagePluginPickerValue: string
|
|
704
|
+
showAddPageContractPicker: boolean
|
|
705
|
+
addPagePickerPluginLabel: string
|
|
706
|
+
addPageContractPickerRows:
|
|
707
|
+
- rowKey: string
|
|
708
|
+
pluginName: string
|
|
709
|
+
packageName: string
|
|
710
|
+
contractName: string
|
|
711
|
+
description: string
|
|
712
|
+
onPage: boolean
|
|
713
|
+
componentKey: string
|
|
714
|
+
addPagePagePluginChips:
|
|
715
|
+
- rowKey: string
|
|
716
|
+
label: string
|
|
717
|
+
pluginName: string
|
|
718
|
+
packageName: string
|
|
719
|
+
contractName: string
|
|
720
|
+
componentKey: string
|
|
721
|
+
showAddPageHasPagePluginChips: boolean
|
|
722
|
+
showAddPagePagePluginsEmptyHint: boolean
|
|
723
|
+
showAddPageResultBanner: boolean
|
|
724
|
+
addPageResultBannerClass: string
|
|
725
|
+
addPageResultBannerMessage: string
|
|
726
|
+
showAddPageRetry: boolean
|
|
727
|
+
showAddPageFixWithAiditor: boolean
|
|
728
|
+
showAddPageFromBriefBtn: boolean
|
|
729
|
+
showBriefFillPopover: boolean
|
|
730
|
+
briefFillContextNotes: string
|
|
731
|
+
briefFillPopoverError: string
|
|
732
|
+
showBriefFillPopoverError: boolean
|
|
733
|
+
briefFillDisabled: boolean
|
|
734
|
+
briefFillInputDisabled: boolean
|
|
735
|
+
briefFillDropzoneClass: string
|
|
736
|
+
addPageBriefFillGenerateDisabled: boolean
|
|
737
|
+
briefFillStatusHint: string
|
|
738
|
+
showBriefFillStatusHint: boolean
|
|
739
|
+
showBriefFillThumbnails: boolean
|
|
740
|
+
addPageBriefFillThumbRows:
|
|
741
|
+
- rowKey: string
|
|
742
|
+
name: string
|
|
743
|
+
thumbUrl: string
|
|
744
|
+
index: number
|
|
745
|
+
removeDisabled: boolean
|
|
746
|
+
showSuggestedRouteBanner: boolean
|
|
747
|
+
suggestedRouteLabel: string
|
|
442
748
|
</script>
|
|
443
749
|
</head>
|
|
444
750
|
<body>
|
|
@@ -478,6 +784,9 @@ data:
|
|
|
478
784
|
<span class="params-loading-hint" if="paramsLoadingHint">{paramsLoadingHint}</span>
|
|
479
785
|
</div>
|
|
480
786
|
</div>
|
|
787
|
+
<button type="button" class="project-settings-btn" ref="projectSettingsBtn" disabled="isRunning">Project settings</button>
|
|
788
|
+
<button type="button" class="add-page-open-btn" ref="addPageOpenBtn" disabled="isRunning">Add Page</button>
|
|
789
|
+
<button type="button" class="add-page-from-brief-btn" ref="addPageFromBriefBtn" if="showAddPageFromBriefBtn" disabled="isRunning">Page Briefs</button>
|
|
481
790
|
</div>
|
|
482
791
|
|
|
483
792
|
<div class="preview-stack" if="isPreviewMode">
|
|
@@ -640,6 +949,36 @@ data:
|
|
|
640
949
|
data-annotation-id="{id}"
|
|
641
950
|
value="{instruction}"
|
|
642
951
|
></textarea>
|
|
952
|
+
<div class="annotation-binding">
|
|
953
|
+
<button type="button" class="annotation-binding-toggle">Components (optional)</button>
|
|
954
|
+
<div class="annotation-binding-panel" if="showBindingControls">
|
|
955
|
+
<div if="showMarkerHasBindingChips">
|
|
956
|
+
<div class="add-page-plugins-zone-title">Components on this marker</div>
|
|
957
|
+
<div class="add-page-plugin-chips">
|
|
958
|
+
<span class="add-page-plugin-chip" forEach="markerBindingChips" trackBy="rowKey">{label}<button type="button" class="add-page-plugin-chip-remove" data-marker-remove-binding="1" data-plugin="{pluginName}" data-contract="{contractName}" title="Remove from marker">×</button></span>
|
|
959
|
+
</div>
|
|
960
|
+
</div>
|
|
961
|
+
<p class="add-page-hint" if="showMarkerBindingEmptyHint">No components yet — pick a plugin below and click Add for each component you need.</p>
|
|
962
|
+
<div class="add-page-plugins-zone-title">Add component</div>
|
|
963
|
+
<label class="add-page-hint">Plugin
|
|
964
|
+
<select class="annotation-binding-plugin">
|
|
965
|
+
<option value="">— Select plugin —</option>
|
|
966
|
+
<option forEach="markerPluginOptions" trackBy="rowKey" value="{value}">{label}</option>
|
|
967
|
+
</select>
|
|
968
|
+
</label>
|
|
969
|
+
<button type="button" class="add-page-manage-link" data-marker-manage-plugins="1">Manage plugins…</button>
|
|
970
|
+
<div if="showMarkerContractPicker">
|
|
971
|
+
<p class="add-page-hint">{markerPickerPluginLabel}</p>
|
|
972
|
+
<div class="add-page-plugin-contract">
|
|
973
|
+
<div class="add-page-plugin-contract-row" forEach="markerContractPickerRows" trackBy="rowKey">
|
|
974
|
+
<span class="add-page-plugin-contract-name">{contractName}</span>
|
|
975
|
+
<button type="button" class="add-page-plugin-btn" if="!onPage" data-marker-add-contract="1" data-plugin="{pluginName}" data-package="{packageName}" data-contract="{contractName}" data-key="{componentKey}">Add</button>
|
|
976
|
+
<span class="add-page-plugin-contract-added" if="onPage">Added</span>
|
|
977
|
+
</div>
|
|
978
|
+
</div>
|
|
979
|
+
</div>
|
|
980
|
+
</div>
|
|
981
|
+
</div>
|
|
643
982
|
<div class="visual-annotation-files">
|
|
644
983
|
<div class="visual-attach-row">
|
|
645
984
|
<button type="button" class="visual-attach-btn visual-annotation-attach" data-annotation-id="{id}">
|
|
@@ -667,17 +1006,219 @@ data:
|
|
|
667
1006
|
</div>
|
|
668
1007
|
|
|
669
1008
|
</main>
|
|
1009
|
+
<div class="add-page-result-slot" ref="addPageResultBannerSlot">
|
|
1010
|
+
<div class="{addPageResultBannerClass} add-page-result-banner" if="showAddPageResultBanner">
|
|
1011
|
+
<span>{addPageResultBannerMessage}</span>
|
|
1012
|
+
<div class="add-page-result-actions">
|
|
1013
|
+
<button type="button" class="add-page-result-btn" data-add-page-retry="1" if="showAddPageRetry">Retry</button>
|
|
1014
|
+
<button type="button" class="add-page-result-btn" data-add-page-fix="1" if="showAddPageFixWithAiditor">Fix with AIditor</button>
|
|
1015
|
+
</div>
|
|
1016
|
+
</div>
|
|
1017
|
+
</div>
|
|
1018
|
+
<div class="{bottomPanelClass}">
|
|
1019
|
+
<div class="bottom-panel-resize" ref="bottomPanelResize"></div>
|
|
1020
|
+
<div class="bottom-panel-header" ref="bottomPanelHeader">
|
|
1021
|
+
<span class="bottom-panel-title">Agent output</span>
|
|
1022
|
+
<span class="bottom-panel-running" if="showBottomPanelRunning"></span>
|
|
1023
|
+
<span class="bottom-panel-spacer"></span>
|
|
1024
|
+
<button type="button" class="bottom-panel-clear" ref="bottomPanelClearBtn">Clear</button>
|
|
1025
|
+
<button type="button" class="bottom-panel-toggle" ref="bottomPanelToggleBtn">{bottomPanelToggleGlyph}</button>
|
|
1026
|
+
</div>
|
|
1027
|
+
<div class="output-panel" ref="outputScroll">
|
|
1028
|
+
<div class="{cssClass}" forEach="chunks" trackBy="text"><span if="showUserPrefix" class="chunk-user-prefix">You: </span><span if="filePath" class="chunk-tool-prefix">> {toolName} </span><a if="filePath" class="file-link" href="#" data-path="{filePath}">{filePath}</a><span if="!filePath">{text}</span></div>
|
|
1029
|
+
</div>
|
|
1030
|
+
<div class="agent-chat-row" if="showAgentChatInput">
|
|
1031
|
+
<textarea class="agent-chat-input" ref="agentChatInput" rows="1" value="{agentChatMessage}" placeholder="{agentChatPlaceholder}" disabled="agentChatInputDisabled" aria-label="Message to agent"></textarea>
|
|
1032
|
+
<button type="button" class="agent-chat-send" ref="agentChatSendBtn" disabled="agentChatSendDisabled" aria-label="Send message">Send</button>
|
|
1033
|
+
</div>
|
|
1034
|
+
</div>
|
|
1035
|
+
</div>
|
|
1036
|
+
|
|
1037
|
+
<div class="project-settings-overlay" if="showProjectSettingsModal" ref="projectSettingsOverlay" role="dialog" aria-modal="true" aria-label="Project settings">
|
|
1038
|
+
<div class="project-settings-dialog">
|
|
1039
|
+
<div class="project-settings-header">
|
|
1040
|
+
<span class="project-settings-title">Project settings</span>
|
|
1041
|
+
<button type="button" class="project-settings-close" ref="projectSettingsCloseBtn" aria-label="Close">×</button>
|
|
1042
|
+
</div>
|
|
1043
|
+
<div class="project-settings-body">
|
|
1044
|
+
<div class="add-page-plugins-zone-title">Plugins</div>
|
|
1045
|
+
<p class="add-page-hint">Install plugins once for the project. Add Page and markers use installed plugins only.</p>
|
|
1046
|
+
<div class="add-page-plugins" ref="projectPluginsPanel" if="showProjectSettingsPluginsPanel" aria-live="polite">
|
|
1047
|
+
<p class="add-page-install-live" if="showProjectSettingsInstallProgress">{projectSettingsInstallProgress}</p>
|
|
1048
|
+
<div class="add-page-install-error-row" if="showProjectSettingsPluginsError">
|
|
1049
|
+
<p class="add-page-field-error">{projectSettingsPluginsError}</p>
|
|
1050
|
+
<button type="button" class="add-page-plugin-btn add-page-plugin-btn-primary" data-project-fix-install-agent="1" data-plugin="{fixInstallPluginName}" if="showFixInstallWithAgent">Fix with agent</button>
|
|
1051
|
+
</div>
|
|
1052
|
+
<p class="add-page-plugins-warn" if="showProjectSettingsWixConfigWarning">Wix credentials missing — configure config/.wix.yaml in your IDE.</p>
|
|
1053
|
+
<p class="add-page-plugins-warn" if="showProjectSettingsReloadPreview">Refreshing project… If preview breaks, reload the preview.</p>
|
|
1054
|
+
<div if="showProjectSettingsInstallZone">
|
|
1055
|
+
<div class="add-page-plugins-zone-title">Install plugin</div>
|
|
1056
|
+
<div class="add-page-plugin-row" forEach="projectSettingsInstallRows" trackBy="rowKey">
|
|
1057
|
+
<span class="add-page-plugin-label">{pluginName} — {description}</span>
|
|
1058
|
+
<button type="button" class="add-page-plugin-btn" data-project-install-plugin="1" data-plugin="{pluginName}" disabled="buttonDisabled">{buttonLabel}</button>
|
|
1059
|
+
</div>
|
|
1060
|
+
</div>
|
|
1061
|
+
<div if="showProjectSettingsInstalledZone">
|
|
1062
|
+
<div class="add-page-plugins-zone-title">Installed plugins</div>
|
|
1063
|
+
<div class="add-page-plugin-row add-page-plugin-row-installed" forEach="projectSettingsInstalledRows" trackBy="rowKey">
|
|
1064
|
+
<span class="add-page-plugin-label" if="versionLabel">{pluginName} ({versionLabel})</span>
|
|
1065
|
+
<span class="add-page-plugin-label" if="!versionLabel">{pluginName}</span>
|
|
1066
|
+
<span class="{setupBadgeClass}" if="setupBadge">{setupBadge}</span>
|
|
1067
|
+
<button type="button" class="add-page-plugin-btn" data-project-check-update="1" data-plugin="{pluginName}" disabled="updateButtonDisabled" if="showCheckForUpdateBtn">{updateButtonLabel}</button>
|
|
1068
|
+
<button type="button" class="add-page-plugin-btn add-page-plugin-btn-primary" data-project-run-update="1" data-plugin="{pluginName}" disabled="updateButtonDisabled" if="showRunUpdateBtn">{updateButtonLabel}</button>
|
|
1069
|
+
<button type="button" class="add-page-plugin-btn" data-project-rerun-setup="1" data-plugin="{pluginName}" if="setupBadge">Re-run setup</button>
|
|
1070
|
+
<button type="button" class="add-page-plugin-btn" data-project-open-config="1" data-config="{configFile}" if="showConfig">Open config</button>
|
|
1071
|
+
<span class="add-page-hint" if="contractSummary">{contractSummary}</span>
|
|
1072
|
+
</div>
|
|
1073
|
+
</div>
|
|
1074
|
+
<div class="add-page-local-plugin-form" if="showProjectLocalPluginForm">
|
|
1075
|
+
<div class="add-page-plugins-zone-title">Add local plugin</div>
|
|
1076
|
+
<input type="text" class="project-local-name" ref="projectLocalPluginNameInput" value="{projectLocalPluginName}" placeholder="Plugin name" />
|
|
1077
|
+
<input type="text" class="project-local-package" ref="projectLocalPackageInput" value="{projectLocalPackageName}" placeholder="Package name" />
|
|
1078
|
+
<input type="text" class="project-local-path" ref="projectLocalPathInput" value="{projectLocalPath}" placeholder="Relative path" />
|
|
1079
|
+
<button type="button" class="add-page-plugin-btn" data-project-save-local-plugin="1">Save to plugin-sources.yaml</button>
|
|
1080
|
+
<button type="button" class="add-page-plugin-btn" data-project-cancel-local-plugin="1">Cancel</button>
|
|
1081
|
+
</div>
|
|
1082
|
+
<button type="button" class="add-page-plugin-btn" data-project-show-local-plugin="1" if="!showProjectLocalPluginForm">Add local plugin</button>
|
|
1083
|
+
</div>
|
|
1084
|
+
</div>
|
|
1085
|
+
</div>
|
|
1086
|
+
</div>
|
|
1087
|
+
|
|
1088
|
+
<div class="add-page-overlay" if="showAddPageComposer" ref="addPageOverlay" role="dialog" aria-modal="true" aria-label="Add Page">
|
|
1089
|
+
<div class="add-page-slideover" ref="addPageSlideover">
|
|
1090
|
+
<div class="add-page-header">
|
|
1091
|
+
<span class="add-page-title">Add Page</span>
|
|
1092
|
+
<button type="button" class="add-page-close" ref="addPageCloseBtn" aria-label="Close">×</button>
|
|
1093
|
+
</div>
|
|
1094
|
+
<div class="add-page-body">
|
|
1095
|
+
<section>
|
|
1096
|
+
<div class="add-page-section-label">Page route</div>
|
|
1097
|
+
<div class="add-page-route-row">
|
|
1098
|
+
<input type="text" class="add-page-route-input" ref="addPageRouteInput" value="{addPageRoute}" placeholder="/pricing or /products/[slug]" />
|
|
1099
|
+
<span class="add-page-route-badge" if="addPageIsDynamicRoute">Dynamic route</span>
|
|
1100
|
+
</div>
|
|
1101
|
+
<p class="add-page-field-error" if="showAddPageRouteError">{addPageRouteError}</p>
|
|
1102
|
+
<div class="add-page-suggested-route" if="showSuggestedRouteBanner">
|
|
1103
|
+
<span>Suggested route: <code>{suggestedRouteLabel}</code></span>
|
|
1104
|
+
<button type="button" class="add-page-btn add-page-btn-primary" ref="addPageSuggestedRouteApplyBtn" style="flex:0;padding:4px 10px;font-size:11px">Apply route</button>
|
|
1105
|
+
<button type="button" class="add-page-btn add-page-btn-cancel" ref="addPageSuggestedRouteDismissBtn" style="flex:0;padding:4px 10px;font-size:11px">Dismiss</button>
|
|
1106
|
+
</div>
|
|
1107
|
+
</section>
|
|
1108
|
+
<section>
|
|
1109
|
+
<div class="add-page-section-header-row">
|
|
1110
|
+
<div class="add-page-section-label">Content</div>
|
|
1111
|
+
<button type="button" class="add-page-fill-from-image-btn" ref="addPageFillContentFromImageBtn" title="Generate markdown from screenshot(s) using AI" disabled="briefFillDisabled">Fill from image</button>
|
|
1112
|
+
</div>
|
|
1113
|
+
<p class="add-page-hint">Behavior, plugins, contracts, interactions, copy.</p>
|
|
1114
|
+
<textarea class="add-page-textarea" ref="addPageContentMd" placeholder="# Pricing page - Headless: none (static marketing page) - Show 3 tiers: Starter / Pro / Enterprise">{addPageContentMd}</textarea>
|
|
1115
|
+
<div class="add-page-plugins" ref="addPagePluginsPanel" if="showAddPagePluginsPanel" aria-live="polite">
|
|
1116
|
+
<div if="showAddPagePagePluginsZone">
|
|
1117
|
+
<div class="add-page-plugins-zone-title">Plugins on this page</div>
|
|
1118
|
+
<div if="showAddPageHasPagePluginChips">
|
|
1119
|
+
<div class="add-page-plugins-zone-title">Components on this page</div>
|
|
1120
|
+
<div class="add-page-plugin-chips">
|
|
1121
|
+
<span class="add-page-plugin-chip" forEach="addPagePagePluginChips" trackBy="rowKey">{label}<button type="button" class="add-page-plugin-chip-remove" data-add-page-remove-chip="1" data-plugin="{pluginName}" data-package="{packageName}" data-contract="{contractName}" title="Remove from page">×</button></span>
|
|
1122
|
+
</div>
|
|
1123
|
+
</div>
|
|
1124
|
+
<p class="add-page-hint" if="showAddPagePagePluginsEmptyHint">No components yet — pick a plugin below and click Add on each component you need.</p>
|
|
1125
|
+
<div class="add-page-plugins-zone-title">Add component</div>
|
|
1126
|
+
<label class="add-page-hint">Plugin
|
|
1127
|
+
<select class="add-page-plugin-picker" ref="addPagePluginPicker" value="{addPagePluginPickerValue}">
|
|
1128
|
+
<option value="">— Select plugin —</option>
|
|
1129
|
+
<option forEach="addPagePluginPickerOptions" trackBy="rowKey" value="{value}">{label}</option>
|
|
1130
|
+
</select>
|
|
1131
|
+
</label>
|
|
1132
|
+
<button type="button" class="add-page-manage-link" data-add-page-manage-plugins="1">Manage plugins…</button>
|
|
1133
|
+
<div if="showAddPageContractPicker">
|
|
1134
|
+
<p class="add-page-hint">{addPagePickerPluginLabel}</p>
|
|
1135
|
+
<div class="add-page-plugin-contract">
|
|
1136
|
+
<div class="add-page-plugin-contract-row" forEach="addPageContractPickerRows" trackBy="rowKey">
|
|
1137
|
+
<span class="add-page-plugin-contract-name">{contractName}</span>
|
|
1138
|
+
<button type="button" class="add-page-plugin-btn" if="!onPage" data-add-page-add-contract="1" data-plugin="{pluginName}" data-package="{packageName}" data-contract="{contractName}" data-key="{componentKey}">Add</button>
|
|
1139
|
+
<span class="add-page-plugin-contract-added" if="onPage">Added</span>
|
|
1140
|
+
</div>
|
|
1141
|
+
</div>
|
|
1142
|
+
</div>
|
|
1143
|
+
</div>
|
|
1144
|
+
</div>
|
|
1145
|
+
</section>
|
|
1146
|
+
<section>
|
|
1147
|
+
<div class="add-page-section-header-row">
|
|
1148
|
+
<div class="add-page-section-label">Design</div>
|
|
1149
|
+
<button type="button" class="add-page-fill-from-image-btn" ref="addPageFillDesignFromImageBtn" title="Generate markdown from screenshot(s) using AI" disabled="briefFillDisabled">Fill from image</button>
|
|
1150
|
+
</div>
|
|
1151
|
+
<p class="add-page-hint">Layout, colors, typography, breakpoints.</p>
|
|
1152
|
+
<textarea class="add-page-textarea" ref="addPageDesignMd" placeholder="- Match site header from home - Hero: centered H1, muted subtitle (#888)">{addPageDesignMd}</textarea>
|
|
1153
|
+
<p class="add-page-hint" if="addPageShowDesignHint">Add a mock or screenshot for better layout fidelity.</p>
|
|
1154
|
+
</section>
|
|
1155
|
+
<section>
|
|
1156
|
+
<div class="add-page-section-label">References</div>
|
|
1157
|
+
<div class="add-page-dropzone" ref="addPageReferenceDrop">Drop reference files here</div>
|
|
1158
|
+
<button type="button" class="add-page-btn add-page-btn-cancel" ref="addPageAttachReferenceBtn" style="margin-top:8px;width:100%">Attach reference</button>
|
|
1159
|
+
<input type="file" class="add-page-hidden-file" ref="addPageReferenceFileInput" multiple />
|
|
1160
|
+
<p class="add-page-hint" if="showAddPageUploadHint">{addPageUploadHint}</p>
|
|
1161
|
+
<div class="add-page-chips" ref="addPageAttachmentsList" if="showAddPageAttachments">
|
|
1162
|
+
<div class="add-page-chip" forEach="addPageAttachmentRows" trackBy="rowKey">
|
|
1163
|
+
<span class="add-page-chip-name">{filename}</span>
|
|
1164
|
+
<select data-attachment-id="{id}" value="{role}">
|
|
1165
|
+
<option value="reference">Reference</option>
|
|
1166
|
+
<option value="asset">Asset</option>
|
|
1167
|
+
</select>
|
|
1168
|
+
<span class="add-page-chip-path">{path}</span>
|
|
1169
|
+
<button type="button" class="add-page-chip-remove" data-add-page-remove="{id}">×</button>
|
|
1170
|
+
</div>
|
|
1171
|
+
</div>
|
|
1172
|
+
</section>
|
|
1173
|
+
<p class="add-page-field-error" if="showAddPageComposerError">{addPageComposerError}</p>
|
|
1174
|
+
<p class="add-page-hint" if="showAddPageRunningHint">{addPageRunningHint}</p>
|
|
1175
|
+
</div>
|
|
1176
|
+
<div class="add-page-footer">
|
|
1177
|
+
<button type="button" class="add-page-btn add-page-btn-cancel" ref="addPageCancelBtn">Cancel</button>
|
|
1178
|
+
<button type="button" class="add-page-btn add-page-btn-primary" ref="addPageCreateBtn" disabled="addPageCreateDisabled">Create page</button>
|
|
1179
|
+
</div>
|
|
1180
|
+
<div class="add-page-brief-fill-popover" if="showBriefFillPopover" ref="addPageBriefFillPopover">
|
|
1181
|
+
<div class="add-page-brief-fill-panel">
|
|
1182
|
+
<div class="add-page-brief-fill-header">
|
|
1183
|
+
<span class="add-page-brief-fill-title">Fill from image</span>
|
|
1184
|
+
<button type="button" class="add-page-close" ref="addPageBriefFillCloseBtn" aria-label="Close">×</button>
|
|
1185
|
+
</div>
|
|
1186
|
+
<p class="add-page-hint">Add at least one screenshot. Optional notes help the AI (e.g. Image 1 = desktop, Image 2 = mobile).</p>
|
|
1187
|
+
<label class="add-page-hint">Context notes
|
|
1188
|
+
<textarea class="add-page-brief-fill-context" ref="addPageBriefFillContextNotes" placeholder="Route: /pricing Match header from home Image 2 = mobile frame" value="{briefFillContextNotes}" disabled="briefFillInputDisabled"></textarea>
|
|
1189
|
+
</label>
|
|
1190
|
+
<div class="{briefFillDropzoneClass}" ref="addPageBriefFillDropzone" tabindex="0">Paste (⌘V), drag-drop, or click to upload (max 5 images)</div>
|
|
1191
|
+
<input type="file" class="add-page-hidden-file" ref="addPageBriefFillFileInput" accept="image/*" multiple disabled="briefFillInputDisabled" />
|
|
1192
|
+
<div class="add-page-brief-fill-thumbs" ref="addPageBriefFillThumbnails" if="showBriefFillThumbnails">
|
|
1193
|
+
<div class="add-page-brief-fill-thumb" forEach="addPageBriefFillThumbRows" trackBy="rowKey">
|
|
1194
|
+
<img src="{thumbUrl}" alt="{name}" />
|
|
1195
|
+
<button type="button" class="add-page-brief-fill-thumb-remove" data-brief-fill-remove="{index}" disabled="removeDisabled">×</button>
|
|
1196
|
+
</div>
|
|
1197
|
+
</div>
|
|
1198
|
+
<p class="add-page-field-error" if="showBriefFillPopoverError">{briefFillPopoverError}</p>
|
|
1199
|
+
<p class="add-page-hint" if="showBriefFillStatusHint">{briefFillStatusHint}</p>
|
|
1200
|
+
<div class="add-page-brief-fill-actions">
|
|
1201
|
+
<button type="button" class="add-page-btn add-page-btn-cancel" ref="addPageBriefFillCancelBtn">Cancel</button>
|
|
1202
|
+
<button type="button" class="add-page-btn add-page-btn-primary" ref="addPageBriefFillGenerateBtn" disabled="addPageBriefFillGenerateDisabled" style="flex:0">Generate</button>
|
|
1203
|
+
</div>
|
|
1204
|
+
</div>
|
|
1205
|
+
</div>
|
|
1206
|
+
</div>
|
|
670
1207
|
<div class="{bottomPanelClass}">
|
|
671
1208
|
<div class="bottom-panel-resize" ref="bottomPanelResize"></div>
|
|
672
1209
|
<div class="bottom-panel-header" ref="bottomPanelHeader">
|
|
673
|
-
<span class="bottom-panel-title">
|
|
1210
|
+
<span class="bottom-panel-title">Agent output</span>
|
|
674
1211
|
<span class="bottom-panel-running" if="showBottomPanelRunning"></span>
|
|
675
1212
|
<span class="bottom-panel-spacer"></span>
|
|
676
1213
|
<button type="button" class="bottom-panel-clear" ref="bottomPanelClearBtn">Clear</button>
|
|
677
1214
|
<button type="button" class="bottom-panel-toggle" ref="bottomPanelToggleBtn">{bottomPanelToggleGlyph}</button>
|
|
678
1215
|
</div>
|
|
679
1216
|
<div class="output-panel" ref="outputScroll">
|
|
680
|
-
<div class="{cssClass}" forEach="chunks" trackBy="text"><span if="filePath" class="chunk-tool-prefix">> {toolName} </span><a if="filePath" class="file-link" href="#" data-path="{filePath}">{filePath}</a><span if="!filePath">{text}</span></div>
|
|
1217
|
+
<div class="{cssClass}" forEach="chunks" trackBy="text"><span if="showUserPrefix" class="chunk-user-prefix">You: </span><span if="filePath" class="chunk-tool-prefix">> {toolName} </span><a if="filePath" class="file-link" href="#" data-path="{filePath}">{filePath}</a><span if="!filePath">{text}</span></div>
|
|
1218
|
+
</div>
|
|
1219
|
+
<div class="agent-chat-row" if="showAgentChatInput">
|
|
1220
|
+
<textarea class="agent-chat-input" ref="agentChatInput" rows="1" value="{agentChatMessage}" placeholder="{agentChatPlaceholder}" disabled="agentChatInputDisabled" aria-label="Message to agent"></textarea>
|
|
1221
|
+
<button type="button" class="agent-chat-send" ref="agentChatSendBtn" disabled="agentChatSendDisabled" aria-label="Send message">Send</button>
|
|
681
1222
|
</div>
|
|
682
1223
|
</div>
|
|
683
1224
|
</div>
|
|
@@ -793,6 +1334,36 @@ data:
|
|
|
793
1334
|
data-annotation-id="{id}"
|
|
794
1335
|
value="{instruction}"
|
|
795
1336
|
></textarea>
|
|
1337
|
+
<div class="annotation-binding">
|
|
1338
|
+
<button type="button" class="annotation-binding-toggle">Components (optional)</button>
|
|
1339
|
+
<div class="annotation-binding-panel" if="showBindingControls">
|
|
1340
|
+
<div if="showMarkerHasBindingChips">
|
|
1341
|
+
<div class="add-page-plugins-zone-title">Components on this marker</div>
|
|
1342
|
+
<div class="add-page-plugin-chips">
|
|
1343
|
+
<span class="add-page-plugin-chip" forEach="markerBindingChips" trackBy="rowKey">{label}<button type="button" class="add-page-plugin-chip-remove" data-marker-remove-binding="1" data-plugin="{pluginName}" data-contract="{contractName}" title="Remove from marker">×</button></span>
|
|
1344
|
+
</div>
|
|
1345
|
+
</div>
|
|
1346
|
+
<p class="add-page-hint" if="showMarkerBindingEmptyHint">No components yet — pick a plugin below and click Add for each component you need.</p>
|
|
1347
|
+
<div class="add-page-plugins-zone-title">Add component</div>
|
|
1348
|
+
<label class="add-page-hint">Plugin
|
|
1349
|
+
<select class="annotation-binding-plugin">
|
|
1350
|
+
<option value="">— Select plugin —</option>
|
|
1351
|
+
<option forEach="markerPluginOptions" trackBy="rowKey" value="{value}">{label}</option>
|
|
1352
|
+
</select>
|
|
1353
|
+
</label>
|
|
1354
|
+
<button type="button" class="add-page-manage-link" data-marker-manage-plugins="1">Manage plugins…</button>
|
|
1355
|
+
<div if="showMarkerContractPicker">
|
|
1356
|
+
<p class="add-page-hint">{markerPickerPluginLabel}</p>
|
|
1357
|
+
<div class="add-page-plugin-contract">
|
|
1358
|
+
<div class="add-page-plugin-contract-row" forEach="markerContractPickerRows" trackBy="rowKey">
|
|
1359
|
+
<span class="add-page-plugin-contract-name">{contractName}</span>
|
|
1360
|
+
<button type="button" class="add-page-plugin-btn" if="!onPage" data-marker-add-contract="1" data-plugin="{pluginName}" data-package="{packageName}" data-contract="{contractName}" data-key="{componentKey}">Add</button>
|
|
1361
|
+
<span class="add-page-plugin-contract-added" if="onPage">Added</span>
|
|
1362
|
+
</div>
|
|
1363
|
+
</div>
|
|
1364
|
+
</div>
|
|
1365
|
+
</div>
|
|
1366
|
+
</div>
|
|
796
1367
|
<div class="visual-annotation-files">
|
|
797
1368
|
<div class="visual-attach-row">
|
|
798
1369
|
<button type="button" class="visual-attach-btn visual-video-annotation-attach" data-annotation-id="{id}">
|
|
@@ -929,6 +1500,36 @@ data:
|
|
|
929
1500
|
data-annotation-id="{id}"
|
|
930
1501
|
value="{instruction}"
|
|
931
1502
|
></textarea>
|
|
1503
|
+
<div class="annotation-binding">
|
|
1504
|
+
<button type="button" class="annotation-binding-toggle">Components (optional)</button>
|
|
1505
|
+
<div class="annotation-binding-panel" if="showBindingControls">
|
|
1506
|
+
<div if="showMarkerHasBindingChips">
|
|
1507
|
+
<div class="add-page-plugins-zone-title">Components on this marker</div>
|
|
1508
|
+
<div class="add-page-plugin-chips">
|
|
1509
|
+
<span class="add-page-plugin-chip" forEach="markerBindingChips" trackBy="rowKey">{label}<button type="button" class="add-page-plugin-chip-remove" data-marker-remove-binding="1" data-plugin="{pluginName}" data-contract="{contractName}" title="Remove from marker">×</button></span>
|
|
1510
|
+
</div>
|
|
1511
|
+
</div>
|
|
1512
|
+
<p class="add-page-hint" if="showMarkerBindingEmptyHint">No components yet — pick a plugin below and click Add for each component you need.</p>
|
|
1513
|
+
<div class="add-page-plugins-zone-title">Add component</div>
|
|
1514
|
+
<label class="add-page-hint">Plugin
|
|
1515
|
+
<select class="annotation-binding-plugin">
|
|
1516
|
+
<option value="">— Select plugin —</option>
|
|
1517
|
+
<option forEach="markerPluginOptions" trackBy="rowKey" value="{value}">{label}</option>
|
|
1518
|
+
</select>
|
|
1519
|
+
</label>
|
|
1520
|
+
<button type="button" class="add-page-manage-link" data-marker-manage-plugins="1">Manage plugins…</button>
|
|
1521
|
+
<div if="showMarkerContractPicker">
|
|
1522
|
+
<p class="add-page-hint">{markerPickerPluginLabel}</p>
|
|
1523
|
+
<div class="add-page-plugin-contract">
|
|
1524
|
+
<div class="add-page-plugin-contract-row" forEach="markerContractPickerRows" trackBy="rowKey">
|
|
1525
|
+
<span class="add-page-plugin-contract-name">{contractName}</span>
|
|
1526
|
+
<button type="button" class="add-page-plugin-btn" if="!onPage" data-marker-add-contract="1" data-plugin="{pluginName}" data-package="{packageName}" data-contract="{contractName}" data-key="{componentKey}">Add</button>
|
|
1527
|
+
<span class="add-page-plugin-contract-added" if="onPage">Added</span>
|
|
1528
|
+
</div>
|
|
1529
|
+
</div>
|
|
1530
|
+
</div>
|
|
1531
|
+
</div>
|
|
1532
|
+
</div>
|
|
932
1533
|
<div class="visual-annotation-files">
|
|
933
1534
|
<div class="visual-attach-row">
|
|
934
1535
|
<button type="button" class="visual-attach-btn snapshot-annotation-attach" data-annotation-id="{id}">
|