clay-server 5.3.0-beta.5 → 5.3.0-beta.7

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 (185) hide show
  1. package/lib/clay-product-control-tools.js +2 -2
  2. package/lib/clay-product-control.js +1 -1
  3. package/lib/clay-screen-controls.js +1 -0
  4. package/lib/clay-split-view-awareness.js +5 -2
  5. package/lib/clay-split-view-controls.js +14 -7
  6. package/lib/clay-split-view-input.js +5 -4
  7. package/lib/clay-split-view-render-proof.js +14 -4
  8. package/lib/clay-view-workspace-input.js +71 -0
  9. package/lib/project-admin-overview.js +22 -11
  10. package/lib/project-background-tasks.js +76 -0
  11. package/lib/project-connection.js +1 -1
  12. package/lib/project-file-history.js +11 -9
  13. package/lib/project-file-watch.js +26 -7
  14. package/lib/project-filesystem.js +5 -4
  15. package/lib/project-sessions.js +12 -5
  16. package/lib/project-shared-browser.js +7 -3
  17. package/lib/project-split-view-document.js +16 -2
  18. package/lib/project-split-views.js +27 -297
  19. package/lib/project-user-message.js +4 -3
  20. package/lib/project-vendor-login.js +2 -2
  21. package/lib/project-view-input.js +11 -0
  22. package/lib/project-view-pair.js +26 -0
  23. package/lib/project-view-store.js +348 -0
  24. package/lib/project-view-terminal-binding.js +16 -0
  25. package/lib/project-view-workspace.js +126 -0
  26. package/lib/project-worker-conversation.js +5 -0
  27. package/lib/project.js +1 -0
  28. package/lib/public/app.js +9 -0
  29. package/lib/public/css/contextual-clay.css +2 -1
  30. package/lib/public/css/issues.css +3 -0
  31. package/lib/public/css/mate-conversation.css +1 -1
  32. package/lib/public/css/pane.css +5 -1
  33. package/lib/public/css/pending-message-queue.css +24 -19
  34. package/lib/public/css/project-admin-overview.css +42 -13
  35. package/lib/public/css/right-workbench.css +0 -1
  36. package/lib/public/css/scheduled-tasks.css +7 -0
  37. package/lib/public/css/shared-browser.css +31 -8
  38. package/lib/public/css/split-view-layout.css +129 -10
  39. package/lib/public/css/tool-pane.css +124 -0
  40. package/lib/public/index.html +6 -6
  41. package/lib/public/modules/agent-message-bubbles.js +96 -0
  42. package/lib/public/modules/app-header.js +6 -0
  43. package/lib/public/modules/app-messages.js +26 -9
  44. package/lib/public/modules/background-task-previews.js +8 -0
  45. package/lib/public/modules/background-task-viewer.js +97 -0
  46. package/lib/public/modules/background-tasks-ui.js +34 -125
  47. package/lib/public/modules/chat-bubble-renderer.js +11 -5
  48. package/lib/public/modules/clay-file-links.js +2 -1
  49. package/lib/public/modules/clay-split-view-screen.js +6 -3
  50. package/lib/public/modules/clay-tool-pane-screen.js +35 -0
  51. package/lib/public/modules/contextual-clay-geometry.js +7 -3
  52. package/lib/public/modules/file-history-snapshot.js +12 -0
  53. package/lib/public/modules/file-pane-entrypoints.js +55 -0
  54. package/lib/public/modules/file-pane-history.js +78 -0
  55. package/lib/public/modules/file-pane-instances.js +140 -0
  56. package/lib/public/modules/file-pane-links.js +41 -0
  57. package/lib/public/modules/file-pane-render.js +48 -0
  58. package/lib/public/modules/file-pane-review.js +26 -0
  59. package/lib/public/modules/file-pane-toolbar.js +54 -0
  60. package/lib/public/modules/file-viewer-source.js +70 -0
  61. package/lib/public/modules/filebrowser.js +43 -82
  62. package/lib/public/modules/git-panel.js +5 -0
  63. package/lib/public/modules/issues.js +3 -4
  64. package/lib/public/modules/linear-panel.js +2 -2
  65. package/lib/public/modules/mate-knowledge-workbench.js +10 -6
  66. package/lib/public/modules/notifications.js +4 -1
  67. package/lib/public/modules/pane-activation.js +7 -3
  68. package/lib/public/modules/pane-binding.js +5 -1
  69. package/lib/public/modules/pane-browser-bridge.js +6 -2
  70. package/lib/public/modules/pane-browser-transport.js +110 -0
  71. package/lib/public/modules/pane-header-tooltips.js +32 -0
  72. package/lib/public/modules/pending-message-queue-drag.js +69 -0
  73. package/lib/public/modules/pending-message-queue.js +3 -33
  74. package/lib/public/modules/permission-control.js +6 -5
  75. package/lib/public/modules/plantuml-preview.js +12 -12
  76. package/lib/public/modules/project-admin-overview.js +125 -10
  77. package/lib/public/modules/project-grouping.js +9 -0
  78. package/lib/public/modules/right-workbench.js +34 -15
  79. package/lib/public/modules/scheduled-tasks.js +7 -6
  80. package/lib/public/modules/server-settings-controls.js +33 -4
  81. package/lib/public/modules/session-folder-toolbar.js +1 -1
  82. package/lib/public/modules/session-tool-item.js +86 -0
  83. package/lib/public/modules/settings-select.js +2 -1
  84. package/lib/public/modules/shared-browser-tabs.js +37 -21
  85. package/lib/public/modules/shared-browser.js +69 -9
  86. package/lib/public/modules/sidebar-projects.js +1 -10
  87. package/lib/public/modules/split-pane-renderer.js +1 -0
  88. package/lib/public/modules/split-session-empty-pane.js +47 -0
  89. package/lib/public/modules/split-view-create-menu.js +74 -65
  90. package/lib/public/modules/split-view-drag-preview.js +90 -0
  91. package/lib/public/modules/split-view-layout-client.js +1 -1
  92. package/lib/public/modules/split-view-layout-scope.js +4 -0
  93. package/lib/public/modules/split-view-picker-actions.js +71 -0
  94. package/lib/public/modules/split-view-picker-render.js +81 -0
  95. package/lib/public/modules/split-view-presentation-drag.js +36 -13
  96. package/lib/public/modules/split-view-presentation-drop.js +21 -18
  97. package/lib/public/modules/split-view-presentation-renderer.js +22 -17
  98. package/lib/public/modules/split-view-presentations.js +25 -33
  99. package/lib/public/modules/split-view-worker-activity.js +2 -2
  100. package/lib/public/modules/split-view-worker-transcript.js +70 -33
  101. package/lib/public/modules/split-view-workers.js +6 -4
  102. package/lib/public/modules/split-view.js +9 -2
  103. package/lib/public/modules/sticky-notes-browser.js +2 -2
  104. package/lib/public/modules/terminal-viewport.js +14 -0
  105. package/lib/public/modules/terminal.js +49 -23
  106. package/lib/public/modules/theme-palette.js +177 -0
  107. package/lib/public/modules/theme.js +2 -180
  108. package/lib/public/modules/tool-pane-chrome.js +88 -0
  109. package/lib/public/modules/tool-pane-drag.js +134 -0
  110. package/lib/public/modules/tool-pane-layout.js +95 -0
  111. package/lib/public/modules/tool-pane-legacy.js +60 -0
  112. package/lib/public/modules/tool-pane-tree.js +51 -0
  113. package/lib/public/modules/tools.js +5 -89
  114. package/lib/public/modules/tooltip.js +32 -6
  115. package/lib/public/modules/view-legacy-coordinates.js +16 -0
  116. package/lib/public/modules/view-mutations.js +24 -0
  117. package/lib/public/modules/view-pair-presentation.js +74 -0
  118. package/lib/public/modules/view-pair-validation.js +12 -0
  119. package/lib/public/modules/view-presentation-state.js +37 -0
  120. package/lib/public/modules/view-workspace-controller.js +210 -0
  121. package/lib/public/modules/view-workspace-state.js +103 -0
  122. package/lib/public/modules/view-workspace-validation.js +47 -0
  123. package/lib/public/modules/wireframe-workbench.js +13 -2
  124. package/lib/public/modules/workbench-layout-preference.js +12 -5
  125. package/lib/public/modules/workbench-panels.js +21 -0
  126. package/lib/public/modules/worker-message-previews.js +39 -0
  127. package/lib/public/pane-assets/app-5W6KJXK5.js +1 -0
  128. package/lib/public/pane-assets/chunk-2IJUTAB6.js +2 -0
  129. package/lib/public/pane-assets/chunk-6QFLYOVY.js +1 -0
  130. package/lib/public/pane-assets/chunk-7OVNC5HT.js +1 -0
  131. package/lib/public/pane-assets/chunk-BQN7B62H.js +3 -0
  132. package/lib/public/pane-assets/chunk-EMLN2Y7L.js +1 -0
  133. package/lib/public/pane-assets/chunk-ENPAHXLB.js +1 -0
  134. package/lib/public/pane-assets/chunk-EPBGGZRT.js +1 -0
  135. package/lib/public/pane-assets/chunk-EYTE56IA.js +1 -0
  136. package/lib/public/pane-assets/chunk-FQTNR4ZS.js +1 -0
  137. package/lib/public/pane-assets/chunk-JIV7O5GN.js +1 -0
  138. package/lib/public/pane-assets/chunk-L6LSA5WI.js +1 -0
  139. package/lib/public/pane-assets/chunk-M57UIGZV.js +1 -0
  140. package/lib/public/pane-assets/chunk-MGTFTEJP.js +1 -0
  141. package/lib/public/pane-assets/chunk-MMG6MYCN.js +1 -0
  142. package/lib/public/pane-assets/chunk-MZLMEXMW.js +1 -0
  143. package/lib/public/pane-assets/chunk-OG3E5SVA.js +166 -0
  144. package/lib/public/pane-assets/chunk-R7QVVFUG.js +1 -0
  145. package/lib/public/pane-assets/chunk-RGAFZ3T2.js +1 -0
  146. package/lib/public/pane-assets/chunk-RNDRURMF.js +1 -0
  147. package/lib/public/pane-assets/chunk-SJOT74VW.js +2 -0
  148. package/lib/public/pane-assets/chunk-SJTGHIN5.js +1 -0
  149. package/lib/public/pane-assets/chunk-SLMAFKI2.js +1 -0
  150. package/lib/public/pane-assets/chunk-U3I5KY3B.js +1 -0
  151. package/lib/public/pane-assets/chunk-UPXU2IPC.js +1 -0
  152. package/lib/public/pane-assets/chunk-VEBYD7TL.js +1 -0
  153. package/lib/public/pane-assets/chunk-VZ2OKDAO.js +1 -0
  154. package/lib/public/pane-assets/chunk-XBHYNXXT.js +1 -0
  155. package/lib/public/pane-assets/manifest.json +438 -381
  156. package/lib/public/pane-assets/style-BSKKK54Q.css +1 -0
  157. package/lib/public/style.css +1 -0
  158. package/lib/sdk-message-processor.js +5 -2
  159. package/lib/server-storage.js +27 -3
  160. package/lib/server-workbench-layout-settings.js +3 -3
  161. package/lib/server.js +4 -2
  162. package/lib/sessions.js +1 -1
  163. package/lib/split-view-layout.js +11 -7
  164. package/lib/storage-usage.js +29 -7
  165. package/lib/terminal-manager.js +2 -2
  166. package/lib/users-workbench-layout-preferences.js +14 -4
  167. package/lib/workbench-window-layout.js +30 -0
  168. package/lib/worker-message-previews.js +50 -0
  169. package/lib/ws-schema.js +1 -1
  170. package/lib/yoke/adapters/claude-worker.js +8 -0
  171. package/lib/yoke/adapters/claude.js +17 -2
  172. package/lib/yoke/claude-task-reader.js +94 -0
  173. package/lib/yoke/interface.js +1 -0
  174. package/package.json +1 -1
  175. package/lib/public/pane-assets/app-6H5S2Y3Z.js +0 -1
  176. package/lib/public/pane-assets/chunk-3QV5SDC4.js +0 -1
  177. package/lib/public/pane-assets/chunk-4FM3U3DW.js +0 -1
  178. package/lib/public/pane-assets/chunk-7GZH3FZY.js +0 -1
  179. package/lib/public/pane-assets/chunk-AGJTF5WQ.js +0 -1
  180. package/lib/public/pane-assets/chunk-DGOFGEUK.js +0 -1
  181. package/lib/public/pane-assets/chunk-I57URYSL.js +0 -1
  182. package/lib/public/pane-assets/chunk-NPKRTUNG.js +0 -2
  183. package/lib/public/pane-assets/chunk-VGA2Y3D2.js +0 -2
  184. package/lib/public/pane-assets/chunk-WKO3T75E.js +0 -167
  185. package/lib/public/pane-assets/style-TSRDU54Z.css +0 -1
@@ -0,0 +1,94 @@
1
+ // Native task inspection stays inside the process and OS identity owning the query.
2
+ var crypto = require('crypto');
3
+ function validId(value) { return typeof value === 'string' && /^[a-zA-Z0-9_-]{1,160}$/.test(value); }
4
+ function createReader(loadSdk, getQuery, dir) {
5
+ var sessionId = null, tasks = new Map(), closed = false;
6
+ function observe(event) {
7
+ if (!event) return;
8
+ if (event.session_id && !event.parent_tool_use_id) sessionId = event.session_id;
9
+ if (event.type !== 'system') return;
10
+ if (event.subtype === 'background_tasks_changed') {
11
+ tasks.forEach(function (task) { task.active = false; });
12
+ (event.tasks || []).slice(0, 128).forEach(function (task) {
13
+ if (!validId(task.task_id)) return;
14
+ var old = tasks.get(task.task_id);
15
+ if (old && String(old.run_id || '') === String(task.run_id || '') && old.task_type === task.task_type) Object.assign(old, task, { active: true });
16
+ else tasks.set(task.task_id, Object.assign({}, task, { active: true }));
17
+ });
18
+ }
19
+ if (event.subtype === 'task_notification') {
20
+ var old = tasks.get(event.task_id);
21
+ if (old && (!event.run_id || old.run_id === event.run_id)) old.active = false;
22
+ }
23
+ while (tasks.size > 128) tasks.delete(tasks.keys().next().value);
24
+ }
25
+ async function read(input) {
26
+ var task = tasks.get(input.taskId), query = getQuery(), parent = sessionId;
27
+ if (closed || !query || !task || !validId(input.taskId) || String(task.run_id || '') !== String(input.runId || '')) throw new Error('Task binding is unavailable.');
28
+ var offset = Number.isInteger(input.offset) && input.offset >= 0 && input.offset <= 10000 ? input.offset : 0;
29
+ function current() { if (closed || query !== getQuery() || parent !== sessionId || tasks.get(input.taskId) !== task) throw new Error('Task binding changed.'); }
30
+ var result;
31
+ if (task.task_type === 'local_agent') {
32
+ if (!parent || !dir) throw new Error('Task transcript is not ready.');
33
+ var sdk = await loadSdk(); current();
34
+ var agents = await sdk.listSubagents(parent, { dir: dir }); current();
35
+ // Never guess a sibling agent from its name, ordering or filesystem path.
36
+ if (agents.indexOf(task.task_id) < 0) throw new Error('Task transcript is not available yet.');
37
+ var messages = await sdk.getSubagentMessages(parent, task.task_id, { dir: dir, offset: offset, limit: 101 }); current();
38
+ result = { kind: 'agent', messages: projectMessages(messages.slice(0, 100), offset), offset: offset, hasMore: messages.length > 100, active: task.active };
39
+ } else {
40
+ if (typeof query.getTaskOutput !== 'function') throw new Error('This runtime does not expose task output.');
41
+ var output = await query.getTaskOutput(task.task_id); current();
42
+ result = { kind: 'shell', output: String(output.output || '').slice(-8192), truncated: !!output.truncated, active: task.active };
43
+ }
44
+ return result;
45
+ }
46
+ return { observe: observe, read: read, close: function () { closed = true; tasks.clear(); } };
47
+ }
48
+ function projectMessages(messages, offset) {
49
+ var rows = [], budget = 180000;
50
+ messages.forEach(function (message, index) {
51
+ var content = message.message && message.message.content;
52
+ if (typeof content === 'string') content = [{ type: 'text', text: content }];
53
+ if (!Array.isArray(content)) return;
54
+ content.slice(0, 100).forEach(function (block, blockIndex) {
55
+ if (budget <= 0) return;
56
+ var text, role = message.type === 'user' ? 'user' : 'assistant', type = block.type;
57
+ if (type === 'text') text = block.text;
58
+ else if (type === 'tool_use') { role = 'tool'; text = block.name + '\n' + JSON.stringify(block.input || {}); }
59
+ else if (type === 'tool_result') { role = 'tool'; text = typeof block.content === 'string' ? block.content : JSON.stringify(block.content || []); }
60
+ else return;
61
+ if (typeof text !== 'string') return;
62
+ text = text.slice(0, Math.min(16000, budget)); budget -= text.length;
63
+ rows.push({ role: role, text: text, recordIndex: ((offset || 0) + index) * 100 + blockIndex, recordType: type, toolName: block.name, toolId: block.id || block.tool_use_id, isError: !!block.is_error });
64
+ });
65
+ });
66
+ return rows;
67
+ }
68
+ function createRequests(worker) {
69
+ var pending = new Map();
70
+ function close() { pending.forEach(function (entry) { clearTimeout(entry.timer); entry.reject(new Error('Task connection closed.')); }); pending.clear(); }
71
+ return {
72
+ close: close,
73
+ request: function (input) {
74
+ if (pending.size >= 8) return Promise.reject(new Error('Task reader is busy.'));
75
+ return new Promise(function (resolve, reject) {
76
+ var id = crypto.randomUUID();
77
+ var timer = setTimeout(function () { pending.delete(id); reject(new Error('Task read timed out.')); }, 15000);
78
+ pending.set(id, { resolve: resolve, reject: reject, timer: timer });
79
+ try { if (worker.send({ type: 'read_background_task', requestId: id, input: input }) !== true) throw new Error('Task connection closed.'); }
80
+ catch (error) { pending.delete(id); clearTimeout(timer); reject(error); }
81
+ });
82
+ },
83
+ receive: function (message) {
84
+ var entry = pending.get(message.requestId); if (!entry) return;
85
+ pending.delete(message.requestId); clearTimeout(entry.timer);
86
+ if (message.error) entry.reject(new Error(message.error)); else entry.resolve(message.data);
87
+ }
88
+ };
89
+ }
90
+ async function respond(reader, message, send) {
91
+ try { if (!reader) throw new Error('Task query is unavailable.'); var data = await reader.read(message.input || {}); send({ type: 'background_task_response', requestId: message.requestId, data: data }); }
92
+ catch (error) { send({ type: 'background_task_response', requestId: message.requestId, error: error.message }); }
93
+ }
94
+ module.exports = { createReader: createReader, createRequests: createRequests, respond: respond, projectMessages: projectMessages };
@@ -198,6 +198,7 @@ var INITIALIZE_TIMEOUT_MS = 90000;
198
198
  * .setModel(model)
199
199
  * .setEffort(effort)
200
200
  * .setToolPolicy(policy) - "ask" | "allow-all"
201
+ * .readBackgroundTask({ taskId, runId, offset }) - optional bounded native transcript/output read
201
202
  * .stopTask(taskId)
202
203
  * .getContextUsage() - Promise<object|null>
203
204
  * .endInput() - stop accepting turns after queued input drains
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clay-server",
3
- "version": "5.3.0-beta.5",
3
+ "version": "5.3.0-beta.7",
4
4
  "description": "Self-hosted team workspace for Claude Code and Codex. Multi-user, browser-based, with persistent AI mates.",
