cozyclay 2.0.2 → 2.1.1

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 (262) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +17 -2
  3. package/THIRD_PARTY_NOTICES.md +8 -0
  4. package/bin/agent/agent-routes.mjs +211 -36
  5. package/bin/agent/agent-runner.mjs +98 -4
  6. package/bin/agent/codex-client.mjs +2 -1
  7. package/bin/agent/fal-contract.mjs +0 -17
  8. package/bin/agent/h3-preservation.mjs +6 -8
  9. package/bin/agent/provider-keys.mjs +1 -1
  10. package/bin/agent/providers.mjs +124 -3
  11. package/bin/agent/script-tool.mjs +74 -0
  12. package/bin/agent/session-store.mjs +5 -5
  13. package/bin/agent/studio-prompt.mjs +2 -1
  14. package/bin/agent/studio-rebase.mjs +314 -0
  15. package/bin/agent/studio-tools.mjs +21 -14
  16. package/bin/agent/supervisor.mjs +311 -0
  17. package/bin/agent/video-adapters.mjs +0 -7
  18. package/bin/codex-auth.mjs +4 -4
  19. package/bin/live/cli.mjs +23 -8
  20. package/bin/live/client.mjs +1 -1
  21. package/bin/live/studio.mjs +5 -2
  22. package/bin/mcp-runtime.mjs +2 -2
  23. package/bin/telemetry-state.mjs +3 -3
  24. package/dist/app/index.html +6 -6
  25. package/dist/assets/analytics-C9pMpW7s.js +1 -0
  26. package/dist/assets/app-B_2XB9rw.css +1 -0
  27. package/dist/assets/app-DAuvKPP8.js +4920 -0
  28. package/dist/assets/{demo-ByeYp-dY.js → demo-CvKuBgy5.js} +1 -1
  29. package/dist/assets/{first-shot-handoff-DgT28ZiV.js → first-shot-handoff-msLI71g1.js} +1 -1
  30. package/dist/assets/{landing-BaXkpFip.js → landing-ChUvB_zL.js} +1 -1
  31. package/dist/assets/scene-asset-sync-DKkpjKBV.js +19 -0
  32. package/dist/assets/{shot-prompt-CbqWcWYi.css → scene-asset-sync-DjJ_cJ2R.css} +1 -1
  33. package/dist/assets/{ticket-BcmsnHn5.js → ticket-BPk2Ni95.js} +1 -1
  34. package/dist/assets/workflow-jJRBR94Z.js +179 -0
  35. package/dist/cozyclay-package.json +1 -1
  36. package/dist/index.html +328 -222
  37. package/dist/llms.txt +14 -0
  38. package/dist/sitemap.xml +1 -1
  39. package/dist/workflow/index.html +4 -4
  40. package/mcp/LIVE-PROTOCOL.md +23 -2
  41. package/mcp/README.md +37 -2
  42. package/mcp/ardy-prompts.mjs +1 -1
  43. package/mcp/image-file.mjs +132 -0
  44. package/mcp/live-hub.mjs +2 -2
  45. package/mcp/package.json +1 -0
  46. package/mcp/runtime/package-lock.json +7 -0
  47. package/mcp/runtime/package.json +1 -0
  48. package/mcp/server.mjs +0 -6
  49. package/mcp/tool-handlers.mjs +289 -87
  50. package/package.json +11 -2
  51. package/src/App.jsx +813 -278
  52. package/src/agent-image-client.js +94 -0
  53. package/src/analytics.js +47 -3
  54. package/src/app-stage.jsx +129 -2745
  55. package/src/ardy/auto-physics.js +6 -16
  56. package/src/ardy/collision-blockers.js +3 -7
  57. package/src/ardy/fix-collisions.js +5 -35
  58. package/src/ardy/ik-drag.js +86 -5
  59. package/src/ardy/ik-key-json.js +3 -1
  60. package/src/ardy/ik.js +15 -13
  61. package/src/ardy/motion-calibration.js +1 -1
  62. package/src/ardy/npz.js +0 -8
  63. package/src/ardy/physics-panel.jsx +3 -2
  64. package/src/ardy/physics-review.js +3 -2
  65. package/src/ardy/physics-support.js +1 -1
  66. package/src/ardy/physics-surface.js +1 -1
  67. package/src/ardy/platform-fit-panel.jsx +2 -1
  68. package/src/ardy/playback.js +1 -5
  69. package/src/ardy/range-pin.js +2 -2
  70. package/src/ardy/root-drop.js +0 -1
  71. package/src/ardy/timeline.css +184 -6
  72. package/src/ardy/timeline.jsx +121 -36
  73. package/src/ardy/to-cskel27.js +0 -2
  74. package/src/ardy/waypoints.js +0 -3
  75. package/src/ardy-bridge-contract.js +281 -0
  76. package/src/asset-pane.jsx +19 -9
  77. package/src/auto-color.js +1 -1
  78. package/src/burn-in.js +1 -1
  79. package/src/camera-block.js +1 -1
  80. package/src/camera-follow.js +75 -32
  81. package/src/camera-move.js +0 -6
  82. package/src/camera-tutorial.jsx +6 -7
  83. package/src/character-kind.js +79 -0
  84. package/src/command-bus.js +76 -17
  85. package/src/commands/cast.js +31 -7
  86. package/src/commands/elements/object.js +1 -1
  87. package/src/commands/elements/shot.js +1 -1
  88. package/src/commands/elements.js +1 -1
  89. package/src/commands/export.js +3 -3
  90. package/src/commands/motion.js +2 -2
  91. package/src/commands/objects.js +105 -10
  92. package/src/commands/project.js +15 -2
  93. package/src/commands/sculpt-images.js +53 -0
  94. package/src/commands/shot.js +88 -10
  95. package/src/commands/view.js +10 -4
  96. package/src/coplanar-depth.js +216 -0
  97. package/src/cuts.js +7 -6
  98. package/src/domains/cast.js +60 -43
  99. package/src/domains/motion/motion-intent-codec.js +50 -0
  100. package/src/domains/motion/motion-range-pin-rules.js +23 -0
  101. package/src/domains/motion/motion-video-capture.js +664 -0
  102. package/src/domains/motion.js +253 -742
  103. package/src/domains/objects.js +106 -5
  104. package/src/domains/scenes.js +79 -28
  105. package/src/domains/shots.js +33 -7
  106. package/src/error-boundary.jsx +1 -1
  107. package/src/execution-telemetry.js +5 -5
  108. package/src/facing-marks.js +14 -1
  109. package/src/first-success-guide.jsx +35 -4
  110. package/src/gizmo-claim.js +3 -1
  111. package/src/grid-floor.jsx +1 -4
  112. package/src/hierarchy-model.js +48 -35
  113. package/src/hierarchy-panel.css +1 -0
  114. package/src/hierarchy-panel.jsx +54 -102
  115. package/src/history.js +0 -2
  116. package/src/i2v-motion-client.js +1 -4
  117. package/src/ime.js +6 -0
  118. package/src/keyframe-pack.js +15 -6
  119. package/src/line-edit.js +4 -4
  120. package/src/live-control.js +6 -6
  121. package/src/matte-editor.js +2 -8
  122. package/src/matte.js +0 -19
  123. package/src/mesh-graph-clone.js +16 -2
  124. package/src/mesh-sniff.js +0 -1
  125. package/src/monotone-cubic.js +40 -0
  126. package/src/motion-store.js +4 -4
  127. package/src/motion-trail.js +5 -11
  128. package/src/multimodel-ingest.js +1 -3
  129. package/src/object-catalog.jsx +7 -5
  130. package/src/object-gizmo.jsx +45 -31
  131. package/src/object-path.js +310 -67
  132. package/src/object-travel.js +224 -0
  133. package/src/otio.js +8 -3
  134. package/src/panels/CharacterTransformPanel.jsx +24 -6
  135. package/src/panels/ObjectTransformPanel.jsx +4 -3
  136. package/src/panels/PoseImagePanel.jsx +205 -0
  137. package/src/panels/PromptBlocksPanel.jsx +3 -1
  138. package/src/panels/ProxyFigurePanel.jsx +56 -0
  139. package/src/panels/ReferenceImageField.jsx +1 -1
  140. package/src/panels/RigControlPanel.jsx +24 -3
  141. package/src/panels/RigPanel.jsx +2 -1
  142. package/src/panels/SculptPanel.jsx +405 -0
  143. package/src/panels/SubjectBox.jsx +1 -1
  144. package/src/panels/SubjectsPanel.jsx +0 -2
  145. package/src/panels/VideoCapturePanel.jsx +2 -1
  146. package/src/panels/pose-image.css +42 -0
  147. package/src/panels/pose.css +3 -0
  148. package/src/panels/sculpt.css +162 -0
  149. package/src/plan-diagram.js +184 -0
  150. package/src/planview.jsx +127 -80
  151. package/src/playground.js +3 -5
  152. package/src/pose-fade.js +77 -0
  153. package/src/pose-gizmo.css +23 -0
  154. package/src/pose-gizmo.js +96 -0
  155. package/src/posestudio.jsx +134 -83
  156. package/src/project-browser.css +53 -0
  157. package/src/project-browser.jsx +49 -4
  158. package/src/project.js +55 -24
  159. package/src/props.jsx +177 -36
  160. package/src/proxy-figure.jsx +69 -0
  161. package/src/range-pin-panel.jsx +0 -1
  162. package/src/receipt-findings.js +20 -0
  163. package/src/render-passes.js +0 -1
  164. package/src/resource-status.jsx +1 -1
  165. package/src/root-path.js +48 -0
  166. package/src/route-owner.js +52 -0
  167. package/src/scene-asset-cache.js +1 -2
  168. package/src/scene-assets.js +12 -4
  169. package/src/scene-fbx.js +1 -1
  170. package/src/scene-mesh-cache.js +0 -1
  171. package/src/scene-objects.js +319 -19
  172. package/src/scenes.js +58 -9
  173. package/src/sculpt-blueprint.js +65 -0
  174. package/src/sculpt-compare.js +384 -0
  175. package/src/sculpt-geometry.js +141 -0
  176. package/src/sculpt-mode.js +168 -0
  177. package/src/sculpt-recipe.js +385 -0
  178. package/src/sculpt-run.js +351 -0
  179. package/src/sculpt-stage.jsx +221 -0
  180. package/src/settings-menu.jsx +1 -1
  181. package/src/shell/BoardSlot.jsx +341 -0
  182. package/src/shell/BottomDock.jsx +60 -16
  183. package/src/shell/CompositionGuideButton.jsx +20 -0
  184. package/src/shell/DetailsSlot.jsx +26 -6
  185. package/src/shell/MenuBar.jsx +78 -6
  186. package/src/shell/OutlinerSlot.jsx +3 -1
  187. package/src/shell/ShotPreviewHeader.jsx +17 -0
  188. package/src/shell/TopBar.jsx +18 -3
  189. package/src/shell/ViewportToolbar.jsx +36 -31
  190. package/src/shell/dock.css +239 -0
  191. package/src/shell/glass-regions.css +3 -2
  192. package/src/shell/log-store.js +4 -4
  193. package/src/shell/mode.css +20 -0
  194. package/src/shell/studio-shell-context.js +4 -1
  195. package/src/shell/viewport.css +12 -0
  196. package/src/shot-authoring.js +69 -6
  197. package/src/stable-items.js +1 -1
  198. package/src/stage-attach-frames.js +169 -0
  199. package/src/stage-canvas-rigs.jsx +402 -0
  200. package/src/stage-capture.jsx +216 -0
  201. package/src/stage-characters.jsx +302 -0
  202. package/src/stage-editor-gizmos.jsx +1229 -0
  203. package/src/stage-labels-ko.js +204 -0
  204. package/src/stage-startup-defaults.js +182 -0
  205. package/src/starter-scenes.js +1 -1
  206. package/src/storyboard.js +24 -5
  207. package/src/studio-actions.js +42 -9
  208. package/src/studio-agent-commands.js +213 -23
  209. package/src/studio-agent-context.js +11 -9
  210. package/src/studio-agent-motion.js +2 -1
  211. package/src/studio-agent-protocol.js +60 -24
  212. package/src/studio-app-binding.js +56 -23
  213. package/src/studio-contact-sheet.js +3 -3
  214. package/src/studio-elements.js +11 -2
  215. package/src/studio-geometry-facts.js +114 -0
  216. package/src/styles.css +92 -9
  217. package/src/ui-scrub.js +4 -4
  218. package/src/ui.jsx +6 -4
  219. package/src/use-asset-shelf.js +60 -0
  220. package/src/use-camera-tutorial.js +50 -0
  221. package/src/use-embed-bridge.js +12 -0
  222. package/src/use-first-success-prompt.js +7 -0
  223. package/src/use-i2v-capture-modal.js +15 -0
  224. package/src/use-sculpt-mode.js +95 -0
  225. package/src/workflow/AgentPanel.jsx +106 -18
  226. package/src/workflow/WorkflowBuilder.jsx +1 -1
  227. package/src/workflow/agent-client.js +113 -45
  228. package/src/workflow/agent-panel.css +35 -0
  229. package/src/workflow/attachment-image.js +1 -1
  230. package/src/workflow/canvas-commands.js +3 -3
  231. package/src/workflow/cozy-scene-node.js +3 -3
  232. package/src/workflow/local-workflow.js +2 -2
  233. package/src/workflow/motion-input.js +3 -3
  234. package/src/workflow/node-schema.js +1 -1
  235. package/src/workflow/scene-asset-sync.js +2 -9
  236. package/src/workflow/shot-prompt-node.js +1 -1
  237. package/src/workflow/video-contract.js +1 -1
  238. package/src/workflow/workflow-resources.js +0 -8
  239. package/src/workflow-send.js +87 -0
  240. package/tools/ardy/__pycache__/cclay_gvhmr_worker.cpython-313.pyc +0 -0
  241. package/tools/check-eslint.mjs +57 -0
  242. package/tools/check-knip.mjs +60 -0
  243. package/tools/check-loc.mjs +54 -0
  244. package/tools/demo-worker/api-client.mjs +7 -13
  245. package/tools/demo-worker/generate.mjs +2 -4
  246. package/tools/eslint-baseline.json +23 -0
  247. package/tools/gt-render/browser.mjs +23 -0
  248. package/tools/headless-studio.mjs +85 -0
  249. package/tools/kimodo/effector-constraints.mjs +4 -4
  250. package/tools/kimodo/generate.mjs +1 -1
  251. package/tools/knip-baseline.json +331 -0
  252. package/tools/loc-baseline.json +126 -0
  253. package/tools/process-supervisor.mjs +1 -1
  254. package/tools/projflow/replay.mjs +4 -4
  255. package/tools/projflow/runner.mjs +3 -3
  256. package/tools/qa/studio-control-count.mjs +2 -0
  257. package/tools/run-tests.mjs +95 -7
  258. package/dist/assets/analytics-MVZOEW8O.js +0 -1
  259. package/dist/assets/app-BxBLC6GT.js +0 -4876
  260. package/dist/assets/app-CJdxvnrl.css +0 -1
  261. package/dist/assets/shot-prompt-hN0j_O-p.js +0 -17
  262. package/dist/assets/workflow-B5XZwVfe.js +0 -179
