studiograph 1.3.3-next.9 → 1.3.4

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 (282) hide show
  1. package/dist/agent/orchestrator.d.ts +2 -0
  2. package/dist/agent/orchestrator.js +13 -5
  3. package/dist/agent/orchestrator.js.map +1 -1
  4. package/dist/agent/skills/sync-configuration.md +4 -29
  5. package/dist/agent/skills/sync-setup.md +2 -4
  6. package/dist/agent/tools/ops-tools.js +15 -126
  7. package/dist/agent/tools/ops-tools.js.map +1 -1
  8. package/dist/agent/tools/sync-tools.d.ts +7 -6
  9. package/dist/agent/tools/sync-tools.js +205 -178
  10. package/dist/agent/tools/sync-tools.js.map +1 -1
  11. package/dist/cli/commands/about.d.ts +13 -0
  12. package/dist/cli/commands/about.js +97 -0
  13. package/dist/cli/commands/about.js.map +1 -0
  14. package/dist/cli/commands/clone.d.ts +5 -2
  15. package/dist/cli/commands/clone.js +131 -62
  16. package/dist/cli/commands/clone.js.map +1 -1
  17. package/dist/cli/commands/connector.d.ts +2 -16
  18. package/dist/cli/commands/connector.js +32 -109
  19. package/dist/cli/commands/connector.js.map +1 -1
  20. package/dist/cli/commands/deploy.d.ts +0 -1
  21. package/dist/cli/commands/deploy.js +13 -103
  22. package/dist/cli/commands/deploy.js.map +1 -1
  23. package/dist/cli/commands/init.js +6 -93
  24. package/dist/cli/commands/init.js.map +1 -1
  25. package/dist/cli/commands/join.js +51 -1
  26. package/dist/cli/commands/join.js.map +1 -1
  27. package/dist/cli/commands/redeploy.js +1 -2
  28. package/dist/cli/commands/redeploy.js.map +1 -1
  29. package/dist/cli/commands/serve.d.ts +1 -3
  30. package/dist/cli/commands/serve.js +29 -109
  31. package/dist/cli/commands/serve.js.map +1 -1
  32. package/dist/cli/commands/start.js +1 -1
  33. package/dist/cli/commands/start.js.map +1 -1
  34. package/dist/cli/commands/sync-collection.d.ts +14 -0
  35. package/dist/cli/commands/sync-collection.js +366 -0
  36. package/dist/cli/commands/sync-collection.js.map +1 -0
  37. package/dist/cli/commands/sync.js +518 -82
  38. package/dist/cli/commands/sync.js.map +1 -1
  39. package/dist/cli/index.js +12 -30
  40. package/dist/cli/index.js.map +1 -1
  41. package/dist/cli/setup-wizard.d.ts +0 -13
  42. package/dist/cli/setup-wizard.js +6 -81
  43. package/dist/cli/setup-wizard.js.map +1 -1
  44. package/dist/core/types.d.ts +140 -21
  45. package/dist/core/types.js +15 -4
  46. package/dist/core/types.js.map +1 -1
  47. package/dist/core/workspace.d.ts +11 -4
  48. package/dist/core/workspace.js +61 -26
  49. package/dist/core/workspace.js.map +1 -1
  50. package/dist/integrations/asana.d.ts +26 -0
  51. package/dist/integrations/asana.js +77 -0
  52. package/dist/integrations/asana.js.map +1 -0
  53. package/dist/integrations/figma-local.d.ts +16 -0
  54. package/dist/integrations/figma-local.js +10 -0
  55. package/dist/integrations/figma-local.js.map +1 -0
  56. package/dist/integrations/figma.d.ts +17 -0
  57. package/dist/integrations/figma.js +16 -0
  58. package/dist/integrations/figma.js.map +1 -0
  59. package/dist/integrations/granola.d.ts +24 -0
  60. package/dist/integrations/granola.js +59 -0
  61. package/dist/integrations/granola.js.map +1 -0
  62. package/dist/integrations/linear.d.ts +14 -0
  63. package/dist/integrations/linear.js +70 -0
  64. package/dist/integrations/linear.js.map +1 -0
  65. package/dist/integrations/paper-local.d.ts +14 -0
  66. package/dist/integrations/paper-local.js +10 -0
  67. package/dist/integrations/paper-local.js.map +1 -0
  68. package/dist/integrations/paper.d.ts +2 -0
  69. package/dist/integrations/paper.js +10 -0
  70. package/dist/integrations/paper.js.map +1 -0
  71. package/dist/integrations/pipedrive.d.ts +26 -0
  72. package/dist/integrations/pipedrive.js +97 -0
  73. package/dist/integrations/pipedrive.js.map +1 -0
  74. package/dist/integrations/registry.d.ts +15 -0
  75. package/dist/integrations/registry.js +27 -0
  76. package/dist/integrations/registry.js.map +1 -0
  77. package/dist/integrations/types.d.ts +34 -0
  78. package/dist/integrations/types.js +9 -0
  79. package/dist/integrations/types.js.map +1 -0
  80. package/dist/mcp/connector-manager.d.ts +45 -31
  81. package/dist/mcp/connector-manager.js +164 -116
  82. package/dist/mcp/connector-manager.js.map +1 -1
  83. package/dist/mcp/server-oauth-provider.d.ts +56 -0
  84. package/dist/mcp/server-oauth-provider.js +138 -0
  85. package/dist/mcp/server-oauth-provider.js.map +1 -0
  86. package/dist/server/chrome/chrome.css +142 -28
  87. package/dist/server/chrome/chrome.js +51 -25
  88. package/dist/server/collab-authority.d.ts +70 -0
  89. package/dist/server/collab-authority.js +218 -0
  90. package/dist/server/collab-authority.js.map +1 -0
  91. package/dist/server/collab.d.ts +29 -0
  92. package/dist/server/collab.js +195 -0
  93. package/dist/server/collab.js.map +1 -0
  94. package/dist/server/commit-scheduler.d.ts +1 -1
  95. package/dist/server/commit-scheduler.js +18 -4
  96. package/dist/server/commit-scheduler.js.map +1 -1
  97. package/dist/server/index.d.ts +0 -2
  98. package/dist/server/index.js +89 -18
  99. package/dist/server/index.js.map +1 -1
  100. package/dist/server/routes/auth-api.d.ts +6 -0
  101. package/dist/server/routes/auth-api.js +55 -0
  102. package/dist/server/routes/auth-api.js.map +1 -1
  103. package/dist/server/routes/collab.d.ts +6 -0
  104. package/dist/server/routes/collab.js +10 -0
  105. package/dist/server/routes/collab.js.map +1 -0
  106. package/dist/server/routes/git-http.d.ts +1 -1
  107. package/dist/server/routes/git-http.js +53 -15
  108. package/dist/server/routes/git-http.js.map +1 -1
  109. package/dist/server/routes/graph-api.d.ts +2 -2
  110. package/dist/server/routes/graph-api.js +59 -55
  111. package/dist/server/routes/graph-api.js.map +1 -1
  112. package/dist/server/routes/mcp.d.ts +12 -0
  113. package/dist/server/routes/mcp.js +35 -0
  114. package/dist/server/routes/mcp.js.map +1 -0
  115. package/dist/server/routes/permissions-api.d.ts +2 -1
  116. package/dist/server/routes/permissions-api.js +16 -2
  117. package/dist/server/routes/permissions-api.js.map +1 -1
  118. package/dist/server/routes/sync-api.d.ts +26 -0
  119. package/dist/server/routes/sync-api.js +757 -0
  120. package/dist/server/routes/sync-api.js.map +1 -0
  121. package/dist/server/routes/ws.d.ts +4 -2
  122. package/dist/server/routes/ws.js +100 -4
  123. package/dist/server/routes/ws.js.map +1 -1
  124. package/dist/server/session-manager.d.ts +40 -0
  125. package/dist/server/session-manager.js +132 -0
  126. package/dist/server/session-manager.js.map +1 -0
  127. package/dist/server/ws-hub.d.ts +95 -1
  128. package/dist/server/ws-hub.js +192 -5
  129. package/dist/server/ws-hub.js.map +1 -1
  130. package/dist/server/yjs-manager.d.ts +59 -0
  131. package/dist/server/yjs-manager.js +194 -0
  132. package/dist/server/yjs-manager.js.map +1 -0
  133. package/dist/services/auth-service.d.ts +30 -2
  134. package/dist/services/auth-service.js +116 -11
  135. package/dist/services/auth-service.js.map +1 -1
  136. package/dist/services/git.d.ts +6 -0
  137. package/dist/services/git.js +32 -2
  138. package/dist/services/git.js.map +1 -1
  139. package/dist/services/sync/collection-sync.d.ts +73 -0
  140. package/dist/services/sync/collection-sync.js +726 -0
  141. package/dist/services/sync/collection-sync.js.map +1 -0
  142. package/dist/services/sync/commit.js +5 -20
  143. package/dist/services/sync/commit.js.map +1 -1
  144. package/dist/services/sync/data-fetcher.d.ts +31 -0
  145. package/dist/services/sync/data-fetcher.js +12 -0
  146. package/dist/services/sync/data-fetcher.js.map +1 -0
  147. package/dist/services/sync/entity-refresh.d.ts +30 -0
  148. package/dist/services/sync/entity-refresh.js +275 -0
  149. package/dist/services/sync/entity-refresh.js.map +1 -0
  150. package/dist/services/sync/frontmatter-extractor.d.ts +2 -2
  151. package/dist/services/sync/frontmatter-extractor.js +1 -2
  152. package/dist/services/sync/frontmatter-extractor.js.map +1 -1
  153. package/dist/services/sync/graph-match.js +1 -1
  154. package/dist/services/sync/graph-match.js.map +1 -1
  155. package/dist/services/sync/mcp-client.d.ts +16 -4
  156. package/dist/services/sync/mcp-client.js +34 -20
  157. package/dist/services/sync/mcp-client.js.map +1 -1
  158. package/dist/services/sync/prompts.js +1 -1
  159. package/dist/services/sync/reconciler.js +1 -2
  160. package/dist/services/sync/reconciler.js.map +1 -1
  161. package/dist/services/sync/rest-client.d.ts +40 -0
  162. package/dist/services/sync/rest-client.js +100 -0
  163. package/dist/services/sync/rest-client.js.map +1 -0
  164. package/dist/services/sync/source-config.d.ts +23 -1
  165. package/dist/services/sync/source-config.js +112 -16
  166. package/dist/services/sync/source-config.js.map +1 -1
  167. package/dist/services/sync/source-definitions/asana.d.ts +3 -4
  168. package/dist/services/sync/source-definitions/asana.js +7 -13
  169. package/dist/services/sync/source-definitions/asana.js.map +1 -1
  170. package/dist/services/sync/source-definitions/definitions.d.ts +5 -18
  171. package/dist/services/sync/source-definitions/definitions.js +4 -22
  172. package/dist/services/sync/source-definitions/definitions.js.map +1 -1
  173. package/dist/services/sync/source-definitions/granola.d.ts +1 -1
  174. package/dist/services/sync/source-definitions/granola.js +11 -18
  175. package/dist/services/sync/source-definitions/granola.js.map +1 -1
  176. package/dist/services/sync/source-definitions/linear.d.ts +1 -1
  177. package/dist/services/sync/source-definitions/linear.js +17 -15
  178. package/dist/services/sync/source-definitions/linear.js.map +1 -1
  179. package/dist/services/sync/source-definitions/pipedrive.d.ts +1 -1
  180. package/dist/services/sync/source-definitions/pipedrive.js +6 -15
  181. package/dist/services/sync/source-definitions/pipedrive.js.map +1 -1
  182. package/dist/services/sync/staging.js +1 -2
  183. package/dist/services/sync/staging.js.map +1 -1
  184. package/dist/services/sync/structured-extractor.d.ts +8 -2
  185. package/dist/services/sync/structured-extractor.js +243 -35
  186. package/dist/services/sync/structured-extractor.js.map +1 -1
  187. package/dist/services/sync/types.d.ts +192 -23
  188. package/dist/services/sync/unstructured-extractor.d.ts +1 -3
  189. package/dist/services/sync/unstructured-extractor.js +2 -14
  190. package/dist/services/sync/unstructured-extractor.js.map +1 -1
  191. package/dist/utils/git.d.ts +24 -20
  192. package/dist/utils/git.js +99 -65
  193. package/dist/utils/git.js.map +1 -1
  194. package/dist/utils/preflight.d.ts +1 -15
  195. package/dist/utils/preflight.js +1 -35
  196. package/dist/utils/preflight.js.map +1 -1
  197. package/dist/web/_app/immutable/assets/0.CupILLQs.css +1 -0
  198. package/dist/web/_app/immutable/assets/3.CtJi4Cy9.css +1 -0
  199. package/dist/web/_app/immutable/assets/5.CydFyZSu.css +1 -0
  200. package/dist/web/_app/immutable/assets/6.kqeOo0OW.css +1 -0
  201. package/dist/web/_app/immutable/assets/7.CseIx7qQ.css +1 -0
  202. package/dist/web/_app/immutable/assets/{8.Sm6jB3a0.css → 8.BYpFDZHK.css} +1 -1
  203. package/dist/web/_app/immutable/assets/AppShell.Ch_ef9hJ.css +1 -0
  204. package/dist/web/_app/immutable/assets/ChatPanel.CP-_8txt.css +1 -0
  205. package/dist/web/_app/immutable/chunks/0oxpWEgM.js +1 -0
  206. package/dist/web/_app/immutable/chunks/B1y7Wy5O.js +18 -0
  207. package/dist/web/_app/immutable/chunks/B7eduG_j.js +64 -0
  208. package/dist/web/_app/immutable/chunks/BBLgaWN8.js +1 -0
  209. package/dist/web/_app/immutable/chunks/BCB5cYCz.js +2 -0
  210. package/dist/web/_app/immutable/chunks/{aosHekRC.js → BPUy9_sS.js} +1 -1
  211. package/dist/web/_app/immutable/chunks/BVBRzmeQ.js +7 -0
  212. package/dist/web/_app/immutable/chunks/{CUzqHQY_.js → BXuvR8Ks.js} +2 -1
  213. package/dist/web/_app/immutable/chunks/BeBar3OL.js +1 -0
  214. package/dist/web/_app/immutable/chunks/BuOTIbJu.js +1 -0
  215. package/dist/web/_app/immutable/chunks/CLFba8FK.js +5 -0
  216. package/dist/web/_app/immutable/chunks/CQCkXCml.js +1 -0
  217. package/dist/web/_app/immutable/chunks/CXuhHL4d.js +1 -0
  218. package/dist/web/_app/immutable/chunks/Cg9NOuOl.js +27 -0
  219. package/dist/web/_app/immutable/chunks/Cs5oz2oJ.js +5 -0
  220. package/dist/web/_app/immutable/chunks/Cs_ROD7H.js +2 -0
  221. package/dist/web/_app/immutable/chunks/D2aTbzFm.js +3 -0
  222. package/dist/web/_app/immutable/chunks/D4FXhiC2.js +1 -0
  223. package/dist/web/_app/immutable/chunks/D4VHRYeB.js +1 -0
  224. package/dist/web/_app/immutable/chunks/DCGSm8Hl.js +1 -0
  225. package/dist/web/_app/immutable/chunks/DP09rP34.js +2 -0
  226. package/dist/web/_app/immutable/chunks/DiP47fAp.js +1 -0
  227. package/dist/web/_app/immutable/chunks/DptGlK8O.js +1 -0
  228. package/dist/web/_app/immutable/chunks/O0fx2ss6.js +1 -0
  229. package/dist/web/_app/immutable/chunks/xBRYfpah.js +1 -0
  230. package/dist/web/_app/immutable/entry/app.FgnywZP_.js +2 -0
  231. package/dist/web/_app/immutable/entry/start.Bsa-zlPf.js +1 -0
  232. package/dist/web/_app/immutable/nodes/0.D3SW-LMc.js +10 -0
  233. package/dist/web/_app/immutable/nodes/1.y0c5TQTP.js +1 -0
  234. package/dist/web/_app/immutable/nodes/2.BQfSep9-.js +1 -0
  235. package/dist/web/_app/immutable/nodes/3.CC4Y-xMM.js +11 -0
  236. package/dist/web/_app/immutable/nodes/4.Dp0Z-oPW.js +4 -0
  237. package/dist/web/_app/immutable/nodes/5.gjZ03DON.js +2 -0
  238. package/dist/web/_app/immutable/nodes/6.dRNIwcJQ.js +1 -0
  239. package/dist/web/_app/immutable/nodes/7.I4Gjes3o.js +2 -0
  240. package/dist/web/_app/immutable/nodes/8.Dj14D7uH.js +1 -0
  241. package/dist/web/_app/version.json +1 -1
  242. package/dist/web/index.html +10 -12
  243. package/package.json +4 -2
  244. package/dist/web/_app/immutable/assets/0.CF0XhAap.css +0 -1
  245. package/dist/web/_app/immutable/assets/3.BJy7pVXi.css +0 -1
  246. package/dist/web/_app/immutable/assets/4.Ad16uh9o.css +0 -1
  247. package/dist/web/_app/immutable/assets/6.Bm2i7O0j.css +0 -1
  248. package/dist/web/_app/immutable/assets/7.Cn2DG-J6.css +0 -1
  249. package/dist/web/_app/immutable/assets/AppShell.CztjTuKY.css +0 -1
  250. package/dist/web/_app/immutable/assets/ChatPanel.RFD5GGYI.css +0 -1
  251. package/dist/web/_app/immutable/assets/editor.CPAf2SRV.css +0 -1
  252. package/dist/web/_app/immutable/chunks/4QY4j-jX.js +0 -1
  253. package/dist/web/_app/immutable/chunks/B3Kdf1r4.js +0 -6
  254. package/dist/web/_app/immutable/chunks/BIo3H1KR.js +0 -2
  255. package/dist/web/_app/immutable/chunks/BJLM1w2L.js +0 -23
  256. package/dist/web/_app/immutable/chunks/BLCwEMdm.js +0 -1
  257. package/dist/web/_app/immutable/chunks/BSYvCVJt.js +0 -1
  258. package/dist/web/_app/immutable/chunks/Ba5JX1o9.js +0 -1
  259. package/dist/web/_app/immutable/chunks/Bj34y868.js +0 -64
  260. package/dist/web/_app/immutable/chunks/BrWpHgBJ.js +0 -1
  261. package/dist/web/_app/immutable/chunks/C3g_lwol.js +0 -1
  262. package/dist/web/_app/immutable/chunks/CXnPm09s.js +0 -1
  263. package/dist/web/_app/immutable/chunks/ClOTom10.js +0 -1
  264. package/dist/web/_app/immutable/chunks/CtT4aw_G.js +0 -1
  265. package/dist/web/_app/immutable/chunks/Dh_H7Owr.js +0 -18
  266. package/dist/web/_app/immutable/chunks/DnlgZ_Tk.js +0 -5
  267. package/dist/web/_app/immutable/chunks/DtVH--hH.js +0 -6
  268. package/dist/web/_app/immutable/chunks/Dzd9kdLj.js +0 -2
  269. package/dist/web/_app/immutable/chunks/L91a_BGe.js +0 -1
  270. package/dist/web/_app/immutable/chunks/bHAllEMt.js +0 -1
  271. package/dist/web/_app/immutable/entry/app.CdrgaaFb.js +0 -2
  272. package/dist/web/_app/immutable/entry/start.t9LMjt48.js +0 -1
  273. package/dist/web/_app/immutable/nodes/0.P-Xfebn4.js +0 -2
  274. package/dist/web/_app/immutable/nodes/1.DiZlq1e6.js +0 -1
  275. package/dist/web/_app/immutable/nodes/2.ByIZ5J2p.js +0 -1
  276. package/dist/web/_app/immutable/nodes/3.D7JhktsZ.js +0 -1
  277. package/dist/web/_app/immutable/nodes/4.BtMeWbPx.js +0 -16
  278. package/dist/web/_app/immutable/nodes/5.CCYG1pbQ.js +0 -4
  279. package/dist/web/_app/immutable/nodes/6.CL_Ah04j.js +0 -2
  280. package/dist/web/_app/immutable/nodes/7.BMTaosAj.js +0 -1
  281. package/dist/web/_app/immutable/nodes/8.mrPg67cz.js +0 -1
  282. /package/dist/web/_app/immutable/assets/{5.BhKgiXd2.css → 4.BhKgiXd2.css} +0 -0