5
5
  "bin": {
6
6
  "clay-server": "./bin/cli.js"
@@ -1 +0,0 @@
1
- import{$ as In,$a as Sr,$b as ho,Aa as nt,Ab as Wr,Ac as _o,Ba as er,Bb as zr,Bc as No,C as an,Cb as Gr,Cc as Oo,D as sn,Da as tr,Db as Kr,Dc as Ho,E as ln,Ea as nr,Eb as Yr,Ec as Fo,F as dn,Fa as rr,Fb as Qr,G as cn,Ga as or,Gb as Jr,H as un,Ha as ar,Hb as $r,I as fn,Ia as ir,Ib as Xr,J as pn,Ja as rt,Jb as Zr,K as q,Ka as sr,Kb as eo,L as mn,La as Be,Lb as to,M as gn,Ma as je,Mb as no,N as V,Na as lr,Nb as ro,O as hn,Oa as dr,Ob as oo,P as vn,Pa as cr,Q as bn,Qa as ur,Qb as ot,R as yn,Ra as fr,Rb as ao,S as Sn,Sa as pr,Sb as io,T as wn,Ta as he,Tb as so,U as kn,Ua as mr,Ub as lo,V as Cn,Va as gr,Vb as co,W as Mn,Wa as hr,Wb as uo,X as En,Xa as ve,Xb as fo,Y as Pn,Ya as vr,Yb as po,Z as xn,Za as br,Zb as mo,_ as Ln,_a as yr,_b as go,a as qt,aa as Tn,ab as wr,ac as vo,b as Vt,ba as Rn,bb as kr,bc as bo,c as Wt,ca as Dn,cb as Ue,cc as yo,d as zt,da as An,db as Cr,dc as So,e as Gt,ea as Bn,eb as Mr,ec as wo,f as Kt,fa as jn,fb as Er,fc as ko,g as Yt,ga as Un,gb as Pr,gc as Co,h as Qt,ha as _n,hb as xr,hc as Mo,i as Jt,ia as Nn,ib as Lr,ic as Eo,j as $t,ja as On,jb as Ir,jc as Po,k as Xt,ka as Hn,kb as Tr,kc as oe,la as Fn,lb as be,lc as ae,ma as tt,mb as Rr,mc as xo,na as qn,nb as _e,nc as Lo,oa as Vn,ob as Dr,oc as Io,pa as re,pb as Ar,pc as To,qa as Wn,qb as Br,qc as Ro,r as et,ra as zn,rb as jr,rc as Do,sa as Gn,sb as Ur,sc as Ao,t as Zt,ta as Kn,tb as _r,tc as Bo,ua as Yn,ub as Nr,uc as jo,v as en,va as Qn,vb as Or,w as nn,wa as Jn,wb as Hr,wc as Ne,x as rn,xa as $n,xb as Fr,y as on,ya as Xn,yb as qr,yc as at,za as Zn,zb as Vr,zc as Uo}from"./chunk-WKO3T75E.js";import{A as Ht,D as Ft,E as D,F as Q,Q as tn,c as F,d as _t,e as Nt,i as Ot,z as Ze}from"./chunk-NPKRTUNG.js";import{a as Ut,b as a,c as w}from"./chunk-DGOFGEUK.js";var ye=[];function it(){var e=a.snap(),t=e.paneDeferredBootstrap;!t||t.scheduled||!t.jobs.length||!e.connected||!e.paneReady||e.paneSuspended||(a.set({paneDeferredBootstrap:Object.assign({},t,{scheduled:!0})}),setTimeout(function(){var n=a.snap(),r=n.paneDeferredBootstrap;if(r){var o=r.jobs.slice(),i=n.connected&&n.paneReady&&!n.paneSuspended?o.shift():null;a.set({paneDeferredBootstrap:Object.assign({},r,{scheduled:!1,jobs:o})});try{if(i!==null&&ye[i]){var s=ye[i];ye[i]=null,s()}}finally{it()}}},0))}function Oe(e){if(!a.get("paneMode")){e.forEach(function(n){n()});return}var t=a.get("paneDeferredBootstrap");t||(t={jobs:[],scheduled:!1},a.subscribe(function(n,r){(n.paneReady!==r.paneReady||n.connected!==r.connected||n.paneSuspended!==r.paneSuspended)&&it()})),a.set({paneDeferredBootstrap:Object.assign({},t,{jobs:t.jobs.concat(e.map(function(n){var r=ye.length;return ye.push(n),r}))})}),it()}function qo(){Ft(),Ot(),window.addEventListener("message",function(e){var t=e.data;if(e.origin===location.origin&&t&&t.type==="clay-studio-document-update"&&t.message){var n=Nt(t.message.path);n&&n.source===e.source&&n.descriptor.token===t.token&&Fo(t.message,n);return}!t||["clay-pane-present-markdown","clay-pane-present-wireframe"].indexOf(t.type)<0||!t.message||!t.message.controlPresentation||!Ze(e,t)||!Ht(e,t)||(t.type==="clay-pane-present-markdown"?(_t(e,t,Ze(e,t)),Oo(t.message)):nn(t.message))})}var di="(max-width: 768px)",ci=["sticky-notes-toggle-btn","shared-browser-toggle-btn","terminal-toggle-btn"],ui=["shared-browser-toggle-btn","terminal-toggle-btn","sticky-notes-toggle-btn"];function Vo(e){var t=document.querySelector("#main-column > .title-bar-content .status"),n=document.querySelector("#top-bar .top-bar-actions"),r=document.getElementById("notif-center-btn");if(!(!t||!n))for(var o=e?ci:ui,i=0;i<o.length;i++){var s=document.getElementById(o[i]);s&&(e?t.appendChild(s):n.insertBefore(s,r))}}var fi=150,ie=24,Se=12,Wo=null;function zo(e,t,n){return Math.round(e.offsetWidth)+"|"+Math.round(t.offsetWidth)+"|"+Math.round(n.offsetWidth)}function Go(e){var t=document.getElementById("top-bar"),n=t&&t.querySelector(".top-bar-left-pills"),r=t&&t.querySelector(".top-bar-actions"),o=document.getElementById("cmd-palette-btn");if(!(!t||!n||!r||!o)&&t.offsetWidth&&!(!e&&Wo===zo(t,n,r))&&getComputedStyle(o).display!=="none"){for(var i=[[],["usage-compact"],["usage-compact","usage-compact-link"]],s=null,l=0;l<i.length&&!s;l++){t.classList.remove("usage-compact","usage-compact-link","search-icon"),i[l].forEach(function(P){t.classList.add(P)}),t.style.removeProperty("--top-bar-search-width"),t.style.removeProperty("--top-bar-search-left");var u=t.getBoundingClientRect().width,d=u/2,c=t.getBoundingClientRect().left,p=n.getBoundingClientRect().right-c,g=r.getBoundingClientRect().left-c,v=Math.min(d-p,g-d)-Se,y=Math.min(520,u*.4);if(2*v>=fi)s={mode:"full",width:Math.min(y,2*v),left:null,level:l};else if(g-p>=ie+2*Se){var M=p+Se+ie/2,E=g-Se-ie/2;s={mode:"icon",width:ie,left:Math.min(Math.max(d,M),E),level:l}}}s||(s={mode:"icon",width:ie,left:Math.max(n.getBoundingClientRect().right-t.getBoundingClientRect().left+Se+ie/2,0),level:i.length-1}),t.classList.toggle("search-icon",s.mode==="icon"),s.mode==="full"?t.style.setProperty("--top-bar-search-width",Math.round(s.width)+"px"):t.style.setProperty("--top-bar-search-left",Math.round(s.left)+"px"),Wo=zo(t,n,r)}}function pi(){var e=document.getElementById("top-bar");if(!(!e||typeof ResizeObserver>"u")){var t=!1,n=function(o){t||(t=!0,requestAnimationFrame(function(){t=!1,Go(o===!0)}))},r=new ResizeObserver(function(){n(!1)});r.observe(e),[".top-bar-left-pills",".top-bar-actions"].forEach(function(o){var i=e.querySelector(o);i&&r.observe(i)}),new MutationObserver(function(){n(!0)}).observe(e.querySelector(".top-bar-actions"),{childList:!0,subtree:!0,characterData:!0}),Go(!0)}}function mi(){var e=document.querySelector("#main-column > .title-bar-content"),t=document.getElementById("top-bar");if(!(!e||!t)){var n=function(){t.classList.toggle("title-bar-hidden",e.classList.contains("hidden"))};n(),new MutationObserver(n).observe(e,{attributes:!0,attributeFilter:["class"]})}}function Ko(){var e=window.matchMedia(di);Vo(e.matches),e.addEventListener("change",function(){Vo(e.matches)}),mi(),pi()}var Jo={},lt={},x=null,B=null,j=null,$o=0,Xo=[],He={},dt=null;function Yo(e){Jo[e.id]=e}function st(e,t){lt[e]=t}function Zo(e,t){var n=Jo[e];n&&(j=n,$o=0,Xo=[],dt=t||null,gi(),Fe(n.steps[0].id),B.classList.remove("hidden"),x.classList.remove("hidden"),setTimeout(function(){x.focus()},50))}function we(){B&&B.classList.add("hidden"),x&&x.classList.add("hidden");var e=dt;j=null,dt=null,e&&e()}function ea(){vi(),bi()}function gi(){x||(B=document.createElement("div"),B.className="playbook-overlay hidden",B.addEventListener("click",function(e){e.target===B&&we()}),x=document.createElement("div"),x.className="playbook-modal hidden",x.setAttribute("tabindex","-1"),x.addEventListener("keydown",function(e){e.key==="Escape"&&we()}),B.appendChild(x),document.body.appendChild(B))}function Fe(e){if(j){for(var t=null,n=0,r=0;r<j.steps.length;r++)if(j.steps[r].id===e){t=j.steps[r],n=r;break}if(t){if($o=n,Xo.push(e),t.condition&&t.branches){var o=t.condition(),i=t.branches[o]||t.branches.default;if(i){Fe(i);return}}hi(t)}}}function hi(e){for(var t=j,n=t.steps.filter(function(k){return!k.condition}).length,r=0,o=0,i=0;i<t.steps.length;i++)t.steps[i].condition||(o++,t.steps[i].id===e.id&&(r=o));var s="";s+='<div class="playbook-header">',s+='<div class="playbook-header-left">',s+='<span class="playbook-icon">'+(t.icon||"\u{1F4D6}")+"</span>",s+='<span class="playbook-title">'+se(t.title)+"</span>",s+="</div>",s+='<button class="playbook-close" title="Close">&times;</button>',s+="</div>",s+='<div class="playbook-progress">';for(var l=0;l<n;l++){var u="playbook-progress-dot";l+1<r?u+=" done":l+1===r&&(u+=" active"),s+='<span class="'+u+'"></span>'}s+="</div>",s+='<div class="playbook-body">',s+='<h2 class="playbook-step-title">'+se(e.title)+"</h2>";var d=typeof e.body=="function"?e.body():e.body||"";if(s+='<div class="playbook-step-body">'+d+"</div>",e.note&&(s+='<div class="playbook-step-note">'+se(e.note)+"</div>"),s+="</div>",e.actions&&e.actions.length>0){s+='<div class="playbook-actions">';for(var c=0;c<e.actions.length;c++){var p=e.actions[c],g="playbook-btn";c===0?g+=" playbook-btn-primary":g+=" playbook-btn-secondary",s+='<button class="'+g+'" data-action="'+(p.action||"")+'" data-next="'+(p.next||"")+'">'+se(p.label)+"</button>"}s+="</div>"}x.innerHTML=s,D();var v=x.querySelector(".playbook-close");v&&v.addEventListener("click",we);for(var y=x.querySelectorAll(".playbook-btn"),M=0;M<y.length;M++)(function(k){k.addEventListener("click",function(){var A=k.dataset.action,h=k.dataset.next;A&&lt[A]?(k.disabled=!0,k.textContent+="...",lt[A](function(){h?Fe(h):(Qo(j.id),we())})):h?Fe(h):(Qo(j.id),we())})})(y[M]);for(var E=x.querySelectorAll("[data-copy-url]"),P=0;P<E.length;P++)(function(k){k.addEventListener("click",function(A){A.stopPropagation();var h=k.dataset.copyUrl;navigator.clipboard.writeText(h).then(function(){k.textContent="Copied!",setTimeout(function(){k.textContent="Copy"},1500)})})})(E[P])}function Qo(e){He[e]=!0;try{localStorage.setItem("clay-playbooks-done",JSON.stringify(He))}catch{}}function vi(){try{var e=JSON.parse(localStorage.getItem("clay-playbooks-done")||"{}");He=e||{}}catch{He={}}}function bi(){if(Yo({id:"push-notifications",title:"Push Notifications",icon:"\u{1F514}",description:"Get notified when Claude finishes a long task",tipMatch:function(t){return t.indexOf("Push notification")!==-1},steps:[{id:"intro",title:"Never miss a response",body:"When Claude is working on a long task, you can walk away and get a push notification the moment it's done. Works even when Clay is in the background.",actions:[{label:"Enable notifications",action:"notif_request",next:"check_perm"},{label:"Not now",next:""}]},{id:"check_perm",condition:function(){return typeof Notification>"u"?"unsupported":Notification.permission},branches:{granted:"test",denied:"denied",default:"denied",unsupported:"unsupported"}},{id:"test",title:"Let's test it!",body:"Click below to send a test notification. You should see it pop up from your system.",actions:[{label:"Send test notification",action:"notif_test",next:"check_test"},{label:"Skip",next:"done"}]},{id:"check_test",title:"Did you see it?",body:"A notification should have appeared from your system just now.",actions:[{label:"Yes, it worked!",next:"done"},{label:"No, nothing appeared",next:"troubleshoot"}]},{id:"troubleshoot",title:"Troubleshooting",body:function(){var t=navigator.platform&&navigator.platform.indexOf("Mac")!==-1,n="your browser",r=navigator.userAgent||"";r.indexOf("Arc")!==-1?n="Arc":r.indexOf("Edg/")!==-1?n="Edge":r.indexOf("Firefox")!==-1?n="Firefox":r.indexOf("Chrome")!==-1?n="Chrome":r.indexOf("Safari")!==-1&&(n="Safari");var o=location.protocol==="https:"&&location.hostname!=="localhost"&&location.hostname!=="127.0.0.1",i="The browser says permission is granted, but the notification didn't show.<br><br>";return o&&(i+="\u{1F512} <strong>Untrusted certificate?</strong><br>If you're using a self-signed or untrusted TLS certificate, some browsers silently block notifications even on HTTPS.<br>Run <strong>mkcert -install</strong> on the server to trust the root CA, or add the certificate to your system keychain as trusted.<br><br>"),i+="<strong>Also check your OS notification settings:</strong><br>",t?i+="<strong>1.</strong> Open <strong>System Settings \u2192 Notifications</strong><br><strong>2.</strong> Find <strong>"+n+"</strong> in the list<br><strong>3.</strong> Make sure <strong>Allow Notifications</strong> is turned on<br><strong>4.</strong> Check that <strong>Do Not Disturb</strong> / Focus mode is off<br>":i+="<strong>1.</strong> Make sure notifications are enabled for <strong>"+n+"</strong><br><strong>2.</strong> Check that Do Not Disturb / Focus mode is off<br>",i+="<br>After adjusting, come back and try again.",i},actions:[{label:"Try again",action:"notif_test",next:"check_test"},{label:"I'll fix it later",next:"done"}]},{id:"denied",title:"Permission needed",body:function(){var t=!window.isSecureContext||location.protocol==="http:"&&location.hostname!=="localhost"&&location.hostname!=="127.0.0.1"&&location.hostname!=="[::1]";if(t)return"\u26A0\uFE0F <strong>Insecure context detected.</strong><br><br>Notifications require a <strong>secure context</strong> (HTTPS or localhost). You're accessing Clay over <strong>"+location.protocol+"//"+location.hostname+"</strong>, so the browser automatically blocks notifications.<br><br><strong>How to fix:</strong><br><strong>1.</strong> Access Clay via <strong>https://</strong> (set up a TLS certificate)<br><strong>2.</strong> Or access via <strong>localhost:"+location.port+"</strong> instead of an IP address<br>";var n="chrome://settings/content/notifications",r=navigator.userAgent||"";return r.indexOf("Firefox")!==-1?n="about:preferences#privacy":r.indexOf("Edg/")!==-1?n="edge://settings/content/notifications":r.indexOf("Arc")!==-1&&(n="arc://settings/content/notifications"),'Your browser blocked the notification permission.<br><br><strong>1.</strong> Click the lock icon in the address bar<br><strong>2.</strong> Find "Notifications" and set it to "Allow"<br><strong>3.</strong> Reload the page<br><br>Or paste this into your address bar:<br><div style="display:flex;align-items:center;gap:6px;margin-top:6px"><code style="font-size:12px;color:var(--accent);flex:1;user-select:all">'+n+'</code><button class="playbook-btn-secondary" style="padding:3px 8px;font-size:11px" data-copy-url="'+n+'">Copy</button></div>'},actions:[{label:"Got it",next:""}]},{id:"unsupported",title:"Not supported",body:"Your browser doesn't support notifications. Try Chrome, Edge, or Firefox for the best experience.",actions:[{label:"Got it",next:""}]},{id:"done",title:"All set! \u{1F389}",body:"You'll now get a notification whenever Claude finishes processing. This works even when Clay is minimized or in another tab.",note:"You can toggle notifications anytime from the header bar.",actions:[{label:"Done",next:""}]}]}),st("notif_request",function(t){if(typeof Notification>"u"){t();return}Notification.requestPermission().then(function(n){if(n==="granted")try{localStorage.setItem("notif-alert","1");var r=document.getElementById("notif-toggle-alert");r&&(r.checked=!0)}catch{}t()}).catch(function(){t()})}),st("notif_test",function(t){if(typeof Notification>"u"){t();return}if(Notification.permission!=="granted"){Notification.requestPermission().then(function(n){n==="granted"?e(t):t()}).catch(function(){t()});return}e(t)}),location.protocol==="https:"){let t=function(){var o=navigator.userAgent||"",i=navigator.platform||"";return i.indexOf("Mac")!==-1||o.indexOf("Mac")!==-1?"mac":i.indexOf("Win")!==-1||o.indexOf("Windows")!==-1?"windows":"linux"},n=function(){var o=t(),i="The certificate has been downloaded as <strong>clay-ca.pem</strong>.<br><br>";return o==="mac"?(i+="<strong>macOS \u2014 run in Terminal:</strong><br>",i+=r("sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/Downloads/clay-ca.pem")):o==="windows"?(i+="<strong>Windows \u2014 run in PowerShell (Admin):</strong><br>",i+=r('certutil -addstore -f "Root" %USERPROFILE%\\Downloads\\clay-ca.pem')):(i+="<strong>Linux \u2014 run in terminal:</strong><br>",i+=r("sudo cp ~/Downloads/clay-ca.pem /usr/local/share/ca-certificates/clay-ca.crt && sudo update-ca-certificates")),i+='<br><div style="padding:8px 10px;background:var(--bg-deeper);border-radius:6px;border-left:3px solid var(--accent)"><strong style="font-size:11px">Or ask Claude Code:</strong><br><code style="font-family:monospace;font-size:12px;line-height:1.5;color:var(--text-secondary)">Install ~/Downloads/clay-ca.pem as a trusted root certificate</code></div>',i+="<br>Then <strong>restart your browser</strong> to apply the change.",i},r=function(o){return'<div style="margin-top:8px;position:relative;background:var(--bg-deeper);border-radius:6px;padding:8px 10px"><code style="display:block;font-family:monospace;font-size:12px;word-break:break-all;line-height:1.5;padding-right:50px">'+se(o)+'</code><button class="playbook-btn-secondary" style="position:absolute;top:8px;right:8px;padding:2px 8px;font-size:11px;white-space:nowrap" data-copy-url="'+se(o)+'">Copy</button></div>'};Yo({id:"trust-certificate",title:"Trust Certificate",icon:"\u{1F512}",description:"Getting certificate warnings? Fix them here",tipMatch:function(o){return o.indexOf("certificate")!==-1||o.indexOf("Certificate")!==-1},steps:[{id:"intro",title:"Getting certificate warnings?",body:"Clay generates a local CA certificate for secure HTTPS connections. Your browser may show warnings until you install and trust this certificate on your device.",actions:[{label:"Download certificate",action:"cert_download",next:"install"},{label:"Not now",next:""}]},{id:"install",title:"Install the certificate",body:n,actions:[{label:"Done, I installed it",next:"done"},{label:"I'll do it later",next:""}]},{id:"done",title:"All set! \u{1F389}",body:"After restarting your browser, certificate warnings should disappear. If you still see them, make sure you ran the terminal command with admin privileges.",actions:[{label:"Done",next:""}]}]}),st("cert_download",function(o){var i=document.createElement("a");i.href="/ca/download",i.download="clay-ca.pem",document.body.appendChild(i),i.click(),document.body.removeChild(i),setTimeout(o,500)})}function e(t){try{var n=new Notification("Clay",{body:"Notifications are working! \u{1F389}",tag:"clay-test-"+Date.now()});n.onclick=function(){window.focus(),n.close()},setTimeout(function(){try{n.close()}catch{}},5e3)}catch(r){console.warn("[Playbook] Notification failed:",r)}setTimeout(t,800)}}function se(e){var t=document.createElement("div");return t.textContent=e||"",t.innerHTML}function ta(e){var t=document.createElement("span");t.className="stt-meter",t.setAttribute("aria-hidden","true");var n=document.createElement("canvas");t.appendChild(n);var r=n.getContext("2d"),o=null,i=0,s=[],l=window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;function u(d){o=null;var c=a.get("speechActive");if(!(!c||c.id!==e||!t.isConnected||!r)&&(o=requestAnimationFrame(u),!(d-i<(l?100:32)))){i=d;var p=t.clientWidth,g=t.clientHeight,v=Math.min(window.devicePixelRatio||1,2);(n.width!==Math.round(p*v)||n.height!==Math.round(g*v))&&(n.width=Math.round(p*v),n.height=Math.round(g*v)),r.setTransform(v,0,0,v,0,0),r.clearRect(0,0,p,g);var y=getComputedStyle(t),M=r.createLinearGradient(0,0,p,0);M.addColorStop(0,y.getPropertyValue("--brand-green").trim()||y.color),M.addColorStop(.5,y.getPropertyValue("--brand-blue").trim()||y.color),M.addColorStop(1,y.getPropertyValue("--brand-green").trim()||y.color),r.fillStyle=M;for(var E=c.audioSignal,P=E?E.levels:[],k=E?Date.now()-E.updatedAt:0,A=Math.max(0,1-Math.max(0,k-250)/900),h=Math.max(2,Math.floor(p/4)),b=Math.round(Math.min(160,Math.max(80,h))*1.25),R=l?0:Math.min(1,k/20),S=0;S<h;S++){var N=P.length-b+S/(h-1)*(b-1)+R,O=Math.floor(N),Re=N-O,Z=P[O]||0,De=P[Math.min(O+1,P.length-1)]||0,ee=(Z+(De-Z)*Re)*A,H=s[S]||0,te=l?ee:H+(ee-H)*(ee>H?.5:.24);s[S]=te;for(var Y=1+te*(g*.46-1),Ae=Math.min(1,(S+1)/8,(h-S)/8),ne=0;ne<=g*.48;ne+=3.2){var Xe=Math.exp(-Math.pow(ne/Y,2)*1.7);if(!(Xe<.035)){var jt=.35+Xe*.65;r.globalAlpha=(.12+Xe*.78)*Ae,r.beginPath(),r.arc((S+.5)*p/h,g/2+ne,jt,0,Math.PI*2),r.fill(),ne&&(r.beginPath(),r.arc((S+.5)*p/h,g/2-ne,jt,0,Math.PI*2),r.fill())}}}r.globalAlpha=1}}return{element:t,update:function(d){t.hidden=!d,d&&o===null&&(o=requestAnimationFrame(u)),!d&&o!==null&&(cancelAnimationFrame(o),o=null,s=[])}}}function na(e,t,n){var r=document.getElementById(e),o=document.getElementById(t),i=document.getElementById(n);if(!r||!o||!i||r.dataset.speechBound)return;var s=document.getElementById(e==="stt-btn"?"input-row":"home-mate-chat-composer")||i,l=document.getElementById(e==="stt-btn"?"input-bottom":"home-mate-chat-composer")||s;r.addEventListener("click",qe),r.dataset.speechBound="true",r.classList.add("stt-button");var u=document.createElement("span");u.className="stt-controls",r.before(u),u.appendChild(r);var d=document.createElement("button");d.type="button",d.id=e+"-picker",d.className="stt-picker-toggle",d.innerHTML=Q("chevron-down"),d.setAttribute("aria-label","Choose voice model"),d.setAttribute("aria-haspopup","dialog"),d.setAttribute("aria-expanded","false"),d.title="Choose voice model",u.appendChild(d),d.addEventListener("click",function(){qe(),je(d)});var c=document.createElement("div");c.className="stt-progress",c.hidden=!0;var p=document.createElement("span");p.id=e+"-status",p.className="stt-status",p.setAttribute("role","status");var g=document.createElement("span");g.className="stt-timer",g.setAttribute("aria-hidden","true");var v=document.createElement("button");v.type="button",v.innerHTML=Q("x"),v.className="stt-cancel",v.title="Cancel voice input",v.setAttribute("aria-label","Cancel voice input"),v.addEventListener("click",function(){re(),a.set({speechRetry:null})});var y=ta(e),M=document.createElement("button");M.type="button",M.textContent="Retry",M.addEventListener("click",Yn);var E=document.createElement("a");E.textContent="Provider account",E.target="_blank",E.rel="noopener noreferrer";var P=document.createElement("button");P.type="button",P.textContent="Dismiss",P.addEventListener("click",function(){Vn(e,"")}),c.append(v,y.element,g,p,M,E,P),s.prepend(c),r.setAttribute("aria-describedby",p.id),r.addEventListener("click",function(){var h=a.get("speechActive");if(h&&h.id===e){h.model&&h.phase==="recording"?Kn():re();return}var b=rt(),R=a.get("speechSettings");if(b.provider==="browser"&&!tt().available){je(d);return}if(b.provider!=="browser"&&(!R||R.configured.indexOf(b.provider)<0)){je(d);return}b.provider==="browser"?Wn(e,o):Gn(e,o,b)}),o.addEventListener("beforeinput",function(){var h=a.get("speechActive");h&&h.id===e&&re("Voice input stopped so you can edit your draft."),a.set({speechRetry:null})}),o.addEventListener("input",function(){var h=a.get("speechActive");h&&h.id===e&&!h.writing&&re()});function k(){var h=a.get("speechActive"),b=!!h&&h.id===e,R=rt(),S=sr(R.provider),N=R.provider==="browser"?a.get("speechBrowserIdentity"):null,O=b&&h.model&&h.phase!=="recording",Re=b&&!!h.autoSend;s.classList.toggle("stt-recording",b),c.classList.toggle("stt-auto-send",Re),c.classList.toggle("stt-progress-active",b),c.classList.toggle("stt-progress-pending",!!O);var Z=b?l:s;(c.parentElement!==Z||c!==Z.firstElementChild)&&Z.prepend(c),y.update(b?h:null),d.hidden=b,r.disabled=o.disabled||o.readOnly||!a.get("speechSettings"),d.disabled=o.disabled||o.readOnly||b,r.classList.toggle("stt-active",b),r.setAttribute("aria-pressed",String(b));var De=b?Re?"Cancel pending voice send":O?"Cancel voice input":R.mode==="recorded"?"Stop and transcribe":"Stop voice input":"Start voice input";r.setAttribute("aria-label",De+" \xB7 "+(S?S.name+" \xB7 ":"")+R.name),r.title=De+" \xB7 "+R.name;var ee=[b,O,S&&S.id,N&&N.id].join(":");if(r.dataset.speechIcon!==ee){if(r.dataset.speechIcon=ee,r.innerHTML=Q(b?O?"x":"square":"mic"),!b&&(S||N&&N.icon)){var H=document.createElement("img");H.className="stt-vendor-badge",H.src=S?S.icon:N.icon,H.alt="",r.appendChild(H)}D()}var te=(a.get("speechStatuses")||{})[e]||"",Y=(a.get("speechErrors")||{})[e];c.classList.toggle("stt-progress-error",!!Y),p.setAttribute("role",Y?"alert":"status"),P.hidden=!Y,E.hidden=!Y||!S,S&&(E.href=S.url),R.provider==="browser"&&!qn()&&(te="Browser voice input is unavailable. Choose a connected speech provider or type your message."),window.isSecureContext||(te="Voice input requires a secure HTTPS connection."),p.textContent=te,g.textContent=b&&h.startTime?Math.floor((Date.now()-h.startTime)/6e4)+":"+String(Math.floor((Date.now()-h.startTime)/1e3)%60).padStart(2,"0"):"",v.hidden=!b;var Ae=a.get("speechRetry");M.hidden=!Ae||Ae.id!==e,c.hidden=!b&&!Y&&M.hidden}a.subscribe(k);var A=new MutationObserver(k);A.observe(o,{attributes:!0,attributeFilter:["disabled","readonly"]}),k()}function qe(){a.set({speechBrowserIdentity:tt()})}function ra(){qe(),window.addEventListener("focus",qe),zn(),lr(),na("stt-btn","input","input-wrapper"),na("home-stt-btn","home-mate-chat-input","home-mate-chat-composer-frame"),Be(),window.addEventListener("focus",Be);try{window.top.document.addEventListener("clay:speech-settings-saved",Be)}catch{}}var m=null,T=null,ke=null;function Ce(){return document.body.dataset.myDisplayName||"Clay user"}function de(e){if(m){var t=m.querySelector("#account-ai-section");t&&cr(t),m.remove(),m=null,T.setAttribute("aria-expanded","false"),T.setAttribute("aria-label","Open account menu for "+Ce()),document.removeEventListener("pointerdown",oa),document.removeEventListener("focusin",aa),document.removeEventListener("keydown",ia),window.removeEventListener("resize",le),a.set({defaultAiInlineEditing:!1}),e&&ke&&document.contains(ke)&&ke.focus({preventScroll:!0}),ke=null}}function ft(e){return e&&e.closest&&e.closest(".avatar-positioner-overlay")}function oa(e){!m||m.contains(e.target)||T.contains(e.target)||ft(e.target)||de(!1)}function aa(e){!m||m.contains(e.target)||T.contains(e.target)||ft(e.target)||de(!1)}function ia(e){e.key==="Escape"&&(ft(e.target)||document.querySelector(".avatar-positioner-overlay")||(e.preventDefault(),e.stopPropagation(),de(!0)))}function le(){if(!(!m||!T)){var e=T.getBoundingClientRect(),t=Math.min(280,window.innerWidth-24),n=Math.max(12,Math.min(window.innerWidth-t-12,e.left));m.style.width=t+"px",m.style.left=n+"px",m.style.top=Math.max(12,e.top-m.offsetHeight-8)+"px"}}function ct(e){var t=m&&m.querySelector(".account-identity-copy");t&&(t.innerHTML='<button type="button" id="account-name-edit" class="account-name-display"><span></span><i data-lucide="pencil" aria-hidden="true"></i></button><small>Personal account</small>',t.querySelector("span").textContent=Ce(),t.querySelector("#account-name-edit").addEventListener("click",yi),window.lucide&&window.lucide.createIcons({nodes:[t]}),e&&t.querySelector("#account-name-edit").focus())}function yi(){var e=m&&m.querySelector(".account-identity-copy");if(e){var t=document.createElement("input");t.id="account-profile-name",t.setAttribute("aria-label","Display name"),t.className="account-name-input",t.type="text",t.maxLength=50,t.autocomplete="name",t.value=a.get("accountNameDraft")===void 0?nt().name||"":a.get("accountNameDraft"),t.addEventListener("input",function(){a.set({accountNameDraft:t.value})}),e.innerHTML="",e.appendChild(t);var n=document.createElement("small");n.textContent="Enter to save \xB7 Escape to cancel",e.appendChild(n),t.addEventListener("keydown",function(r){r.key==="Enter"?(r.preventDefault(),t.disabled=!0,n.textContent="Saving\u2026",Qn({name:t.value.trim()}).then(function(){a.set({accountNameDraft:void 0}),ct(!0)}).catch(function(o){t.disabled=!1,n.textContent=o.message,t.focus()})):r.key==="Escape"&&(r.preventDefault(),a.set({accountNameDraft:void 0}),ct(!0)),r.stopPropagation()}),t.focus(),t.select()}}function Si(){var e=m&&m.querySelector("#account-avatar-editor");e&&(e.hidden=!e.hidden,e.hidden||e.querySelector("#account-avatar-upload").focus(),le())}function wi(){var e=m.querySelector("#account-avatar-edit"),t=m.querySelector("#account-avatar-editor"),n=t.querySelector("#account-avatar-upload"),r=t.querySelector("#account-avatar-file"),o=t.querySelector("#account-avatar-generate");e.addEventListener("click",function(i){i.stopPropagation(),Si()}),t.addEventListener("click",function(i){i.stopPropagation()}),n.addEventListener("click",function(){r.click()}),r.addEventListener("change",function(){var i=r.files&&r.files[0];if(i){var s=new Image,l=URL.createObjectURL(i);s.onload=function(){Xn(s,l,function(u){URL.revokeObjectURL(l),$n(u).then(function(){t.hidden=!0}).catch(function(){t.dataset.error="true"})})},s.src=l}}),o.addEventListener("click",function(){Jn(),t.hidden=!0})}function ki(){m=document.createElement("div"),m.id="account-popover",m.className="account-popover",m.setAttribute("role","dialog"),m.setAttribute("aria-label","Account");var e=nt(),t=document.createElement("div");t.className="account-menu-identity",t.innerHTML='<button type="button" id="account-avatar-edit" class="account-avatar-edit" aria-label="Edit avatar"><img src="'+(document.body.dataset.myAvatarUrl||"")+'" alt=""></button><div class="account-identity-copy"></div><button type="button" class="account-settings-button" aria-label="User Settings" title="User Settings"><i data-lucide="settings" aria-hidden="true"></i></button>',t.querySelector("#account-avatar-edit img").alt=e.name||"Clay user";var n=document.createElement("div");n.id="account-avatar-editor",n.className="account-avatar-editor",n.hidden=!0,n.innerHTML='<button type="button" id="account-avatar-upload">Upload photo</button><button type="button" id="account-avatar-generate">Generate avatar</button><input id="account-avatar-file" type="file" accept="image/*">',m.appendChild(t),m.appendChild(n);var r=document.createElement("section");r.id="account-ai-section",r.className="account-inline-section account-ai-section",r.setAttribute("aria-label","Default AI"),m.appendChild(r),dr(r),t.querySelector(".account-settings-button").addEventListener("click",Ci),document.body.appendChild(m),ct(),wi(),ut(),window.lucide&&window.lucide.createIcons({nodes:[m]}),le()}function ut(){var e=document.getElementById("cursor-share-toggle");if(e){var t=a.get("cursorSharingHydrated")===!0,n=t&&a.get("cursorSharingEnabled")===!0,r=a.get("cursorSharingPending")!==null&&a.get("cursorSharingPending")!==void 0,o=a.get("connected")!==!1,i=a.get("cursorSharingError"),s=!!i&&!t&&o,l=t&&!n&&!r&&!i&&o;e.hidden=a.get("isMultiUserMode")!==!0,e.removeAttribute("role"),e.removeAttribute("aria-checked"),e.setAttribute("aria-pressed",n?"true":"false"),e.classList.toggle("on",n),e.classList.toggle("off",l),e.classList.toggle("pending",r),e.disabled=r||!o||!t&&!s;var u=r?"waiting":o?i?s?"error; activate to retry":"error":t?n?"on":"off":"unavailable":"offline";e.setAttribute("aria-label","Cursor sharing "+u);var d=r?"Cursor sharing is waiting for confirmation.":o?i?s?"Cursor sharing is unavailable. Click to retry.":"Cursor sharing is unavailable.":t?n?"Your cursor is visible to others. Click to stop sharing.":"Cursor sharing is off. Click to share your cursor.":"Cursor sharing is unavailable.":"Cursor sharing is offline.";Br(e,d)}}function Ci(e){e.stopPropagation(),de(!0),fr()}function Mi(e){if(e.stopPropagation(),!e.currentTarget.disabled){if(a.get("cursorSharingError")&&a.get("cursorSharingHydrated")!==!0){Ur();return}jr(a.get("cursorSharingEnabled")!==!0)}}function Ei(){var e=m&&m.querySelector("#account-ai-section select");e&&e.focus({preventScroll:!0})}function Pi(){m||sa(),a.set({defaultAiInlineEditing:!0}),Ei()}function sa(){if(m){de(!0);return}ke=document.activeElement,ki(),T.setAttribute("aria-expanded","true"),T.setAttribute("aria-label","Close account menu for "+Ce()),document.addEventListener("pointerdown",oa),document.addEventListener("focusin",aa),document.addEventListener("keydown",ia),window.addEventListener("resize",le)}function la(){if(T=document.getElementById("user-account-trigger"),!!T){T.addEventListener("click",sa),document.addEventListener("clay:open-account-default-ai",Pi);var e=document.getElementById("cursor-share-toggle");e&&e.addEventListener("click",Mi),ut(),T.setAttribute("aria-label","Open account menu for "+Ce()),a.subscribe(function(t,n){t.myUserId!==n.myUserId&&t.accountNameDraft!==void 0&&a.set({accountNameDraft:void 0}),(t.myUserId!==n.myUserId||t.connected===!1&&n.connected!==!1)&&de(!1),ut(),m&&le()}),document.addEventListener("clay:profile-updated",function(){if(m){var t=m.querySelector(".account-name-display span");t&&(t.textContent=Ce());var n=m.querySelector("#account-avatar-edit img");n&&(n.src=document.body.dataset.myAvatarUrl||n.src)}}),window.addEventListener("resize",le)}}var xi=[{id:"file-browser-btn",icon:"folder-tree",label:"File browser"},{id:"terminal-sidebar-btn",icon:"square-terminal",label:"Terminal",countId:"terminal-sidebar-count"},{id:"sticky-notes-sidebar-btn",icon:"sticky-note",label:"Sticky Notes",countId:"sticky-notes-sidebar-count"},{id:"project-logs-btn",icon:"notebook-tabs",label:"Logs",countId:"project-logs-count"},{id:"mcp-btn",icon:"cable",label:"MCP / Skills",countId:"mcp-sidebar-count"},{id:"scheduler-btn",icon:"calendar-clock",label:"Scheduled"},{id:"issues-btn",icon:"circle-dot",label:"Issues"},{id:"shared-browser-btn",icon:"globe",label:"Browser"}],Li=[{id:"mate-memory-btn",icon:"brain",label:"Memory",countId:"mate-memory-count"},{id:"mate-knowledge-btn",icon:"book-open",label:"Knowledge",countId:"mate-knowledge-count"},{id:"mate-sticky-notes-btn",icon:"sticky-note",label:"Sticky Notes"},{id:"mate-debates-btn",icon:"messages-square",label:"Debates"},{id:"mate-mcp-btn",icon:"cable",label:"MCP / Skills",countId:"mate-mcp-sidebar-count"}],ue={session:{tools:xi,fixedTools:[{id:"you-button",icon:"user-round",label:"Me",countId:"me-unread-badge",fixed:!0,scope:"clay"}],activeContainerId:"session-actions",hiddenSectionId:"session-actions-hidden"},mate:{tools:Li,activeContainerId:"mate-sidebar-tools",hiddenSectionId:"mate-sidebar-tools-hidden"}},Ii={"skills-btn":"mcp-btn"},Ti={"mate-skills-btn":"mate-mcp-btn","mate-debate-btn":"mate-debates-btn"},da=["git-sidebar-btn","loop-tool-btn","debates-btn"];function ce(e,t){for(var n=0;n<e.length;n++)if(e[n]===t)return n;return-1}function fa(e,t){var n=t&&t.order||[],r=t&&t.hidden||[],o={order:n.slice(),hidden:r.slice(),migrated:!1};if(e!=="session"&&e!=="mate")return o;for(var i=e==="mate"?Ti:Ii,s=Object.keys(i),l=0;l<s.length;l++){var u=s[l],d=i[u],c=ce(o.order,u)!==-1,p=ce(o.hidden,u)!==-1;if(!(!c&&!p)){var g=ce(o.order,d)!==-1||ce(o.hidden,d)!==-1;o.order=ua(o.order,u,d,g),o.hidden=ua(o.hidden,u,d,g),o.migrated=!0}}if(e!=="session")return o;for(var v=0;v<da.length;v++){var y=da[v];ce(o.order,y)===-1&&ce(o.hidden,y)===-1||(o.order=ca(o.order,y),o.hidden=ca(o.hidden,y),o.migrated=!0)}return o}function ca(e,t){for(var n=[],r=0;r<e.length;r++)e[r]!==t&&n.push(e[r]);return n}function ua(e,t,n,r){for(var o=[],i={},s=0;s<e.length;s++){var l=e[s];if(l===t){if(r)continue;l=n}i[l]||(i[l]=!0,o.push(l))}return o}var Ve={},W=null,fe=null;function ga(){for(var e in ue)Ri(e);Ai(),D()}function Ri(e){var t=ue[e],n=document.getElementById(t.activeContainerId);if(n){(t.fixedTools||[]).forEach(function(o){n.appendChild(pa(o,e))});for(var r=0;r<t.tools.length;r++)n.appendChild(pa(t.tools[r],e));n.addEventListener("dragover",function(o){if(!(fe!==e||!W)){o.preventDefault(),o.dataTransfer&&(o.dataTransfer.dropEffect="move");var i=Di(n,o.clientX,o.clientY);i==null?(W.parentNode!==n||W.nextSibling)&&n.appendChild(W):i!==W&&n.insertBefore(W,i)}}),n.addEventListener("drop",function(o){fe===e&&o.preventDefault()})}}function pa(e,t){var n=document.createElement("button");n.id=e.id,n.type="button",n.className="palette-tile",n.title=e.label,n.setAttribute("aria-label",e.label),n.dataset.toolId=e.id,n.dataset.palette=t,n.draggable=!0,e.fixed&&(n.draggable=!1,n.dataset.fixed="true"),e.scope&&(n.dataset.scope=e.scope),e.id==="you-button"&&(n.classList.add("you-button"),n.setAttribute("aria-pressed","false"));var r=document.createElement("i");r.setAttribute("data-lucide",e.icon),n.appendChild(r);var o=document.createElement("span");if(o.className="tool-btn-label",o.textContent=e.label,n.appendChild(o),e.countId){var i=document.createElement("span");i.id=e.countId,i.className="sidebar-badge hidden",e.id==="you-button"&&(i.className="sidebar-badge me-unread-badge",i.hidden=!0),n.appendChild(i)}return n.addEventListener("dragstart",function(s){if(e.fixed){s.preventDefault();return}var l=n.parentNode;if(!l||l.id!==ue[t].activeContainerId){s.preventDefault();return}W=n,fe=t,s.dataTransfer.effectAllowed="move";try{s.dataTransfer.setData("text/plain",e.id)}catch{}n.classList.add("dragging")}),n.addEventListener("dragend",function(){n.classList.remove("dragging"),fe&&Bi(fe),W=null,fe=null}),n}function Di(e,t,n){for(var r=Array.prototype.slice.call(e.querySelectorAll("[data-tool-id]:not(.dragging)")),o=null,i=Number.POSITIVE_INFINITY,s=0;s<r.length;s++)if(r[s].dataset.fixed!=="true"){var l=r[s].getBoundingClientRect(),u=n-(l.top+l.height/2),d=t-(l.left+l.width/2),c=Math.abs(u)*2+Math.abs(d),p=u<-l.height/2||Math.abs(u)<=l.height/2&&d<0;p&&c<i&&(i=c,o=r[s])}return o}function Ai(){fetch("/api/user/tool-palettes",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():null}).then(function(e){e&&(ma("session",e.session||null),ma("mate",e.mate||null))}).catch(function(){})}function ma(e,t){if(!t)return;var n=ue[e];if(!n)return;var r=document.getElementById(n.activeContainerId);if(!r)return;var o=fa(e,t),i={};function s(v){if(!i[v]){var y=document.getElementById(v);!y||y.dataset.fixed==="true"||(r.appendChild(y),i[v]=!0)}}for(var l={},u=0;u<o.hidden.length;u++)l[o.hidden[u]]=!0;for(var d=0;d<o.order.length;d++)l[o.order[d]]||s(o.order[d]);for(var c=0;c<n.tools.length;c++)l[n.tools[c].id]||s(n.tools[c].id);for(var p=0;p<o.hidden.length;p++)s(o.hidden[p]);for(var g=0;g<n.tools.length;g++)s(n.tools[g].id)}function Bi(e){Ve[e]&&clearTimeout(Ve[e]),Ve[e]=setTimeout(function(){Ve[e]=null,ji(e)},250)}function ji(e){var t=ue[e];if(t){var n=document.getElementById(t.activeContainerId);if(n){for(var r=[],o=n.querySelectorAll("[data-tool-id]"),i=0;i<o.length;i++)o[i].dataset.fixed!=="true"&&r.push(o[i].dataset.toolId);fetch("/api/user/tool-palettes",{method:"PUT",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({palette:e,order:r,hidden:[]})}).catch(function(){})}}}var Me=[],pt=[],L=null,J=null,mt=null,U=!1,Ee="project",z=0,C=[];function ha(e){e!=="project"&&e!=="mate"||(U&&G(!1),gt(e))}function ya(){Ui(),J=L.querySelector(".cmd-palette-results"),mt=L.querySelector(".project-switcher-header");var e=a.get("currentSlug");e&&(Me=[e]);var t=a.get("dmTargetUser");t&&t.isMate&&t.id&&(pt=[t.id]),a.subscribe(function(d,c){d.currentSlug&&d.currentSlug!==c.currentSlug&&(ba(Me,d.currentSlug),Me=Me);var p=va(d.dmTargetUser),g=va(c.dmTargetUser);p&&p!==g&&ba(pt,p)});var n=L.querySelector(".cmd-palette-backdrop");n&&n.addEventListener("click",function(){G(!1)}),document.addEventListener("keydown",_i,!0),document.addEventListener("keyup",Ni,!0),window.addEventListener("blur",function(){U&&G(!1)});var r=/Mac|iPhone|iPod|iPad/i.test(navigator.platform),o=r?"\u2318E":"Ctrl+E",i=r?"\u2318M":"Ctrl+M",s=document.getElementById("icon-strip-hint-project"),l=document.getElementById("icon-strip-hint-mate");s&&(s.textContent=o,s.title="Switch project ("+o+")",s.addEventListener("click",function(){ha("project")})),l&&(l.textContent=i,l.title="Switch mate ("+i+")",l.addEventListener("click",function(){ha("mate")}));function u(){if(l){var d=a.get("cachedMatesList")||[];l.classList.toggle("hidden",d.length===0)}}u(),a.subscribe(function(d,c){(d.cachedMatesList!==c.cachedMatesList||d.projectMateDmsEnabled!==c.projectMateDmsEnabled)&&u()})}function Ui(){if(L=document.getElementById("project-switcher"),!L){var e=/Mac|iPhone|iPod|iPad/i.test(navigator.platform),t=e?"<kbd>\u2318</kbd>":"<kbd>Ctrl</kbd>";L=document.createElement("div"),L.id="project-switcher",L.className="cmd-palette hidden project-switcher",L.innerHTML='<div class="cmd-palette-backdrop"></div><div class="cmd-palette-dialog project-switcher-dialog"><div class="project-switcher-header">Switch project</div><div class="cmd-palette-results"></div><div class="cmd-palette-footer project-switcher-footer"><span class="project-switcher-shortcuts">'+t+'<kbd class="proj-next-key">E</kbd> next \xB7 <kbd>\u21E7</kbd>'+t+'<kbd class="proj-prev-key">E</kbd> prev \xB7 <kbd>\u23CE</kbd> select \xB7 <kbd>Esc</kbd> cancel</span></div></div>',document.body.appendChild(L)}}function va(e){return e&&e.isMate&&e.id?e.id:null}function ba(e,t){var n=e.indexOf(t);n!==-1&&e.splice(n,1),e.unshift(t)}function _i(e){if(e.key){var t=(e.metaKey||e.ctrlKey)&&!e.altKey,n=e.key.toLowerCase();if(t&&(n==="e"||n==="m")){var r=n==="e"?"project":"mate";e.preventDefault(),e.stopPropagation(),U?Ee!==r?gt(r):e.shiftKey?We(-1):We(1):gt(r);return}if(U){if(e.key==="Escape"){e.preventDefault(),e.stopPropagation(),G(!1);return}if(e.key==="Enter"){e.preventDefault(),e.stopPropagation(),G(!0);return}if(e.key==="ArrowRight"||e.key==="ArrowDown"){e.preventDefault(),We(1);return}if(e.key==="ArrowLeft"||e.key==="ArrowUp"){e.preventDefault(),We(-1);return}}}}function Ni(e){U&&(e.key==="Meta"||e.key==="Control")&&G(!0)}function gt(e){if(Ee=e,C=Fi(e),C.length===0){U&&G(!1);return}mt&&(mt.textContent=e==="mate"?"Switch mate":"Switch project"),Oi(e),Wi(),z=Hi(),ht(),L.classList.remove("hidden"),U=!0,D(),Ne(J)}function Oi(e){var t=L.querySelector(".proj-next-key"),n=L.querySelector(".proj-prev-key"),r=e==="mate"?"M":"E";t&&(t.textContent=r),n&&(n.textContent=r)}function Hi(){if(C.length===0)return 0;for(var e=Ee==="mate"?pt:Me,t=Sa(),n=0;n<e.length;n++){var r=e[n];if(r!==t){for(var o=0;o<C.length;o++)if(C[o].key===r&&!C[o].disabled)return o}}for(var i=0;i<C.length;i++)if(!C[i].disabled&&C[i].key!==t)return i;for(var s=0;s<C.length;s++)if(!C[s].disabled)return s;return 0}function Sa(){if(Ee==="mate"){var e=ot(a.snap());return e?e.id:null}return a.get("currentSlug")}function Fi(e){return e==="mate"?Vi():qi()}function qi(){var e=(be()||[]).filter(function(t){return!t.isMate});return e.map(function(t){var n=to(t);return{key:t.slug,title:t.title||t.project||t.slug,icon:t.icon||null,fallbackIcon:"folder",isCurrent:t.slug===a.get("currentSlug"),external:n,disabled:!1,disabledReason:null}})}function Vi(){var e=a.get("cachedMatesList")||[],t=ot(a.snap()),n=t?t.id:null;return e.map(function(r){return{key:r.id,title:r.displayName||r.name||r.id,icon:null,avatarUrl:qt(r,88),fallbackIcon:"user",isCurrent:r.id===n,disabled:!1,disabledReason:null}})}function G(e){if(U&&(U=!1,L.classList.add("hidden"),!!e)){var t=C[z];!t||t.disabled||(Ee==="mate"?t.key!==Sa()&&ao(t.key):t.key!==a.get("currentSlug")&&_e(t.key))}}function We(e){if(C.length!==0){for(var t=e>0?1:-1,n=z,r=0;r<C.length;r++)if(n=(n+t+C.length)%C.length,!C[n].disabled){z=n,ht();return}}}function Wi(){if(J){J.innerHTML="";for(var e=0;e<C.length;e++)J.appendChild(zi(C[e],e))}}function zi(e,t){var n=document.createElement("button");n.type="button",n.className="cmd-palette-item project-switcher-item",e.disabled&&n.classList.add("disabled"),e.disabled&&e.disabledReason&&(n.title=e.disabledReason),e.external&&(n.title=no(e.title)),n.dataset.index=String(t);var r=document.createElement("div");if(r.className="cmd-palette-item-icon",e.icon)r.textContent=e.icon;else if(e.avatarUrl){var o=document.createElement("img");o.src=e.avatarUrl,o.alt="",o.className="project-switcher-avatar",r.appendChild(o)}else{var i=document.createElement("i");i.setAttribute("data-lucide",e.fallbackIcon||"folder"),r.appendChild(i)}e.external&&ro(r,"project-switcher-external-badge"),n.appendChild(r);var s=document.createElement("div");s.className="cmd-palette-item-body";var l=document.createElement("div");l.className="cmd-palette-item-title-row";var u=document.createElement("span");if(u.className="cmd-palette-item-title",u.textContent=e.title,l.appendChild(u),e.isCurrent){var d=document.createElement("span");d.className="project-switcher-current",d.textContent="current",l.appendChild(d)}if(e.disabled&&e.disabledReason){var c=document.createElement("span");c.className="project-switcher-disabled-reason",c.textContent=e.disabledReason,l.appendChild(c)}return s.appendChild(l),n.appendChild(s),n.addEventListener("mouseenter",function(){e.disabled||(z=t,ht())}),n.addEventListener("click",function(){e.disabled||(z=t,G(!0))}),n}function ht(){if(J){for(var e=J.querySelectorAll(".cmd-palette-item"),t=0;t<e.length;t++)e[t].classList.toggle("active",t===z);var n=e[z];n&&n.scrollIntoView&&n.scrollIntoView({block:"nearest"})}}var Gi=/^[a-zA-Z0-9_-]{1,120}$/;function vt(){return Array.prototype.filter.call(document.querySelectorAll("iframe"),function(e){try{var t=new URL(e.src,window.location.href);return t.origin===window.location.origin&&t.searchParams.get("pane")==="1"}catch{return!1}})}function bt(e){var t=Ao();try{e.contentWindow&&e.contentWindow.postMessage({type:"clay-appearance",snapshot:t},window.location.origin)}catch{}}function wa(e){return typeof e=="string"&&Gi.test(e)}function yt(e){return e===null||wa(e)}function Ki(e){var t=e&&typeof e=="object"?e.preference:null;return!t||typeof t!="object"||!wa(e.themeId)||e.userId!==null&&(typeof e.userId!="string"||!e.userId||e.userId.length>200)||typeof t.configured!="boolean"||t.mode!==null&&t.mode!=="light"&&t.mode!=="dark"?!1:yt(t.theme)&&yt(t.lightTheme)&&yt(t.darkTheme)}function ka(){if(a.get("paneMode")){if(window.parent===window)return;window.addEventListener("message",function(e){if(!(e.origin!==window.location.origin||e.source!==window.parent)){var t=e.data;if(!(!t||t.type!=="clay-appearance"||!Ki(t.snapshot))){var n=a.get("myUserId")||null;n!==null&&t.snapshot.userId!==n||Bo(t.snapshot)}}});return}Do(function(){vt().forEach(bt)}),a.subscribe(function(e,t){e.myUserId!==t.myUserId&&vt().forEach(bt)}),document.addEventListener("load",function(e){e.target&&e.target.tagName==="IFRAME"&&vt().indexOf(e.target)>=0&&bt(e.target)},!0)}var Yi=500,Ca=10,pe=null,St=0,wt=0,Pe=!1,Ma=null;function ze(){pe&&(clearTimeout(pe),pe=null)}function Ea(){"ontouchstart"in window&&(document.addEventListener("touchstart",function(e){if(e.touches.length!==1){ze();return}var t=e.touches[0];St=t.clientX,wt=t.clientY,Pe=!1,Ma=e.target,pe=setTimeout(function(){pe=null,Pe=!0,navigator.vibrate&&navigator.vibrate(30);var n=new MouseEvent("contextmenu",{bubbles:!0,cancelable:!0,clientX:St,clientY:wt});Ma.dispatchEvent(n)},Yi)},{passive:!0}),document.addEventListener("touchmove",function(e){if(pe){var t=e.touches[0],n=t.clientX-St,r=t.clientY-wt;n*n+r*r>Ca*Ca&&ze()}},{passive:!0}),document.addEventListener("touchend",function(e){ze(),Pe&&(Pe=!1,e.preventDefault())},{passive:!1}),document.addEventListener("touchcancel",function(){ze(),Pe=!1},{passive:!0}))}var Pa=!1,xa=!1;function kt(e){return/^\/p\/[a-z0-9_-]+(?:\/|$)/.test(e||"")}function Qi(e){return e?e.paneMode||kt(e.pathname)||e.currentSlug?"project":e.projectsLoaded!==!0?"wait":"projects":"wait"}function La(){document.body.classList.remove("home-surface-boot-pending");var e=document.getElementById("connect-overlay");e&&a.get("connected")&&e.classList.add("hidden")}function Ji(e){return e?"/p/"+e+"/":null}function Ia(e){if(!xa){var t=Qi({surfaceLoaded:e.homeSurfaceLoaded,projectsLoaded:e.projectListLoaded,dockLoaded:e.homeDockPreferenceLoaded,surface:e.homePrimarySurface,currentSlug:e.currentSlug,pathname:location.pathname,paneMode:e.paneMode});if(t!=="wait"){if(xa=!0,t==="project"){if(!kt(location.pathname)){var n=Ji(e.currentSlug);n&&history.replaceState(null,"",n)}a.set({homeSurfaceBootResolved:!0}),La();var r=document.getElementById("input");r&&!r.disabled&&r.focus({preventScroll:!0});return}a.set({homeSurfaceBootResolved:!0,projectsHubRestoreRequested:!0}),La()}}}function Ta(){if(!Pa){if(Pa=!0,!kt(location.pathname)&&!a.get("paneMode")){document.body.classList.add("home-surface-boot-pending");var e=document.getElementById("connect-overlay-msg");e&&(e.textContent="Restoring your workspace\u2026")}a.subscribe(function(t){Ia(t)}),Ia(a.snap())}}var $i=3600*1e3,Xi="(max-width: 768px)",Ct=null,Mt=!1;function Zi(e){if(typeof e!="number"||!isFinite(e)||e<0)return"";if(e=Math.floor(e),e<1e3)return String(e);for(var t=[[1e6,"m"],[1e3,"k"]],n=0;n<t.length;n++)if(e>=t[n][0]){var r=Math.floor(e/t[n][0]*10)/10;return(r%1===0?String(r):r.toFixed(1))+t[n][1]}return String(e)}function Da(){var e=a.get("githubStarCount"),t=document.getElementById("github-star-count"),n=document.getElementById("github-star-link");if(!(!t||!n)){var r=typeof e=="number"?Zi(e):"";t.textContent=r,t.classList.toggle("hidden",!r),n.setAttribute("aria-label",r?"Star Clay on GitHub, "+e+" stars":"Star Clay on GitHub")}}function es(){return!!(window.matchMedia&&window.matchMedia(Xi).matches)}function Ra(){return Mt||es()?Promise.resolve():(Mt=!0,fetch("/api/github-stars",{credentials:"same-origin"}).then(function(e){return e.ok?e.json():null}).then(function(e){e&&typeof e.stars=="number"&&(a.set({githubStarCount:e.stars}),Da())}).catch(function(){}).then(function(){Mt=!1}))}function Aa(){document.getElementById("github-star")&&(Da(),Ra(),Ct&&clearInterval(Ct),Ct=setInterval(Ra,$i))}var _=!1,Ge=null,Ba={shell:"terminal",agent:"sparkles",other:"circle-dot"};function _a(){a.subscribe(function(e,t){e.activeBackgroundTasks!==t.activeBackgroundTasks&&Et()}),Et()}function Na(e,t){if(typeof e!="number"||!isFinite(e)||e<=0)return"";var n=typeof t=="number"?t:Date.now(),r=Math.floor((n-e)/1e3);if(r<0&&(r=0),r<60)return r+"s";var o=Math.floor(r/60),i=r%60;if(o<60)return o+"m "+ja(i)+"s";var s=Math.floor(o/60);return s+"h "+ja(o%60)+"m"}function ja(e){return e<10?"0"+e:String(e)}function Ke(){Ge&&(clearInterval(Ge),Ge=null)}function ts(){Ke(),Ge=setInterval(ns,1e3)}function ns(){var e=document.getElementById("background-tasks-bar");if(!e||!_){Ke();return}for(var t=Date.now(),n=e.querySelectorAll(".background-task-elapsed"),r=0;r<n.length;r++){var o=Number(n[r].dataset.startedAt);n[r].textContent=Na(o,t)}}function rs(){return'<span class="background-tasks-activity" aria-hidden="true"><i></i><i></i><i></i></span>'}function Oa(e){return!!(e&&e.ambient===!0)}function os(e){for(var t=[],n=[],r=Array.isArray(e)?e:[],o=0;o<r.length;o++)r[o]&&(Oa(r[o])?n.push(r[o]):t.push(r[o]));return{user:t,ambient:n}}function Ua(e,t){var n=e.task_type||"other",r=Ba[n]||Ba.other,o=e.description||"Background task",i=typeof e.started_at=="number"?e.started_at:0,s=Na(i,t);return'<div class="background-task-row'+(Oa(e)?" ambient":"")+'"><span class="background-task-icon" title="'+F(n)+'">'+Q(r)+'</span><span class="background-task-description" title="'+F(o)+'">'+F(o)+'</span><span class="background-task-meta"><span class="background-task-type">'+F(n)+'</span><span class="background-task-elapsed" data-started-at="'+i+'">'+F(s)+'</span></span><button type="button" class="background-task-stop" data-task-id="'+F(e.task_id||"")+'" aria-label="Stop '+F(o)+'">Stop</button></div>'}function Et(){var e=a.get("activeBackgroundTasks")||[],t=os(e),n=document.getElementById("background-tasks-bar");if(t.user.length===0){n&&n.remove(),_=!1,Ke();return}var r=document.getElementById("input-area");if(!(!r||!r.parentNode)){var o=n||document.createElement("div");o.id="background-tasks-bar",o.className="background-tasks-bar"+(_?" expanded":"");var i=t.user.length===1?"background task":"background tasks",s=t.user.length+" "+i,l='<button type="button" class="background-tasks-toggle" aria-expanded="'+_+'" aria-controls="background-tasks-list" aria-label="'+s+", "+(_?"collapse":"expand")+' details">'+rs()+'<span class="background-tasks-summary">'+s+'</span><span class="background-tasks-chevron" aria-hidden="true">'+Q("chevron-right")+"</span></button>";if(_){var u=Date.now();l+='<div class="background-tasks-list" id="background-tasks-list">';for(var d=0;d<t.user.length;d++)l+=Ua(t.user[d],u);if(t.ambient.length>0){l+='<div class="background-tasks-section-label">Housekeeping</div>';for(var c=0;c<t.ambient.length;c++)l+=Ua(t.ambient[c],u)}l+="</div>"}o.innerHTML=l,n||r.parentNode.insertBefore(o,r),D(),o.querySelector(".background-tasks-toggle").addEventListener("click",function(){_=!_,Et()});for(var p=o.querySelectorAll(".background-task-stop"),g=0;g<p.length;g++)p[g].addEventListener("click",function(){var v=w();v&&v.readyState===1&&v.send(JSON.stringify({type:"stop_task",taskId:this.dataset.taskId}))});_?ts():Ke()}}var Tt=new URLSearchParams(location.search),ge=Tt.get("pane")==="1";ge&&typeof performance<"u"&&performance.mark&&performance.mark("clay:app-evaluated");var X=Number(Tt.get("session"));(!Number.isSafeInteger(X)||X<1)&&(X=null);ge&&document.body.classList.add("pane-mode");var Qe=location.pathname.match(/^\/p\/([a-z0-9_-]+)/),as=document.body.dataset.homeProjectSlug||null,Ie=Qe?Qe[1]:as,K=Ie?"/p/"+Ie+"/":"/",me=Ie?"/p/"+Ie+"/ws":"/ws";ge&&(me+="?pane=1",X&&(me+="&session="+X),Tt.get("contextual")==="1"&&(me+="&contextual=1"));var f=function(e){return document.getElementById(e)},I=f("messages"),$e=f("input"),is=f("send-btn");var Lt=f("header-title"),gh=f("header-rename-btn"),ss=f("slash-menu"),hh=f("suggestion-chips"),ls=f("sidebar"),ds=f("sidebar-overlay"),Qa=f("session-list"),cs=f("new-session-btn"),us=f("hamburger-btn"),fs=f("sidebar-toggle-btn"),ps=f("sidebar-expand-btn"),ms=f("image-preview-bar"),vh=f("connect-overlay");var gs="/claude-code-avatar.png";function Ja(e){Ue(e)}function hs(){return!1}function $a(){var e=document.getElementById("icon-strip-add");e&&e.click()}function Xa(e){Zr(e)}function vs(){eo()}var bh=f("project-list-section"),yh=f("project-list"),Sh=f("project-list-add"),bs=f("project-hint"),Ha=f("project-hint-dismiss"),Je=Ie||null;document.addEventListener("keydown",function(e){if((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="z"){var t=document.activeElement,n=t&&t.tagName;(n==="TEXTAREA"||n==="INPUT"||t&&t.isContentEditable)&&(e.preventDefault(),e.stopPropagation(),e.shiftKey?document.execCommand("redo",!1,null):document.execCommand("undo",!1,null))}},!0);document.addEventListener("keydown",function(e){e.key==="Escape"&&Dt()});Ha&&Ha.addEventListener("click",function(){bs.classList.add("hidden");try{localStorage.setItem("clay-project-hint-dismissed","1")}catch{}});f("mermaid-modal").querySelector(".confirm-backdrop").addEventListener("click",at);f("mermaid-modal").querySelector(".mermaid-modal-btn[title='Close']").addEventListener("click",at);f("image-modal").querySelector(".confirm-backdrop").addEventListener("click",Dt);f("image-modal").querySelector(".image-modal-close").addEventListener("click",Dt);function Rt(e){dn(e)}function Dt(){cn()}var Za="";try{xe=localStorage.getItem("clay-project-name-"+(Je||"default")),xe&&(Za=xe,Lt&&(Lt.textContent=xe),Pt=f("title-bar-project-name"),Pt&&(Pt.textContent=xe)),xt=localStorage.getItem("clay-project-icon-"+(Je||"default")),xt&&(Le=f("title-bar-project-icon"),Le&&(Le.textContent=xt,Ne(Le),Le.classList.add("has-icon")))}catch{}var xe,Pt,xt,Le;function ei(e,t,n,r){un(e,t,n,r)}Ut({networkSettings:{loaded:!1,busy:!1,confirming:!1,draft:"",saved:"",status:"",errorKind:"",requestId:0},vendorLoginBrowser:null,githubStarCount:null,sharedBrowser:null,sharedBrowsers:[],mcpSkillsWorkbench:{},mateKnowledgeWorkspaces:{},mateColorSave:null,mcpConnections:{screen:"list",servers:[],search:"",loaded:!1},sharedBrowserOpen:!1,sharedBrowserUi:{},sharedBrowserSettings:{},browserLinksBound:!1,basePath:K,wsPath:me,paneMode:ge,paneSessionId:X,panePinPending:ge&&!!X,paneCommittedBinding:null,panePendingBinding:null,paneReady:!1,paneSuspended:!1,paneActivationGeneration:0,paneActivationTimer:null,panePointerBinding:null,paneRichDrafts:{},paneLayoutScrollLock:null,paneLastUserScrollTop:null,paneUserScrollIntent:null,paneUserScrollRevision:0,sessionRichDrafts:{},sessionActionEpoch:0,composerUploadingCount:0,deferredSessionSwitch:null,paneCallbackBinding:null,paneActionEvents:[],paneHeldKeys:{},rewindAction:null,handoffAction:null,authIdentityLoaded:!1,splitIdentityBlockedSocket:null,splitIdentityHydrated:!1,paneActivationUnsupported:!1,paneBindingSessions:[],splitPanes:null,splitGroups:[],splitViewWorkerConversation:null,splitViewWorkerRemoval:null,projectSplitViews:[],projectSplitViewRevision:0,projectSplitViewContextKey:null,projectSplitViewHydrated:!1,projectSplitViewPending:null,projectSplitViewError:"",projectSplitViewActiveId:null,projectSplitViewFocusedOrigin:null,projectSplitViewPreviewTree:null,projectSplitViewDrag:null,splitViewOrganizationDrag:null,projectSplitViewDividerDrag:null,projectSplitViewTranscriptScroll:{},projectSplitViewSuppressClick:null,projectSplitViewSocketGeneration:0,projectSplitViewRequestSocket:null,projectSplitViewRequestGeneration:null,projectSplitViewRequestOwnerId:null,projectSplitViewRequestSlug:null,sessionFolders:null,sessionFoldersSlug:null,sessionFolderCreate:null,sidebarCreationEffects:[],sessionSearch:null,sessionFolderViewMenu:null,sessionFolderLayouts:{},sessionFolderDrag:null,sessionFolderMenu:null,sessionFolderContext:null,sessionFolderModal:null,sessionContextMenu:null,sessionInlineRename:null,splitDelegations:{},pairResultStatus:[],notesTemporarilyHidden:!1,pairResultTrayOpen:!1,dmMode:!1,historyFrom:0,loadingMore:!1,historyTotal:0,replayingHistory:!1,historyReplayBatch:null,pendingSessionEntryNavigation:null,sessionEntryHighlight:null,sessionNavigationRequestId:null,projectName:Za,cwd:"",currentSlug:Je,githubWorkPopoverBound:!1,githubWorkSessions:[],githubWorkProject:null,githubWorkRefresh:null,workPrimaryPending:null,activeProjectSlug:null,activeProjectMateId:null,activeProjectMateName:"",clayReturnTarget:null,contextualPrepared:null,contextualSubmitted:{},contextualClay:{mode:"closed",mateId:null},contextualConversationHistory:null,contextualConversationRequest:null,clayControlActivity:null,clayControlOrder:0,clayControlReceipts:[],clayControlForwarded:null,controlRuntimeId:null,studioDocumentSource:null,studioDocumentView:null,clayStudioRelays:{},clayStudioForwarded:{},clayStudioSurfaces:{},clayControlNotifications:[],clayControlFileView:null,clayControlTerminalViews:[],clayControlGitView:null,clayNavigationRendering:null,clayControlViewerRef:null,contextualSessionReady:!1,contextualSessionReceived:!1,contextualSessionUnavailable:!1,clayReturnPendingProjectSlug:null,activeSessionMateId:null,activeSessionMateName:"",sessionActivatedProjectSlug:null,sessionListProjectSlug:null,splitGroupsProjectSlug:null,socketPath:null,pendingHomeProjectSlug:null,homeProjectEmptyVisible:!1,homeShellVisible:!1,projectMateFilterMode:"all",projectMateFilterTurns:0,projectMateFilterActivated:!1,projectMateCreationActive:!1,projectMateCreationMateId:null,projectMateCreationSessionId:null,projectMateCreationRequestId:null,projectMateCreationPendingStart:!1,projectMateCreationAwaitingHistory:!1,projectMateCreationAwaitingMateList:!1,projectMateCreationHistoryReady:!1,projectMateCreationLocalId:null,projectMateCreationMessages:[],projectMateCreationPendingMateId:null,projectDebatePlanningActive:!1,projectDebatePlanningMateId:null,projectDebatePlanningSessionId:null,projectDebatePlanningLocalId:null,projectDebatePlanningRequestId:null,projectDebatePlanningPendingStart:!1,projectDebatePlanningAwaitingHistory:!1,projectDebatePlanningAwaitingMateList:!1,projectDebatePlanningHistoryReady:!1,projectDebatePlanningTopic:"",projectDebatePlanningMessages:[],projectDebatePlanningError:"",projectDebatePlanningRetryable:!1,debatesWorkbenchStatus:"idle",debatesWorkbenchRequestId:null,debatesWorkbenchItems:[],debatesWorkbenchError:"",debatesWorkbenchFilter:"all",debatesWorkbenchCreating:!1,debatesWorkbenchWide:!1,debatesWorkbenchFullscreen:!1,debatesWorkbenchScrollTop:0,pendingDebateNavigation:null,pendingProjectSessionNavigation:null,projectsHubVisible:!1,projectsHubMarkup:null,projectsHubList:[],projectListLoaded:!1,projectsAccessLoaded:!1,projectsHubRestoreRequested:!1,projectStart:br(),projectStartFolder:yr(),onboardingStep:"welcome",onboardingIntent:null,currentProjectOwnerId:null,isOsUsers:!1,skipPermsEnabled:!1,autonomousSelectedMode:"normal",autonomousArming:!1,autonomousArmToken:null,autonomousArmRequestId:null,autonomousArmSessionId:null,autonomousActionRequestId:null,autonomousActionSessionId:null,autonomousCriteria:"",autonomousMaxContinuations:10,autonomousMaxMinutes:60,autonomousRun:null,autonomousExpanded:!1,loopInterviewBrief:null,loopInterviewEditing:!1,loopInterviewRunRequestId:null,loopInterviewRunSessionId:null,loopInterviewStarting:!1,loopInterviewRequestId:null,loopInterviewSessionId:null,slashCommands:[],processing:!1,scheduledMessageCorrelation:null,activeSessionId:null,speechActive:null,speechSettings:null,speechSettingsRequest:0,speechSettingsSaving:!1,speechSettingsError:"",speechPopup:null,speechRetry:null,speechLang:"en-US",speechStatuses:{},speechErrors:{},speechLanguageSaving:!1,speechLifecycleBound:!1,askUserRequests:{},activeBackgroundTasks:[],sessionVendorBound:!1,cliSessionId:null,isHeadlessMode:!1,savedMainSlug:null,connected:!1,fileReadRequest:null,fileViewerIsPlantUml:!1,plantUmlPreviewJob:null,wireframeDraft:null,wireframeRenderQueue:[],wireframeRenderActive:null,wireframeRenderCache:[],pendingFileNavigation:null,rightWorkbenchOwner:null,rightWorkbenchRevision:0,fileViewerOpenRevision:0,cursorSharingEnabled:!1,cursorSharingHydrated:!1,cursorSharingPending:null,pendingOutboundMessages:[],pendingMessageQueue:{projectSlug:null,sessionId:null,revision:0,paused:!1,items:[],loading:!1,error:""},pendingMessageQueueRecovery:!1,pendingMessageQueueRequests:{},pendingMessageQueueEdit:null,pendingMessageQueueDrag:null,pendingMessageQueueFocusReturn:null,searchClayChatState:null,homeChatMateId:null,homeChatSessionId:null,homeChatSessionModel:null,homeChatSessionVendor:null,homeChatSessionModelLoading:!1,homeMateSessions:{},homeActiveSessionByMate:{},homePreferredMateId:null,homeSidebarCollapsed:!1,homeMatesCollapsed:!1,homeChatScope:"all",homeSubSurface:"chat",homeDebatesStatus:"idle",homeDebates:[],homeDebatesRequestId:null,homeDebatesError:"",homeSurfaceLoaded:!1,homePrimarySurface:null,homeSurfaceProjectSlug:null,homeSurfaceIntent:null,homeSurfaceBootResolved:!1,homeSurfaceRestoreRequested:!1,dockActiveToolId:null,dockOpen:!1,homeDockPreferenceLoaded:!1,dockFocus:!1,dockLibraryOpen:!1,dockBackstageOpen:!1,dockWidth:null,dockHasActivity:!1,dockActivityToolId:null,you:{},youActivity:{},youSequence:0,projectLogsOpen:!1,projectLogsWide:!1,projectLogsFullscreen:!1,projectLogsEntries:[],projectLogsSelectedRef:null,projectLogsView:"list",projectLogsCategory:"",projectLogsContextMode:"",projectLogsIsWorktree:!1,projectLogsListScroll:0,projectLogsListRequestId:null,projectLogsReadRequestId:null,projectLogsCommentRequestId:null,projectLogsCommentStatusEl:null,projectLogsDeleteRequestId:null,projectLogsCanDelete:!1,projectLogsUnread:0,projectLogsSeenRevisions:{},scheduledResultUnread:0,scheduledResultAutoFocusHandled:!1,scheduledResultFocusRef:null,scheduledResultPendingReadRef:null,scheduledResultSeenRefs:{},scheduledResultSessionRequestId:null,issuesOpen:!1,issuesView:"list",issuesSelected:null,issuesRows:[],issuesRequests:{},issueGithub:null,issuesViewRequest:null,issuesViewGeneration:0,issuesUpdateAvailable:null,issuesCache:{},issuesEpoch:0,issuesSearchTimer:null,issueLinkRequests:{},issueLinkOpenRef:null,scheduledTasksOpen:!1,scheduledTasksWide:!1,scheduledTasksFullscreen:!1,scheduledTaskRecords:[],scheduledTaskDraft:null,scheduledTaskEditingId:null,scheduledTaskNewSessionPending:!1,scheduledTaskInterviewRequestId:null,scheduledTaskActionRequestId:null,scheduledTaskListRequest:null,scheduledTaskInterviewId:null,scheduledTaskExpandedId:null,scheduledTaskDeleteId:null,scheduledTaskDraftForm:null,scheduledTaskEditForm:null,scheduledTaskCreateMenuOpen:!1,scheduledTaskManualRequest:null,installedTools:[],capsulesEnabled:!1,capsulesPreferenceLoaded:!1,homeToolRegistryLoaded:!1,toolScanErrors:[],defaultAiState:{loading:!1,saving:!1,refreshRequestId:null,saveRequestId:null,catalogRequestIds:{},catalogs:{},preference:null,selection:null,installedVendors:[],accountAvailable:!0,accountId:null,serverEpoch:null,canonicalRevision:0,error:""},defaultAiDraft:{vendor:"",model:"",effort:""},defaultAiDraftDirty:!1,defaultVendorState:{loading:!1,saving:!1,getRequestId:null,saveRequestId:null,preference:null,preferencePresent:!1,installedVendors:[],accountId:null,projectSlug:null,serverEpoch:null,canonicalRevision:0,error:""},projectSessionVisibilityState:{active:null,pending:null},dmTargetUser:null,dmKey:null,cachedMatesList:[],cachedDmFavorites:[],cachedAvailableBuiltins:[],projectMateDmsEnabled:!0,returningFromMateDm:!1,pendingMateInterview:null,pendingTermCommand:null,shellCommandMode:!1,shellCommandRunning:!1,pendingShellCommandId:null,mateProjectSlug:null,myUserId:null,contextViewPreferenceState:{mode:"off",canonicalMode:"off",preferencePresent:!1,loading:!1,saving:!1,requestId:null,saveRequestId:null,pendingSaves:[],accountId:null,serverEpoch:null,rejectedEpoch:null,canonicalRevision:0,error:""},contextViewOverride:null,isMultiUserMode:!1,dmUnread:{},dmRemovedUsers:{},cachedAllUsers:[],cachedOnlineIds:[],cachedDmConversations:[],sessionDrafts:{},messageUuidMap:[],currentMsgTs:null,richContextUsage:null,contextMeasurement:"unavailable",currentMsgEl:null,currentFullText:"",matePreThinkingEl:null,thinkingState:null,fileViewerFullscreen:!1,markdownSlidesActive:!1,markdownSlideIndex:0,markdownSlideCount:0,markdownSlideLevel:1,markdownSlidePreferredLevel:1,markdownSlideLevelExplicit:!1,currentModel:"",currentModels:[],modelListVendor:"",modelListStatus:"idle",modelListError:"",modelRequestId:"",modelSelectionPending:null,modelSelectionError:"",lastVendor:"",vendorInfo:{},rateLimitState:{},vendorUsageOverview:null,vendorUsageOpen:null,currentMode:"default",effectivePermissionMode:null,permissionCapabilities:{auto:!1,mcpOverride:!1},permissionModePendingByTarget:{},mcpPermissionModePendingByTarget:{},mcpPermissionModeOverrides:{},currentEffort:"medium",currentBetas:[],currentThinking:"adaptive",currentThinkingBudget:1e4,sessionFullAccess:!1,codexApproval:null,codexSandbox:null,codexWebSearch:null,ctxPopoverVisible:!1,headerContextEl:null,loopActive:!1,loopAvailable:!1,loopIteration:0,loopMaxIterations:0,loopBannerName:null,ralphPhase:"idle",ralphCraftingSessionId:null,ralphCraftingSource:null,ralphFilesReady:{promptReady:!1,judgeReady:!1,bothReady:!1},ralphPreviewContent:{prompt:"",judge:""},execModalShown:!1,debateStickyState:null,debateFloorMode:!1,debateConcludeMode:!1,debateEndedMode:!1,knownInstalledSkills:{},permissions:null,wizardData:{name:"",task:"",maxIterations:null,cron:null}});gr({$:f,get ws(){return w()},get connected(){return a.get("connected")},get processing(){return a.get("processing")},messagesEl:I,addSystemMessage:ii});jo();ka();Ar();Ea();var ys={$:f,get ws(){return w()},get connected(){return a.get("connected")},get projectName(){return a.get("projectName")},messagesEl:I,sessionListEl:Qa,sidebar:ls,sidebarOverlay:ds,sidebarToggleBtn:fs,sidebarExpandBtn:ps,hamburgerBtn:us,newSessionBtn:cs,headerTitleEl:Lt,showConfirm:ei,onFilesTabOpen:function(){No(),Ho(),V()&&q()},requestKnowledgeList:function(){Hn()},switchProject:function(e){si(e)},openTerminal:function(){Ro()},showHomeHub:function(){Ja()},getUpcomingSchedules:hn,get multiUser(){return a.get("isMultiUserMode")},get myUserId(){return a.get("myUserId")},get projectOwnerId(){return a.get("currentProjectOwnerId")},get ownerLocked(){return a.get("ownerLocked")},openDm:function(e){Xa(e)},openMateWizard:function(){$a()},openAddProjectModal:function(){Sr()},sendWs:function(e){var t=w();t&&t.readyState===1&&t.send(JSON.stringify(e))},onDmRemoveUser:function(e){var t=Object.assign({},a.get("dmRemovedUsers"));t[e]=!0,a.set({dmRemovedUsers:t})},getHistoryFrom:function(){return a.get("historyFrom")},get permissions(){return a.get("permissions")},get projectList(){return be()||[]},availableBuiltins:function(){return a.get("cachedAvailableBuiltins")||[]}};ga();Oe([pr,Bn,jn,Zt,Un,en,vr,Yr]);Io(ys);var At=function(){return w()};Fn(At);Nn(At);Oe([tr]);_n(At,{onShow:function(){On(),Co()}});so({switchProject:function(e){si(e)},currentSlug:function(){return a.get("currentSlug")},matesList:function(){return a.get("cachedMatesList")||[]},availableBuiltins:function(){return a.get("cachedAvailableBuiltins")||[]},allUsers:function(){return a.get("cachedAllUsers")||[]},dmConversations:function(){return a.get("cachedDmConversations")||[]},myUserId:function(){return a.get("myUserId")},selectSession:function(e){V()&&q();var t=document.getElementById("sticky-notes-panel");if(t&&!t.classList.contains("hidden")){var n=document.getElementById("sticky-notes-sidebar-btn");n&&n.click()}var r=w();r&&r.readyState===1&&r.send(JSON.stringify({type:"switch_session",id:e}))},openDm:function(e){Xa(e)},runAction:function(e){switch(e){case"createMate":$a();break;case"openSettings":vn();break;case"showHome":Ja();break}}});ya();nr();Xt();function Ss(e){Cn(e)}function ws(){Mn()}function ks(e){En(e)}function Cs(){go()}function Ms(){ho()}function ti(){Ln()}function ni(){In()}function Es(){Tn()}function Ps(){Rn()}function Bt(e){Kt(e)}var $=f("new-msg-btn"),Fa="\u2193 Latest";function It(){var e=f("input-area");e&&($.style.bottom=e.offsetHeight+12+"px")}var qa=f("input-area");qa&&window.ResizeObserver?new ResizeObserver(It).observe(qa):window.addEventListener("resize",It);It();I.addEventListener("scroll",function(){if(!Vt()){var e=I.scrollHeight-I.scrollTop-I.clientHeight,t=e>150;Gt(t),t?($.classList.contains("hidden")&&($.textContent=Fa),$.classList.remove("hidden")):($.classList.add("hidden"),$.textContent=Fa)}});$.addEventListener("click",function(){ri()});document.addEventListener("visibilitychange",function(){document.hidden||Te()});I.addEventListener("click",function(e){var t=e.target.closest(".msg-action-fork");if(t){var n=t.closest("[data-uuid]");if(!(!n||!n.dataset.uuid)){var r=n.dataset.uuid;ei("Fork session from this message?",function(){var o=w();o&&o.readyState===1&&o.send(JSON.stringify({type:"fork_session",uuid:r}))},"Fork",!1)}}});function Te(){Yt()}function ri(){Qt()}ln();kn();Pr();rr();qr();Nr();_a();Qr();Hr();Fr();zr();lo();xn();Dn();Wt();rn({$:f,get ws(){return w()},get connected(){return a.get("connected")},get turnCounter(){return zt()},messagesEl:I,inputEl:$e,finalizeAssistantBlock:function(){xs()},addToMessages:function(e){Bt(e)},scrollToBottom:function(){Te()},setActivity:function(e){ks(e)},stopUrgentBlink:function(){ws()},showImageModal:Rt,getContextPercent:function(){var e=Pn();return e.contextWindow>0?Math.round(e.input/e.contextWindow*100):0},isMateDm:function(){return a.get("dmMode")&&a.get("dmTargetUser")&&a.get("dmTargetUser").isMate},getMateName:function(){return a.get("dmTargetUser")&&a.get("dmTargetUser").displayName||"Mate"},getMateAvatarUrl:function(){return document.body.dataset.mateAvatarUrl||""},getClaudeAvatar:function(){return gs},getMateById:function(e){var t=a.get("cachedMatesList");if(!e||!t)return null;for(var n=0;n<t.length;n++)if(t[n].id===e)return t[n];return null}});function oi(e,t,n,r,o){uo(e,t,n,r,o)}function ai(e,t){po(e,t)}function xs(){mo()}function ii(e,t){fo(e,t)}function Ls(){bo()}function Is(){Rr()}function si(e){_e(e)}window.addEventListener("popstate",function(){if(/^\/projects\/?$/.test(location.pathname)){Ue(!0);return}Cr();var e=location.pathname.match(/^\/p\/([a-z0-9_-]+)/),t=e?e[1]:null;if(!t){Ue(!0);return}er("project",t),hs()&&void 0,t&&t!==a.get("currentSlug")&&(_o(),oe(),V()&&q(),mn(t),a.set({currentSlug:t}),K="/p/"+t+"/",me="/p/"+t+"/ws",a.set({basePath:K,wsPath:me}),Is(),li())});function li(){$r()}co({get ws(){return w()},get connected(){return a.get("connected")},get processing(){return a.get("processing")},get basePath(){return K},inputEl:$e,sendBtn:is,slashMenu:ss,messagesEl:I,imagePreviewBar:ms,slashCommands:function(){return a.get("slashCommands")},messageUuidMap:function(){return a.get("messageUuidMap")},addUserMessage:oi,addSystemMessage:ii,toggleUsagePanel:ti,toggleStatusPanel:ni,toggleContextPanel:Ps,resetContextData:Es,showImageModal:Rt,hideSuggestionChips:Ls,getGhostSuggestion:function(){return vo()},setSendBtnMode:Ss,isDmMode:function(){return a.get("dmMode")&&!(a.get("dmTargetUser")&&a.get("dmTargetUser").isMate)},getDmKey:function(){return a.get("dmKey")},handleDmSend:function(){vs()},isDebateEndedMode:function(){return a.get("debateEndedMode")},handleDebateEndedSend:function(){handleDebateEndedSend()},isDebateConcludeMode:function(){return a.get("debateConcludeMode")},handleDebateConcludeSend:function(){Ds()},isDebateFloorMode:function(){return a.get("debateFloorMode")},handleDebateFloorSend:function(){Bs()},isMateDm:function(){return a.get("dmMode")&&a.get("dmTargetUser")&&a.get("dmTargetUser").isMate},getDmMateId:function(){var e=a.get("dmTargetUser");return a.get("dmMode")&&e&&e.isMate?e.id:null},getMateName:function(){return a.get("dmTargetUser")&&a.get("dmTargetUser").displayName||"Mate"},getMateAvatarUrl:function(){return document.body.dataset.mateAvatarUrl||""},showMatePreThinking:function(){Ms()},showClaudePreThinking:function(){Cs()},myUserId:function(){return a.get("myUserId")},myDisplayName:function(){var e=null;try{e=JSON.parse(localStorage.getItem("clay_my_user")||"null")}catch{}return e&&(e.displayName||e.username)||document.body.dataset.myDisplayName||"Me"}});hr();Gr({get ws(){return w()},get connected(){return a.get("connected")},inputEl:$e,messagesEl:I,matesList:function(){return a.get("cachedMatesList")||[]},availableBuiltins:function(){return a.get("cachedAvailableBuiltins")||[]},allUsers:function(){return a.get("cachedAllUsers")||[]},myUserId:function(){return a.get("myUserId")},scrollToBottom:Te,addUserMessage:oi,addCopyHandler:ai,addToMessages:Bt,showImageModal:Rt,showPasteModal:sn});xr({get ws(){return w()},sendWs:function(e){var t=w();t&&t.readyState===1&&t.send(JSON.stringify(e))},messagesEl:I,addToMessages:function(e){Bt(e)},scrollToBottom:Te,addCopyHandler:ai,matesList:function(){return a.get("cachedMatesList")||[]},availableBuiltins:function(){return a.get("cachedAvailableBuiltins")||[]},currentMateId:function(){return a.get("dmTargetUser")&&a.get("dmTargetUser").isMate?a.get("dmTargetUser").id:a.get("homeChatMateId")||null},requireSkills:Rs,showDebateEndedMode:function(e){As(e)}});ra();Zn({basePath:K});bn();ur({basePath:K});function Ts(){fn()}fetch("/api/me").then(function(e){return e.json()}).then(function(e){if(e.multiUser&&(a.set({isMultiUserMode:!0}),document.body&&document.body.classList.add("is-multi-user")),e.user&&e.user.id&&(a.set({myUserId:e.user.id}),yn()),a.set({authIdentityLoaded:!0}),a.set({permissions:e.permissions||null,projectsAccessLoaded:!0}),e.mustChangePin&&Ts(),!a.get("isMultiUserMode")){var t=document.getElementById("icon-strip-users");t&&(t.innerHTML="",t.classList.add("hidden"))}la();var n=a.get("permissions");if(n){if(!n.terminal){var r=document.getElementById("terminal-toggle-btn");r&&(r.style.display="none");var o=document.getElementById("terminal-sidebar-btn");o&&(o.style.display="none");var i=document.getElementById("shell-command-btn");i&&(i.style.display="none");var s=document.getElementById("input-more-shell");s&&(s.style.display="none")}if(!n.fileBrowser){var l=document.getElementById("file-browser-btn");l&&(l.style.display="none");var u=document.getElementById("git-placard");u&&(u.style.display="none")}if(!n.skills){var d=document.getElementById("skills-btn");d&&(d.style.display="none");var c=document.getElementById("mate-skills-btn");c&&(c.style.display="none")}if(!n.scheduledTasks){var p=document.getElementById("scheduler-btn");p&&(p.style.display="none")}if(!n.createProject){var g=document.getElementById("icon-strip-add");g&&(g.style.display="none")}}}).catch(function(){});ar().then(function(e){if(a.get("isMultiUserMode")&&!e){var t=document.getElementById("update-pill-wrap");t&&(t.style.display="none")}});or({$:f,get ws(){return w()},get connected(){return a.get("connected")},messagesEl:I,sessionListEl:Qa,scrollToBottom:Te,forceScrollToBottom:ri,basePath:K,toggleUsagePanel:ti,toggleStatusPanel:ni});ir();Sn(oo());wn();Uo({get ws(){return w()},get connected(){return a.get("connected")},get activeSessionId(){return a.get("activeSessionId")},get cwd(){return a.get("cwd")},messagesEl:I,fileTreeEl:f("file-tree"),fileViewerEl:f("file-viewer")});Oe([Lo,Ko,tn]);qo();Or();An();To({get ws(){return w()},get connected(){return a.get("connected")},terminalContainerEl:f("terminal-container"),terminalBodyEl:f("terminal-body"),fileViewerEl:f("file-viewer")});on({get ws(){return w()},get connected(){return a.get("connected")}});ea();(function(){var e=new URLSearchParams(window.location.search),t=e.get("playbook");if(t){setTimeout(function(){Zo(t)},300),e.delete("playbook");var n=e.toString(),r=window.location.pathname+(n?"?"+n:"")+window.location.hash;window.history.replaceState(null,"",r)}})();Jt({messagesEl:I,get ws(){return w()},getHistoryFrom:function(){return a.get("historyFrom")}});var Va=f("find-in-session-btn");Va&&Va.addEventListener("click",function(){$t()});wo();xo();yo(function(){ae()&&Eo()});var Wa=f("sticky-notes-sidebar-btn");Wa&&Wa.addEventListener("click",function(){he(),ve(),V()&&q(),ae()&&oe(),ko(),Mo()});var za=document.querySelectorAll("#sticky-notes-toggle-btn");for(Ye=0;Ye<za.length;Ye++)za[Ye].addEventListener("click",function(){So()});var Ye,Ga=f("sticky-notes-sidebar-count");Ga&&Ga.addEventListener("click",function(e){e.stopPropagation(),he(),ve(),V()&&q(),ae()?oe():Po()});var Ka=f("git-placard-more"),Ya=f("terminal-sidebar-btn");Ka&&Ka.addEventListener("click",function(){et(),he(),ve(),ae()&&oe(),V()&&q()});Ya&&Ya.addEventListener("click",function(){et(),he(),ve(),ae()&&oe(),V()&&q()});function Rs(e,t){Vr(e,t)}function Ds(){Lr()}function As(e){Ir(e)}function Bs(){Tr()}an();mr();pn({get ws(){return w()},get connected(){return a.get("connected")},get activeSessionId(){return a.get("activeSessionId")},basePath:K,currentSlug:Je,getProjects:function(){return be()}});_r();Er();Dr();Aa();wr();io();Wr();kr();Kr();Mr();Ta();Xr();Jr();lucide.createIcons();ge&&typeof performance<"u"&&performance.mark&&performance.mark("clay:bootstrap-complete");li();Qe&&location.hash==="#scheduler"?setTimeout(function(){gn("calendar")},500):Qe&&$e.focus();
@@ -1 +0,0 @@
1
- import{l as a,m as b,n as c,o as d}from"./chunk-WKO3T75E.js";import"./chunk-NPKRTUNG.js";import"./chunk-DGOFGEUK.js";export{a as closeLinear,c as handleLinearResult,d as initLinearPanel,b as openLinear};
@@ -1 +0,0 @@
1
- import{p as a,q as b,r as c,s as d,t as e,u as f}from"./chunk-WKO3T75E.js";import"./chunk-NPKRTUNG.js";import"./chunk-DGOFGEUK.js";export{c as closeIssues,f as handleIssuesMessage,e as initIssues,d as openIssues,b as refreshGithubIssue,a as requestIssue};
@@ -1 +0,0 @@
1
- import{L as a,M as b,N as c,O as d,P as e,Q as f}from"./chunk-NPKRTUNG.js";import"./chunk-DGOFGEUK.js";export{e as handleSharedBrowserMessage,d as hideSharedBrowser,f as initSharedBrowser,c as openSharedBrowser,b as openSharedBrowserAt,a as sendBrowserInput};
@@ -1 +0,0 @@
1
- import{A as b,B as c,z as a}from"./chunk-WKO3T75E.js";import"./chunk-NPKRTUNG.js";import"./chunk-DGOFGEUK.js";export{a as closeLoginBrowser,c as handleLoginBrowserMessage,b as openLoginBrowser};
@@ -1 +0,0 @@
1
- var n={},e=[];function c(t){n=Object.assign({},t)}var o={get:function(t){return n[t]},snap:function(){return n},set:function(t){var r=n;n=Object.assign({},n,t);for(var u=0;u<e.length;u++)e[u](n,r)},getState:function(){return n},setState:function(t){o.set(t)},subscribe:function(t){return e.push(t),function(){e=e.filter(function(r){return r!==t})}}};var s=null;function f(){return s}function i(t){s=t}export{c as a,o as b,f as c,i as d};
@@ -1 +0,0 @@
1
- import{b as n,c}from"./chunk-DGOFGEUK.js";var w="/api/user/workbench-layout";function u(){return n.get("myUserId")||"default"}function k(e){return e==="overlay"||e==="docked"}function t(){return n.get("workbenchLayoutPreference")}function l(e){var r=e&&e.accountId===u();return{mode:r?e.mode:"overlay",accountId:u(),ready:!1,loading:!1,saving:!1,error:"",socket:c(),revision:r?e.revision:0,generation:(e&&e.generation||0)+1,checkedAt:0}}function f(){return(!t()||t().accountId!==u()||t().socket!==c())&&n.set({workbenchLayoutPreference:l(t())}),t()}function s(e){var r=t();return r&&r.receipt===e&&r.accountId===u()&&r.generation===e.generation&&n.get("currentSlug")===e.project&&c()===e.socket&&n.get("connected")===e.connected&&n.get("authIdentityLoaded")===e.identity&&n.get("projectSplitViewSocketGeneration")===e.socketGeneration}function m(e){var r=f(),i=e!==void 0,a={generation:r.generation,project:n.get("currentSlug"),socket:c(),connected:n.get("connected"),identity:n.get("authIdentityLoaded"),socketGeneration:n.get("projectSplitViewSocketGeneration")},g=new AbortController,y=Object.assign({},r,{loading:!i,saving:i,error:"",receipt:a}),h=Promise.resolve().then(async function(){var b=setTimeout(function(){g.abort()},15e3);try{if(!s(a))return!1;var d=await fetch(w,{method:i?"PUT":"GET",credentials:"same-origin",cache:"no-store",signal:g.signal,headers:{"Content-Type":"application/json","X-Clay-Settings":"1","X-Clay-Account-Id":r.accountId},body:i?JSON.stringify({mode:e,revision:r.revision}):void 0}),o=await d.json();if(!s(a))return!1;if(!d.ok)throw new Error(d.status===409?"Workbench layout changed elsewhere. Reload the preference and try again.":i?"Workbench layout could not be saved. Reload the preference before trying again.":"Workbench layout could not be loaded. Try again.");if(!o||o.accountId!==r.accountId||!k(o.mode)||!Number.isSafeInteger(o.revision)||o.revision<r.revision||o.revision===r.revision&&o.mode!==r.mode||i&&(o.mode!==e||o.revision!==r.revision+(e===r.mode?0:1)))throw new Error("Workbench preference response is stale. Reload and try again.");return n.set({workbenchLayoutPreference:Object.assign({},t(),{mode:o.mode,revision:o.revision,ready:!0,loading:!1,saving:!1,error:"",checkedAt:Date.now(),receipt:null,promise:null})}),!0}catch(v){return s(a)&&n.set({workbenchLayoutPreference:Object.assign({},t(),{ready:!1,loading:!1,saving:!1,receipt:null,promise:null,checkedAt:0,error:v.name==="AbortError"?"Workbench preference request timed out. Reload to check the saved layout.":v.message})}),!1}finally{clearTimeout(b),t()&&t().receipt===a&&!s(a)&&n.set({workbenchLayoutPreference:Object.assign(l(t()),{error:"Connection changed. Reload the workbench preference."})})}});return y.promise=h,n.set({workbenchLayoutPreference:y}),h}function L(){var e=f();return e.loading||e.saving?e.promise||Promise.resolve(!1):!n.get("authIdentityLoaded")||!n.get("connected")?Promise.resolve(!1):e.ready&&Date.now()-e.checkedAt<3e4?Promise.resolve(!0):m()}function S(e){var r=f();return!k(e)||!r.ready||r.loading||r.saving||!n.get("connected")||!n.get("authIdentityLoaded")?Promise.resolve(!1):m(e)}n.subscribe(function(e,r){(e.myUserId!==r.myUserId||e.currentSlug!==r.currentSlug||e.connected!==r.connected||e.authIdentityLoaded!==r.authIdentityLoaded||e.projectSplitViewSocketGeneration!==r.projectSplitViewSocketGeneration)&&n.set({workbenchLayoutPreference:l(t())})});export{L as ensureWorkbenchLayoutPreference,S as saveWorkbenchLayoutMode};
@@ -1,2 +0,0 @@
1
- import{b as i,c as m}from"./chunk-DGOFGEUK.js";function k(e,r,n){var t=document.createElement("div");if(t.className="toast",r&&t.classList.add("toast-"+r),t.textContent=e,n){var o=document.createElement("div");o.style.cssText="font-size:11px;opacity:0.7;margin-top:4px;max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap",o.textContent=n.split(`
2
- `)[0],t.appendChild(o)}document.body.appendChild(t),requestAnimationFrame(function(){t.classList.add("visible")});var s=r==="warn"?5e3:1500;setTimeout(function(){t.classList.remove("visible"),setTimeout(function(){t.remove()},300)},s)}var ze=/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&navigator.maxTouchPoints>1;function cr(e){var r;if(ze){var n=document.createElement("textarea");n.value=e,n.style.cssText="position:fixed;left:-9999px;opacity:0",document.body.appendChild(n),n.focus(),n.setSelectionRange(0,n.value.length),document.execCommand("copy"),document.body.removeChild(n),r=Promise.resolve()}else if(navigator.clipboard&&navigator.clipboard.writeText)r=navigator.clipboard.writeText(e);else{var t=document.createElement("textarea");t.value=e,t.style.cssText="position:fixed;left:-9999px;opacity:0",document.body.appendChild(t),t.focus(),t.setSelectionRange(0,t.value.length),document.execCommand("copy"),document.body.removeChild(t),r=Promise.resolve()}return r.then(function(){k("Copied to clipboard")})}function he(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function N(e){var r=i.snap();return e&&r.connected&&e.socket===m()&&e.ownerId===(r.myUserId||null)&&e.slug===r.currentSlug&&e.sessionId===r.activeSessionId&&e.origin===r.sessionOriginId&&e.runtime===r.controlRuntimeId}function we(e){var r=i.get("studioDocumentSource");r&&clearTimeout(r.timer),r&&N(r)&&r.socket.send(JSON.stringify({type:"fs_unwatch"}));var n=i.snap(),t={token:crypto.randomUUID(),socket:m(),ownerId:n.myUserId||null,slug:n.currentSlug,sessionId:n.activeSessionId,origin:n.sessionOriginId,runtime:n.controlRuntimeId,path:e.path,expires:Date.now()+3e5};return t.timer=setTimeout(function(){i.get("studioDocumentSource")===t&&(N(t)&&t.socket.send(JSON.stringify({type:"fs_unwatch"})),i.set({studioDocumentSource:null}))},3e5),i.set({studioDocumentSource:t}),N(t)&&t.socket.send(JSON.stringify({type:"fs_watch",path:t.path})),Object.assign({},e,{studioDocument:{token:t.token,sourceSlug:t.slug,sourceSessionId:t.sessionId,sourceOrigin:t.origin,runtimeId:t.runtime,expires:t.expires,path:t.path}})}function fr(e,r,n){var t=r.message&&r.message.studioDocument;if(!(!n||!t||t.path!==r.message.path||t.sourceSlug!==r.studioSource.slug||t.sourceSessionId!==r.studioSource.sessionId||t.sourceOrigin!==r.studioSource.origin||t.runtimeId!==r.studioSource.runtime)){me();var o=m();o&&o.readyState===1&&o.send(JSON.stringify({type:"fs_unwatch"})),i.set({fileReadRequest:null,pendingFileNavigation:null});var s={descriptor:t,frame:n,document:n.contentDocument,source:e.source,owner:i.get("myUserId"),context:i.get("currentSlug")};s.timer=setTimeout(function(){i.get("studioDocumentView")===s&&i.set({studioDocumentView:{descriptor:s.descriptor,invalidated:!0}})},Math.max(0,t.expires-Date.now())),i.set({studioDocumentView:s})}}function Ve(e){var r=i.get("studioDocumentView");if(!r||r.invalidated||!r.frame||Date.now()>r.descriptor.expires||r.descriptor.path!==e)return null;var n=r.frame.clayStudioSource,t=n&&n.document===r.frame.contentDocument&&n.window===r.source&&n.identity();return t&&t.connected&&t.ownerId===r.owner&&t.slug===r.descriptor.sourceSlug&&t.sessionId===r.descriptor.sourceSessionId&&t.origin===r.descriptor.sourceOrigin&&t.runtime===r.descriptor.runtimeId&&r.document===r.frame.contentDocument&&r.source===r.frame.contentWindow&&r.owner===i.get("myUserId")&&r.context===i.get("currentSlug")?r:null}function pr(e){var r=i.get("studioDocumentView");if(!r||r.descriptor.path!==e)return!1;var n=Ve(e);return n?(n.source.postMessage({type:"clay-studio-document-refresh",token:n.descriptor.token},location.origin),!0):(k("The source connection changed. Reopen this document from its conversation."),!0)}function me(){var e=i.get("studioDocumentView");e&&clearTimeout(e.timer),e&&e.frame&&e.source===e.frame.contentWindow&&e.document===e.frame.contentDocument&&e.source.postMessage({type:"clay-studio-document-close",token:e.descriptor.token},location.origin),i.set({studioDocumentView:null})}function hr(e){var r=i.get("studioDocumentSource");return!N(r)||Date.now()>r.expires||e.path!==r.path||e.type!=="fs_file_changed"&&!(e.type==="fs_read_result"&&e.requestId===r.requestId)?!1:(window.parent.postMessage({type:"clay-studio-document-update",token:r.token,message:e},location.origin),!0)}function wr(){window.addEventListener("message",function(r){var n=r.data,t=i.get("studioDocumentSource");r.origin!==location.origin||r.source!==window.parent||!n||!t||n.token!==t.token||!N(t)||(n.type==="clay-studio-document-close"&&(clearTimeout(t.timer),t.socket.send(JSON.stringify({type:"fs_unwatch"})),i.set({studioDocumentSource:null})),n.type==="clay-studio-document-refresh"&&Date.now()<=t.expires&&(t.requestId="studio-document-"+crypto.randomUUID(),t.socket.send(JSON.stringify({type:"fs_read",path:t.path,requestId:t.requestId,projectSlug:t.slug,sessionId:String(t.sessionId),accountId:t.ownerId}))))});function e(){var r=i.get("studioDocumentSource");r&&clearTimeout(r.timer),N(r)&&r.socket.send(JSON.stringify({type:"fs_unwatch"})),i.set({studioDocumentSource:null});var n=i.get("studioDocumentView");me(),n&&i.set({studioDocumentView:{descriptor:n.descriptor,invalidated:!0}})}i.subscribe(function(r,n){(!r.connected&&n.connected||r.currentSlug!==n.currentSlug||r.activeSessionId!==n.activeSessionId||r.myUserId!==n.myUserId)&&e()}),document.addEventListener("contextual-ask-stopped",e,!0),document.addEventListener("click",function(r){r.target.closest("#generation-stop, #autonomous-run-stop, #send-btn.stop")&&e()},!0)}function Je(){var e=i.snap();return{projectSlug:e.currentSlug,ownerId:e.myUserId,sessionId:e.activeSessionId,origin:e.sessionOriginId,socket:m(),binding:e.paneCommittedBinding||null,epoch:e.sessionActionEpoch||0}}function Ge(e,r){var n=i.snap();return!!e&&e.socket===m()&&n.connected&&e.projectSlug===n.currentSlug&&e.ownerId===n.myUserId&&e.sessionId===n.activeSessionId&&e.origin===n.sessionOriginId&&e.epoch===(n.sessionActionEpoch||0)&&(r||!n.deferredSessionSwitch)&&!n.panePendingBinding&&!n.paneSuspended&&(e.binding?n.paneReady&&$(e.binding,n.paneCommittedBinding):!n.paneCommittedBinding)}function yr(e,r){var n=Je();return function(){if(Ge(n,r)){var t=i.get("paneCallbackBinding");i.set({paneCallbackBinding:n.binding});try{return e.apply(this,arguments)}finally{i.set({paneCallbackBinding:t})}}}}function $(e,r){return!!e&&!!r&&["requestId","generation","projectSlug","viewerId","ownerId","sessionId","sessionOriginId","role","workerGeneration","groupStamp","parentSessionOriginId"].every(function(n){return e[n]===r[n]})}function Ke(e,r){return!!e&&!!r&&["projectSlug","viewerId","ownerId","sessionId","sessionOriginId","role","workerGeneration","groupStamp","parentSessionOriginId"].every(function(n){return e[n]===r[n]})}function Ye(e,r,n){var t=(r||[]).find(function(a){return a.id===n});if(!t||t.isMate||!t.sessionOriginId||(t.runtimeMode||t.mode||"gui")!=="gui"||t.tuiSuspended)return null;var o=(e.splitGroups||[]).find(function(a){return a.members.indexOf(n)>=0}),s=t.sessionRole==="worker"&&r.find(function(a){return a.id===t.parentSessionId});return t.sessionRole==="worker"&&(!s||!t.parentAvailable||!Number.isSafeInteger(t.workerGeneration)||!s.sessionOriginId||s.ownerId!==t.ownerId||!o||!o.pair||o.pair.driverId!==s.id)?null:{projectSlug:e.currentSlug,viewerId:e.myUserId||null,ownerId:t.ownerId||null,sessionId:t.id,sessionOriginId:t.sessionOriginId,role:t.sessionRole==="worker"?"worker":"driver",workerGeneration:t.workerGeneration||null,parentSessionOriginId:s?s.sessionOriginId:null,groupStamp:o?JSON.stringify({id:o.id,members:o.members,pair:o.pair||null}):null}}function F(e,r){if(!e||!e.clayPane||e.closest&&e.closest(".split-pane-cached"))return!1;var n=e.clayPane,t=n.identity(),o=i.snap(),s=o.splitPanes;if(!o.connected)return!1;var a=t&&Ye(o,o.paneBindingSessions||[],t.sessionId),c=!!(t&&s&&s.panes.some(function(g){return g.slug===t.projectSlug&&g.sessionId===t.sessionId})),u=(o.projectSplitViews||[]).find(function(g){return g.id===o.projectSplitViewActiveId}),d=!!(t&&t.binding&&!s&&u&&u.sessions.some(function(g){return g.id===t.sessionId&&g.sessionOriginId===t.binding.sessionOriginId})),l=!!(t&&t.binding&&!s&&!u&&o.projectSplitViewSingletonOrigin===t.binding.sessionOriginId&&t.sessionId===Number(e.dataset.sessionId)&&t.binding.sessionOriginId===e.dataset.sessionOriginId);return n.source===e.contentWindow&&n.document===e.contentDocument&&t&&t.ready&&Ke(a,t.binding)&&t.ownerId===(o.myUserId||null)&&t.projectSlug===o.currentSlug&&(c||d||l)&&(!r||$(t.binding,r.paneBinding))}function Q(){return i.get("paneReady")&&!i.get("paneSuspended")?i.get("paneCommittedBinding"):null}function Sr(e){return!e||!e.paneBinding?!0:e.isConnected!==!1&&i.get("paneReady")&&!i.get("paneSuspended")&&$(e.paneBinding,i.get("paneCommittedBinding"))}function kr(e){if(i.get("paneSuspended"))return!1;var r=i.get("panePendingBinding")||i.get("paneCommittedBinding");return r?$(r,e):!e}function $e(e){var r=(i.get("cachedMatesList")||[]).find(function(o){return o&&o.id===e});if(!r||r.archived||r.contentAccess===!1||r.accessible===!1)return null;var n=i.get("myUserId");if(n&&r.createdBy&&r.createdBy!==n)return null;var t=(i.get("projectsHubList")||[]).find(function(o){return o.slug==="mate-"+e});return t&&t.contentAccess===!1?null:r}function te(e){return JSON.stringify([e.id,e.createdBy||null,e.createdAt||null,e.builtinKey||null])}function Br(e,r){var n=e||(i.get("contextualClay")||{}).mateId,t=i.get("contextualClay")||{};if(!r&&t.mateId===n&&t.startingAsk)return null;var o=r||t.mateId===n&&t.sessionId||(i.get("contextualSessionSelection")||{})[n];return Array.from(document.querySelectorAll("#contextual-clay iframe")).find(function(s){return s.dataset.mateId===n&&(!o||String(o)===s.dataset.sessionId)})||null}function Cr(e){var r=$e(e||(i.get("contextualClay")||{}).mateId);return r&&r.builtinKey!=="clay"?document.querySelector('.icon-strip-project-mate[data-mate-id="'+CSS.escape(r.id)+'"]'):document.querySelector(".icon-strip-brand")}function Er(e){if(!e||!e.isConnected||e.closest('[hidden], [inert], [aria-hidden="true"]'))return!1;var r=e.getBoundingClientRect(),n=getComputedStyle(e);if(n.visibility!=="visible"||Number(n.opacity)===0||!r.width||!r.height||r.left<0||r.top<0||r.right>innerWidth||r.bottom>innerHeight)return!1;for(var t=e.parentElement;t;t=t.parentElement)if(Number(getComputedStyle(t).opacity)===0)return!1;return[r.left+2,r.left+r.width/2,r.right-2].every(function(o){var s=document.elementFromPoint(o,r.top+r.height/2);return s&&e.contains(s)})}function ne(e){var r=/^[a-f0-9-]{36}$/;return e&&e.version===1&&r.test(e.id)&&r.test(e.token)&&/^activity:[a-f0-9-]{36}$/.test(e.activityId)&&Number.isSafeInteger(e.deadline)&&e.target&&["document","sketch","browser"].indexOf(e.target.surface)>=0&&typeof e.target.key=="string"&&e.target.key.length<=400&&/^[a-f0-9]{64}$/.test(e.target.revision)}function ie(e,r){return ne(e)&&e.mateId===r.activeProjectMateId&&e.sourceSlug==="mate-"+e.mateId&&e.ownerId===(r.myUserId||null)&&e.runtimeId===r.controlRuntimeId&&e.sourceSlug===r.currentSlug&&e.sourceSessionId===r.activeSessionId&&e.sourceSessionOriginId===r.sessionOriginId&&(r.cachedMatesList||[]).some(function(n){return n.id===e.mateId&&n.builtinKey==="clay"&&!n.archived&&!n.lifecycleDeletion&&te(n)===e.sourceMateStamp})}function oe(e){var r=i.get("clayControlActivity"),n=i.get("clayControlForwarded"),t=i.get("paneMode")?n:r&&r.message;return t&&t.id===e.activityId&&t.mateId===e.mateId&&t.sourceSlug===e.sourceSlug&&t.sourceSessionId===e.sourceSessionId&&t.sourceSessionOriginId===e.sourceSessionOriginId&&t.sourceMateStamp===e.sourceMateStamp&&t.sourceQueryGeneration===e.sourceQueryGeneration&&t.phase!=="clear"&&!(i.get("clayControlReceipts")||[]).some(function(o){return o.id===e.activityId&&o.stopped})}function Qe(){return{window,document,identity:function(){var e=i.snap();return{ownerId:e.myUserId||null,slug:e.currentSlug,sessionId:e.activeSessionId,origin:e.sessionOriginId,connected:e.connected,runtime:e.controlRuntimeId,mateId:e.activeProjectMateId}}}}function Ur(e,r){if(!i.get("paneMode")||window.parent===window)return!1;var n=window.frameElement;if(!n)return!1;n.clayStudioSource=Qe();var t=e.controlPresentation;if(t&&(!ie(t,i.snap())||!oe(t)))return!0;r==="clay-pane-present-markdown"&&(e=we(e));var o=Object.assign({},i.get("clayStudioRelays")||{});return Object.keys(o).forEach(function(s){Date.now()>o[s].evidence.deadline&&delete o[s]}),Object.keys(o).length>=100||(t&&(o[t.id]={evidence:t,socket:m()}),i.set({clayStudioRelays:o}),window.parent.postMessage({type:r,message:e,paneBinding:Q(),studioSource:n.clayStudioSource.identity()},location.origin)),!0}function ve(e,r){if(e.origin!==location.origin||!r||!r.studioSource)return null;var n=Array.from(document.querySelectorAll("#contextual-clay iframe, .split-pane-frame")).find(function(l){return l.contentWindow===e.source}),t=n&&n.clayStudioSource,o=t&&t.window===n.contentWindow&&t.document===n.contentDocument&&t.identity(),s=r.studioSource;if(!o||!o.connected||o.ownerId!==(i.get("myUserId")||null)||o.ownerId!==s.ownerId||o.slug!==s.slug||o.sessionId!==s.sessionId||o.origin!==s.origin||o.runtime!==s.runtime||new URL(n.src,location.href).pathname!=="/p/"+encodeURIComponent(o.slug)+"/")return null;if(n.classList.contains("split-pane-frame")){if(n.clayPane&&!F(n,r))return null;var a=i.get("splitPanes");if(!a||!a.panes.some(function(l){return l.slug===o.slug&&String(l.sessionId)===String(o.sessionId)}))return null}else{var c=n.conversation,u=c&&c.document===n.contentDocument&&c.source===n.contentWindow&&c.identity();if(!u||!u.connected||!u.available||u.ownerId!==o.ownerId||u.sessionId!==o.sessionId||u.sessionOriginId!==o.origin)return null}var d=r.message&&r.message.controlPresentation;return d&&(!ne(d)||d.sourceSlug!=="mate-"+d.mateId||d.mateId!==o.mateId||!(i.get("cachedMatesList")||[]).some(function(l){return l.id===d.mateId&&l.builtinKey==="clay"&&!l.archived&&!l.lifecycleDeletion&&te(l)===d.sourceMateStamp})||d.sourceSlug!==o.slug||d.sourceSessionId!==o.sessionId||d.sourceSessionOriginId!==o.origin||d.ownerId!==o.ownerId||d.runtimeId!==o.runtime)?null:n}function jr(e,r){var n=ve(e,r),t=r.message&&r.message.controlPresentation;if(!n||!t||!oe(t)||Date.now()>t.deadline)return!1;var o=Object.assign({},i.get("clayStudioForwarded")||{});return Object.keys(o).forEach(function(s){Date.now()>o[s].evidence.deadline&&delete o[s]}),Object.keys(o).length>=100?!1:(o[t.id]={frame:n,document:n.contentDocument,window:e.source,data:r,evidence:t},i.set({clayStudioForwarded:o}),!0)}function Ze(e){var r=m(),n=i.get("myUserId"),t=i.get("currentSlug"),o=(i.get("clayStudioForwarded")||{})[e.id];return{valid:function(){return Date.now()>e.deadline||!oe(e)||!i.get("connected")||n!==i.get("myUserId")||t!==i.get("currentSlug")||m()!==r?!1:o?o.document===o.frame.contentDocument&&o.window===o.frame.contentWindow&&!!ve({origin:location.origin,source:o.window},o.data):ie(e,i.snap())},send:function(s){var a={type:"clay_studio_rendered",id:e.id,token:e.token,sessionOriginId:e.sourceSessionOriginId,revision:e.target.revision,visible:s};o?o.document===o.frame.contentDocument&&o.window.postMessage({type:"clay-studio-receipt",message:a},location.origin):m()===r&&r&&r.readyState===1&&r.send(JSON.stringify(a))}}}async function Xe(e){var r=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(JSON.stringify(e)));return Array.from(new Uint8Array(r)).map(function(n){return n.toString(16).padStart(2,"0")}).join("")}function be(e,r,n,t){if(!r)return;delete r.dataset.controlSurface;var o=e.controlPresentation;if(!ne(o))return;var s=Ze(o),a=!1,c,u,d=0,l={painted:!1,evidence:o,target:o.target,element:r,valid:s.valid};r.dataset.controlSurface=o.id;var g=Object.assign({},i.get("clayStudioSurfaces")||{});Object.keys(g).forEach(function(f){(!g[f].element.isConnected||g[f].element===r||Date.now()>g[f].evidence.deadline+6e3)&&delete g[f]}),g[o.id]=l,i.set({clayStudioSurfaces:g});function h(f){a||(a=!0,clearTimeout(u),cancelAnimationFrame(c),document.removeEventListener("visibilitychange",x),s.send(f))}l.cancel=function(){h(!1)};function x(){document.hidden&&h(!1)}document.addEventListener("visibilitychange",x),u=setTimeout(function(){h(!1)},Math.max(0,o.deadline-Date.now()));var S=o.target.surface==="document"?{content:e.content,exists:e.exists,size:e.size}:o.target.surface==="sketch"?e.source:e.data;Promise.all([Promise.resolve(n),Xe(S)]).then(function(f){if(f[1]!==o.target.revision){h(!1);return}function w(){if(!a){if(!s.valid()||document.hidden||r.dataset.controlSurface!==o.id){h(!1);return}d=er(t||r)?d+1:0,d>=2?(l.painted=!0,h(!0)):c=requestAnimationFrame(w)}}c=requestAnimationFrame(w)}).catch(function(){h(!1)})}function er(e){if(!e||!e.isConnected||e.closest('[hidden], [inert], [aria-hidden="true"]'))return!1;var r=e.getBoundingClientRect(),n=getComputedStyle(e);if(n.visibility!=="visible"||Number(n.opacity)===0)return!1;for(var t=e.parentElement;t;t=t.parentElement){var o=getComputedStyle(t);if(o.visibility!=="visible"||Number(o.opacity)===0)return!1}var s=Math.max(0,r.left),a=Math.min(innerWidth,r.right),c=Math.max(0,r.top),u=Math.min(innerHeight,r.bottom);return a<=s||u<=c?!1:[.2,.5,.8].some(function(d){return[.2,.5,.8].some(function(l){var g=document.elementFromPoint(s+(a-s)*d,c+(u-c)*l);return g&&e.contains(g)})})}function Wr(e){var r=i.get("clayStudioSurfaces")||{},n=Object.values(r).find(function(t){return t.painted&&t.target.surface===e.surface&&t.target.key===e.key&&t.target.revision===e.revision&&t.target.runtimeId===e.runtimeId&&t.target.sourceSessionOriginId===e.sourceSessionOriginId&&t.target.sourceSessionId===e.sourceSessionId&&t.target.sourceSlug===e.sourceSlug&&t.element.dataset.controlSurface===t.evidence.id&&t.valid()});return n&&n.element}function Hr(){window.addEventListener("message",function(r){if(!(r.origin!==location.origin||r.source!==window.parent||!r.data||r.data.type!=="clay-studio-receipt")){var n=r.data.message,t=Object.assign({},i.get("clayStudioRelays")||{}),o=n&&t[n.id];!o||o.evidence.token!==n.token||!ie(o.evidence,i.snap())||m()!==o.socket||o.socket.readyState!==1||Date.now()>o.evidence.deadline||(delete t[n.id],i.set({clayStudioRelays:t}),o.socket.send(JSON.stringify(n)))}});function e(){Object.values(i.get("clayStudioSurfaces")||{}).forEach(function(r){delete r.element.dataset.controlSurface,r.cancel&&r.cancel()}),i.set({clayStudioRelays:{},clayStudioForwarded:{},clayStudioSurfaces:{}})}document.addEventListener("contextual-ask-stopped",e,!0),document.addEventListener("click",function(r){r.target.closest("#generation-stop, #autonomous-run-stop, #send-btn.stop")&&e()},!0),i.subscribe(function(r,n){(!r.connected&&n.connected||r.currentSlug!==n.currentSlug||r.activeSessionId!==n.activeSessionId||r.myUserId!==n.myUserId)&&e()})}var se=null;function E(){se||(se=requestAnimationFrame(function(){se=null,lucide.createIcons()}))}function v(e,r){return r?'<span class="'+r+'"><i data-lucide="'+e+'"></i></span>':'<i data-lucide="'+e+'"></i>'}function ye(e){return!i.get("paneMode")||window.parent===window?!1:(window.parent.postMessage({type:"clay-pane-open-browser",paneBinding:Q(),url:e,projectSlug:i.get("currentSlug"),sessionId:String(i.get("activeSessionId"))},window.location.origin),!0)}function Jr(e,r){if(!e||e.origin!==window.location.origin||!r||!e.data||e.data.type!=="clay-pane-open-browser")return!1;var n=e.data,t=Object.assign({},i.snap()),o=Array.from(r.querySelectorAll(".split-pane-frame")).find(function(l){return l.contentWindow===e.source}),s=o&&o.clayPane?{slug:o.dataset.projectSlug,sessionId:o.dataset.sessionId}:o&&t.splitPanes&&t.splitPanes.panes&&t.splitPanes.panes.find(function(l){return String(l.slug)===o.dataset.projectSlug&&String(l.sessionId)===o.dataset.sessionId});if(!t.connected||!s||n.projectSlug!==t.currentSlug||n.projectSlug!==o.dataset.projectSlug||String(n.sessionId)!==o.dataset.sessionId)return!0;var a=new URL("/p/"+encodeURIComponent(s.slug)+"/?pane=1&session="+encodeURIComponent(s.sessionId),window.location.href).href;if(o.clayPane?!F(o,n):o.src!==a)return!0;var c=o.clayPane&&o.clayPane.identity().binding,u=o.contentDocument;function d(){var l=i.snap();return!l.connected||l.currentSlug!==t.currentSlug||l.myUserId!==t.myUserId||l.currentProjectOwnerId!==t.currentProjectOwnerId||l.projectSplitViewSocketGeneration!==t.projectSplitViewSocketGeneration||o.contentWindow!==e.source||o.contentDocument!==u||o.dataset.projectSlug!==n.projectSlug||String(o.dataset.sessionId)!==String(n.sessionId)||!Array.from(r.querySelectorAll(".split-pane-frame")).includes(o)?!1:c?!!o.clayPane&&F(o,n)&&o.clayPane.identity().binding===c:o.src===a&&!!(l.splitPanes&&l.splitPanes.panes.some(function(g){return String(g.slug)===s.slug&&String(g.sessionId)===String(s.sessionId)}))}return import("./chunk-7GZH3FZY.js").then(function(l){d()&&l.openSharedBrowserAt(n.url)}).catch(function(l){k(l.message||"Could not open the browser.","warn")}),!0}function z(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Z(e){if(typeof e!="string"||!e.startsWith("browser:")||e.length>8200)return null;var r=e.slice(8);if(!/^https?:\/\//i.test(r)||/[\u0000-\u0020]/.test(r))return null;try{var n=new URL(r);return n.username||n.password||!["http:","https:"].includes(n.protocol)?null:n.href}catch{return null}}function rr(e,r,n){var t=Z(e);if(!t)return null;var o=String(n||"").replace(/<[^>]*>/g,"").replace(/&amp;/g,"&").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#39;/g,"'").trim();return(!o||o===e||o===t)&&(o=new URL(t).host),'<button type="button" class="clay-browser-link clayos-record-link" data-browser-url="'+z(t)+'" data-browser-project="'+z(i.get("currentSlug")||"")+'" title="'+z("Open in Clay Browser \xB7 "+t)+'" aria-label="'+z("Open in Clay Browser: "+o)+'">'+v("globe")+"<span>Browser</span><small>"+z(o)+"</small></button>"}function Zr(e){!e||typeof document>"u"||(e.querySelectorAll("a[href]").forEach(function(r){if(!r.closest("pre, code, button")){var n=rr(r.getAttribute("href"),"",r.textContent);if(n){var t=document.createElement("template");t.innerHTML=n,r.replaceWith(t.content)}}}),ae(),E())}function ae(){i.get("browserLinksBound")||(i.set({browserLinksBound:!0}),document.addEventListener("click",function(e){var r=e.target.closest&&e.target.closest(".clay-browser-link");if(r){e.preventDefault(),e.stopPropagation();var n=Z("browser:"+r.dataset.browserUrl);if(!n){k("This browser link is invalid.","warn");return}if(r.dataset.browserProject&&r.dataset.browserProject!==i.get("currentSlug")){k("Open this link from its original project.","warn");return}ye(n)||import("./chunk-7GZH3FZY.js").then(function(t){t.openSharedBrowserAt(n)}).catch(function(t){k(t.message||"Could not open the browser.","warn")})}}))}function y(e){return he(String(e)).replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function C(){return i.get("sharedBrowserSettings")||{}}function B(e){i.set({sharedBrowserSettings:Object.assign({},C(),e)})}function L(){return document.getElementById("shared-browser-settings")}function T(e,r,n,t){return'<button type="button" data-settings-action="'+r+'" data-target="'+y(n||"")+'" data-label="'+y(t||n||"")+'">'+y(e)+"</button>"}function ce(e,r){var n=m();if(!n||n.readyState!==1){B({error:"Reconnect to manage browser data.",pending:!1}),q();return}var t=crypto.randomUUID();B({pending:!0,requestId:t,error:"",notice:""}),n.send(JSON.stringify({type:"shared_browser_settings",sessionId:i.get("activeSessionId"),requestId:t,operation:e,target:r})),q(),setTimeout(function(){C().requestId===t&&C().pending&&(B({pending:!1,error:"The request timed out. Refresh to check the saved state."}),q())},15e3)}function V(e){var r=!!C().open;B({open:!1,review:null}),q();var n=document.querySelector('[data-action="settings"]');n&&r&&e!==!1&&n.focus()}function Se(){return'<section id="shared-browser-settings" class="shared-browser-settings" aria-label="Browser settings" hidden></section>'}function ke(e){e.querySelector('[data-action="settings"]').onclick=function(){B({open:!0,page:"sites",data:null,review:null,filter:""}),ce("list"),L().querySelector('[data-settings-action="back"]').focus()},L().addEventListener("keydown",function(r){r.key==="Escape"&&(r.preventDefault(),r.stopPropagation(),V())}),L().addEventListener("input",function(r){r.target.matches("[data-settings-filter]")&&(B({filter:r.target.value}),Ie(),L().dataset.key=JSON.stringify([C(),i.get("connected")]))}),L().addEventListener("click",function(r){var n=r.target.closest("[data-settings-action]");if(!(!n||n.disabled)){var t=n.dataset.settingsAction;if(t==="back"){V();return}if(t==="sites"||t==="history"){B({page:t,filter:"",review:null,notice:"",error:""}),q();return}if(t==="refresh"){ce("list");return}if(t==="cancel"){B({review:null}),q(),L().querySelector('[data-settings-action="refresh"]').focus();return}if(t==="confirm"){var o=C().review;o&&ce(o.action,o.target);return}B({notice:"",error:"",review:{action:t,target:n.dataset.target,label:n.dataset.label||n.dataset.target}}),q(),L().querySelector('[data-settings-action="cancel"]').focus()}})}function Ie(){var e=L(),r=C();if(!(!e||!r.open)){var n=e.querySelector(".browser-settings-rows");if(n){var t=(r.filter||"").toLowerCase(),o=r.data||{sites:[],history:[]};r.page==="history"?n.innerHTML=o.history.filter(function(s){return s.url.toLowerCase().includes(t)}).map(function(s){return'<div class="browser-settings-row"><div><span class="browser-settings-url">'+y(s.url)+"</span><small>"+y(new Date(s.at).toLocaleString())+"</small></div>"+T("Remove","delete_history",s.id,s.url)+"</div>"}).join(""):n.innerHTML=o.sites.filter(function(s){return s.host.toLowerCase().includes(t)}).map(function(s){return"<details><summary>"+y(s.host)+"<small>"+s.cookies.length+(s.cookies.length===1?" cookie \xB7 ":" cookies \xB7 ")+s.origins.length+(s.origins.length===1?" storage origin":" storage origins")+'</small></summary><div class="browser-settings-row"><span>Cookies and site storage</span>'+T("Remove site data","delete_site",s.host)+"</div>"+s.origins.map(function(a){return'<p class="browser-settings-origin">'+y(a.origin)+"<small>"+a.localStorage+" localStorage entries \xB7 "+a.databases+" IndexedDB databases</small></p>"}).join("")+s.cookies.map(function(a){var c=a.domain+a.path+" \xB7 "+(a.expires===-1?"Session cookie":"Expires "+new Date(a.expires*1e3).toLocaleDateString())+(a.httpOnly?" \xB7 HttpOnly":"")+(a.secure?" \xB7 Secure":"")+(a.partitioned?" \xB7 Partitioned":"");return'<div class="browser-settings-row"><div><span>'+y(a.name)+"</span><small>"+y(c)+"</small></div>"+T("Remove cookie","delete_cookie",a.id,a.name+" \xB7 "+a.domain+a.path)+"</div>"}).join("")+"</details>"}).join(""),n.innerHTML||(n.innerHTML='<p class="browser-settings-muted">'+(r.pending&&!r.data?"Loading saved data\u2026":t?"No matching entries.":r.page==="history"?"No saved browsing history.":"No saved cookies or site data.")+"</p>"),n.querySelectorAll("button").forEach(function(s){s.disabled=!!r.pending||!i.get("connected")})}}}function q(){var e=L();if(e){var r=C(),n=e.closest(".shared-browser-panel"),t=i.get("sharedBrowser"),o=n.querySelector('[data-action="settings"]');if(o.hidden=!(t&&t.personalCookiesAvailable),o.disabled=!i.get("connected"),o.setAttribute("aria-expanded",String(!!r.open)),e.hidden=!r.open,n.classList.toggle("browser-settings-open",!!r.open),!!r.open){var s=JSON.stringify([r,i.get("connected")]);if(e.dataset.key!==s){e.dataset.key=s;var a=r.page||"sites";e.innerHTML='<div class="browser-settings-heading">'+T("Back to browser","back")+'<h3>Browser settings</h3></div><p class="browser-settings-muted">Personal \xB7 Shared across your Mates. Incognito tabs do not save data here.</p><nav aria-label="Browser settings sections">'+T("Cookies & site data","sites")+T("History","history")+'</nav><p class="browser-settings-muted">'+(a==="sites"?"Cookies, localStorage and IndexedDB are saved for your account. New personal tabs restore saved site storage. Removing data may sign you out. Removals also apply to open personal tabs. Sites may create new data afterwards.":"Your latest 500 page visits. Clearing this list leaves open tabs, their Back/Forward navigation and conversation activity unchanged.")+'</p><div class="browser-settings-tools"><input data-settings-filter aria-label="Filter saved browser data" placeholder="'+(a==="sites"?"Find a site":"Find a page")+'" value="'+y(r.filter||"")+'">'+T("Refresh","refresh")+T(a==="sites"?"Clear all site data":"Clear history",a==="sites"?"clear_data":"clear_history")+'</div><p class="browser-settings-feedback" role="status">'+y(r.error||(i.get("connected")?r.pending?"Updating\u2026":r.notice||"":"Disconnected. Reconnect and refresh to see current saved data."))+"</p>"+(r.review?'<div class="browser-settings-review" role="group" aria-label="Confirm removal"><strong>'+(r.review.action.includes("history")?"Remove browsing history?":"Remove saved site data?")+"</strong><p>"+(r.review.action.includes("history")?"This removes "+(r.review.action==="clear_history"?"all saved visits":"this saved visit")+" from your personal history.":r.review.action==="delete_cookie"?"This removes "+y(r.review.label)+" across your personal Mate browsers and may sign you out.":"This removes "+(r.review.action==="clear_data"?"all cookies and site storage":"cookies and storage for "+y(r.review.target))+" across your personal Mate browsers and may sign you out.")+"</p>"+T("Cancel","cancel")+T("Remove","confirm")+"</div>":"")+'<div class="browser-settings-rows"></div>',e.querySelector('[data-settings-action="'+a+'"]').setAttribute("aria-current","page"),e.querySelectorAll("button").forEach(function(c){c.disabled=c.dataset.settingsAction!=="back"&&(!!r.pending||!i.get("connected"))}),Ie()}}}}function xe(e){if(!e.requestId||e.requestId!==C().requestId)return!1;if(e.type==="shared_browser_settings"){var r=!!C().review;B({data:e.settings,pending:!1,review:null,error:"",notice:r?"Removed from your saved browser data.":""})}else if(e.type==="shared_browser_error")B({pending:!1,error:e.error});else return!1;return q(),C().open&&r&&L().querySelector('[data-settings-action="refresh"]').focus(),!0}function Be(e,r,n){var t=e.querySelector(".shared-browser-tabs"),o=i.get("sharedBrowsers")||[],s=i.get("sharedBrowser"),a=JSON.stringify([o.map(function(d){return[d.id,d.url,d.control,d.phase,d.incognito,d.personalCookiesAvailable]}),s&&s.id,i.get("connected")]);if(t.dataset.key!==a){t.dataset.key=a,t.replaceChildren(),o.forEach(function(d,l){var g=document.createElement("div");g.className="shared-browser-tab";var h=document.createElement("button");h.type="button",h.setAttribute("role","tab"),h.setAttribute("aria-selected",String(!!s&&s.id===d.id));var x="Tab "+(l+1);try{d.url&&(x=new URL(d.url).hostname)}catch{}var S=document.createElement("span");S.textContent=x+(d.personalCookiesAvailable&&d.incognito?" \xB7 Incognito":"");var f=document.createElement("small");f.textContent=d.phase==="ended"?"Ended":d.control==="agent"?"Shared":"You only",h.append(S,f),h.title=x+" \xB7 "+(d.incognito===!1?"Personal browser":"Incognito")+" \xB7 "+(d.phase==="ended"?"Ended":d.control==="agent"?"You and Clay can control this tab":"Only you can control this tab. Clay is paused."),h.onclick=function(){r(d.id)},h.onkeydown=function(p){var U=p.key==="ArrowRight"?(l+1)%o.length:p.key==="ArrowLeft"?(l+o.length-1)%o.length:p.key==="Home"?0:p.key==="End"?o.length-1:-1;U<0||(p.preventDefault(),r(o[U].id),t.querySelectorAll('[role="tab"]')[U].focus())};var w=document.createElement("button");w.type="button",w.textContent="\xD7",w.setAttribute("aria-label","Close browser tab "+(l+1)),w.disabled=!i.get("connected"),w.onclick=function(){n("close",{browserId:d.id})},g.append(h,w),t.appendChild(g)});var c=document.createElement("button");if(c.type="button",c.textContent="+",c.setAttribute("aria-label","New browser tab"),c.disabled=!i.get("connected"),c.title=s&&s.personalCookiesAvailable?"New tab \xB7 Personal browser":"New incognito tab",c.onclick=function(){n("open",{newTab:!0})},t.appendChild(c),s&&s.personalCookiesAvailable){var u=document.createElement("button");u.type="button",u.innerHTML=v("glasses"),u.setAttribute("aria-label","New incognito tab"),u.title="New incognito tab \xB7 Site data is not saved",u.disabled=!i.get("connected"),u.onclick=function(){n("open",{newTab:!0,incognito:!0})},t.appendChild(u),E()}}}var j={},Ce={terminal:"terminal-container",browser:"shared-browser-panel","file-viewer":"file-viewer","project-logs":"project-logs-panel",you:"you-panel",issues:"issues-panel",linear:"linear-panel","notes-browser":"notes-browser","scheduled-tasks":"scheduled-tasks-panel",debates:"debates-workbench","mcp-skills":"mcp-skills-workbench","mate-knowledge":"mate-knowledge-workbench",wireframe:"wireframe-panel"};function Oe(){var e=i.get("myUserId"),r=i.get("currentSlug");return import("./chunk-I57URYSL.js").then(function(n){return e!==i.get("myUserId")||r!==i.get("currentSlug")?!1:n.ensureWorkbenchLayoutPreference()}).catch(function(){return e!==i.get("myUserId")||r!==i.get("currentSlug")||i.set({workbenchLayoutPreference:Object.assign({},i.get("workbenchLayoutPreference")||{},{loading:!1,saving:!1,error:"Workbench layout could not be loaded. Try again."})}),!1})}function R(){return i.get("rightWorkbenchDockedOwners")||[]}function J(e){return i.get("rightWorkbenchOwner")===e||R().indexOf(e)!==-1}function de(e){var r=i.get("rightWorkbenchPanelRevisions")||{};return r[e]==null?i.get("rightWorkbenchRevision")||0:r[e]}function X(e,r,n){i.set({rightWorkbenchOwner:e,rightWorkbenchDockedOwners:r,rightWorkbenchPanelRevisions:n,rightWorkbenchRevision:(i.get("rightWorkbenchRevision")||0)+1})}function Ee(e,r){if(J(e)){var n=R().filter(function(o){return o!==e}),t=i.get("rightWorkbenchOwner");r&&n.push(e),X(r?t:e,n,i.get("rightWorkbenchPanelRevisions")||{}),!r&&t&&t!==e&&n.indexOf(t)===-1&&j[t]&&j[t]()}}function Le(){if(!(typeof document>"u")){var e=document.getElementById("main-panels");if(e){var r=R(),n=i.get("workbenchLayoutPreference")||{};e.dataset.workbenchMode=r.length?"docked":"overlay",e.dataset.workbenchDocks=String(r.length),Object.keys(Ce).forEach(function(t){var o=document.getElementById(Ce[t]);if(o){var s=r.indexOf(t)!==-1;if(o.dataset.workbenchPlacement=s?"docked":"overlay",o.dataset.workbenchActive=i.get("rightWorkbenchOwner")===t?"true":"false",!!J(t)){var a=o.querySelector(":scope > header, :scope > .file-viewer-header .file-viewer-tabbar, :scope > .terminal-header");if(a){var c=o.querySelector(".workbench-layout-toggle");if(!c){var u=a.querySelector('[class*="window-actions"], .terminal-header-actions, .shared-browser-window, :scope.mcp-skills-header > div')||a;c=document.createElement("button"),c.type="button",c.className="workbench-layout-toggle",c.addEventListener("click",function(){var l=i.get("workbenchLayoutPreference")||{};if(!l.ready||l.loading||l.saving){Oe();return}var g=i.get("myUserId"),h=i.get("currentSlug"),x=de(t),S=R().indexOf(t)!==-1;function f(){return c.isConnected&&J(t)&&g===i.get("myUserId")&&h===i.get("currentSlug")&&x===de(t)&&S===(R().indexOf(t)!==-1)}import("./chunk-I57URYSL.js").then(function(w){var p=i.get("workbenchLayoutPreference")||{};return!f()||p.mode!==l.mode||p.revision!==l.revision||p.loading||p.saving||!p.ready?!1:w.saveWorkbenchLayoutMode(S?"overlay":"docked")}).then(function(w){if(f()){var p=i.get("workbenchLayoutPreference")||{};w===!0&&p.ready&&p.mode===(S?"overlay":"docked")?Ee(t,!S):w===!1&&k(p.error||"Workbench layout could not be saved. Try again.","error")}}).catch(function(w){f()&&k(w.message||"Workbench layout could not be saved. Try again.","error")})});var d=u===a?a.querySelector("[data-knowledge-wide]"):u.firstElementChild;u.insertBefore(c,d||null)}c.dataset.mode!==(s?"docked":"overlay")&&(c.dataset.mode=s?"docked":"overlay",c.innerHTML=v(s?"layers-2":"panel-right"),E()),c.setAttribute("aria-label",s?"Float workbench over sessions":"Dock workbench beside sessions"),c.title=n.error||c.getAttribute("aria-label"),c.setAttribute("aria-pressed",s?"true":"false"),c.disabled=!!n.loading||!!n.saving,c.setAttribute("aria-busy",n.loading||n.saving?"true":"false")}}}})}}}function Te(e,r){!e||typeof r!="function"||(j[e]=r)}function ee(e){typeof document<"u"&&Oe();var r=i.get("rightWorkbenchOwner"),n=R().slice(),t=i.get("workbenchLayoutPreference")||{};!r&&!n.length&&t.ready&&t.mode==="docked"&&n.push(e);var o=n.indexOf(e)!==-1&&r&&n.indexOf(r)===-1?r:e,s=(i.get("rightWorkbenchRevision")||0)+1,a=Object.assign({},i.get("rightWorkbenchPanelRevisions")||{});return Object.keys(a).forEach(function(c){c!==o&&n.indexOf(c)===-1&&delete a[c]}),a[e]=s,X(o,n,a),Object.keys(j).forEach(function(c){if(!(c===e||c===o||n.indexOf(c)!==-1))try{j[c]()}catch{}}),typeof requestAnimationFrame=="function"&&requestAnimationFrame(Le),s}function ue(e){if(J(e)){var r=R().filter(function(t){return t!==e}),n=Object.assign({},i.get("rightWorkbenchPanelRevisions")||{});delete n[e],X(i.get("rightWorkbenchOwner")===e?r[r.length-1]||null:i.get("rightWorkbenchOwner"),r,n)}}function ut(e,r){return J(e)&&de(e)===r}function tr(){X(null,[],{}),Object.keys(j).forEach(function(e){try{j[e]()}catch{}})}i.subscribe(function(e,r){if(e.currentSlug!==r.currentSlug||e.myUserId!==r.myUserId){tr();return}var n=e.workbenchLayoutPreference||{},t=r.workbenchLayoutPreference||{};if(!t.ready&&n.ready&&n.mode==="docked"&&!R().length&&e.rightWorkbenchOwner){Ee(e.rightWorkbenchOwner,!0);return}(e.workbenchLayoutPreference!==r.workbenchLayoutPreference||e.rightWorkbenchOwner!==r.rightWorkbenchOwner||e.rightWorkbenchDockedOwners!==r.rightWorkbenchDockedOwners)&&Le()});function P(){var e=i.get("sharedBrowser");return e&&!e.handoff&&e.phase==="live"&&i.get("connected")}var qe=50,Pe=2e3;function D(e){i.set({sharedBrowserUi:Object.assign({},i.get("sharedBrowserUi"),e)})}function G(){var e=i.get("sharedBrowserUi")||{};clearTimeout(e.moveTimer),clearTimeout(e.wheelTimer),D({moveTimer:null,move:null,wheelTimer:null,wheelDelta:0,pointer:null,composing:!1})}function De(e,r){function n(a){var c=e.getBoundingClientRect(),u=Math.min(c.width/e.width,c.height/e.height),d=(a.clientX-c.left-(c.width-e.width*u)/2)/u,l=(a.clientY-c.top-(c.height-e.height*u)/2)/u;return{x:Math.max(0,Math.min(e.width-1,d)),y:Math.max(0,Math.min(e.height-1,l))}}function t(){var a=i.get("sharedBrowserUi")||{};clearTimeout(a.moveTimer);var c=a.move;D({move:null,moveTimer:null}),c&&P()&&I(Object.assign({kind:"move"},c))}function o(){var a=i.get("sharedBrowserUi")||{};clearTimeout(a.wheelTimer);var c=a.wheelDelta||0;if(!P()){D({wheelDelta:0,wheelTimer:null});return}var u=Math.max(-Pe,Math.min(Pe,c)),d=c-u;D({wheelDelta:d,wheelTimer:d?setTimeout(o,qe):null}),u&&I({kind:"wheel",deltaY:u})}e.addEventListener("pointermove",function(a){if(P()){var c=i.get("sharedBrowserUi")||{};D({move:n(a),moveTimer:c.moveTimer||setTimeout(t,40)})}}),e.addEventListener("pointerdown",function(a){!P()||a.button!==0||(a.preventDefault(),t(),o(),e.setPointerCapture(a.pointerId),D({pointer:a.pointerId}),r.focus({preventScroll:!0}),I(Object.assign({kind:"down"},n(a))))});function s(a){var c=i.get("sharedBrowserUi")||{};c.pointer===a.pointerId&&(t(),D({pointer:null}),P()&&I(Object.assign({kind:"up"},n(a))),e.hasPointerCapture(a.pointerId)&&e.releasePointerCapture(a.pointerId))}e.addEventListener("pointerup",s),e.addEventListener("pointercancel",s),e.addEventListener("lostpointercapture",s),e.addEventListener("wheel",function(a){if(P()){a.preventDefault();var c=i.get("sharedBrowserUi")||{};D({wheelDelta:(c.wheelDelta||0)+a.deltaY,wheelTimer:c.wheelTimer||setTimeout(o,qe)})}},{passive:!1}),e.addEventListener("focus",function(){P()&&r.focus({preventScroll:!0})}),r.addEventListener("compositionstart",function(){D({composing:!0})}),r.addEventListener("compositionend",function(){D({composing:!1}),P()&&r.value&&I({kind:"text",text:r.value}),r.value=""}),r.addEventListener("input",function(){(i.get("sharedBrowserUi")||{}).composing||(P()&&r.value&&I({kind:"text",text:r.value}),r.value="")}),r.addEventListener("keydown",function(a){if(!(!P()||a.isComposing)){var c=a.key;(a.ctrlKey||a.metaKey)&&c.toLowerCase()==="a"?c="ControlOrMeta+A":c==="Tab"&&a.shiftKey&&(c="Shift+Tab"),/^(Tab|Shift\+Tab|Enter|Backspace|Delete|Escape|ArrowLeft|ArrowRight|ArrowUp|ArrowDown|Home|End|ControlOrMeta\+A)$/.test(c)&&(a.preventDefault(),I({kind:"key",key:c}))}})}function Me(){return'<div class="shared-browser-activity"><div class="shared-browser-caption-history" role="log" aria-live="off" aria-label="Browser caption history" tabindex="0"></div><button type="button" class="shared-browser-caption-latest" hidden>Back to live \u2193</button><span class="shared-browser-caption-announcement" role="status" aria-live="polite"></span></div>'}function le(e){i.set({sharedBrowserUi:Object.assign({},i.get("sharedBrowserUi"),e)})}function nr(e,r,n){var t=e.querySelector(".shared-browser-activity"),o=e.querySelector(".shared-browser-caption-history"),s=e.querySelector(".shared-browser-caption-latest");o.dataset.bound||(o.dataset.bound="true",o.addEventListener("scroll",function(){var f=o.scrollHeight-o.clientHeight-o.scrollTop<20;le({captionPinned:f}),t.dataset.reviewing=String(!f),s.hidden=f}),s.onclick=function(){o.scrollTop=o.scrollHeight,le({captionPinned:!0}),s.hidden=!0,t.dataset.reviewing="false"});var a=r&&r.activityHistory||[];t.hidden=!a.length;var c=a[a.length-1],u=r&&r.id+":"+a.length+":"+(c?c.id+":"+c.phase+":"+c.text:"empty"),d=i.get("sharedBrowserUi")||{};if(d.captionHistoryKey!==u){var l=d.captionBrowserId!==(r&&r.id),g=l||d.captionPinned!==!1,h=o.scrollTop;o.replaceChildren(),a.forEach(function(f,w){var p=document.createElement("div");p.className="shared-browser-caption-row",p.dataset.age=String(Math.min(a.length-w-1,3));var U=document.createElement("span");if(U.className="shared-browser-activity-text",U.textContent=f.text,p.appendChild(U),f.phase==="failed"||f.phase==="interrupted"){var pe=document.createElement("small");pe.textContent=f.phase==="failed"?"This step could not be completed.":"This step was interrupted.",p.appendChild(pe)}o.appendChild(p)}),le({captionHistoryKey:u,captionBrowserId:r&&r.id,captionPinned:g}),o.scrollTop=g?o.scrollHeight:h,s.hidden=g,t.dataset.reviewing=String(!g);var x=e.querySelector(".shared-browser-caption-announcement"),S=n&&c?c.text+(c.phase==="failed"?" This step could not be completed.":""):"";x.textContent!==S&&(x.textContent=S)}}function Ae(e,r,n){var t=r&&r.phase==="live"&&r.control==="agent"&&!r.handoff&&n;nr(e,r,t);var o=e.querySelector("canvas"),s=t&&r.pointer,a=e.querySelector(".shared-browser-pointer");if(a.hidden=!s||s.width!==o.width||s.height!==o.height,!a.hidden){a.style.left=100*s.x/o.width+"%",a.style.top=100*s.y/o.height+"%";var c=r.id+":"+r.epoch+":"+s.sequence;(i.get("sharedBrowserUi")||{}).pointerAnimationKey!==c&&(i.set({sharedBrowserUi:Object.assign({},i.get("sharedBrowserUi"),{pointerAnimationKey:c})}),s.clicked&&!window.matchMedia("(prefers-reduced-motion: reduce)").matches&&a.querySelector("i").animate([{opacity:.8,transform:"scale(.3)"},{opacity:0,transform:"scale(1.8)"}],{duration:650}))}}var ge=["1280,800","1440,900","1024,768","800,600","375,667","390,844"];function ir(){return document.getElementById("shared-browser-resolution")}function Re(e){i.set({sharedBrowserUi:Object.assign({},i.get("sharedBrowserUi"),{viewportMenuOpen:e})});var r=ir();r&&(r.querySelector("[data-viewport-trigger]").setAttribute("aria-expanded",String(e)),r.querySelector('[role="menu"]').hidden=!e)}function M(){Re(!1)}function Ue(){return'<div id="shared-browser-resolution" class="shared-browser-resolution"><button type="button" data-viewport-trigger aria-label="Browser viewport" aria-haspopup="menu" aria-expanded="false" aria-controls="shared-browser-resolutions"><span>1280 \xD7 800</span>'+v("chevron-up")+'</button><div id="shared-browser-resolutions" class="shared-browser-resolution-menu" role="menu" aria-label="Browser resolutions" hidden></div></div>'}function je(e,r,n){var t=e.querySelector(".shared-browser-resolution"),o=t.querySelector("[data-viewport-trigger]");o.disabled=!n,(!n||!i.get("sharedBrowserOpen"))&&M();var s=r?r.width+","+r.height:"1280,800";o.querySelector("span").textContent=s.replace(","," \xD7 ");var a=t.querySelector('[role="menu"]');if(a.dataset.size!==s){a.dataset.size=s;var c=ge.includes(s)?ge:ge.concat([s]);a.replaceChildren(),c.forEach(function(u){var d=document.createElement("button");d.type="button",d.setAttribute("role","menuitemradio"),d.setAttribute("aria-checked",String(u===s)),d.dataset.size=u,d.tabIndex=-1,d.textContent=u.replace(","," \xD7 "),d.setAttribute("aria-label",d.textContent),a.appendChild(d)})}}function We(e){var r=e.querySelector(".shared-browser-resolution"),n=r.querySelector("[data-viewport-trigger]"),t=r.querySelector('[role="menu"]');function o(s){if(!n.disabled){Re(!0);var a=t.querySelectorAll("button"),c=t.querySelector('[aria-checked="true"]');(s?a[a.length-1]:c||a[0]).focus()}}n.onclick=function(){(i.get("sharedBrowserUi")||{}).viewportMenuOpen?M():o(!1)},n.onkeydown=function(s){(s.key==="ArrowDown"||s.key==="ArrowUp")&&(s.preventDefault(),o(s.key==="ArrowUp"))},t.onclick=function(s){var a=s.target.closest("[data-size]");if(!(!a||n.disabled)){var c=a.dataset.size.split(",");M(),n.focus(),I({kind:"resize",width:Number(c[0]),height:Number(c[1])})}},r.addEventListener("keydown",function(s){if(s.key==="Escape"){s.preventDefault(),s.stopPropagation(),M(),n.focus();return}if(s.key==="Tab"){M();return}if(!(s.target===n||!["ArrowDown","ArrowUp","Home","End"].includes(s.key))){s.preventDefault();var a=Array.from(t.querySelectorAll("button")),c=a.indexOf(document.activeElement);c=s.key==="Home"?0:s.key==="End"?a.length-1:(c+(s.key==="ArrowDown"?1:-1)+a.length)%a.length,a[c].focus()}}),document.addEventListener("pointerdown",function(s){r.contains(s.target)||M()}),r.addEventListener("focusout",function(s){r.contains(s.relatedTarget)||M()})}function H(){return window.matchMedia("(min-width: 1024px)").matches}function Ne(){var e=i.get("permissions");return H()&&!!i.get("currentSlug")&&!i.get("dmMode")&&(!e||e.terminal!==!1)}function Y(){return Ne()&&!!i.get("activeSessionId")}function _(){return document.getElementById("shared-browser-panel")}function A(e){i.set({sharedBrowserUi:Object.assign({},i.get("sharedBrowserUi"),e)})}function b(e,r){var n=m();if(!n||n.readyState!==1||!i.get("activeSessionId"))return!1;var t=i.get("sharedBrowser");return n.send(JSON.stringify(Object.assign({type:"shared_browser_"+e,sessionId:i.get("activeSessionId"),browserId:t&&t.id,epoch:t&&t.epoch},r||{}))),!0}function I(e){A({error:""}),b("input",{event:e})}function _e(){var e=_();if(!(!e||!i.get("sharedBrowserOpen"))){var r=e.querySelector(".shared-browser-viewport"),n=e.querySelector("canvas"),t=n.width===800&&n.height===600?"mac":n.width===1024&&n.height===768?"crt":n.width<n.height?"phone":"laptop";r.dataset.skin=t;var o=Math.min((r.clientWidth-96)/n.width,(r.clientHeight-140-e.querySelector(".shared-browser-caption").offsetHeight)/n.height,1);if(!(o<=0)){var s=e.querySelector(".shared-browser-monitor");s.style.width=Math.floor(n.width*o)+"px",s.style.height=Math.floor(n.height*o)+"px",e.querySelector(".shared-browser-monitor-label").textContent=n.width+" \xD7 "+n.height+" \xB7 "+Math.round(o*100)+"%"}}}function W(e,r,n){return'<button type="button" data-action="'+e+'" title="'+n+'" aria-label="'+n+'">'+v(r)+"</button>"}function fe(){if(!_()){var e=document.getElementById("main-panels");if(e){var r=document.createElement("section");r.id="shared-browser-panel",r.className="shared-browser-panel hidden",r.setAttribute("aria-label","Shared browser"),r.innerHTML='<header class="shared-browser-header"><span class="shared-browser-title">'+v("globe")+'Browser</span><span class="shared-browser-phase" role="status">Ready</span><div class="shared-browser-window">'+W("settings","settings-2","Browser settings")+W("wide","chevrons-left-right","Widen browser panel")+W("fullscreen","maximize-2","Toggle browser fullscreen")+W("hide","x","Hide browser panel")+'</div></header><div class="shared-browser-tabs" role="tablist" aria-label="Browser tabs"></div><form class="shared-browser-address">'+W("back","arrow-left","Back")+W("forward","arrow-right","Forward")+W("reload","rotate-cw","Reload")+'<input aria-label="Browser address" placeholder="Enter a URL" type="text" autocomplete="off" spellcheck="false"><button type="submit" aria-label="Open address">'+v("arrow-right")+"</button></form>"+Se()+'<div class="shared-browser-viewport"><div class="shared-browser-monitor"><div class="shared-browser-pointer-layer" aria-hidden="true"><div class="shared-browser-pointer" hidden><svg viewBox="0 0 24 28"><path d="M3 2 L3 22 L8 17 L12 26 L16 24 L12 15 L20 15 Z"/></svg><i></i></div></div><canvas width="1280" height="800" tabindex="0" aria-label="Shared browser page"></canvas><div class="shared-browser-empty">'+v("globe")+'<h3>A browser you can use with Clay</h3><p>Enter an address to browse together.<br>Localhost connects to the Clay host.</p><p class="shared-browser-private">Site data lasts only for this browser session.</p></div><textarea class="shared-browser-keyboard" aria-label="Type into shared browser" autocomplete="off" autocapitalize="off" spellcheck="false"></textarea><span class="shared-browser-monitor-brand" aria-hidden="true">Clay Studio</span><span class="shared-browser-monitor-detail" aria-hidden="true"></span><span class="shared-browser-monitor-stand" aria-hidden="true"></span></div><div class="shared-browser-caption"><span class="shared-browser-monitor-label"></span>'+Me()+'</div></div><p class="shared-browser-error hidden" role="status"></p><footer class="shared-browser-footer"><div class="shared-browser-control"><span class="shared-browser-control-status" role="status" aria-live="polite">You and Clay can control this browser</span><button type="button" data-action="control" aria-pressed="false"></button></div><div class="shared-browser-details"><span class="shared-browser-cookie-mode"></span>'+Ue()+'<button type="button" data-action="end">End browser</button></div></footer>',e.appendChild(r),r.querySelector('[data-action="hide"]').onclick=K,r.querySelector('[data-action="wide"]').onclick=function(){var t=!(i.get("sharedBrowserUi")||{}).wide;A({wide:t}),O()},r.querySelector('[data-action="fullscreen"]').onclick=function(){var t=!(i.get("sharedBrowserUi")||{}).fullscreen;A({fullscreen:t}),O()},["back","forward","reload"].forEach(function(t){r.querySelector('[data-action="'+t+'"]').onclick=function(){I({kind:t})}}),r.querySelector("form").onsubmit=function(t){t.preventDefault(),I({kind:"navigate",url:r.querySelector("form input").value})},r.querySelector('[data-action="control"]').onclick=function(){var t=i.get("sharedBrowser");t&&b("control",{control:t.control==="user"?"agent":"user"})},r.querySelector('[data-action="end"]').onclick=function(){var t=i.get("sharedBrowser");b(t&&t.phase==="ended"?"open":"end",t&&t.phase==="ended"?{incognito:t.incognito}:void 0)},We(r),ke(r);var n=new ResizeObserver(_e);n.observe(r.querySelector(".shared-browser-viewport")),De(r.querySelector("canvas"),r.querySelector("textarea")),E()}}}function re(){var e=i.get("sharedBrowser"),r=(i.get("sharedBrowsers")||[]).length,n=!!i.get("connected")&&!!i.get("activeSessionId"),t=i.get("connected")?i.get("activeSessionId")?e?"View browser":"Open browser":"Browser \xB7 Loading session\u2026":"Browser \xB7 Connecting\u2026";["shared-browser-btn","shared-browser-toggle-btn"].forEach(function(o){var s=document.getElementById(o);if(s){var a=o==="shared-browser-toggle-btn"&&n&&i.get("sharedBrowserOpen")?"Hide browser":t;if(o==="shared-browser-toggle-btn"){var c=s.querySelector(".shared-browser-count");c&&(c.textContent=String(r),c.classList.toggle("hidden",r===0)),r&&(a+=" \xB7 "+r+(r===1?" tab":" tabs"))}s.classList.toggle("hidden",!Ne()),s.title=n&&e?a+" \xB7 "+e.phase:a,s.setAttribute("aria-label",a),s.setAttribute("aria-expanded",String(!!i.get("sharedBrowserOpen"))),s.disabled=!n}})}function or(e,r,n){return n?r?e.handoff?"Switching control\u2026":e.control==="user"?"Only you can control this browser. Clay is paused.":e.activity&&e.activity.phase==="running"?"Clay is working. You can also use this browser":"You and Clay can control this browser":e&&e.phase==="starting"?"Starting\u2026":"Ended":"Disconnected. Status returns on reconnect."}function sr(e,r,n,t){var o=e.querySelector(".shared-browser-control-status"),s=or(r,n,t);o.textContent!==s&&(o.textContent=s);var a=e.querySelector('[data-action="control"]'),c=!!r&&r.control==="user",u=String(c);a.dataset.mode!==u&&(a.dataset.mode=u,a.innerHTML=v(c?"lock":"lock-open")+"<span>"+(c?"Resume shared control":"Pause Clay control")+"</span>",E()),a.title=c?"Let Clay act in this browser again. You keep control too.":"Make this browser exclusively yours until you resume shared control. You can use it either way.",a.setAttribute("aria-pressed",String(c))}function O(){re();var e=_();if(e){Be(e,ar,b);var r=i.get("sharedBrowser"),n=i.get("sharedBrowserUi")||{},t=i.get("connected"),o=r&&r.phase==="live",s=o&&!r.handoff&&t;e.classList.toggle("hidden",!i.get("sharedBrowserOpen")||!Y()),e.classList.toggle("shared-browser-wide",!!n.wide),e.classList.toggle("panel-fullscreen",!!n.fullscreen),e.querySelector('[data-action="wide"]').setAttribute("aria-pressed",n.wide?"true":"false"),e.querySelector('[data-action="fullscreen"]').setAttribute("aria-pressed",n.fullscreen?"true":"false"),e.querySelector(".shared-browser-phase").textContent=t?r?{starting:"Starting\u2026",live:"Live",ended:"Ended \xB7 Last frame"}[r.phase]:"Ready":"Disconnected",e.querySelector(".shared-browser-phase").dataset.live=o&&t?"true":"false",e.querySelector(".shared-browser-monitor").dataset.live=o&&t?"true":"false";var a=e.querySelector("form input");document.activeElement!==a&&(a.value=r?r.url:""),e.querySelectorAll("form input, form button").forEach(function(d){d.disabled=!s}),e.querySelector("textarea").disabled=!s,e.querySelector("canvas").style.cursor=s?"default":"not-allowed",sr(e,r,o,t),e.querySelector('[data-action="control"]').disabled=!o||!!r.handoff||!t,e.querySelector('[data-action="control"]').hidden=!o,e.querySelector('[data-action="end"]').disabled=!r||!t,e.querySelector('[data-action="end"]').textContent=r&&r.phase==="ended"?"New browser":"End browser";var c=r&&r.incognito===!1;e.querySelector(".shared-browser-cookie-mode").textContent=c?"Personal browser":"Incognito",e.querySelector(".shared-browser-cookie-mode").title=c?"Cookies and site storage are saved for your account across your Mates.":"Cookies and site storage are isolated and discarded when this tab ends.",e.querySelector(".shared-browser-private").textContent=c?"Your cookies and site storage are remembered across your Mates and browser restarts.":"Site data lasts only for this browser session.";var u=n.error||r&&r.error||"";e.querySelector(".shared-browser-error").textContent=u,e.querySelector(".shared-browser-error").classList.toggle("hidden",!u),e.querySelector(".shared-browser-empty").classList.toggle("hidden",!!(r&&r.url&&n.hasFrame)),je(e,r,s),q(),Ae(e,r,t),_e()}}function Fe(e){var r=i.get("sharedBrowser");if(i.set({sharedBrowser:e}),!r||!e||r.id!==e.id){G(),M(),A({hasFrame:!1,error:"",decoding:!1,captionHistoryKey:null});var n=_();n&&n.querySelector("canvas").getContext("2d").clearRect(0,0,1920,1200)}else r.epoch!==e.epoch&&G()}function ar(e){var r=(i.get("sharedBrowsers")||[]).find(function(n){return n.id===e});r&&(Fe(r),b("view",{visible:H()&&!document.hidden}),O())}function Pt(e){var r=Z("browser:"+e);if(!r)throw new Error("Enter a valid HTTP or HTTPS browser address.");if(!H())throw new Error("Clay Browser is available on desktop screens.");if(!Y())throw new Error("Browser access is unavailable in this conversation.");if(!i.get("connected"))throw new Error("Reconnect before opening this browser link.");fe(),V(!1),ee("browser"),i.set({sharedBrowserOpen:!0}),A({error:""}),b("open",{url:r}),O()}function He(){if(!(!Y()||!i.get("connected"))){fe(),ee("browser"),i.set({sharedBrowserOpen:!0});var e=i.get("sharedBrowser");e?b("view",{visible:!0}):b("open"),O()}}function K(){M(),V(),G(),i.get("sharedBrowserOpen")&&b("view",{visible:!1}),i.set({sharedBrowserOpen:!1}),ue("browser"),O()}function Dt(e){if(!e.type||e.type.indexOf("shared_browser_")!==0)return!1;if(String(e.sessionId)!==String(i.get("activeSessionId"))||xe(e))return!0;if(e.type==="shared_browser_state"){var r=i.get("sharedBrowser"),n=e.browsers||(e.browser?[e.browser]:[]);i.set({sharedBrowsers:n});var t=!e.focus&&r&&n.find(function(c){return c.id===r.id});t=t||e.browser||n[0]||null,Fe(t),e.present&&Y()&&(fe(),ee("browser"),i.set({sharedBrowserOpen:!0})),i.get("sharedBrowserOpen")&&t&&b("view",{visible:H()&&!document.hidden}),O()}else if(e.type==="shared_browser_error")A({error:e.error}),O();else if(e.type==="shared_browser_frame"){var o=i.get("sharedBrowser");if(!H()||!i.get("sharedBrowserOpen")||!o||o.id!==e.browserId||(i.get("sharedBrowserUi")||{}).decoding)return!0;var s=i.get("activeSessionId");A({decoding:!0});var a=new Image;a.onload=function(){var c=i.get("sharedBrowser");if(c&&c.id===e.browserId&&i.get("activeSessionId")===s&&_()){var u=_().querySelector("canvas");u.width=a.naturalWidth,u.height=a.naturalHeight,u.getContext("2d").drawImage(a,0,0),A({decoding:!1,hasFrame:!0}),O(),be(e,u,null,u)}},a.onerror=function(){i.get("activeSessionId")===s&&A({decoding:!1})},a.src="data:image/jpeg;base64,"+e.data}return!0}function Mt(){ae();var e=document.getElementById("shared-browser-btn");e&&(e.onclick=He);var r=document.getElementById("shared-browser-toggle-btn");r&&(r.onclick=function(){i.get("sharedBrowserOpen")?K():He()}),window.matchMedia("(min-width: 1024px)").addEventListener("change",function(){H()||K(),re()}),document.addEventListener("visibilitychange",function(){i.get("sharedBrowserOpen")&&b("view",{visible:!document.hidden&&H()})}),E(),re(),i.get("connected")&&b("state_request")}Te("browser",K);i.subscribe(function(e,r){e.currentSlug!==r.currentSlug||e.activeSessionId!==r.activeSessionId||e.myUserId!==r.myUserId?(G(),ue("browser"),i.set({sharedBrowser:null,sharedBrowsers:[],sharedBrowserOpen:!1,sharedBrowserUi:{},sharedBrowserSettings:{}}),e.connected&&b("state_request"),O()):e.connected!==r.connected?(e.connected&&b("state_request"),O()):(e.permissions!==r.permissions||e.dmMode!==r.dmMode)&&(Y()||K(),re())});export{k as a,cr as b,he as c,fr as d,Ve as e,pr as f,me as g,hr as h,wr as i,Je as j,Ge as k,yr as l,$ as m,Ke as n,Ye as o,F as p,Q as q,Sr as r,kr as s,$e as t,te as u,Br as v,Cr as w,Er as x,Ur as y,ve as z,jr as A,be as B,Wr as C,Hr as D,E,v as F,de as G,Te as H,ee as I,ue as J,ut as K,I as L,Pt as M,He as N,K as O,Dt as P,Mt as Q,Jr as R,rr as S,Zr as T};