@@ -1 +1 @@
1
- @layer legacy{.workflow-app,.app{--agent-width-default:360px;--agent-width-min:300px;--agent-width-max:560px;--agent-rail-width:36px;--agent-drawer-top:58px;--agent-bg:#14161d;--agent-bg-raised:#1a1d26;--agent-bg-sunken:#11141b;--agent-bubble:#262c44;--agent-border:#292d38;--agent-border-strong:#353a4a;--agent-border-focus:#707dce;--agent-text:#edf0fb;--agent-text-muted:#9aa2b8;--agent-text-dim:#737b92;--agent-accent:#8994ff;--agent-accent-deep:#303b71;--agent-accent-edge:#4c5aab;--agent-accent-text:#e6e9ff;--agent-ok:#4dcda4;--agent-warn:#efb064;--agent-alert:#ef759d;--agent-radius-sm:5px;--agent-radius-md:6px;--agent-radius-lg:9px;--agent-radius-pill:999px;--agent-space-1:4px;--agent-space-2:6px;--agent-space-3:8px;--agent-space-4:11px;--agent-space-5:14px;--agent-space-6:18px;--agent-font-xs:9px;--agent-font-sm:10px;--agent-font-md:11px;--agent-font-lg:12px;--agent-font-xl:14px;--agent-dot:6px;--agent-thumb:56px;--agent-shadow:0 12px 34px #0006;--agent-motion:.14s ease;--agent-track:#242836;--agent-warn-edge:#6a5a34;--agent-warn-bg:#241f16;--agent-warn-text:#f0dcb4;--agent-alert-edge:#6d3a52;--agent-alert-bg:#2a1c26;--agent-alert-text:#f3c7d8;--agent-ok-deep:#16302a}.app{--agent-drawer-top:48px}.app .agent-panel.collapsed{display:none}.agent-panel,.agent-panel *,.agent-panel :before,.agent-panel :after{box-sizing:border-box}.agent-panel.embedded{border-left:0;flex:1;width:100%;min-height:0}.agent-panel[hidden]{display:none}.agent-panel{min-height:0;width:var(--agent-width-default);border-left:1px solid var(--agent-border);background:var(--agent-bg);color:var(--agent-text);font-size:var(--agent-font-lg);flex-direction:column;flex:none;display:flex;position:relative}.agent-panel.collapsed{width:var(--agent-rail-width);padding:var(--agent-space-4) 0;align-items:center;gap:var(--agent-space-4);background:var(--agent-bg-raised)}.agent-resize{cursor:col-resize;z-index:3;background:0 0;border:0;width:7px;height:100%;padding:0;position:absolute;top:0;left:-3px}.agent-resize:after{content:"";width:1px;height:100%;transition:background var(--agent-motion);background:0 0;position:absolute;top:0;left:3px}.agent-resize:hover:after,.agent-resize:focus-visible:after,.agent-panel.resizing .agent-resize:after{background:var(--agent-accent)}.agent-rail-toggle{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);color:#c8ccdb;cursor:pointer;width:26px;height:26px;font:inherit;background:#20232d;place-items:center;display:grid}.agent-rail-toggle:hover{background:#2b3040;border-color:#606b9a}.agent-rail-label{writing-mode:vertical-rl;color:var(--agent-text-dim);font-size:var(--agent-font-sm);letter-spacing:.14em;text-transform:uppercase}.agent-status-dot{width:var(--agent-dot);height:var(--agent-dot);border-radius:var(--agent-radius-pill);background:var(--agent-text-dim);flex:none}.agent-status-dot.ok{background:var(--agent-ok);box-shadow:0 0 8px var(--agent-ok)}.agent-status-dot.busy{background:var(--agent-accent);box-shadow:0 0 8px var(--agent-accent)}.agent-status-dot.warn{background:var(--agent-warn);box-shadow:0 0 8px var(--agent-warn)}.agent-status-dot.alert{background:var(--agent-alert);box-shadow:0 0 8px var(--agent-alert)}.agent-header{align-items:center;gap:var(--agent-space-2);height:58px;padding:0 var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-chrome,#171921);flex:none;display:flex}.agent-title{font-size:var(--agent-font-xl);color:var(--agent-text-strong,#f5f7ff);margin:0;font-weight:700}.agent-header-spacer{flex:1}.agent-icon-button,.agent-ghost-button{align-items:center;gap:var(--agent-space-1);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-panel,#20232d);color:var(--agent-text-soft,#c8ccdb);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);cursor:pointer;display:flex}.agent-icon-button{padding:var(--agent-space-2)}.agent-icon-button:hover,.agent-ghost-button:hover{border-color:var(--agent-border-strong,#606b9a);background:var(--agent-hover,#2b3040);color:var(--agent-text-strong,#f5f7ff)}.agent-ghost-button[disabled],.agent-icon-button[disabled]{opacity:.45;cursor:not-allowed}.agent-overflow{position:relative}.agent-menu{top:calc(100% + var(--agent-space-2));z-index:6;min-width:148px;padding:var(--agent-space-1);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-raised);box-shadow:var(--agent-shadow);flex-direction:column;display:flex;position:absolute;right:0}.agent-menu button{border-radius:var(--agent-radius-sm);color:var(--agent-text-soft,#c8ccdb);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);text-align:left;cursor:pointer;background:0 0;border:0}.agent-menu button:hover{background:var(--agent-hover,#2b3040);color:var(--agent-text-strong,#f5f7ff)}.agent-account{align-items:center;gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-size:var(--agent-font-md);flex:none;display:flex}.agent-account-email{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.agent-plan-badge{padding:2px var(--agent-space-2);border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-pill);color:var(--agent-text-strong,#cfd5ff);font-size:var(--agent-font-xs);letter-spacing:.06em;text-transform:uppercase;flex:none}.agent-account-reset{color:var(--agent-text-dim);font-size:var(--agent-font-sm);flex:none;margin-left:auto}.agent-keys{gap:var(--agent-space-3);max-height:46%;padding:var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-bg-sunken);flex-direction:column;flex:none;display:flex;overflow-y:auto}.agent-keys-head{align-items:center;gap:var(--agent-space-2);display:flex}.agent-keys-title{color:var(--agent-text);font-size:var(--agent-font-lg);flex:1;margin:0;font-weight:600}.agent-keys-hint,.agent-keys-note{color:var(--agent-text-dim);font-size:var(--agent-font-sm);margin:0}.agent-keys-note.alert{color:var(--agent-alert)}.agent-key-row{gap:var(--agent-space-2);padding:var(--agent-space-3);border:1px solid var(--agent-border);border-radius:var(--agent-radius-md);background:var(--agent-bg-raised);flex-direction:column;display:flex}.agent-key-head{align-items:center;gap:var(--agent-space-2);display:flex}.agent-key-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--agent-text);font-size:var(--agent-font-md);flex:1;overflow:hidden}.agent-key-source{color:var(--agent-text-dim);font-size:var(--agent-font-xs);letter-spacing:.04em;flex:none}.agent-key-controls{align-items:center;gap:var(--agent-space-2);flex-wrap:wrap;display:flex}.agent-key-input{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-bg-sunken);min-width:0;color:var(--agent-text);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);outline:0;flex:120px}.agent-key-input:focus{border-color:var(--agent-border-focus)}.agent-key-input[disabled]{opacity:.55}.agent-key-save{border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-md);background:var(--agent-accent-deep);color:var(--agent-accent-text);padding:var(--agent-space-2) var(--agent-space-4);font:inherit;font-size:var(--agent-font-md);cursor:pointer;flex:none}.agent-key-save[disabled],.agent-key-remove[disabled]{opacity:.45;cursor:default}.agent-key-error{color:var(--agent-alert);font-size:var(--agent-font-sm);margin:0}.agent-transcript{gap:var(--agent-space-4);min-height:0;padding:var(--agent-space-5) var(--agent-space-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.agent-row{gap:var(--agent-space-2);flex-direction:column;display:flex}.agent-row.user{align-items:flex-end}.agent-bubble{max-width:86%;padding:var(--agent-space-3) var(--agent-space-4);border:1px solid var(--agent-border-strong,#343b58);border-radius:var(--agent-radius-lg);background:var(--agent-bubble);color:var(--agent-text);font-size:var(--agent-font-lg);white-space:pre-wrap;word-break:break-word;line-height:1.5}.agent-assistant-text{color:var(--agent-text-soft,#dfe3f2);font-size:var(--agent-font-lg);white-space:pre-wrap;word-break:break-word;line-height:1.6}.agent-caret{width:6px;color:var(--agent-accent);margin-left:2px;animation:1s steps(2,start) infinite agent-blink;display:inline-block}@keyframes agent-blink{50%{opacity:0}}.agent-card{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-lg);background:var(--agent-panel,#20232d);overflow:hidden}.agent-tool-card summary{align-items:center;gap:var(--agent-space-3);padding:var(--agent-space-3) var(--agent-space-4);color:var(--agent-text-soft,#ccd1e2);font-size:var(--agent-font-md);cursor:pointer;list-style:none;display:flex}.agent-tool-card summary::-webkit-details-marker{display:none}.agent-tool-label{flex:1}.agent-tool-badge{color:#aeb7ff;border:1px solid #6975d8;border-radius:999px;padding:1px 5px;font-size:10px;line-height:1.2}.agent-tool-elapsed{color:var(--agent-text-dim);font:var(--agent-font-sm) ui-monospace, monospace}.agent-tool-detail{padding:var(--agent-space-3) var(--agent-space-4);border-top:1px solid var(--agent-border,#2c3140);background:var(--agent-bg-sunken);color:var(--agent-text-muted,#98a0b8);font:var(--agent-font-sm) ui-monospace, monospace;white-space:pre-wrap;word-break:break-all;margin:0}.agent-card.failed{border-color:#6d3a52}.agent-error{gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);color:#f3c7d8;font-size:var(--agent-font-md);background:#2a1c26;border-top:1px solid #6d3a52;flex-direction:column;display:flex}.agent-error-actions{gap:var(--agent-space-2);display:flex}.agent-image-card figure{margin:0}.agent-image-card img{background:var(--agent-bg-sunken);cursor:zoom-in;width:100%;height:auto;display:block}.agent-image-actions{gap:var(--agent-space-2);padding:var(--agent-space-3);border-top:1px solid var(--agent-border,#2c3140);flex-wrap:wrap;display:flex}.agent-image-actions button,.agent-image-actions a{align-items:center;gap:var(--agent-space-1);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-hover,#292d39);color:var(--agent-text-soft,#ccd1e2);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;text-decoration:none;display:inline-flex}.agent-image-actions button.primary{border-color:var(--agent-accent-edge);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff)}.agent-image-actions button:hover,.agent-image-actions a:hover{border-color:var(--agent-border-strong,#606b9a)}.agent-placed{align-items:center;gap:var(--agent-space-2);padding:var(--agent-space-3);border-top:1px solid var(--agent-border,#2c3140);color:var(--agent-ok);font-size:var(--agent-font-md);display:flex}.agent-placed button{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-hover,#292d39);color:var(--agent-text-soft,#ccd1e2);padding:var(--agent-space-1) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;margin-left:auto}.agent-lightbox{z-index:40;cursor:zoom-out;background:#06070bd9;border:0;place-items:center;padding:5vh 5vw;display:grid;position:fixed;inset:0}.agent-lightbox img{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-lg);max-width:100%;max-height:90vh;box-shadow:var(--agent-shadow)}.agent-job-card,.agent-receipt-card,.agent-failure-card{gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);font-size:var(--agent-font-md);flex-direction:column;display:flex}.agent-job-head,.agent-receipt-head,.agent-failure-head{align-items:center;gap:var(--agent-space-2);color:var(--agent-text-soft,#ccd1e2);display:flex}.agent-job-label{font-weight:600}.agent-job-badge{padding:1px var(--agent-space-2);border:1px solid var(--agent-warn-edge);border-radius:var(--agent-radius-pill);background:var(--agent-warn-bg);color:var(--agent-warn);font-size:var(--agent-font-xs);letter-spacing:.06em;text-transform:uppercase;flex:none}.agent-job-progress{color:var(--agent-text-dim);font:var(--agent-font-sm) ui-monospace, monospace;flex:none;margin-left:auto}.agent-job-phase,.agent-job-outcome,.agent-failure-message,.agent-failure-recovery{color:var(--agent-text-muted);word-break:break-word;margin:0;line-height:1.5}.agent-job-bar{height:var(--agent-space-1);border-radius:var(--agent-radius-pill);background:var(--agent-track);overflow:hidden}.agent-job-bar-fill{border-radius:inherit;background:var(--agent-accent);transform-origin:0;width:100%;height:100%;transition:transform var(--agent-motion);display:block}.agent-job-limits,.agent-receipt-notes{padding-left:var(--agent-space-5);color:var(--agent-text-dim);font-size:var(--agent-font-sm);margin:0;line-height:1.5}.agent-job-actions{align-items:center;gap:var(--agent-space-2);flex-wrap:wrap;display:flex}.agent-job-actions:empty{display:none}.agent-job-accept{border-color:var(--agent-warn-edge);background:var(--agent-warn-bg);color:var(--agent-warn-text)}.agent-job-accept:hover{border-color:var(--agent-warn);color:var(--agent-warn-text);background:#33291a}.agent-job-note{align-items:center;gap:var(--agent-space-1);color:var(--agent-text-dim);font-size:var(--agent-font-sm);display:inline-flex}.agent-job-note.alert{color:var(--agent-alert)}.agent-job-card[data-job-state=installed]{background:var(--agent-ok-deep);border-color:#2f5a4b}.agent-job-card[data-job-state=review_required]{border-color:var(--agent-warn-edge);background:var(--agent-warn-bg)}.agent-job-card[data-job-state=failed],.agent-job-card[data-job-state=stale_target],.agent-job-card[data-job-state=stale_environment]{border-color:#6d3a52}.agent-receipt-summary{word-break:break-word;line-height:1.5}.agent-failure-card{background:#2a1c26;border-color:#6d3a52}.agent-failure-code{color:var(--agent-alert);font:var(--agent-font-sm) ui-monospace, monospace;letter-spacing:.04em}.agent-image-error{padding:var(--agent-space-3);color:#f3c7d8;font-size:var(--agent-font-md);background:#2a1c26;border-top:1px solid #6d3a52;margin:0;line-height:1.45}.agent-state-card{gap:var(--agent-space-3);margin:var(--agent-space-6) var(--agent-space-4);padding:var(--agent-space-6) var(--agent-space-5);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-lg);background:var(--agent-bg-raised);text-align:center;flex-direction:column;display:flex}.agent-state-card h3{font-size:var(--agent-font-xl);color:var(--agent-text-strong,#f5f7ff);margin:0;font-weight:700}.agent-state-card p{color:var(--agent-text-dim);font-size:var(--agent-font-md);margin:0;line-height:1.55}.agent-primary-button{border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-md);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff);padding:var(--agent-space-3) var(--agent-space-5);font:inherit;font-size:var(--agent-font-lg);cursor:pointer;align-self:center}.agent-primary-button:hover{background:#37437f;border-color:#6b7ad4}.agent-primary-button[disabled]{opacity:.6;cursor:progress}.agent-spinner{border:2px solid #383e55;border-top-color:var(--agent-accent);border-radius:var(--agent-radius-pill);align-self:center;width:18px;height:18px;animation:.7s linear infinite agent-spin}@keyframes agent-spin{to{transform:rotate(360deg)}}.agent-paused{gap:var(--agent-space-3);padding:var(--agent-space-4);border-radius:var(--agent-radius-lg);color:#f0dcb4;font-size:var(--agent-font-md);background:#241f16;border:1px solid #6a5a34;flex-direction:column;display:flex}.agent-paused-head{align-items:center;gap:var(--agent-space-2);font-weight:600;display:flex}.agent-paused-countdown{font:var(--agent-font-md) ui-monospace, monospace;color:var(--agent-warn);margin-left:auto}.agent-paused-actions{gap:var(--agent-space-2);display:flex}.agent-paused-actions button{border-radius:var(--agent-radius-sm);color:#f3e3c1;padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;background:#33291a;border:1px solid #6a5a34}.agent-paused-actions button:hover{border-color:var(--agent-warn)}.agent-suggestions{gap:var(--agent-space-2);margin-top:var(--agent-space-3);flex-direction:column;display:flex}.agent-chip{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill);background:var(--agent-panel,#20232d);color:#bcc2d4;padding:var(--agent-space-2) var(--agent-space-4);font:inherit;font-size:var(--agent-font-md);text-align:left;cursor:pointer}.agent-chip:hover{border-color:var(--agent-border-strong,#606b9a);background:var(--agent-hover,#2b3040);color:var(--agent-text-strong,#f5f7ff)}.agent-activity{align-items:center;gap:var(--agent-space-2);min-height:28px;padding:var(--agent-space-2) var(--agent-space-4);border-top:1px solid var(--agent-border);background:var(--agent-bg-raised);color:var(--agent-text-muted);font-size:var(--agent-font-md);flex:none;display:flex}.agent-activity+.agent-composer{border-top:0}.agent-activity-text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.agent-activity-indicator{width:var(--agent-dot);height:var(--agent-dot);border-radius:var(--agent-radius-pill);background:var(--agent-text-dim);flex:none}.agent-activity-indicator.busy{background:var(--agent-accent);box-shadow:0 0 8px var(--agent-accent);animation:1.1s ease-in-out infinite agent-pulse}.agent-activity-indicator.ok{background:var(--agent-ok)}.agent-activity-indicator.warn{background:var(--agent-warn)}.agent-activity-indicator.alert{background:var(--agent-alert)}.agent-activity[data-agent-activity-kind=idle]{color:var(--agent-text-dim)}.agent-activity[data-agent-activity=done]{color:var(--agent-ok)}.agent-activity[data-agent-activity=failed],.agent-activity[data-agent-activity=no-model]{color:var(--agent-alert)}@keyframes agent-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.65)}}.agent-composer{gap:var(--agent-space-3);padding:var(--agent-space-4);border-top:1px solid var(--agent-border);background:var(--agent-bg-raised);flex-direction:column;flex:none;display:flex}.agent-composer textarea{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-sunken);width:100%;height:68px;color:var(--agent-text);padding:var(--agent-space-3) var(--agent-space-4);font:inherit;font-size:var(--agent-font-lg);resize:none;outline:0;line-height:1.5}.agent-composer textarea:focus{border-color:var(--agent-border-focus)}.agent-composer textarea[disabled]{opacity:.55}.agent-attachments{gap:var(--agent-space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.agent-attachment{width:var(--agent-thumb);height:var(--agent-thumb);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-sunken);position:relative;overflow:hidden}.agent-attachment img{object-fit:cover;width:100%;height:100%;display:block}.agent-attachment-remove{top:var(--agent-space-1);right:var(--agent-space-1);width:var(--agent-space-5);height:var(--agent-space-5);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill);background:var(--agent-bg);color:var(--agent-text-muted);cursor:pointer;transition:color var(--agent-motion), border-color var(--agent-motion);justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.agent-attachment-remove:hover{border-color:var(--agent-alert);color:var(--agent-alert)}.agent-attachment-notice{color:var(--agent-warn);font-size:var(--agent-font-sm);margin:0}.agent-composer[data-agent-dropping=true]{box-shadow:inset 0 0 0 1px var(--agent-accent-edge);background:var(--agent-accent-deep)}.agent-bubble-attachments{justify-content:flex-end;gap:var(--agent-space-2);flex-wrap:wrap;max-width:86%;display:flex}.agent-bubble-attachments img{width:var(--agent-thumb);height:var(--agent-thumb);object-fit:cover;border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-sunken);cursor:zoom-in}.agent-composer-controls{align-items:center;gap:var(--agent-space-2);display:flex}.agent-attach-chip{align-items:center;gap:var(--agent-space-2);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill);background:var(--agent-panel,#20232d);color:#b6bcd0;padding:var(--agent-space-1) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;display:flex}.agent-attach-chip[aria-pressed=true]{border-color:var(--agent-accent-edge);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff)}.agent-attach-thumb{background:linear-gradient(135deg,#2a2f52,#5b3550);border:1px solid #454d70;border-radius:3px;width:22px;height:14px}.agent-model-select{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-bg-sunken);color:#e5e8f5;min-width:0;padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);outline:0;flex:1}.agent-model-select:focus{border-color:var(--agent-border-focus)}.agent-model-select optgroup{background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-style:normal;font-weight:600}.agent-model-select option:disabled{color:var(--agent-text-dim)}.agent-composer-picks{margin-bottom:var(--agent-space-2)}.agent-effort-select{flex:none;width:auto;max-width:42%}.agent-composer-spacer{flex:1}.agent-send{border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-md);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff);padding:var(--agent-space-2) var(--agent-space-5);font:inherit;font-size:var(--agent-font-md);cursor:pointer;flex:none}.agent-send.stop{color:#f8d5e3;background:#4a2536;border-color:#7a3f58}.agent-send[disabled]{opacity:.45;cursor:not-allowed}.agent-toast{padding:var(--agent-space-3) var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-size:var(--agent-font-md);flex:none;line-height:1.4}.agent-toast.alert{border-bottom-color:var(--agent-alert-edge);background:var(--agent-alert-bg);color:var(--agent-alert-text)}.agent-footer-hint{padding:0 var(--agent-space-4) var(--agent-space-4);background:var(--agent-bg-raised);color:var(--agent-text-dim);font-size:var(--agent-font-xs);border-top:0;flex:none;margin:0;line-height:1.4}@media (width<=1100px){.agent-panel:not(.collapsed):not(.embedded){top:var(--agent-drawer-top);z-index:20;box-shadow:var(--agent-shadow);position:fixed;bottom:0;right:0}.agent-panel.collapsed:not(.embedded){top:var(--agent-drawer-top);z-index:20;position:fixed;bottom:0;right:0}.agent-resize{display:none}}}
1
+ @layer legacy{.workflow-app,.app{--agent-width-default:360px;--agent-width-min:300px;--agent-width-max:560px;--agent-rail-width:36px;--agent-drawer-top:58px;--agent-bg:#14161d;--agent-bg-raised:#1a1d26;--agent-bg-sunken:#11141b;--agent-bubble:#262c44;--agent-border:#292d38;--agent-border-strong:#353a4a;--agent-border-focus:#707dce;--agent-text:#edf0fb;--agent-text-muted:#9aa2b8;--agent-text-dim:#737b92;--agent-accent:#8994ff;--agent-accent-deep:#303b71;--agent-accent-edge:#4c5aab;--agent-accent-text:#e6e9ff;--agent-ok:#4dcda4;--agent-warn:#efb064;--agent-alert:#ef759d;--agent-radius-sm:5px;--agent-radius-md:6px;--agent-radius-lg:9px;--agent-radius-pill:999px;--agent-space-1:4px;--agent-space-2:6px;--agent-space-3:8px;--agent-space-4:11px;--agent-space-5:14px;--agent-space-6:18px;--agent-font-xs:9px;--agent-font-sm:10px;--agent-font-md:11px;--agent-font-lg:12px;--agent-font-xl:14px;--agent-dot:6px;--agent-thumb:56px;--agent-shadow:0 12px 34px #0006;--agent-motion:.14s ease;--agent-track:#242836;--agent-warn-edge:#6a5a34;--agent-warn-bg:#241f16;--agent-warn-text:#f0dcb4;--agent-alert-edge:#6d3a52;--agent-alert-bg:#2a1c26;--agent-alert-text:#f3c7d8;--agent-ok-deep:#16302a}.app{--agent-drawer-top:48px}.app .agent-panel.collapsed{display:none}.agent-panel,.agent-panel *,.agent-panel :before,.agent-panel :after{box-sizing:border-box}.agent-panel.embedded{border-left:0;flex:1;width:100%;min-height:0}.agent-panel[hidden]{display:none}.agent-panel{min-height:0;width:var(--agent-width-default);border-left:1px solid var(--agent-border);background:var(--agent-bg);color:var(--agent-text);font-size:var(--agent-font-lg);flex-direction:column;flex:none;display:flex;position:relative}.agent-panel.collapsed{width:var(--agent-rail-width);padding:var(--agent-space-4) 0;align-items:center;gap:var(--agent-space-4);background:var(--agent-bg-raised)}.agent-resize{cursor:col-resize;z-index:3;background:0 0;border:0;width:7px;height:100%;padding:0;position:absolute;top:0;left:-3px}.agent-resize:after{content:"";width:1px;height:100%;transition:background var(--agent-motion);background:0 0;position:absolute;top:0;left:3px}.agent-resize:hover:after,.agent-resize:focus-visible:after,.agent-panel.resizing .agent-resize:after{background:var(--agent-accent)}.agent-rail-toggle{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);color:#c8ccdb;cursor:pointer;width:26px;height:26px;font:inherit;background:#20232d;place-items:center;display:grid}.agent-rail-toggle:hover{background:#2b3040;border-color:#606b9a}.agent-rail-label{writing-mode:vertical-rl;color:var(--agent-text-dim);font-size:var(--agent-font-sm);letter-spacing:.14em;text-transform:uppercase}.agent-status-dot{width:var(--agent-dot);height:var(--agent-dot);border-radius:var(--agent-radius-pill);background:var(--agent-text-dim);flex:none}.agent-status-dot.ok{background:var(--agent-ok);box-shadow:0 0 8px var(--agent-ok)}.agent-status-dot.busy{background:var(--agent-accent);box-shadow:0 0 8px var(--agent-accent)}.agent-status-dot.warn{background:var(--agent-warn);box-shadow:0 0 8px var(--agent-warn)}.agent-status-dot.alert{background:var(--agent-alert);box-shadow:0 0 8px var(--agent-alert)}.agent-header{align-items:center;gap:var(--agent-space-2);height:58px;padding:0 var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-chrome,#171921);flex:none;display:flex}.agent-title{font-size:var(--agent-font-xl);color:var(--agent-text-strong,#f5f7ff);margin:0;font-weight:700}.agent-header-spacer{flex:1}.agent-icon-button,.agent-ghost-button{align-items:center;gap:var(--agent-space-1);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-panel,#20232d);color:var(--agent-text-soft,#c8ccdb);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);cursor:pointer;display:flex}.agent-icon-button{padding:var(--agent-space-2)}.agent-icon-button:hover,.agent-ghost-button:hover{border-color:var(--agent-border-strong,#606b9a);background:var(--agent-hover,#2b3040);color:var(--agent-text-strong,#f5f7ff)}.agent-ghost-button[disabled],.agent-icon-button[disabled]{opacity:.45;cursor:not-allowed}.agent-overflow{position:relative}.agent-menu{top:calc(100% + var(--agent-space-2));z-index:6;min-width:148px;padding:var(--agent-space-1);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-raised);box-shadow:var(--agent-shadow);flex-direction:column;display:flex;position:absolute;right:0}.agent-menu button{border-radius:var(--agent-radius-sm);color:var(--agent-text-soft,#c8ccdb);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);text-align:left;cursor:pointer;background:0 0;border:0}.agent-menu button:hover{background:var(--agent-hover,#2b3040);color:var(--agent-text-strong,#f5f7ff)}.agent-account{align-items:center;gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-size:var(--agent-font-md);flex:none;display:flex}.agent-account-email{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.agent-plan-badge{padding:2px var(--agent-space-2);border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-pill);color:var(--agent-text-strong,#cfd5ff);font-size:var(--agent-font-xs);letter-spacing:.06em;text-transform:uppercase;flex:none}.agent-account-reset{color:var(--agent-text-dim);font-size:var(--agent-font-sm);flex:none;margin-left:auto}.agent-keys{gap:var(--agent-space-3);max-height:46%;padding:var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-bg-sunken);flex-direction:column;flex:none;display:flex;overflow-y:auto}.agent-keys-head{align-items:center;gap:var(--agent-space-2);display:flex}.agent-keys-title{color:var(--agent-text);font-size:var(--agent-font-lg);flex:1;margin:0;font-weight:600}.agent-keys-hint,.agent-keys-note{color:var(--agent-text-dim);font-size:var(--agent-font-sm);margin:0}.agent-keys-note.alert{color:var(--agent-alert)}.agent-key-row{gap:var(--agent-space-2);padding:var(--agent-space-3);border:1px solid var(--agent-border);border-radius:var(--agent-radius-md);background:var(--agent-bg-raised);flex-direction:column;display:flex}.agent-key-head{align-items:center;gap:var(--agent-space-2);display:flex}.agent-key-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--agent-text);font-size:var(--agent-font-md);flex:1;overflow:hidden}.agent-key-source{color:var(--agent-text-dim);font-size:var(--agent-font-xs);letter-spacing:.04em;flex:none}.agent-key-controls{align-items:center;gap:var(--agent-space-2);flex-wrap:wrap;display:flex}.agent-key-input{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-bg-sunken);min-width:0;color:var(--agent-text);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);outline:0;flex:120px}.agent-key-input:focus{border-color:var(--agent-border-focus)}.agent-key-input[disabled]{opacity:.55}.agent-key-save{border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-md);background:var(--agent-accent-deep);color:var(--agent-accent-text);padding:var(--agent-space-2) var(--agent-space-4);font:inherit;font-size:var(--agent-font-md);cursor:pointer;flex:none}.agent-key-save[disabled],.agent-key-remove[disabled]{opacity:.45;cursor:default}.agent-key-error{color:var(--agent-alert);font-size:var(--agent-font-sm);margin:0}.agent-transcript{gap:var(--agent-space-4);min-height:0;padding:var(--agent-space-5) var(--agent-space-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.agent-row{gap:var(--agent-space-2);flex-direction:column;display:flex}.agent-row.user{align-items:flex-end}.agent-bubble{max-width:86%;padding:var(--agent-space-3) var(--agent-space-4);border:1px solid var(--agent-border-strong,#343b58);border-radius:var(--agent-radius-lg);background:var(--agent-bubble);color:var(--agent-text);font-size:var(--agent-font-lg);white-space:pre-wrap;word-break:break-word;line-height:1.5}.agent-assistant-text{color:var(--agent-text-soft,#dfe3f2);font-size:var(--agent-font-lg);white-space:pre-wrap;word-break:break-word;line-height:1.6}.agent-caret{width:6px;color:var(--agent-accent);margin-left:2px;animation:1s steps(2,start) infinite agent-blink;display:inline-block}@keyframes agent-blink{50%{opacity:0}}.agent-card{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-lg);background:var(--agent-panel,#20232d);overflow:hidden}.agent-tool-card summary{align-items:center;gap:var(--agent-space-3);padding:var(--agent-space-3) var(--agent-space-4);color:var(--agent-text-soft,#ccd1e2);font-size:var(--agent-font-md);cursor:pointer;list-style:none;display:flex}.agent-tool-card summary::-webkit-details-marker{display:none}.agent-tool-label{flex:1}.agent-tool-badge{color:#aeb7ff;border:1px solid #6975d8;border-radius:999px;padding:1px 5px;font-size:10px;line-height:1.2}.agent-tool-elapsed{color:var(--agent-text-dim);font:var(--agent-font-sm) ui-monospace, monospace}.agent-tool-detail{padding:var(--agent-space-3) var(--agent-space-4);border-top:1px solid var(--agent-border,#2c3140);background:var(--agent-bg-sunken);color:var(--agent-text-muted,#98a0b8);font:var(--agent-font-sm) ui-monospace, monospace;white-space:pre-wrap;word-break:break-all;margin:0}.agent-card.failed{border-color:#6d3a52}.agent-error{gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);color:#f3c7d8;font-size:var(--agent-font-md);background:#2a1c26;border-top:1px solid #6d3a52;flex-direction:column;display:flex}.agent-error-actions{gap:var(--agent-space-2);display:flex}.agent-image-card figure{margin:0}.agent-image-card img{background:var(--agent-bg-sunken);cursor:zoom-in;width:100%;height:auto;display:block}.agent-image-actions{gap:var(--agent-space-2);padding:var(--agent-space-3);border-top:1px solid var(--agent-border,#2c3140);flex-wrap:wrap;display:flex}.agent-image-actions button,.agent-image-actions a{align-items:center;gap:var(--agent-space-1);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-hover,#292d39);color:var(--agent-text-soft,#ccd1e2);padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;text-decoration:none;display:inline-flex}.agent-image-actions button.primary{border-color:var(--agent-accent-edge);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff)}.agent-image-actions button:hover,.agent-image-actions a:hover{border-color:var(--agent-border-strong,#606b9a)}.agent-placed{align-items:center;gap:var(--agent-space-2);padding:var(--agent-space-3);border-top:1px solid var(--agent-border,#2c3140);color:var(--agent-ok);font-size:var(--agent-font-md);display:flex}.agent-placed button{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-hover,#292d39);color:var(--agent-text-soft,#ccd1e2);padding:var(--agent-space-1) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;margin-left:auto}.agent-lightbox{z-index:40;cursor:zoom-out;background:#06070bd9;border:0;place-items:center;padding:5vh 5vw;display:grid;position:fixed;inset:0}.agent-lightbox img{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-lg);max-width:100%;max-height:90vh;box-shadow:var(--agent-shadow)}.agent-job-card,.agent-receipt-card,.agent-failure-card{gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);font-size:var(--agent-font-md);flex-direction:column;display:flex}.agent-job-head,.agent-receipt-head,.agent-failure-head{align-items:center;gap:var(--agent-space-2);color:var(--agent-text-soft,#ccd1e2);display:flex}.agent-job-label{font-weight:600}.agent-job-badge{padding:1px var(--agent-space-2);border:1px solid var(--agent-warn-edge);border-radius:var(--agent-radius-pill);background:var(--agent-warn-bg);color:var(--agent-warn);font-size:var(--agent-font-xs);letter-spacing:.06em;text-transform:uppercase;flex:none}.agent-job-progress{color:var(--agent-text-dim);font:var(--agent-font-sm) ui-monospace, monospace;flex:none;margin-left:auto}.agent-job-phase,.agent-job-outcome,.agent-failure-message,.agent-failure-recovery{color:var(--agent-text-muted);word-break:break-word;margin:0;line-height:1.5}.agent-job-bar{height:var(--agent-space-1);border-radius:var(--agent-radius-pill);background:var(--agent-track);overflow:hidden}.agent-job-bar-fill{border-radius:inherit;background:var(--agent-accent);transform-origin:0;width:100%;height:100%;transition:transform var(--agent-motion);display:block}.agent-job-limits,.agent-receipt-notes{padding-left:var(--agent-space-5);color:var(--agent-text-dim);font-size:var(--agent-font-sm);margin:0;line-height:1.5}.agent-job-actions{align-items:center;gap:var(--agent-space-2);flex-wrap:wrap;display:flex}.agent-job-actions:empty{display:none}.agent-job-accept{border-color:var(--agent-warn-edge);background:var(--agent-warn-bg);color:var(--agent-warn-text)}.agent-job-accept:hover{border-color:var(--agent-warn);color:var(--agent-warn-text);background:#33291a}.agent-job-note{align-items:center;gap:var(--agent-space-1);color:var(--agent-text-dim);font-size:var(--agent-font-sm);display:inline-flex}.agent-job-note.alert{color:var(--agent-alert)}.agent-job-card[data-job-state=installed]{background:var(--agent-ok-deep);border-color:#2f5a4b}.agent-job-card[data-job-state=review_required]{border-color:var(--agent-warn-edge);background:var(--agent-warn-bg)}.agent-job-card[data-job-state=failed],.agent-job-card[data-job-state=stale_target],.agent-job-card[data-job-state=stale_environment]{border-color:#6d3a52}.agent-receipt-summary{word-break:break-word;line-height:1.5}.agent-supervisor-card{gap:var(--agent-space-2);padding:var(--agent-space-3) var(--agent-space-4);background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-size:var(--agent-font-md);border-style:dashed;flex-direction:column;display:flex}.agent-supervisor-head{align-items:center;gap:var(--agent-space-2);display:flex}.agent-supervisor-toggle{margin-left:auto}.agent-supervisor-summary{word-break:break-word;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;line-height:1.5;display:-webkit-box;overflow:hidden}.agent-supervisor-card[data-open=true] .agent-supervisor-summary{display:block}.agent-supervisor-badge.blocker{border-color:var(--agent-alert-edge);background:var(--agent-alert-bg);color:var(--agent-alert)}.agent-supervisor-fix{margin-top:var(--agent-space-1);font:var(--agent-font-sm) ui-monospace, monospace;white-space:pre-wrap;word-break:break-all;color:var(--agent-text-dim);display:block}.agent-supervisor-badge.note{border-color:var(--agent-border-strong);color:var(--agent-text-dim);background:0 0}.agent-failure-card{background:#2a1c26;border-color:#6d3a52}.agent-failure-code{color:var(--agent-alert);font:var(--agent-font-sm) ui-monospace, monospace;letter-spacing:.04em}.agent-image-error{padding:var(--agent-space-3);color:#f3c7d8;font-size:var(--agent-font-md);background:#2a1c26;border-top:1px solid #6d3a52;margin:0;line-height:1.45}.agent-state-card{gap:var(--agent-space-3);margin:var(--agent-space-6) var(--agent-space-4);padding:var(--agent-space-6) var(--agent-space-5);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-lg);background:var(--agent-bg-raised);text-align:center;flex-direction:column;display:flex}.agent-state-card h3{font-size:var(--agent-font-xl);color:var(--agent-text-strong,#f5f7ff);margin:0;font-weight:700}.agent-state-card p{color:var(--agent-text-dim);font-size:var(--agent-font-md);margin:0;line-height:1.55}.agent-primary-button{border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-md);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff);padding:var(--agent-space-3) var(--agent-space-5);font:inherit;font-size:var(--agent-font-lg);cursor:pointer;align-self:center}.agent-primary-button:hover{background:#37437f;border-color:#6b7ad4}.agent-primary-button[disabled]{opacity:.6;cursor:progress}.agent-spinner{border:2px solid #383e55;border-top-color:var(--agent-accent);border-radius:var(--agent-radius-pill);align-self:center;width:18px;height:18px;animation:.7s linear infinite agent-spin}@keyframes agent-spin{to{transform:rotate(360deg)}}.agent-paused{gap:var(--agent-space-3);padding:var(--agent-space-4);border-radius:var(--agent-radius-lg);color:#f0dcb4;font-size:var(--agent-font-md);background:#241f16;border:1px solid #6a5a34;flex-direction:column;display:flex}.agent-paused-head{align-items:center;gap:var(--agent-space-2);font-weight:600;display:flex}.agent-paused-countdown{font:var(--agent-font-md) ui-monospace, monospace;color:var(--agent-warn);margin-left:auto}.agent-paused-actions{gap:var(--agent-space-2);display:flex}.agent-paused-actions button{border-radius:var(--agent-radius-sm);color:#f3e3c1;padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;background:#33291a;border:1px solid #6a5a34}.agent-paused-actions button:hover{border-color:var(--agent-warn)}.agent-suggestions{gap:var(--agent-space-2);margin-top:var(--agent-space-3);flex-direction:column;display:flex}.agent-chip{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill);background:var(--agent-panel,#20232d);color:#bcc2d4;padding:var(--agent-space-2) var(--agent-space-4);font:inherit;font-size:var(--agent-font-md);text-align:left;cursor:pointer}.agent-chip:hover{border-color:var(--agent-border-strong,#606b9a);background:var(--agent-hover,#2b3040);color:var(--agent-text-strong,#f5f7ff)}.agent-activity{align-items:center;gap:var(--agent-space-2);min-height:28px;padding:var(--agent-space-2) var(--agent-space-4);border-top:1px solid var(--agent-border);background:var(--agent-bg-raised);color:var(--agent-text-muted);font-size:var(--agent-font-md);flex:none;display:flex}.agent-activity+.agent-composer{border-top:0}.agent-activity-text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.agent-activity-indicator{width:var(--agent-dot);height:var(--agent-dot);border-radius:var(--agent-radius-pill);background:var(--agent-text-dim);flex:none}.agent-activity-indicator.busy{background:var(--agent-accent);box-shadow:0 0 8px var(--agent-accent);animation:1.1s ease-in-out infinite agent-pulse}.agent-activity-indicator.ok{background:var(--agent-ok)}.agent-activity-indicator.warn{background:var(--agent-warn)}.agent-activity-indicator.alert{background:var(--agent-alert)}.agent-activity[data-agent-activity-kind=idle]{color:var(--agent-text-dim)}.agent-activity[data-agent-activity=done]{color:var(--agent-ok)}.agent-activity[data-agent-activity=failed],.agent-activity[data-agent-activity=no-model]{color:var(--agent-alert)}@keyframes agent-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.65)}}.agent-composer{gap:var(--agent-space-3);padding:var(--agent-space-4);border-top:1px solid var(--agent-border);background:var(--agent-bg-raised);flex-direction:column;flex:none;display:flex}.agent-composer textarea{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-sunken);width:100%;height:68px;color:var(--agent-text);padding:var(--agent-space-3) var(--agent-space-4);font:inherit;font-size:var(--agent-font-lg);resize:none;outline:0;line-height:1.5}.agent-composer textarea:focus{border-color:var(--agent-border-focus)}.agent-composer textarea[disabled]{opacity:.55}.agent-attachments{gap:var(--agent-space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.agent-attachment{width:var(--agent-thumb);height:var(--agent-thumb);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-sunken);position:relative;overflow:hidden}.agent-attachment img{object-fit:cover;width:100%;height:100%;display:block}.agent-attachment-remove{top:var(--agent-space-1);right:var(--agent-space-1);width:var(--agent-space-5);height:var(--agent-space-5);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill);background:var(--agent-bg);color:var(--agent-text-muted);cursor:pointer;transition:color var(--agent-motion), border-color var(--agent-motion);justify-content:center;align-items:center;padding:0;display:flex;position:absolute}.agent-attachment-remove:hover{border-color:var(--agent-alert);color:var(--agent-alert)}.agent-attachment-notice{color:var(--agent-warn);font-size:var(--agent-font-sm);margin:0}.agent-composer[data-agent-dropping=true]{box-shadow:inset 0 0 0 1px var(--agent-accent-edge);background:var(--agent-accent-deep)}.agent-bubble-attachments{justify-content:flex-end;gap:var(--agent-space-2);flex-wrap:wrap;max-width:86%;display:flex}.agent-bubble-attachments img{width:var(--agent-thumb);height:var(--agent-thumb);object-fit:cover;border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-md);background:var(--agent-bg-sunken);cursor:zoom-in}.agent-composer-controls{align-items:center;gap:var(--agent-space-2);display:flex}.agent-attach-chip{align-items:center;gap:var(--agent-space-2);border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-pill);background:var(--agent-panel,#20232d);color:#b6bcd0;padding:var(--agent-space-1) var(--agent-space-3);font:inherit;font-size:var(--agent-font-sm);cursor:pointer;display:flex}.agent-attach-chip[aria-pressed=true]{border-color:var(--agent-accent-edge);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff)}.agent-attach-thumb{background:linear-gradient(135deg,#2a2f52,#5b3550);border:1px solid #454d70;border-radius:3px;width:22px;height:14px}.agent-model-select{border:1px solid var(--agent-border-strong);border-radius:var(--agent-radius-sm);background:var(--agent-bg-sunken);color:#e5e8f5;min-width:0;padding:var(--agent-space-2) var(--agent-space-3);font:inherit;font-size:var(--agent-font-md);outline:0;flex:1}.agent-model-select:focus{border-color:var(--agent-border-focus)}.agent-model-select optgroup{background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-style:normal;font-weight:600}.agent-model-select option:disabled{color:var(--agent-text-dim)}.agent-model-roles{margin:var(--agent-space-1) 0 0;white-space:nowrap;text-overflow:ellipsis;color:var(--agent-text-dim);font-size:var(--agent-font-sm);overflow:hidden}.agent-composer-picks{margin-bottom:var(--agent-space-2)}.agent-effort-select{flex:none;width:auto;max-width:42%}.agent-composer-spacer{flex:1}.agent-send{border:1px solid var(--agent-accent-edge);border-radius:var(--agent-radius-md);background:var(--agent-accent-deep);color:var(--agent-text-strong,#e6e9ff);padding:var(--agent-space-2) var(--agent-space-5);font:inherit;font-size:var(--agent-font-md);cursor:pointer;flex:none}.agent-send.stop{color:#f8d5e3;background:#4a2536;border-color:#7a3f58}.agent-send[disabled]{opacity:.45;cursor:not-allowed}.agent-toast{padding:var(--agent-space-3) var(--agent-space-4);border-bottom:1px solid var(--agent-border);background:var(--agent-bg-sunken);color:var(--agent-text-muted);font-size:var(--agent-font-md);flex:none;line-height:1.4}.agent-toast.alert{border-bottom-color:var(--agent-alert-edge);background:var(--agent-alert-bg);color:var(--agent-alert-text)}.agent-footer-hint{padding:0 var(--agent-space-4) var(--agent-space-4);background:var(--agent-bg-raised);color:var(--agent-text-dim);font-size:var(--agent-font-xs);border-top:0;flex:none;margin:0;line-height:1.4}@media (width<=1100px){.agent-panel:not(.collapsed):not(.embedded){top:var(--agent-drawer-top);z-index:20;box-shadow:var(--agent-shadow);position:fixed;bottom:0;right:0}.agent-panel.collapsed:not(.embedded){top:var(--agent-drawer-top);z-index:20;position:fixed;bottom:0;right:0}.agent-resize{display:none}}}.agent-supervisor-toggle{font:inherit;border:1px solid var(--agent-border,#444);color:var(--agent-text-dim,#999);cursor:pointer;background:0 0;border-radius:6px;flex:none;padding:4px 8px;font-size:12px}.agent-supervisor-toggle.is-on{color:var(--agent-text,#ddd);border-color:var(--agent-border-focus,#6a9)}.agent-supervisor-toggle:focus-visible{outline:2px solid var(--agent-border-focus,#6a9);outline-offset:1px}
@@ -1 +1 @@
1
- import{b as e,d as t}from"./analytics-MVZOEW8O.js";import{t as n}from"./config-Bx7pYsD9.js";t();var r=3e4,i=`Usually a few minutes while the generator is online.`,a=null,o=null,s=!1,c=null,l=!1;function u(e){return typeof document>`u`?null:document.getElementById(e)}function d(e){if(typeof e!=`string`)return null;let t=e.trim();return/^[A-Za-z0-9][A-Za-z0-9._~-]{0,199}$/u.test(t)?t:null}function f(e){if(typeof e!=`string`)return null;let t=e.startsWith(`#`)?e.slice(1):e;try{return d(new URLSearchParams(t).get(`t`))}catch{return null}}function p(){try{return new URL(globalThis.location.href)}catch{return null}}function m(){let e=p();if(!e)return null;if(e.searchParams.has(`t`)){let t=d(e.searchParams.get(`t`));e.searchParams.delete(`t`);let n=e.searchParams.toString(),r=`${e.pathname}${n?`?${n}`:``}${t?`#t=${encodeURIComponent(t)}`:``}`;try{globalThis.history?.replaceState(null,``,r)}catch{}return t}return f(e.hash)}function h(e,t){let n=u(e);return n&&(n.textContent=t==null?``:String(t)),n}function g(e,t){let n=u(e);return n&&n.classList.toggle(`is-hidden`,!t),n}function _(e){h(`ticket-message`,e)}function v(e){let t=u(`ticket-prompt`);t&&(t.textContent=typeof e==`string`?e:``,t.hidden=!t.textContent)}function y(){g(`open-result`,!1),g(`copy-link`,!1),g(`ticket-result`,!1)}function b(e){h(`ticket-state-title`,`Queued`);let t=Number(e?.position);h(`ticket-position`,Number.isInteger(t)&&t>0?`You are #${t} in line`:`You are in line`);let n=Number(e?.etaMinutes),r=e?.etaMinutes!==null&&e?.etaMinutes!==void 0&&Number.isFinite(n)&&n>=0,a=typeof e?.etaText==`string`?e.etaText.trim():``;r?h(`ticket-eta`,a||`About ${n} minute${n===1?``:`s`}`):h(`ticket-eta`,/\b\d+\s+minutes?\b/iu.test(a)||/^Usually within a few hours\s+(?:—|-)\s+at most 48 hours\.$/iu.test(a)?i:a||i),y(),g(`copy-link`,!0),_(``)}function x(e=null){h(`ticket-state-title`,`Running`),h(`ticket-position`,`Your motion is being prepared.`),h(`ticket-eta`,`The generator is working on it now.`),y(),g(`copy-link`,!0),_(``)}function S(t){l||(l=!0,e(`hosted:result_opened`)),h(`ticket-state-title`,`Ready`),h(`ticket-position`,`Your motion is ready.`),h(`ticket-eta`,`Open it in CozyClay to play it back.`),y(),v(t?.promptText);let n=typeof t?.resultUrl==`string`?t.resultUrl:``,r=u(`open-result`);r&&n&&(r.href=`/app/?motion=${encodeURIComponent(n)}`,g(`open-result`,!0)),g(`copy-link`,!0),g(`ticket-result`,!0),_(``)}function C(e=null){h(`ticket-state-title`,`Could not complete`),h(`ticket-position`,`This motion failed.`),h(`ticket-eta`,`No charge was made. You can create another motion.`),y(),_(``)}function w(e=null){h(`ticket-state-title`,`Ticket unavailable`),h(`ticket-position`,`This ticket has been revoked.`),h(`ticket-eta`,`The result link is no longer active.`),y(),_(``)}function T(e=null){h(`ticket-state-title`,`Ticket expired`),h(`ticket-position`,`This link has expired.`),h(`ticket-eta`,`Results are kept for 30 days.`),y(),_(``)}function E(){h(`ticket-state-title`,`Ticket not found`),h(`ticket-position`,`We could not find that ticket.`),h(`ticket-eta`,`Check the link and try again.`),v(``),y(),_(``)}function D(e){switch(v(e?.promptText),e?.status){case`queued`:b(e);break;case`running`:x(e);break;case`done`:S(e);break;case`failed`:C(e);break;case`revoked`:case`canceled`:w(e);break;default:h(`ticket-state-title`,`Ticket unavailable`),h(`ticket-position`,`We could not read this ticket.`),h(`ticket-eta`,`Please return to the composer and try again.`),y(),_(``)}}function O(e){return e===`done`||e===`failed`||e===`revoked`||e===`canceled`}function k(){o!==null&&(globalThis.clearInterval?.(o),o=null)}function A(){o===null&&(o=globalThis.setInterval(N,r))}async function j(e){try{return await e.json()}catch{return{}}}async function M(e){return fetch(`${n}/jobs/${encodeURIComponent(e)}`,{method:`GET`,credentials:`omit`,cache:`no-store`,headers:{Accept:`application/json`}})}async function N(){if(!a||s)return null;s=!0;try{let e=await M(a),t=await j(e);if(e.status===404||t.error===`not_found`)return E(),k(),t;if(e.status===410)return t.error===`expired`?T():w(),k(),t;if(!e.ok)throw Error(t.error||`poll_failed`);return c=t,D(t),O(t.status)?k():A(),t}catch{return c||(h(`ticket-state-title`,`Connection problem`),h(`ticket-position`,`We could not reach the queue.`),h(`ticket-eta`,`We will keep trying.`)),_(`The latest update did not arrive. We will try again shortly.`),A(),null}finally{s=!1}}async function P(){let e=globalThis.location?.href??``;if(e)try{if(globalThis.navigator?.clipboard?.writeText)await globalThis.navigator.clipboard.writeText(e);else{let t=document.createElement(`input`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.opacity=`0`,document.body.append(t),t.select(),document.execCommand(`copy`),t.remove()}_(`Share link copied.`)}catch{_(`Copy was not available. Copy the link from your address bar.`)}}function F(){typeof document<`u`&&document.visibilityState===`visible`&&N()}function I(){if(u(`copy-link`)?.addEventListener(`click`,P),u(`open-result`)?.addEventListener(`click`,()=>e(`hosted:opened_in_studio`)),a){let e=u(`report-link`);e&&(e.href=`mailto:hello@cozyclay.org?subject=${encodeURIComponent(`CozyClay ticket ${a}`)}`)}document.addEventListener(`visibilitychange`,F)}function L(){if(a=m(),I(),!a){E();return}N(),A()}typeof document<`u`&&(document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,L,{once:!0}):L());
1
+ import{d as e,x as t}from"./analytics-C9pMpW7s.js";import{t as n}from"./config-Bx7pYsD9.js";e();var r=3e4,i=`Usually a few minutes while the generator is online.`,a=null,o=null,s=!1,c=null,l=!1;function u(e){return typeof document>`u`?null:document.getElementById(e)}function d(e){if(typeof e!=`string`)return null;let t=e.trim();return/^[A-Za-z0-9][A-Za-z0-9._~-]{0,199}$/u.test(t)?t:null}function f(e){if(typeof e!=`string`)return null;let t=e.startsWith(`#`)?e.slice(1):e;try{return d(new URLSearchParams(t).get(`t`))}catch{return null}}function p(){try{return new URL(globalThis.location.href)}catch{return null}}function m(){let e=p();if(!e)return null;if(e.searchParams.has(`t`)){let t=d(e.searchParams.get(`t`));e.searchParams.delete(`t`);let n=e.searchParams.toString(),r=`${e.pathname}${n?`?${n}`:``}${t?`#t=${encodeURIComponent(t)}`:``}`;try{globalThis.history?.replaceState(null,``,r)}catch{}return t}return f(e.hash)}function h(e,t){let n=u(e);return n&&(n.textContent=t==null?``:String(t)),n}function g(e,t){let n=u(e);return n&&n.classList.toggle(`is-hidden`,!t),n}function _(e){h(`ticket-message`,e)}function v(e){let t=u(`ticket-prompt`);t&&(t.textContent=typeof e==`string`?e:``,t.hidden=!t.textContent)}function y(){g(`open-result`,!1),g(`copy-link`,!1),g(`ticket-result`,!1)}function b(e){h(`ticket-state-title`,`Queued`);let t=Number(e?.position);h(`ticket-position`,Number.isInteger(t)&&t>0?`You are #${t} in line`:`You are in line`);let n=Number(e?.etaMinutes),r=e?.etaMinutes!==null&&e?.etaMinutes!==void 0&&Number.isFinite(n)&&n>=0,a=typeof e?.etaText==`string`?e.etaText.trim():``;r?h(`ticket-eta`,a||`About ${n} minute${n===1?``:`s`}`):h(`ticket-eta`,/\b\d+\s+minutes?\b/iu.test(a)||/^Usually within a few hours\s+(?:—|-)\s+at most 48 hours\.$/iu.test(a)?i:a||i),y(),g(`copy-link`,!0),_(``)}function x(e=null){h(`ticket-state-title`,`Running`),h(`ticket-position`,`Your motion is being prepared.`),h(`ticket-eta`,`The generator is working on it now.`),y(),g(`copy-link`,!0),_(``)}function S(e){l||(l=!0,t(`hosted:result_opened`)),h(`ticket-state-title`,`Ready`),h(`ticket-position`,`Your motion is ready.`),h(`ticket-eta`,`Open it in CozyClay to play it back.`),y(),v(e?.promptText);let n=typeof e?.resultUrl==`string`?e.resultUrl:``,r=u(`open-result`);r&&n&&(r.href=`/app/?motion=${encodeURIComponent(n)}`,g(`open-result`,!0)),g(`copy-link`,!0),g(`ticket-result`,!0),_(``)}function C(e=null){h(`ticket-state-title`,`Could not complete`),h(`ticket-position`,`This motion failed.`),h(`ticket-eta`,`No charge was made. You can create another motion.`),y(),_(``)}function w(e=null){h(`ticket-state-title`,`Ticket unavailable`),h(`ticket-position`,`This ticket has been revoked.`),h(`ticket-eta`,`The result link is no longer active.`),y(),_(``)}function T(e=null){h(`ticket-state-title`,`Ticket expired`),h(`ticket-position`,`This link has expired.`),h(`ticket-eta`,`Results are kept for 30 days.`),y(),_(``)}function E(){h(`ticket-state-title`,`Ticket not found`),h(`ticket-position`,`We could not find that ticket.`),h(`ticket-eta`,`Check the link and try again.`),v(``),y(),_(``)}function D(e){switch(v(e?.promptText),e?.status){case`queued`:b(e);break;case`running`:x(e);break;case`done`:S(e);break;case`failed`:C(e);break;case`revoked`:case`canceled`:w(e);break;default:h(`ticket-state-title`,`Ticket unavailable`),h(`ticket-position`,`We could not read this ticket.`),h(`ticket-eta`,`Please return to the composer and try again.`),y(),_(``)}}function O(e){return e===`done`||e===`failed`||e===`revoked`||e===`canceled`}function k(){o!==null&&(globalThis.clearInterval?.(o),o=null)}function A(){o===null&&(o=globalThis.setInterval(N,r))}async function j(e){try{return await e.json()}catch{return{}}}async function M(e){return fetch(`${n}/jobs/${encodeURIComponent(e)}`,{method:`GET`,credentials:`omit`,cache:`no-store`,headers:{Accept:`application/json`}})}async function N(){if(!a||s)return null;s=!0;try{let e=await M(a),t=await j(e);if(e.status===404||t.error===`not_found`)return E(),k(),t;if(e.status===410)return t.error===`expired`?T():w(),k(),t;if(!e.ok)throw Error(t.error||`poll_failed`);return c=t,D(t),O(t.status)?k():A(),t}catch{return c||(h(`ticket-state-title`,`Connection problem`),h(`ticket-position`,`We could not reach the queue.`),h(`ticket-eta`,`We will keep trying.`)),_(`The latest update did not arrive. We will try again shortly.`),A(),null}finally{s=!1}}async function P(){let e=globalThis.location?.href??``;if(e)try{if(globalThis.navigator?.clipboard?.writeText)await globalThis.navigator.clipboard.writeText(e);else{let t=document.createElement(`input`);t.value=e,t.setAttribute(`readonly`,``),t.style.position=`fixed`,t.style.opacity=`0`,document.body.append(t),t.select(),document.execCommand(`copy`),t.remove()}_(`Share link copied.`)}catch{_(`Copy was not available. Copy the link from your address bar.`)}}function F(){typeof document<`u`&&document.visibilityState===`visible`&&N()}function I(){if(u(`copy-link`)?.addEventListener(`click`,P),u(`open-result`)?.addEventListener(`click`,()=>t(`hosted:opened_in_studio`)),a){let e=u(`report-link`);e&&(e.href=`mailto:hello@cozyclay.org?subject=${encodeURIComponent(`CozyClay ticket ${a}`)}`)}document.addEventListener(`visibilitychange`,F)}function L(){if(a=m(),I(),!a){E();return}N(),A()}typeof document<`u`&&(document.readyState===`loading`?document.addEventListener(`DOMContentLoaded`,L,{once:!0}):L());