@@ -0,0 +1 @@
1
+ import{e as P,a as _,t as E,f as S,s as F}from"../chunks/Cs_ROD7H.js";import{y as G,A as K,M as L,K as s,m as a,L as o,D as t,B as l,$ as M,G as i,F as $,I as Y}from"../chunks/BeBar3OL.js";import{i as j}from"../chunks/xBRYfpah.js";import{h as z}from"../chunks/O0fx2ss6.js";import{g as H}from"../chunks/D4FXhiC2.js";import{a as J,w as O}from"../chunks/DP09rP34.js";import{I as y,B as Q}from"../chunks/BuOTIbJu.js";var R=S('<p class="error-msg svelte-g40i6i"> </p>'),T=S('<div class="setup-page svelte-g40i6i"><div class="setup-card svelte-g40i6i"><div class="logo svelte-g40i6i"><div class="logo-icon svelte-g40i6i">S</div> <span class="logo-text svelte-g40i6i">Studiograph</span></div> <p class="subtitle svelte-g40i6i">Create your admin account to get started.</p> <form class="svelte-g40i6i"><label class="field svelte-g40i6i"><span class="field-label svelte-g40i6i">Name</span> <!></label> <label class="field svelte-g40i6i"><span class="field-label svelte-g40i6i">Email</span> <!></label> <label class="field svelte-g40i6i"><span class="field-label svelte-g40i6i">Password</span> <!> <span class="field-hint svelte-g40i6i">At least 8 characters</span></label> <!> <!></form></div></div>');function te(B,I){G(I,!0);let u=o(""),n=o(""),d=o(""),p=o(""),v=o(!1);async function k(e){e.preventDefault(),s(p,""),s(v,!0);try{await J.setup(a(u),a(n),a(d)||void 0),O.load(),H("/")}catch(r){s(p,r.message||"Setup failed",!0)}finally{s(v,!1)}}var c=T();z("g40i6i",e=>{L(()=>{M.title="Setup — Studiograph"})});var w=l(c),m=t(l(w),4),f=l(m),q=t(l(f),2);y(q,{type:"text",placeholder:"Your name",autocomplete:"name",autofocus:!0,class:"field-input",get value(){return a(d)},set value(e){s(d,e,!0)}}),i(f);var g=t(f,2),A=t(l(g),2);y(A,{type:"email",required:!0,autocomplete:"email",class:"field-input",get value(){return a(u)},set value(e){s(u,e,!0)}}),i(g);var b=t(g,2),C=t(l(b),2);y(C,{type:"password",required:!0,minlength:8,autocomplete:"new-password",class:"field-input",get value(){return a(n)},set value(e){s(n,e,!0)}}),$(2),i(b);var x=t(b,2);{var D=e=>{var r=R(),h=l(r,!0);i(r),Y(()=>F(h,a(p))),_(e,r)};j(x,e=>{a(p)&&e(D)})}var N=t(x,2);Q(N,{variant:"accent",type:"submit",class:"submit-btn",get disabled(){return a(v)},children:(e,r)=>{$();var h=E("Create account");_(e,h)},$$slots:{default:!0}}),i(m),i(w),i(c),P("submit",m,k),_(B,c),K()}export{te as component};
@@ -1 +1 @@
1
- {"version":"1773453853559"}
1
+ {"version":"1774242417908"}
@@ -7,31 +7,29 @@
7
7
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
8
8
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
9
9
  <link rel="stylesheet" href="/api/chrome/chrome.css">
10
- <link href="/_app/immutable/entry/start.t9LMjt48.js" rel="modulepreload">
11
- <link href="/_app/immutable/chunks/C3g_lwol.js" rel="modulepreload">
12
- <link href="/_app/immutable/chunks/CtT4aw_G.js" rel="modulepreload">
13
- <link href="/_app/immutable/entry/app.CdrgaaFb.js" rel="modulepreload">
10
+ <link href="/_app/immutable/entry/start.Bsa-zlPf.js" rel="modulepreload">
11
+ <link href="/_app/immutable/chunks/D4FXhiC2.js" rel="modulepreload">
12
+ <link href="/_app/immutable/chunks/BeBar3OL.js" rel="modulepreload">
13
+ <link href="/_app/immutable/entry/app.FgnywZP_.js" rel="modulepreload">
14
14
  <link href="/_app/immutable/chunks/PPVm8Dsz.js" rel="modulepreload">
15
- <link href="/_app/immutable/chunks/BIo3H1KR.js" rel="modulepreload">
16
- <link href="/_app/immutable/chunks/BrWpHgBJ.js" rel="modulepreload">
17
- <link href="/_app/immutable/chunks/L91a_BGe.js" rel="modulepreload">
18
- <link href="/_app/immutable/chunks/bHAllEMt.js" rel="modulepreload">
19
- <link href="/_app/immutable/chunks/CXnPm09s.js" rel="modulepreload">
15
+ <link href="/_app/immutable/chunks/Cs_ROD7H.js" rel="modulepreload">
16
+ <link href="/_app/immutable/chunks/xBRYfpah.js" rel="modulepreload">
17
+ <link href="/_app/immutable/chunks/DCGSm8Hl.js" rel="modulepreload">
20
18
 
21
19
  </head>
22
20
  <body data-sveltekit-preload-data="hover" data-sg-workspace="true">
23
21
  <div style="display: contents">
24
22
  <script>
25
23
  {
26
- __sveltekit_l206ia = {
24
+ __sveltekit_9bi1w7 = {
27
25
  base: ""
28
26
  };
29
27
 
30
28
  const element = document.currentScript.parentElement;
31
29
 
32
30
  Promise.all([
33
- import("/_app/immutable/entry/start.t9LMjt48.js"),
34
- import("/_app/immutable/entry/app.CdrgaaFb.js")
31
+ import("/_app/immutable/entry/start.Bsa-zlPf.js"),
32
+ import("/_app/immutable/entry/app.FgnywZP_.js")
35
33
  ]).then(([kit, app]) => {
36
34
  kit.start(app, element);
37
35
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "studiograph",
3
- "version": "1.3.3-next.9",
3
+ "version": "1.3.4",
4
4
  "description": "Team-based AI agent platform with Git-backed knowledge graphs",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -55,7 +55,6 @@
55
55
  "@mariozechner/pi-ai": "^0.54.2",
56
56
  "@mariozechner/pi-tui": "^0.54.2",
57
57
  "@modelcontextprotocol/sdk": "^1.26.0",
58
- "@octokit/rest": "^20.0.0",
59
58
  "ai": "^6.0.97",
60
59
  "bcryptjs": "^3.0.3",
61
60
  "better-sqlite3": "^12.6.2",
@@ -71,8 +70,11 @@
71
70
  "graphology-types": "^0.24.8",
72
71
  "gray-matter": "^4.0.3",
73
72
  "jsonwebtoken": "^9.0.3",
73
+ "lib0": "^0.2.117",
74
74
  "ora": "^9.3.0",
75
75
  "picocolors": "^1.1.1",
76
+ "y-protocols": "^1.0.7",
77
+ "yjs": "^13.6.30",
76
78
  "zod": "^3.22.4"
77
79
  },
78
80
  "optionalDependencies": {
@@ -1 +0,0 @@
1
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"Inter", ui-sans-serif, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--spacing:.25rem;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent:#6e6ee8;--color-accent-hover:#5c5cd6;--color-destructive:#e54d4d;--color-link:#8b8bf0}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.list-item{display:list-item}.table{display:table}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.flex-shrink{flex-shrink:1}.border-collapse{border-collapse:collapse}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.rounded-\[6px\]{border-radius:6px}.border{border-style:var(--tw-border-style);border-width:1px}.italic{font-style:italic}.underline{text-decoration-line:underline}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}}:root,[data-theme=dark]{--color-bg:#09090b;--color-bg-elevated:#0f0f12;--color-bg-surface:#141418;--color-bg-hover:#1a1a1f;--color-bg-selected:#1a1a1f;--color-border:#1e1e24;--color-border-strong:#2a2a32;--color-text-primary:#ededef;--color-text-secondary:#a0a0a6;--color-text-tertiary:#5c5c66;--color-accent-muted:#8b8bf014;--color-badge-bg:#1a1a22;--color-badge-text:#8b8b94}[data-theme=light]{--color-bg:#f8f8fa;--color-bg-elevated:#f0f0f3;--color-bg-surface:#e8e8ec;--color-bg-hover:#e2e2e8;--color-bg-selected:#e2e2e8;--color-border:#dadadf;--color-border-strong:#c9c9d0;--color-text-primary:#1a1a1f;--color-text-secondary:#63636b;--color-text-tertiary:#9898a0;--color-accent-muted:#6e6ee814;--color-badge-bg:#e0e0e5;--color-badge-text:#63636b}*{box-sizing:border-box;margin:0;padding:0}:focus{outline:none}body{font-family:var(--font-sans);color:var(--color-text-primary);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px;line-height:20px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}.toast-container.svelte-16oeye1{position:fixed;bottom:1rem;right:1rem;z-index:50;display:flex;flex-direction:column;gap:.5rem;max-width:360px}.toast.svelte-16oeye1{display:flex;align-items:center;gap:.5rem;padding:.625rem .75rem;background:var(--color-surface, #1e1e1e);border:1px solid var(--color-border, #333);border-radius:6px;color:var(--color-text, #e0e0e0);font-size:.8125rem;box-shadow:0 4px 12px #0000004d;animation:svelte-16oeye1-toast-in .2s ease-out}.toast-icon.svelte-16oeye1{flex-shrink:0;color:var(--color-text-muted, #888)}.toast-message.svelte-16oeye1{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toast-dismiss.svelte-16oeye1{flex-shrink:0;background:none;border:none;color:var(--color-text-muted, #888);cursor:pointer;padding:2px;border-radius:3px;display:flex;align-items:center}.toast-dismiss.svelte-16oeye1:hover{color:var(--color-text, #e0e0e0);background:var(--color-hover, rgba(255, 255, 255, .1))}@keyframes svelte-16oeye1-toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@@ -1 +0,0 @@
1
- .content-row.svelte-1dc9loe{display:flex;flex:1;min-height:0;overflow:hidden}.entity-area.svelte-1dc9loe{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.document-scroll.svelte-1dc9loe{flex:1;overflow-y:auto;min-height:0}.editor-bar.svelte-1dc9loe{height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 16px 0 40px;border-bottom:1px solid var(--color-border)}.breadcrumb-path.svelte-1dc9loe{font-size:13px;color:var(--color-text-secondary);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.bc-sep.svelte-1dc9loe{color:var(--color-text-tertiary);margin:0 6px}.bc-segment.svelte-1dc9loe{color:var(--color-text-secondary)}.bc-current.svelte-1dc9loe{color:var(--color-text-primary)}.editor-actions.svelte-1dc9loe{display:flex;align-items:center;gap:8px;flex-shrink:0;white-space:nowrap}.status-text.svelte-1dc9loe{font-size:12px}.status-text.saving.svelte-1dc9loe{color:var(--color-text-tertiary)}.status-text.error.svelte-1dc9loe{color:var(--color-destructive)}.action-btn.svelte-1dc9loe{height:26px;padding:0 12px;border-radius:4px;font-size:12px;font-family:inherit;font-weight:500;cursor:pointer;border:1px solid var(--color-border-strong);transition:background .15s,color .15s}.action-btn.open-app.svelte-1dc9loe{background:transparent;color:var(--color-text-secondary);text-decoration:none;display:inline-flex;align-items:center;text-transform:capitalize}.action-btn.open-app.svelte-1dc9loe:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}@media(max-width:960px){.breadcrumb-path.svelte-1dc9loe{display:none}}
@@ -1 +0,0 @@
1
- .csv-editor.svelte-63hltt{padding:32px 40px 0}.table-scroll.svelte-63hltt{overflow-x:auto}table.svelte-63hltt{border-collapse:collapse;width:100%;font-size:13px;font-family:var(--font-sans)}th.svelte-63hltt,td.svelte-63hltt{border:1px solid var(--color-border);padding:0;height:32px}th.svelte-63hltt{background:transparent;font-weight:500;color:var(--color-text-secondary);position:sticky;top:0;z-index:1}th.svelte-63hltt:not(.row-num):not(.col-add){position:sticky;top:0;z-index:1}.row-num.svelte-63hltt{width:40px;text-align:center;color:var(--color-text-tertiary);font-size:11px;background:transparent}.cell-input.svelte-63hltt{width:100%;height:100%;border:none;background:transparent;color:var(--color-text-primary);font-family:var(--font-sans);font-size:13px;padding:4px 8px;outline:none}.cell-input.svelte-63hltt:focus{outline:2px solid var(--color-accent);outline-offset:-2px}.header-input.svelte-63hltt{font-weight:500;color:var(--color-text-secondary)}th.svelte-63hltt:not(.row-num):not(.col-add){position:relative}.col-delete-btn.svelte-63hltt{position:absolute;top:2px;right:2px;width:18px;height:18px;display:none;align-items:center;justify-content:center;border:none;background:var(--color-bg-hover);border-radius:3px;cursor:pointer;color:var(--color-text-tertiary);padding:0}th.svelte-63hltt:hover .col-delete-btn:where(.svelte-63hltt){display:flex}.col-delete-btn.svelte-63hltt:hover{color:var(--color-destructive);background:var(--color-bg-selected)}.col-add.svelte-63hltt{width:32px;border:none;background:transparent}.col-add-btn.svelte-63hltt{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border:none;background:transparent;cursor:pointer;color:var(--color-text-tertiary);padding:0}.col-add-btn.svelte-63hltt:hover{color:var(--color-accent);background:var(--color-bg-hover)}.actions.svelte-63hltt{width:32px;text-align:center;border:none}.delete-btn.svelte-63hltt{display:none;align-items:center;justify-content:center;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;padding:0;width:20px;height:20px;border-radius:3px;margin:0 auto}tr.svelte-63hltt:hover .delete-btn:where(.svelte-63hltt){display:flex}.delete-btn.svelte-63hltt:hover{color:var(--color-destructive);background:var(--color-bg-hover)}.csv-footer.svelte-63hltt{display:flex;align-items:center;gap:16px;padding:8px 0}.add-row-btn.svelte-63hltt{display:flex;align-items:center;gap:6px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;font-family:var(--font-sans);font-size:13px;padding:4px 8px;border-radius:4px;transition:color .15s,background .15s}.add-row-btn.svelte-63hltt:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.content-row.svelte-xtfs5g{display:flex;flex:1;min-height:0;overflow:hidden}.entity-area.svelte-xtfs5g{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.document-scroll.svelte-xtfs5g{flex:1;overflow-y:auto;min-height:0}.editor-bar.svelte-xtfs5g{height:40px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 40px;border-bottom:1px solid var(--color-border)}.breadcrumb-path.svelte-xtfs5g{font-size:13px;color:var(--color-text-secondary);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.bc-sep.svelte-xtfs5g{color:var(--color-text-tertiary);margin:0 6px}.bc-segment.svelte-xtfs5g{color:var(--color-text-secondary)}.bc-current.svelte-xtfs5g{color:var(--color-text-primary)}.editor-actions.svelte-xtfs5g{display:flex;align-items:center;gap:8px;flex-shrink:0}.status-text.svelte-xtfs5g{font-size:12px}.status-text.saving.svelte-xtfs5g{color:var(--color-text-tertiary)}.status-text.error.svelte-xtfs5g{color:var(--color-destructive)}@media(max-width:960px){.breadcrumb-path.svelte-xtfs5g{display:none}}
@@ -1 +0,0 @@
1
- .graph-view.svelte-1i33fky{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.canvas-wrap.svelte-1i33fky{flex:1;min-height:0;position:relative;overflow:hidden;touch-action:none}.legend-panel.svelte-1i33fky{position:absolute;bottom:16px;right:16px;display:flex;flex-direction:column;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;overflow:hidden;z-index:2}.legend-item.svelte-1i33fky{display:flex;align-items:center;gap:8px;white-space:nowrap;padding:5px 12px;cursor:pointer}.legend-item.svelte-1i33fky:hover{background:var(--color-bg-hover)}.legend-dot.svelte-1i33fky{width:8px;height:8px;border-radius:4px;flex-shrink:0}.legend-label.svelte-1i33fky{font-size:12px;color:var(--color-text-secondary);flex:1}.legend-count.svelte-1i33fky{font-size:11px;color:var(--color-text-tertiary);font-variant-numeric:tabular-nums}.timeline-bar.svelte-lzvab{display:flex;align-items:stretch;height:85px;padding:0 24px 0 12px;border-top:1px solid var(--color-border);background:var(--color-bg);gap:8px;flex-shrink:0}.play-btn.svelte-lzvab{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:6px;flex-shrink:0;padding:0;align-self:flex-start;margin-top:20px}.play-btn.svelte-lzvab:hover{color:var(--color-text-primary)}.timeline-track.svelte-lzvab{flex:1;height:100%;position:relative;cursor:crosshair;-webkit-user-select:none;user-select:none;touch-action:none}.track-line.svelte-lzvab{position:absolute;left:0;right:0;bottom:calc(30px + (100% - 46px)/2);height:1px;background:var(--color-text-tertiary);opacity:.3}.density-bars.svelte-lzvab{position:absolute;inset:16px 0 30px}.density-bar.svelte-lzvab{position:absolute;top:0;bottom:0;width:1px;background:var(--color-text-secondary);transform:translate(-50%)}.playhead.svelte-lzvab{position:absolute;top:16px;bottom:30px;width:1px;background:var(--color-accent, #6e6ee8);transform:translate(-50%);pointer-events:none;z-index:2}.date-labels.svelte-lzvab{position:absolute;bottom:8px;left:0;right:0;height:18px}.date-label.svelte-lzvab{position:absolute;transform:translate(-50%);font-size:10px;color:var(--color-text-tertiary);white-space:nowrap}.timeline-tooltip.svelte-lzvab{position:absolute;bottom:100%;transform:translate(-50%);margin-bottom:8px;background:var(--color-bg-elevated, var(--color-bg));border:1px solid var(--color-border);border-radius:6px;padding:8px 12px;font-size:12px;white-space:nowrap;pointer-events:none;z-index:10;box-shadow:0 4px 12px #0000004d}.tooltip-date.svelte-lzvab{color:var(--color-text-tertiary);font-size:11px;margin-bottom:4px}.tooltip-count.svelte-lzvab{color:var(--color-text-primary);font-weight:600}.content-row.svelte-315y67{display:flex;flex:1;min-height:0;overflow:hidden}.graph-area.svelte-315y67{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}
@@ -1 +0,0 @@
1
- .login-page.svelte-1x05zx6{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg)}.login-card.svelte-1x05zx6{width:100%;max-width:360px;padding:40px 32px}.logo.svelte-1x05zx6{display:flex;align-items:center;gap:12px;margin-bottom:36px;justify-content:center}.logo-icon.svelte-1x05zx6{width:32px;height:32px;border-radius:50%;background:var(--color-accent, #6e6ee8);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.logo-text.svelte-1x05zx6{font-size:18px;font-weight:600;color:var(--color-text-primary)}form.svelte-1x05zx6{display:flex;flex-direction:column;gap:20px}.field.svelte-1x05zx6{display:flex;flex-direction:column;gap:6px}.field-label.svelte-1x05zx6{font-size:13px;font-weight:500;color:var(--color-text-secondary)}.field.svelte-1x05zx6 input:where(.svelte-1x05zx6){width:100%;height:40px;padding:0 12px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg-surface);color:var(--color-text-primary);font-size:14px;font-family:inherit;outline:none;box-sizing:border-box}.field.svelte-1x05zx6 input:where(.svelte-1x05zx6):focus{border-color:var(--color-accent, #6e6ee8);box-shadow:0 0 0 2px color-mix(in srgb,var(--color-accent, #6e6ee8) 20%,transparent)}.error-msg.svelte-1x05zx6{margin:0;font-size:13px;color:#e55;text-align:center}.submit-btn.svelte-1x05zx6{height:40px;border:none;border-radius:8px;background:var(--color-accent, #6e6ee8);color:#fff;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;margin-top:4px}.submit-btn.svelte-1x05zx6:hover:not(:disabled){background:var(--color-accent-hover, #5c5cd6)}.submit-btn.svelte-1x05zx6:disabled{opacity:.6;cursor:not-allowed}
@@ -1 +0,0 @@
1
- .confirm-backdrop.svelte-193t4hn{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding-top:140px}[data-theme=dark] .confirm-backdrop.svelte-193t4hn{background:#0009}[data-theme=light] .confirm-backdrop.svelte-193t4hn{background:#00000040}.confirm-modal.svelte-193t4hn{width:420px;display:flex;flex-direction:column;background:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:12px;overflow:hidden;box-shadow:0 24px 80px #00000080}.confirm-header.svelte-193t4hn{padding:20px 24px 0}.confirm-title.svelte-193t4hn{font-size:16px;font-weight:500;color:var(--color-text-primary)}.confirm-body.svelte-193t4hn{padding:12px 24px 20px}.confirm-message.svelte-193t4hn{font-size:13px;color:var(--color-text-secondary);line-height:1.5}.confirm-footer.svelte-193t4hn{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid var(--color-border)}.footer-btn.svelte-193t4hn{font-family:inherit;font-size:13px;font-weight:500;padding:6px 12px;border-radius:6px;border:none;cursor:pointer}.footer-btn.ghost.svelte-193t4hn{color:var(--color-text-secondary);background:none}.footer-btn.ghost.svelte-193t4hn:hover{color:var(--color-text-primary);background:var(--color-bg-hover)}.footer-btn.accent.svelte-193t4hn{color:#fff;background:var(--color-accent)}.footer-btn.accent.svelte-193t4hn:hover{background:var(--color-accent-hover)}.footer-btn.destructive.svelte-193t4hn{color:#fff;background:var(--color-error, #e55)}.footer-btn.destructive.svelte-193t4hn:hover{background:color-mix(in srgb,var(--color-error, #e55) 85%,black)}.entity-dialog-backdrop.svelte-ak7t5k{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding-top:80px}[data-theme=dark] .entity-dialog-backdrop.svelte-ak7t5k{background:#0009}[data-theme=light] .entity-dialog-backdrop.svelte-ak7t5k{background:#00000040}.entity-dialog.svelte-ak7t5k{width:560px;max-height:520px;display:flex;flex-direction:column;background:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:12px;overflow:hidden;box-shadow:0 24px 80px #00000080}.entity-dialog-header.svelte-ak7t5k{display:flex;align-items:center;justify-content:space-between;padding:16px 14px 16px 24px;flex-shrink:0}.entity-dialog-title.svelte-ak7t5k{font-size:16px;font-weight:500;color:var(--color-text-primary)}.dialog-close.svelte-ak7t5k{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--color-text-tertiary);font-size:18px;cursor:pointer;border-radius:6px;line-height:1}.dialog-close.svelte-ak7t5k:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.entity-dialog-body.svelte-ak7t5k{padding:16px 24px 24px;display:flex;flex-direction:column;gap:20px;overflow-y:auto}.type-section.svelte-ak7t5k{display:flex;flex-direction:column;gap:8px}.type-section-label.svelte-ak7t5k{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-tertiary)}.type-grid.svelte-ak7t5k{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.type-card.svelte-ak7t5k{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--color-border);background:transparent;color:var(--color-text-secondary);font-family:inherit;cursor:pointer;border-radius:8px;text-align:left;transition:background .12s,color .12s,border-color .12s}.type-card.svelte-ak7t5k:hover{background:var(--color-bg-hover);border-color:var(--color-border-strong)}.type-card.svelte-ak7t5k:hover .type-name:where(.svelte-ak7t5k){color:var(--color-text-primary)}.type-dot.svelte-ak7t5k{width:8px;height:8px;border-radius:50%}.type-info.svelte-ak7t5k{display:flex;flex-direction:column;gap:2px}.type-name.svelte-ak7t5k{font-size:13px;font-weight:500;color:var(--color-text-secondary)}.type-desc.svelte-ak7t5k{font-size:11px;color:var(--color-text-tertiary);line-height:1.3}.perm-backdrop.svelte-1qsmvmm{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding-top:80px}[data-theme=dark] .perm-backdrop.svelte-1qsmvmm{background:#0009}[data-theme=light] .perm-backdrop.svelte-1qsmvmm{background:#00000040}.perm-modal.svelte-1qsmvmm{width:600px;max-height:calc(100vh - 120px);display:flex;flex-direction:column;background:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:12px;overflow:hidden;box-shadow:0 24px 80px #00000080}.perm-header.svelte-1qsmvmm{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 0}.perm-title.svelte-1qsmvmm{font-size:16px;font-weight:500;color:var(--color-text-primary)}.close-btn.svelte-1qsmvmm{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:6px}.close-btn.svelte-1qsmvmm:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.tab-bar.svelte-1qsmvmm{display:flex;gap:0;padding:16px 24px 0;border-bottom:1px solid var(--color-border)}.tab-btn.svelte-1qsmvmm{font-family:inherit;font-size:13px;font-weight:500;color:var(--color-text-tertiary);background:none;border:none;border-bottom:2px solid transparent;padding:8px 14px;cursor:pointer;margin-bottom:-1px}.tab-btn.svelte-1qsmvmm:hover{color:var(--color-text-secondary)}.tab-btn.active.svelte-1qsmvmm{color:var(--color-text-primary);border-bottom-color:var(--color-accent)}.perm-body.svelte-1qsmvmm{flex:1;overflow-y:auto;padding:16px 24px 24px}.add-trigger.svelte-1qsmvmm{display:flex;align-items:center;gap:8px;width:100%;height:36px;padding:0;border:none;background:transparent;cursor:pointer;border-radius:6px;font-family:inherit;font-size:13px;color:var(--color-text-tertiary)}.add-trigger.svelte-1qsmvmm:hover{color:var(--color-text-secondary)}.add-trigger-icon.svelte-1qsmvmm{display:flex;align-items:center;justify-content:center;width:22px;height:22px;flex-shrink:0}.status-msg.svelte-1qsmvmm{font-size:13px;color:var(--color-error, #e55);padding:0;background:none}.loading-text.svelte-1qsmvmm{font-size:13px;color:var(--color-text-tertiary);padding:20px 0;text-align:center}.avatar.svelte-1qsmvmm{width:22px;height:22px;border-radius:50%;flex-shrink:0;object-fit:cover}.avatar.placeholder.svelte-1qsmvmm{background:var(--color-bg-surface);border:1px solid var(--color-border);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:var(--color-text-secondary)}.icon-btn.svelte-1qsmvmm{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;cursor:pointer;border-radius:4px;flex-shrink:0;padding:0}.icon-btn.svelte-1qsmvmm:first-of-type{margin-left:auto}.icon-btn.svelte-1qsmvmm{color:var(--color-text-tertiary)}.icon-btn.svelte-1qsmvmm:hover{color:var(--color-text-secondary)}.icon-btn.danger.svelte-1qsmvmm:hover{color:var(--color-error, #e55)}.collection-list.svelte-1qsmvmm{display:flex;flex-direction:column;gap:16px}.collection-section.svelte-1qsmvmm{display:flex;flex-direction:column;gap:2px}.collection-header.svelte-1qsmvmm{display:flex;align-items:center;gap:8px;width:100%;padding:6px 0;border:none;background:transparent;cursor:pointer;border-radius:6px;font-family:inherit;text-align:left}.collection-header.svelte-1qsmvmm:hover{background:var(--color-bg-hover)}.collection-chevron.svelte-1qsmvmm{display:flex;align-items:center;justify-content:center;width:22px;height:22px;color:var(--color-text-tertiary);flex-shrink:0}.collection-text.svelte-1qsmvmm{display:flex;align-items:baseline}.collection-name.svelte-1qsmvmm{font-size:13px;font-weight:500;color:var(--color-text-primary)}.collection-count.svelte-1qsmvmm{font-size:11px;color:var(--color-text-tertiary);margin-left:8px}.access-row.svelte-1qsmvmm{display:flex;align-items:center;gap:8px;height:36px;padding:0;font-size:13px}.access-row.svelte-1qsmvmm .avatar:where(.svelte-1qsmvmm){flex-shrink:0}.icon-spacer.svelte-1qsmvmm{width:52px;flex-shrink:0;margin-left:auto}.access-text.svelte-1qsmvmm{display:flex;align-items:baseline;gap:0;min-width:0}.access-label.svelte-1qsmvmm{color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.access-email.svelte-1qsmvmm{font-size:11px;color:var(--color-text-tertiary);margin-left:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.perm-badge.svelte-1qsmvmm{font-size:11px;color:var(--color-text-tertiary);flex-shrink:0;text-transform:capitalize;margin-left:8px}.admin-badge.svelte-1qsmvmm{color:var(--color-accent, #6e6ee8)}.confirm-row.svelte-1qsmvmm{background:#e5555514;border-radius:6px;padding:0 10px 0 30px}.confirm-text.svelte-1qsmvmm{flex:1;font-size:13px;color:var(--color-text-primary)}.confirm-btn.svelte-1qsmvmm{font-family:inherit;font-size:12px;font-weight:500;padding:4px 10px;border-radius:4px;border:none;cursor:pointer;flex-shrink:0}.confirm-btn.svelte-1qsmvmm:disabled{opacity:.5;cursor:not-allowed}.confirm-btn.cancel.svelte-1qsmvmm{color:var(--color-text-secondary);background:transparent}.confirm-btn.cancel.svelte-1qsmvmm:hover{color:var(--color-text-primary)}.confirm-btn.revoke.svelte-1qsmvmm{color:#fff;background:var(--color-error, #e55)}.confirm-btn.revoke.svelte-1qsmvmm:hover:not(:disabled){background:color-mix(in srgb,var(--color-error, #e55) 85%,black)}.inline-add-form.svelte-1qsmvmm{border:1px solid var(--color-border);border-radius:8px;padding:12px;margin-top:8px;background:var(--color-bg-surface)}.form-row.svelte-1qsmvmm{display:flex;gap:8px;margin-bottom:8px}.form-input.svelte-1qsmvmm{flex:1;height:32px;padding:0 8px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg);color:var(--color-text-primary);font-size:12px;font-family:inherit;outline:none;box-sizing:border-box}.form-input.svelte-1qsmvmm:focus{border-color:var(--color-accent, #6e6ee8)}.form-actions.svelte-1qsmvmm{display:flex;align-items:center;justify-content:flex-end;gap:8px}.cancel-btn.svelte-1qsmvmm{height:28px;padding:0 10px;border:none;border-radius:4px;background:transparent;color:var(--color-text-secondary);font-size:12px;font-family:inherit;cursor:pointer}.cancel-btn.svelte-1qsmvmm:hover{color:var(--color-text-primary)}.submit-btn.svelte-1qsmvmm{height:28px;padding:0 12px;border:none;border-radius:4px;background:var(--color-accent, #6e6ee8);color:#fff;font-size:12px;font-weight:500;font-family:inherit;cursor:pointer}.submit-btn.svelte-1qsmvmm:hover:not(:disabled){background:var(--color-accent-hover, #5c5cd6)}.submit-btn.svelte-1qsmvmm:disabled{opacity:.6;cursor:not-allowed}.reset-input.svelte-1qsmvmm{width:100%;margin-top:8px}.confirm-overlay.svelte-1qsmvmm{position:fixed;inset:0;z-index:1100;display:flex;align-items:center;justify-content:center;background:#0006}.confirm-box.svelte-1qsmvmm{background:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:10px;padding:20px 24px;max-width:360px;box-shadow:0 16px 40px #0006}.confirm-box.svelte-1qsmvmm p:where(.svelte-1qsmvmm){margin:0 0 16px;font-size:13px;color:var(--color-text-primary)}.confirm-actions.svelte-1qsmvmm{display:flex;justify-content:flex-end;gap:8px}.candidate-row.svelte-1qsmvmm{opacity:.55}.grant-btn.svelte-1qsmvmm{color:var(--color-text-tertiary)}.grant-btn.svelte-1qsmvmm:hover{color:var(--color-accent, #6e6ee8)}.sidebar.svelte-6dohdz{width:340px;min-width:340px;display:flex;flex-direction:column;overflow:hidden;background:var(--color-bg);border-right:1px solid var(--color-border)}.sidebar-header.svelte-6dohdz{height:40px;display:flex;align-items:center;gap:11px;padding:0 12px 0 19px;border-bottom:1px solid var(--color-border);flex-shrink:0}.settings-btn.svelte-6dohdz{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:6px;margin-left:auto;padding:0}.settings-btn.svelte-6dohdz:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.home-btn.svelte-6dohdz{display:flex;align-items:center;gap:11px;border:none;background:transparent;padding:0;cursor:pointer;min-width:0;flex:1;text-align:left}.home-btn.svelte-6dohdz:hover .workspace-icon:where(.svelte-6dohdz){opacity:.8}.home-btn.svelte-6dohdz:hover .workspace-name:where(.svelte-6dohdz){color:var(--color-text-secondary)}.workspace-icon.svelte-6dohdz{width:22px;height:22px;border-radius:50%;background:var(--color-accent, #6e6ee8);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:10px;flex-shrink:0}.workspace-name.svelte-6dohdz{flex:1;font-size:13px;font-weight:600;color:var(--color-text-primary)}.filter-bar.svelte-6dohdz{position:relative;display:flex;align-items:center;height:40px;padding:0 12px 0 52px;border-bottom:1px solid var(--color-border);flex-shrink:0}.filter-icon.svelte-6dohdz{position:absolute;left:22px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:16px;color:var(--color-text-tertiary)}.filter-input.svelte-6dohdz{flex:1;background:transparent;border:none;outline:none;padding:0;margin:0;font-size:13px;line-height:1.4;font-family:inherit;color:var(--color-text-primary)}.filter-input.svelte-6dohdz::placeholder{color:var(--color-text-tertiary)}.filter-clear.svelte-6dohdz{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;border-radius:3px;cursor:pointer;color:var(--color-text-tertiary);flex-shrink:0;padding:0}.filter-clear.svelte-6dohdz:hover{color:var(--color-text-primary)}.sort-toggle.svelte-6dohdz{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;border-radius:6px;cursor:pointer;color:var(--color-text-tertiary);flex-shrink:0;padding:0;margin-right:0;margin-left:4px}.sort-toggle.svelte-6dohdz:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.sort-toggle.active.svelte-6dohdz{color:var(--color-accent, #6e6ee8)}.repo-type-icon.svelte-6dohdz{display:inline-flex;align-items:center;color:var(--color-text-tertiary);margin-right:6px;flex-shrink:0;align-self:center}.tree.svelte-6dohdz{flex:1;overflow-y:auto;padding-top:0}.tree-group.svelte-6dohdz{display:flex;flex-direction:column}.tree-group.svelte-6dohdz+.tree-group:where(.svelte-6dohdz){margin-top:0}.repo-row.svelte-6dohdz{display:flex;align-items:baseline;height:32px;line-height:32px;width:100%;padding:0 12px 0 20px;border:none;background:transparent;cursor:pointer;font-family:inherit;text-align:left;border-left:2px solid transparent}.repo-row.svelte-6dohdz:hover,.repo-row.focused.svelte-6dohdz{background:var(--color-bg-hover)}.repo-row.repo-active.svelte-6dohdz{border-left-color:var(--active-color)}.repo-name.svelte-6dohdz{font-size:13px;color:var(--color-text-secondary)}.repo-row.repo-active.svelte-6dohdz .repo-name:where(.svelte-6dohdz),.repo-row.repo-active.svelte-6dohdz .repo-type-icon:where(.svelte-6dohdz){font-weight:600;color:var(--color-text-primary)}.tree-row.svelte-6dohdz{display:flex;align-items:baseline;height:32px;line-height:32px;padding-right:40px;color:var(--color-text-secondary);font-size:13px;cursor:pointer;border:none;background:transparent;font-family:inherit;text-align:left;width:100%;border-left:2px solid transparent}.tree-row.svelte-6dohdz:hover,.tree-row.focused.svelte-6dohdz{background:var(--color-bg-hover)}.tree-row.selected.svelte-6dohdz{background:var(--color-bg-selected);border-left-color:var(--active-color);color:var(--color-text-primary);font-weight:600}.row-chevron.svelte-6dohdz{display:inline-flex;align-items:center;justify-content:center;width:16px;height:32px;flex-shrink:0;margin-right:14px;color:var(--color-text-tertiary);align-self:center}.row-label.svelte-6dohdz{flex:1;overflow:hidden;white-space:nowrap;mask-image:linear-gradient(to right,black calc(100% - 16px),transparent 100%);-webkit-mask-image:linear-gradient(to right,black calc(100% - 16px),transparent 100%)}.item-count.svelte-6dohdz{font-size:11px;color:var(--color-text-tertiary);margin-left:8px;flex-shrink:0}.dirty-dot.svelte-6dohdz{width:6px;height:6px;border-radius:3px;flex-shrink:0;margin-left:auto;display:none;align-self:center;background:var(--color-text-tertiary)}.tree-row.dirty.svelte-6dohdz .dirty-dot:where(.svelte-6dohdz){display:block}.repo-dirty-dot.svelte-6dohdz{width:20px;height:20px;flex-shrink:0;margin-left:auto;margin-right:4px;align-self:center;display:flex;align-items:center;justify-content:center;background:transparent}.repo-dirty-dot.svelte-6dohdz:after{content:"";width:6px;height:6px;border-radius:3px;background:var(--color-text-tertiary)}.repo-row.svelte-6dohdz:hover .repo-dirty-dot:where(.svelte-6dohdz){display:none}.indent-group.svelte-6dohdz{position:relative}.indent-group.svelte-6dohdz:before{content:"";position:absolute;left:var(--guide-left);top:0;bottom:0;width:1px;background:var(--color-border);pointer-events:none}.loading-row.svelte-6dohdz{height:32px;display:flex;align-items:center;font-size:13px;color:var(--color-text-tertiary)}.type-header-row.svelte-6dohdz{color:var(--color-text-secondary);border-left:2px solid transparent}.type-header-row.type-active.svelte-6dohdz{color:var(--color-text-primary);font-weight:600}.type-header-row.svelte-6dohdz .row-label:where(.svelte-6dohdz){flex:none;mask-image:none;-webkit-mask-image:none}.new-entity-row.svelte-6dohdz{color:var(--color-text-tertiary);align-items:center}.new-entity-row.svelte-6dohdz:hover{color:var(--color-text-secondary)}.entity-row-wrapper.svelte-6dohdz{position:relative;display:flex;align-items:center}.entity-row-wrapper.svelte-6dohdz .tree-row:where(.svelte-6dohdz){flex:1;min-width:0}.entity-delete-btn.svelte-6dohdz{display:none;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:3px;position:absolute;right:16px;flex-shrink:0;padding:0}.entity-delete-btn.svelte-6dohdz:hover{color:var(--color-error, #e55)}.entity-row-wrapper.svelte-6dohdz:hover .tree-row:where(.svelte-6dohdz){background:var(--color-bg-hover)}.entity-row-wrapper.svelte-6dohdz:hover .entity-delete-btn:where(.svelte-6dohdz){display:flex}.entity-row-wrapper.svelte-6dohdz:hover .dirty-dot:where(.svelte-6dohdz){display:none!important}.entity-type-dot.svelte-6dohdz{width:6px;height:6px;border-radius:50%;flex-shrink:0;margin-right:19px;align-self:center}.recent-time.svelte-6dohdz{font-size:11px;color:var(--color-text-tertiary);position:absolute;right:26px;top:50%;transform:translate(50%,-50%);white-space:nowrap}.entity-row-wrapper.svelte-6dohdz:hover .recent-time:where(.svelte-6dohdz){display:none}.filter-match.svelte-6dohdz{background:color-mix(in srgb,var(--color-accent, #6e6ee8) 25%,transparent);color:inherit;border-radius:2px;padding:0}.no-results.svelte-6dohdz{padding:24px 16px;font-size:13px;color:var(--color-text-tertiary);text-align:center}.repo-rename-input.svelte-6dohdz{flex:1;min-width:0;height:100%;padding:0 6px;margin:0;border:1px solid var(--color-accent, #6e6ee8);border-radius:3px;background:var(--color-bg-primary);color:var(--color-text-primary);font-size:13px;font-weight:600;font-family:inherit;outline:none;box-sizing:border-box}.repo-row-wrapper.svelte-6dohdz{position:relative;display:flex;align-items:center}.repo-row-wrapper.svelte-6dohdz .repo-row:where(.svelte-6dohdz){flex:1;min-width:0}.repo-delete-btn.svelte-6dohdz{display:none;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:3px;position:absolute;right:16px;flex-shrink:0;padding:0}.repo-delete-btn.svelte-6dohdz:hover{color:var(--color-error, #e55)}.repo-row-wrapper.svelte-6dohdz:hover .repo-row:where(.svelte-6dohdz){background:var(--color-bg-hover)}.repo-row-wrapper.svelte-6dohdz:hover .repo-delete-btn:where(.svelte-6dohdz){display:flex}.new-collection-btn.svelte-6dohdz,.new-collection-btn.svelte-6dohdz .repo-name:where(.svelte-6dohdz){color:var(--color-text-tertiary)}.new-collection-btn.svelte-6dohdz .row-chevron:where(.svelte-6dohdz){color:var(--color-text-tertiary)}.new-collection-btn.svelte-6dohdz:hover,.new-collection-btn.svelte-6dohdz:hover .repo-name:where(.svelte-6dohdz){color:var(--color-text-secondary)}.new-collection-row.svelte-6dohdz{display:flex;align-items:center;height:32px;padding:0 12px 0 20px;border-left:2px solid transparent}.new-collection-row.svelte-6dohdz input:where(.svelte-6dohdz){flex:1;height:100%;padding:0 0 0 30px;border:none;background:transparent;color:var(--color-text-primary);font-size:13px;font-family:inherit;outline:none}.new-collection-clear.svelte-6dohdz{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:3px;flex-shrink:0;padding:0;margin-right:4px}.new-collection-clear.svelte-6dohdz:hover{color:var(--color-text-primary)}.private-toggle.svelte-6dohdz{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;border-radius:3px;margin-left:auto;margin-right:4px;flex-shrink:0;padding:0}.private-toggle.svelte-6dohdz:hover{color:var(--color-text-primary)}.private-toggle.active.svelte-6dohdz{color:var(--color-accent, #6e6ee8)}@keyframes svelte-6dohdz-shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.new-collection-row.svelte-6dohdz input:where(.svelte-6dohdz).shake{animation:svelte-6dohdz-shake .3s ease-in-out}.sidebar-footer.svelte-6dohdz{display:flex;align-items:center;height:40px;padding:0 12px 0 19px;border-top:1px solid var(--color-border);flex-shrink:0;gap:8px}.user-email.svelte-6dohdz{flex:1;font-size:12px;color:var(--color-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer.svelte-6dohdz .confirm-text:where(.svelte-6dohdz){flex:1;font-size:12px;color:var(--color-text-secondary)}.sidebar-footer.svelte-6dohdz .confirm-btn:where(.svelte-6dohdz){font-size:11px;padding:3px 10px;border:none;border-radius:4px;cursor:pointer;background:transparent;color:var(--color-text-tertiary)}.sidebar-footer.svelte-6dohdz .confirm-btn:where(.svelte-6dohdz):hover{color:var(--color-text-primary)}.sidebar-footer.svelte-6dohdz .confirm-btn.danger:where(.svelte-6dohdz){background:var(--color-danger, #e53935);color:#fff}.sidebar-footer.svelte-6dohdz .confirm-btn.danger:where(.svelte-6dohdz):hover{opacity:.9}.footer-icon-btn.svelte-6dohdz{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:6px;padding:0}.footer-icon-btn.svelte-6dohdz:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.search-backdrop.svelte-1xems06{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding-top:80px}[data-theme=dark] .search-backdrop.svelte-1xems06{background:#0009}[data-theme=light] .search-backdrop.svelte-1xems06{background:#00000040}.search-modal.svelte-1xems06{width:680px;max-height:560px;display:flex;flex-direction:column;background:var(--color-bg-elevated);border:1px solid var(--color-border-strong);border-radius:12px;overflow:hidden;box-shadow:0 24px 48px #0006}.search-header.svelte-1xems06{display:flex;align-items:center;height:52px;padding:0 16px;gap:10px;border-bottom:1px solid var(--color-border)}.search-header.svelte-1xems06 svg{color:var(--color-text-tertiary);flex-shrink:0}.search-input.svelte-1xems06{flex:1;font-size:15px;color:var(--color-text-primary);line-height:20px;background:transparent;border:none;outline:none;font-family:inherit}.search-input.svelte-1xems06::placeholder{color:var(--color-text-tertiary)}.esc-badge.svelte-1xems06{font-family:var(--font-sans);font-size:11px;line-height:1;padding:3px 6px;border-radius:4px;background:var(--color-bg-surface);border:1px solid var(--color-border);color:var(--color-text-tertiary)}.results-list.svelte-1xems06{flex:1;overflow-y:auto;min-height:0}.empty-results.svelte-1xems06{padding:24px 16px;text-align:center;font-size:13px;color:var(--color-text-tertiary)}.result-row.svelte-1xems06{display:flex;align-items:flex-start;padding:10px 16px;cursor:pointer;border:none;background:transparent;width:100%;text-align:left;font-family:inherit}.result-row.svelte-1xems06:hover,.result-row.selected.svelte-1xems06{background:var(--color-bg-hover)}.result-body.svelte-1xems06{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.result-title-row.svelte-1xems06{display:flex;align-items:center;gap:8px}.result-title.svelte-1xems06{font-size:13px;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entity-tag.svelte-1xems06{flex-shrink:0;font-size:10px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:3px;background:var(--color-badge-bg);color:var(--color-badge-text)}.result-meta.svelte-1xems06{font-size:12px;color:var(--color-text-tertiary)}.search-footer.svelte-1xems06{display:flex;align-items:center;height:39px;padding:0 16px;gap:16px;border-top:1px solid var(--color-border)}.shortcut-group.svelte-1xems06{display:flex;align-items:center;gap:4px}.shortcut-key.svelte-1xems06{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 4px;border-radius:4px;background:var(--color-bg-surface);border:1px solid var(--color-border);color:var(--color-text-tertiary)}.shortcut-label.svelte-1xems06{font-size:11px;color:var(--color-text-tertiary);margin-left:2px}.app-frame.svelte-vr1z90{width:100vw;height:100vh;display:flex;flex-direction:column;overflow:hidden;background:var(--color-bg)}.app-body.svelte-vr1z90{flex:1;display:flex;min-height:0;overflow:hidden}.main-content.svelte-vr1z90{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}#sg-chrome-footer{flex-shrink:0}
@@ -1 +0,0 @@
1
- .view-toolbar.svelte-r6dy5f{height:40px;flex-shrink:0;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 16px;border-bottom:1px solid var(--color-border)}.view-toggles.svelte-r6dy5f{grid-column:2;display:inline-flex;align-items:center;border-radius:6px;background:var(--color-bg-surface);padding:2px}.toggle-btn.svelte-r6dy5f{display:inline-flex;align-items:center;justify-content:center;gap:5px;height:22.5px;padding:0 12px;border-radius:4px;border:none;background:transparent;color:var(--color-text-tertiary);font-family:inherit;font-size:12px;cursor:pointer;text-decoration:none;transition:background .15s,color .15s}.toggle-btn.svelte-r6dy5f:hover{color:var(--color-text-secondary)}.toggle-btn.active.svelte-r6dy5f{background:var(--color-bg-hover);color:var(--color-text-primary);cursor:default}.toolbar-right.svelte-r6dy5f{display:flex;justify-content:flex-end;gap:8px}.chat-toggle.svelte-r6dy5f{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:var(--color-accent);color:#fff;cursor:pointer;border-radius:6px;transition:background .15s}.chat-toggle.svelte-r6dy5f:hover{background:var(--color-accent-hover)}.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:4px;border:none;font-family:inherit;font-weight:400;cursor:pointer;flex-shrink:0;transition:color .15s,background .15s}.btn-default{background:var(--color-bg-surface);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn-default:hover{background:var(--color-bg-hover)}.btn-ghost{background:transparent;color:var(--color-text-tertiary)}.btn-ghost:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.btn-outline{background:transparent;color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-outline:hover{background:var(--color-bg-hover)}.btn-accent{background:var(--color-accent);color:#fff}.btn-accent:hover{background:var(--color-accent-hover)}.btn-default:not(.btn-sm):not(.btn-icon){height:28px;padding:0 12px;font-size:12px}.btn-sm{height:24px;padding:0 8px;font-size:11px}.btn-icon{width:28px;height:28px;padding:0}.chat-panel.svelte-1xwj6s7{width:340px;min-width:340px;flex-shrink:0;display:flex;flex-direction:column;background:var(--color-bg);border-left:1px solid var(--color-border)}.chat-header.svelte-1xwj6s7{height:40px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid var(--color-border);position:relative;flex-shrink:0}.chat-header-left.svelte-1xwj6s7{display:flex;align-items:center;gap:2px}.history-active{color:var(--color-accent, #6e6ee8)!important}.history-active:not(:hover){background:transparent!important}.session-dropdown.svelte-1xwj6s7{position:absolute;top:100%;left:0;right:0;z-index:10;box-shadow:0 4px 12px #0000001f}.session-list.svelte-1xwj6s7{max-height:240px;overflow-y:auto;background:var(--color-bg);border-bottom:1px solid var(--color-border)}.session-row.svelte-1xwj6s7{position:relative;display:flex;align-items:center}.session-item.svelte-1xwj6s7{display:flex;align-items:center;justify-content:space-between;flex:1;min-width:0;padding:6px 16px;font-size:12px;font-family:inherit;background:transparent;border:none;cursor:pointer;color:var(--color-text-secondary);text-align:left}.session-row.svelte-1xwj6s7:hover .session-item:where(.svelte-1xwj6s7){background:var(--color-bg-hover)}.session-item.active.svelte-1xwj6s7{background:var(--color-bg-hover);color:var(--color-text-primary);font-weight:500}.session-delete-btn.svelte-1xwj6s7{display:none;align-items:center;justify-content:center;width:20px;height:20px;border:none;background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:3px;position:absolute;right:6px;flex-shrink:0;padding:0}.session-delete-btn.svelte-1xwj6s7:hover{color:var(--color-error, #e55)}.session-row.svelte-1xwj6s7:hover .session-delete-btn:where(.svelte-1xwj6s7){display:flex}.session-title.svelte-1xwj6s7{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.chat-messages.svelte-1xwj6s7{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px}.empty-state.svelte-1xwj6s7{flex:1;display:flex;align-items:center;justify-content:center;color:var(--color-text-tertiary);font-size:13px}.seed-prompts.svelte-1xwj6s7{display:flex;flex-direction:column;gap:8px;width:100%}.seed-prompt.svelte-1xwj6s7{font-size:13px;line-height:20px;padding:9px 13px;min-height:40px;border:1px solid var(--color-border);border-radius:8px;background:transparent;color:var(--color-text-secondary);cursor:pointer;font-family:inherit;text-align:left;box-sizing:border-box}.seed-prompt.svelte-1xwj6s7:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.message-group.svelte-1xwj6s7{display:flex;flex-direction:column;gap:8px}.user-bubble.svelte-1xwj6s7{background:var(--color-bg-surface);border-radius:6px;padding:10px 12px;font-size:13px;line-height:20px;color:var(--color-text-primary)}.agent-content.svelte-1xwj6s7{display:flex;flex-direction:column;gap:4px}.tool-calls.svelte-1xwj6s7{display:flex;flex-wrap:wrap;gap:2px 6px}.tool-call.svelte-1xwj6s7{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--color-text-tertiary)}.agent-text.svelte-1xwj6s7{font-size:13px;line-height:20px;color:var(--color-text-primary)}.prose.svelte-1xwj6s7 h1{font-size:17px;font-weight:600;color:var(--color-text-primary);margin:16px 0 8px}.prose.svelte-1xwj6s7 h2{font-size:15px;font-weight:600;color:var(--color-text-primary);margin:14px 0 6px}.prose.svelte-1xwj6s7 h3{font-size:14px;font-weight:600;color:var(--color-text-primary);margin:12px 0 4px}.prose.svelte-1xwj6s7 p{margin:0 0 8px}.prose.svelte-1xwj6s7 p:last-child{margin-bottom:0}.prose.svelte-1xwj6s7 strong{font-weight:600}.prose.svelte-1xwj6s7 ul,.prose.svelte-1xwj6s7 ol{padding-left:20px;margin:0 0 8px;color:var(--color-text-primary)}.prose.svelte-1xwj6s7 ul{list-style-type:disc}.prose.svelte-1xwj6s7 ol{list-style-type:decimal}.prose.svelte-1xwj6s7 li{margin-bottom:2px}.prose.svelte-1xwj6s7 table{width:100%;border-collapse:collapse;font-size:12px;margin:8px 0}.prose.svelte-1xwj6s7 th,.prose.svelte-1xwj6s7 td{border:1px solid var(--color-border);padding:4px 8px;text-align:left;vertical-align:top}.prose.svelte-1xwj6s7 th{font-weight:600}.prose.svelte-1xwj6s7 pre{background:var(--color-bg-surface);border-radius:4px;padding:8px 10px;overflow-x:auto;margin:8px 0;font-family:var(--font-mono);font-size:12px;line-height:18px}.prose.svelte-1xwj6s7 code{font-family:var(--font-mono);font-size:12px;background:var(--color-bg-surface);padding:1px 4px;border-radius:3px}.prose.svelte-1xwj6s7 pre code{background:none;padding:0}.prose.svelte-1xwj6s7 a{color:var(--color-link)}.prose.svelte-1xwj6s7 blockquote{border-left:3px solid var(--color-accent);padding-left:10px;margin:8px 0;color:var(--color-text-secondary)}.prose.svelte-1xwj6s7 hr{border:none;border-top:1px solid var(--color-border);margin:12px 0}.streaming-dot.svelte-1xwj6s7{display:inline-block;width:8px;height:8px;background:var(--color-accent);border-radius:4px;animation:svelte-1xwj6s7-pulse 1s ease-in-out infinite}@keyframes svelte-1xwj6s7-pulse{0%,to{opacity:.3}50%{opacity:1}}.context-chip.svelte-1xwj6s7{font-size:11px;color:var(--color-text-tertiary);padding:0 2px 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-input-area.svelte-1xwj6s7{padding:12px 16px 16px}.text-input.svelte-1xwj6s7{display:flex;align-items:flex-end;min-height:40px;max-height:140px;padding:0 6px 0 13px;background:transparent;border:1px solid var(--color-border);border-radius:8px}.send-btn{margin-bottom:6px}.stop-btn{color:var(--color-text-tertiary)}.input-field.svelte-1xwj6s7{flex:1;background:transparent;border:none;outline:none;font-family:inherit;font-size:13px;line-height:20px;color:var(--color-text-primary);resize:none;overflow-y:auto;padding:9px 0;max-height:120px;field-sizing:content}.input-field.svelte-1xwj6s7::placeholder{color:var(--color-text-tertiary)}.input-field.svelte-1xwj6s7:disabled{opacity:.5}
@@ -1 +0,0 @@
1
- .autocomplete.svelte-84vb17{position:relative;width:100%}.input-row.svelte-84vb17{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:22px;padding:0;background:transparent;border:none;border-radius:4px}.chip.svelte-84vb17{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 8px;border-radius:9999px;font-size:12px;background:var(--color-accent-muted);color:var(--color-link, #8b8bf0);flex-shrink:0}.chip-remove.svelte-84vb17{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border:none;background:none;color:var(--color-text-tertiary);cursor:pointer;padding:0;font-size:12px;line-height:1}.chip-remove.svelte-84vb17:hover{color:var(--color-text-primary)}.ac-input.svelte-84vb17{flex:1;min-width:80px;height:22px;padding:0;font-size:13px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;outline:none}.dropdown.svelte-84vb17{position:absolute;top:100%;left:0;right:0;margin-top:4px;max-height:240px;overflow-y:auto;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #00000040;z-index:50}.dropdown-item.svelte-84vb17{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;cursor:pointer;gap:8px}.dropdown-item.highlighted.svelte-84vb17{background:var(--color-bg-hover)}.entity-title.svelte-84vb17{font-size:13px;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.entity-meta.svelte-84vb17{display:flex;align-items:center;gap:6px;flex-shrink:0}.entity-type-badge.svelte-84vb17{font-size:11px;padding:1px 6px;border-radius:9999px;background:var(--color-badge-bg);color:var(--color-badge-text)}.entity-repo.svelte-84vb17{font-size:11px;color:var(--color-text-tertiary)}.inline-properties.svelte-x7sio8{padding:16px 40px 8px;border-bottom:1px solid var(--color-border)}.ip-row.svelte-x7sio8{display:grid;grid-template-columns:20px 120px 1fr;align-items:start;gap:8px;padding:5px 8px;margin:0 -8px;border-radius:4px;min-height:30px;outline:2px solid transparent;transition:outline-color .1s}.ip-row.svelte-x7sio8:hover{outline-color:var(--color-border)}.ip-row.ip-focused.svelte-x7sio8{outline-color:var(--color-accent)}.ip-icon.svelte-x7sio8{display:flex;align-items:center;justify-content:center;color:var(--color-text-tertiary);position:relative;height:22px}.ip-key.svelte-x7sio8{font-size:13px;color:var(--color-text-tertiary);line-height:22px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ip-value.svelte-x7sio8{display:flex;align-items:center;min-height:22px;line-height:22px;position:relative;cursor:text}.ip-edit-input.svelte-x7sio8{font-size:13px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;padding:0 4px;height:22px;line-height:22px;width:100%;outline:none}.ip-status-wrap.svelte-x7sio8{position:relative;width:100%}.ip-status-dropdown.svelte-x7sio8{position:absolute;top:100%;left:-4px;margin-top:4px;min-width:180px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #00000040;z-index:50;padding:4px;max-height:240px;overflow-y:auto}.ip-status-option.svelte-x7sio8{display:flex;align-items:center;gap:6px;width:100%;padding:5px 8px;border:none;background:none;font-size:13px;font-family:inherit;color:var(--color-text-primary);cursor:pointer;border-radius:4px;text-align:left}.ip-status-option.svelte-x7sio8:hover{background:var(--color-bg-hover)}.ip-status-option.selected.svelte-x7sio8{color:var(--color-accent)}.ip-cal-wrap.svelte-x7sio8{position:relative;width:100%}.ip-cal-dropdown.svelte-x7sio8{position:absolute;top:100%;left:-4px;margin-top:4px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #00000040;z-index:50;padding:12px;width:264px}.ip-cal-header.svelte-x7sio8{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ip-cal-title.svelte-x7sio8{font-size:13px;font-weight:500;color:var(--color-text-primary)}.ip-cal-nav.svelte-x7sio8{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;border-radius:4px;cursor:pointer;color:var(--color-text-secondary)}.ip-cal-nav.svelte-x7sio8:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.ip-cal-weekdays.svelte-x7sio8{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}.ip-cal-wd.svelte-x7sio8{font-size:11px;color:var(--color-text-tertiary);text-align:center;padding:4px 0}.ip-cal-week.svelte-x7sio8{display:grid;grid-template-columns:repeat(7,1fr)}.ip-cal-day.svelte-x7sio8{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;border:none;background:none;border-radius:4px;font-size:13px;font-family:inherit;cursor:pointer;color:var(--color-text-primary)}.ip-cal-day.svelte-x7sio8:hover{background:var(--color-bg-hover)}.ip-cal-day.outside.svelte-x7sio8{color:var(--color-text-tertiary);opacity:.5}.ip-cal-day.today.svelte-x7sio8{font-weight:600;color:var(--color-accent)}.ip-cal-day.selected.svelte-x7sio8{background:var(--color-accent);color:#fff;font-weight:500}.ip-cal-day.selected.svelte-x7sio8:hover{background:var(--color-accent-hover)}.ip-badge.svelte-x7sio8{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:9999px;font-size:12px;text-transform:lowercase;background:var(--color-badge-bg);color:var(--color-badge-text)}.ip-wikilink-group.svelte-x7sio8{display:flex;flex-wrap:wrap;gap:6px}.ip-wikilink-chip.svelte-x7sio8{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:9999px;font-size:12px;border:none;font-family:inherit;background:var(--color-accent-muted);color:var(--color-link, #8b8bf0);cursor:pointer;transition:background .15s}.ip-wikilink-chip.svelte-x7sio8:hover{background:#8b8bf029}.ip-status-value.svelte-x7sio8{display:flex;align-items:center;gap:5px;height:22px}.ip-status-dot.svelte-x7sio8{width:6px;height:6px;border-radius:3px;flex-shrink:0}.ip-status-text.svelte-x7sio8,.ip-date-text.svelte-x7sio8,.ip-text-value.svelte-x7sio8{font-size:13px;line-height:22px;color:var(--color-text-primary)}.ip-url-link.svelte-x7sio8{font-size:13px;line-height:22px;color:var(--color-link, #8b8bf0);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ip-url-link.svelte-x7sio8:hover{text-decoration:underline}.ip-add-btn.svelte-x7sio8{display:flex;align-items:center;gap:6px;padding:4px 8px;margin:8px -8px;border:none;background:none;color:var(--color-text-tertiary);font-size:13px;font-family:inherit;cursor:pointer;border-radius:4px;transition:color .15s,background .15s}.ip-add-btn.svelte-x7sio8:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.ip-add-key-input.svelte-x7sio8{font-size:13px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;border-bottom:1px solid var(--color-accent);padding:2px 0;width:100%;outline:none}.ip-add-row.svelte-x7sio8{background:var(--color-bg-hover)}.ip-icon-trigger{all:unset;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:4px;color:var(--color-text-tertiary)}.ip-icon-trigger:hover{color:var(--color-text-secondary)}.ip-menu-content{min-width:160px;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #00000040;z-index:50;padding:4px}.ip-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:5px 8px;font-size:13px;cursor:pointer;border-radius:4px;color:var(--color-text-primary)}.ip-menu-item:hover,.ip-menu-item[data-highlighted]{background:var(--color-bg-hover)}.ip-menu-destructive{color:var(--color-destructive)!important}.ip-menu-destructive:hover,.ip-menu-destructive[data-highlighted]{background:#e54d4d1a!important}.ip-menu-item-icon.svelte-x7sio8{display:flex;align-items:center;flex-shrink:0}.ip-menu-check.svelte-x7sio8{margin-left:auto;display:flex;align-items:center}.ip-menu-sep{height:1px;background:var(--color-border);margin:4px 0}.editor-wrap.svelte-ok7wy5{display:flex;min-height:0}.cm-container.svelte-ok7wy5{flex:1}.cm-container.svelte-ok7wy5 .cm-editor{min-height:400px;outline:none}.cm-container.svelte-ok7wy5 .cm-scroller{overflow:visible!important}
@@ -1 +0,0 @@
1
- import{N as w,t as X,T as p,I as H,h as Y,a as T,P as Z,b as M,c as h,s as _}from"./CUzqHQY_.js";import{EditorState as D,Prec as ee,Facet as y,RangeSetBuilder as te,StateEffect as re,StateField as ie}from"./DnlgZ_Tk.js";import{E as x,S as j,V as J,D as P,l as se,a as R}from"./DtVH--hH.js";var I;const g=new w;function ne(i){return y.define({combine:i?e=>e.concat(i):void 0})}const oe=new w;class d{constructor(e,t,r=[],s=""){this.data=e,this.name=s,D.prototype.hasOwnProperty("tree")||Object.defineProperty(D.prototype,"tree",{get(){return b(this)}}),this.parser=t,this.extension=[k.of(this),D.languageData.of((n,a,l)=>{let o=V(n,a,l),c=o.type.prop(g);if(!c)return[];let u=n.facet(c),f=o.type.prop(oe);if(f){let A=o.resolve(a-o.from,l);for(let C of f)if(C.test(A,n)){let W=n.facet(C.facet);return C.type=="replace"?W:W.concat(u)}}return u})].concat(r)}isActiveAt(e,t,r=-1){return V(e,t,r).type.prop(g)==this.data}findRegions(e){let t=e.facet(k);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let r=[],s=(n,a)=>{if(n.prop(g)==this.data){r.push({from:a,to:a+n.length});return}let l=n.prop(w.mounted);if(l){if(l.tree.prop(g)==this.data){if(l.overlay)for(let o of l.overlay)r.push({from:o.from+a,to:o.to+a});else r.push({from:a,to:a+n.length});return}else if(l.overlay){let o=r.length;if(s(l.tree,l.overlay[0].from+a),r.length>o)return}}for(let o=0;o<n.children.length;o++){let c=n.children[o];c instanceof p&&s(c,n.positions[o]+a)}};return s(b(e),0),r}get allowsNesting(){return!0}}d.setState=re.define();function V(i,e,t){let r=i.facet(k),s=b(i).topNode;if(!r||r.allowsNesting)for(let n=s;n;n=n.enter(e,t,H.ExcludeBuffers|H.EnterBracketed))n.type.isTop&&(s=n);return s}class B extends d{constructor(e,t,r){super(e,t,[],r),this.parser=t}static define(e){let t=ne(e.languageData);return new B(t,e.parser.configure({props:[g.add(r=>r.isTop?t:void 0)]}),e.name)}configure(e,t){return new B(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function b(i){let e=i.field(d.state,!1);return e?e.tree:p.empty}class ae{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let r=this.cursorPos-this.string.length;return e<r||t>=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-r,t-r)}}let v=null;class S{constructor(e,t,r=[],s,n,a,l,o){this.parser=e,this.state=t,this.fragments=r,this.tree=s,this.treeLen=n,this.viewport=a,this.skipped=l,this.scheduleOn=o,this.parse=null,this.tempSkipped=[]}static create(e,t,r){return new S(e,t,[],p.empty,0,r,[],null)}startParse(){return this.parser.startParse(new ae(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=p.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t<this.state.doc.length&&this.parse.stopAt(t);;){let s=this.parse.advance();if(s)if(this.fragments=this.withoutTempSkipped(T.addTree(s,this.fragments,this.parse.stoppedAt!=null)),this.treeLen=(r=this.parse.stoppedAt)!==null&&r!==void 0?r:this.state.doc.length,this.tree=s,this.parse=null,this.treeLen<(t??this.state.doc.length))this.parse=this.startParse();else return!0;if(e())return!1}})}takeTree(){let e,t;this.parse&&(e=this.parse.parsedPos)>=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(T.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=v;v=this;try{return e()}finally{v=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=$(e,t.from,t.to);return e}changes(e,t){let{fragments:r,tree:s,treeLen:n,viewport:a,skipped:l}=this;if(this.takeTree(),!e.empty){let o=[];if(e.iterChangedRanges((c,u,f,A)=>o.push({fromA:c,toA:u,fromB:f,toB:A})),r=T.applyChanges(r,o),s=p.empty,n=0,a={from:e.mapPos(a.from,-1),to:e.mapPos(a.to,1)},this.skipped.length){l=[];for(let c of this.skipped){let u=e.mapPos(c.from,1),f=e.mapPos(c.to,-1);u<f&&l.push({from:u,to:f})}}}return new S(this.parser,t,r,s,n,a,l,this.scheduleOn)}updateViewport(e){if(this.viewport.from==e.from&&this.viewport.to==e.to)return!1;this.viewport=e;let t=this.skipped.length;for(let r=0;r<this.skipped.length;r++){let{from:s,to:n}=this.skipped[r];s<e.to&&n>e.from&&(this.fragments=$(this.fragments,s,n),this.skipped.splice(r--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Z{createParse(t,r,s){let n=s[0].from,a=s[s.length-1].to;return{parsedPos:n,advance(){let o=v;if(o){for(let c of s)o.tempSkipped.push(c);e&&(o.scheduleOn=o.scheduleOn?Promise.all([o.scheduleOn,e]):e)}return this.parsedPos=a,new p(M.none,[],[],a-n)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return v}}function $(i,e,t){return T.applyChanges(i,[{fromA:e,toA:t,fromB:e,toB:t}])}class m{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,r)||t.takeTree(),new m(t)}static init(e){let t=Math.min(3e3,e.doc.length),r=S.create(e.facet(k).parser,e,{from:0,to:t});return r.work(20,t)||r.takeTree(),new m(r)}}d.state=ie.define({create:m.init,update(i,e){for(let t of e.effects)if(t.is(d.setState))return t.value;return e.startState.facet(k)!=e.state.facet(k)?m.init(e.state):i.apply(e)}});let G=i=>{let e=setTimeout(()=>i(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(G=i=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(i,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});const O=typeof navigator<"u"&&(!((I=navigator.scheduling)===null||I===void 0)&&I.isInputPending)?()=>navigator.scheduling.isInputPending():null,le=J.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field(d.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field(d.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=G(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnd<t&&(this.chunkEnd<0||this.view.hasFocus)&&(this.chunkEnd=t+3e4,this.chunkBudget=3e3),this.chunkBudget<=0)return;let{state:r,viewport:{to:s}}=this.view,n=r.field(d.state);if(n.tree==n.context.tree&&n.context.isDone(s+1e5))return;let a=Date.now()+Math.min(this.chunkBudget,100,e&&!O?Math.max(25,e.timeRemaining()-5):1e9),l=n.context.treeLen<s&&r.doc.length>s+1e3,o=n.context.work(()=>O&&O()||Date.now()>a,s+(l?0:1e5));this.chunkBudget-=Date.now()-t,(o||this.chunkBudget<=0)&&(n.context.takeTree(),this.view.dispatch({effects:d.setState.of(new m(n.context))})),this.chunkBudget>0&&!(o&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(n.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>se(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),k=y.define({combine(i){return i.length?i[0]:null},enables:i=>[d.state,le,x.contentAttributes.compute([i],e=>{let t=e.facet(i);return t&&t.name?{"data-language":t.name}:{}})]});class ve{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}}class K{constructor(e,t,r,s,n,a=void 0){this.name=e,this.alias=t,this.extensions=r,this.filename=s,this.loadFunc=n,this.support=a,this.loading=null}load(){return this.loading||(this.loading=this.loadFunc().then(e=>this.support=e,e=>{throw this.loading=null,e}))}static of(e){let{load:t,support:r}=e;if(!t){if(!r)throw new RangeError("Must pass either 'load' or 'support' to LanguageDescription.of");t=()=>Promise.resolve(r)}return new K(e.name,(e.alias||[]).concat(e.name).map(s=>s.toLowerCase()),e.extensions||[],e.filename,t,r)}static matchFilename(e,t){for(let s of e)if(s.filename&&s.filename.test(t))return s;let r=/\.([^.]+)$/.exec(t);if(r){for(let s of e)if(s.extensions.indexOf(r[1])>-1)return s}return null}static matchLanguageName(e,t,r=!0){t=t.toLowerCase();for(let s of e)if(s.alias.some(n=>n==t))return s;if(r)for(let s of e)for(let n of s.alias){let a=t.indexOf(n);if(a>-1&&(n.length>2||!/\w/.test(t[a-1])&&!/\w/.test(t[a+n.length])))return s}return null}}const be=y.define({combine:i=>{if(!i.length)return" ";let e=i[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(i[0]));return e}}),Te=new w;function he(i){let e=i.node,t=e.childAfter(e.from),r=e.lastChild;if(!t)return null;let s=i.options.simulateBreak,n=i.state.doc.lineAt(t.from),a=s==null||s<=n.from?n.to:Math.min(n.to,s);for(let l=t.to;;){let o=e.childAfter(l);if(!o||o==r)return null;if(!o.type.isSkipped){if(o.from>=a)return null;let c=/^ */.exec(n.text.slice(t.to-n.from))[0].length;return{from:t.from,to:t.to+c}}l=o.to}}function xe({closing:i,align:e=!0,units:t=1}){return r=>ce(r,e,t,i)}function ce(i,e,t,r,s){let n=i.textAfter,a=n.match(/^\s*/)[0].length,l=r&&n.slice(a,a+r.length)==r||s==i.pos+a,o=e?he(i):null;return o?l?i.column(o.from):i.column(o.to):i.baseIndent+(l?0:i.unit*t)}const Pe=i=>i.baseIndent;function Se({except:i,units:e=1}={}){return t=>{let r=i&&i.test(t.textAfter);return t.baseIndent+(r?0:e*t.unit)}}const Ne=y.define(),Ae=new w;function Ce(i){let e=i.firstChild,t=i.lastChild;return e&&e.to<t.from?{from:e.to,to:t.type.isError?i.to:t.from}:null}class N{constructor(e,t){this.specs=e;let r;function s(l){let o=j.newName();return(r||(r=Object.create(null)))["."+o]=l,o}const n=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,a=t.scope;this.scope=a instanceof d?l=>l.prop(g)==a.data:a?l=>l==a:void 0,this.style=X(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:n}).style,this.module=r?new j(r):null,this.themeType=t.themeType}static define(e,t){return new N(e,t||{})}}const F=y.define(),Q=y.define({combine(i){return i.length?[i[0]]:null}});function L(i){let e=i.facet(F);return e.length?e:i.facet(Q)}function De(i,e){let t=[de],r;return i instanceof N&&(i.module&&t.push(x.styleModule.of(i.module)),r=i.themeType),e?.fallback?t.push(Q.of(i)):r?t.push(F.computeN([x.darkTheme],s=>s.facet(x.darkTheme)==(r=="dark")?[i]:[])):t.push(F.of(i)),t}class ue{constructor(e){this.markCache=Object.create(null),this.tree=b(e.state),this.decorations=this.buildDeco(e,L(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=b(e.state),r=L(e.state),s=r!=L(e.startState),{viewport:n}=e.view,a=e.changes.mapPos(this.decoratedTo,1);t.length<n.to&&!s&&t.type==this.tree.type&&a>=n.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(t!=this.tree||e.viewportChanged||s)&&(this.tree=t,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=n.to)}buildDeco(e,t){if(!t||!this.tree.length)return P.none;let r=new te;for(let{from:s,to:n}of e.visibleRanges)Y(this.tree,t,(a,l,o)=>{r.add(a,l,this.markCache[o]||(this.markCache[o]=P.mark({class:o})))},s,n);return r.finish()}}const de=ee.high(J.fromClass(ue,{decorations:i=>i.decorations}));h.meta,h.link,h.heading,h.emphasis,h.strong,h.strikethrough,h.keyword,h.atom,h.bool,h.url,h.contentSeparator,h.labelName,h.literal,h.inserted,h.string,h.deleted,h.regexp,h.escape,h.string,h.variableName,h.variableName,h.typeName,h.namespace,h.className,h.variableName,h.macroName,h.propertyName,h.comment,h.invalid;const Ie=new w,fe=Object.create(null),q=[M.none],U=[],z=Object.create(null),pe=Object.create(null);for(let[i,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])pe[i]=ge(fe,e);function E(i,e){U.indexOf(i)>-1||(U.push(i),console.warn(e))}function ge(i,e){let t=[];for(let l of e.split(" ")){let o=[];for(let c of l.split(".")){let u=i[c]||h[c];u?typeof u=="function"?o.length?o=o.map(u):E(c,`Modifier ${c} used at start of tag`):o.length?E(c,`Tag ${c} used as modifier`):o=Array.isArray(u)?u:[u]:E(c,`Unknown highlighting tag ${c}`)}for(let c of o)t.push(c)}if(!t.length)return 0;let r=e.replace(/ /g,"_"),s=r+" "+t.map(l=>l.id),n=z[s];if(n)return n.id;let a=z[s]=M.define({id:q.length,name:r,props:[_({[r]:t})]});return q.push(a),a.id}R.RTL,R.LTR;export{ae as DocInput,N as HighlightStyle,B as LRLanguage,d as Language,K as LanguageDescription,ve as LanguageSupport,S as ParseContext,Ie as bracketMatchingHandle,Se as continuedIndent,ne as defineLanguageFacet,xe as delimitedIndent,Pe as flatIndent,Ce as foldInside,Ae as foldNodeProp,Ne as foldService,Te as indentNodeProp,be as indentUnit,k as language,g as languageDataProp,oe as sublanguageProp,De as syntaxHighlighting,b as syntaxTree};