studiograph 1.3.44-next.3 → 1.3.44-next.31

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 (118) hide show
  1. package/dist/server/chrome/chrome.css +1 -1
  2. package/dist/services/insights.js +52 -24
  3. package/dist/services/insights.js.map +1 -1
  4. package/dist/services/sync/model-factory.d.ts +6 -3
  5. package/dist/services/sync/model-factory.js +19 -5
  6. package/dist/services/sync/model-factory.js.map +1 -1
  7. package/dist/web/_app/immutable/assets/0.CvfLVNNH.css +1 -0
  8. package/dist/web/_app/immutable/assets/2.DiuDRr3M.css +1 -0
  9. package/dist/web/_app/immutable/assets/3.BtaZagnv.css +1 -0
  10. package/dist/web/_app/immutable/assets/4.DSiqtN6T.css +1 -0
  11. package/dist/web/_app/immutable/assets/7.CjbDRbuG.css +1 -0
  12. package/dist/web/_app/immutable/assets/8.S1QdUGNM.css +1 -0
  13. package/dist/web/_app/immutable/assets/ViewToolbar.D-QW2oKe.css +1 -0
  14. package/dist/web/_app/immutable/chunks/6Dlu2IoJ.js +1 -0
  15. package/dist/web/_app/immutable/chunks/72bZS3G9.js +1 -0
  16. package/dist/web/_app/immutable/chunks/{i9c_RUF6.js → 7S2LGqoP.js} +2 -2
  17. package/dist/web/_app/immutable/chunks/BKIKta43.js +1 -0
  18. package/dist/web/_app/immutable/chunks/{DNldxAbC.js → BRyud6k7.js} +1 -1
  19. package/dist/web/_app/immutable/chunks/BS2rFAVq.js +1 -0
  20. package/dist/web/_app/immutable/chunks/BSsDC_p4.js +1 -0
  21. package/dist/web/_app/immutable/chunks/Bs67p-s5.js +1 -0
  22. package/dist/web/_app/immutable/chunks/Bsacq2UX.js +1 -0
  23. package/dist/web/_app/immutable/chunks/ByunV8un.js +1 -0
  24. package/dist/web/_app/immutable/chunks/CDV5Q7RN.js +1 -0
  25. package/dist/web/_app/immutable/chunks/CDcXSODb.js +1 -0
  26. package/dist/web/_app/immutable/chunks/CHCEuAb1.js +1 -0
  27. package/dist/web/_app/immutable/chunks/CJUKmosC.js +5 -0
  28. package/dist/web/_app/immutable/chunks/CM5ubLjE.js +1 -0
  29. package/dist/web/_app/immutable/chunks/CNaKDtJn.js +1 -0
  30. package/dist/web/_app/immutable/chunks/CRDbBHg_.js +1 -0
  31. package/dist/web/_app/immutable/chunks/{CLFba8FK.js → CSVbGg_b.js} +5 -5
  32. package/dist/web/_app/immutable/chunks/{DSh-OF2y.js → CT6oIU-C.js} +1 -1
  33. package/dist/web/_app/immutable/chunks/CXH6iFbA.js +1 -0
  34. package/dist/web/_app/immutable/chunks/CmCtpZ1Y.js +1 -0
  35. package/dist/web/_app/immutable/chunks/Cx4YdFMk.js +1 -0
  36. package/dist/web/_app/immutable/chunks/{CFtRXHDP.js → DGbA7IXh.js} +1 -1
  37. package/dist/web/_app/immutable/chunks/DWo9JybE.js +1 -0
  38. package/dist/web/_app/immutable/chunks/{HVmKTSmh.js → D_2DWVrt.js} +1 -1
  39. package/dist/web/_app/immutable/chunks/{Sk0ODu4Y.js → DbbB6Up5.js} +1 -1
  40. package/dist/web/_app/immutable/chunks/DtM5cEDu.js +1 -0
  41. package/dist/web/_app/immutable/chunks/IjMw7YWq.js +1 -0
  42. package/dist/web/_app/immutable/chunks/{APIqItee.js → O9Eb9k00.js} +1 -1
  43. package/dist/web/_app/immutable/chunks/{lsAKkphT.js → QF8MAmnc.js} +1 -1
  44. package/dist/web/_app/immutable/chunks/UjzxCpxn.js +1 -0
  45. package/dist/web/_app/immutable/chunks/{vZ2iBqLE.js → Y90OgS-9.js} +1 -1
  46. package/dist/web/_app/immutable/chunks/{D-yNNNdf.js → cLyZlkXv.js} +1 -1
  47. package/dist/web/_app/immutable/chunks/iDtAARVW.js +2 -0
  48. package/dist/web/_app/immutable/chunks/j4ZUlZ9A.js +2 -0
  49. package/dist/web/_app/immutable/chunks/rJdWIgh-.js +1 -0
  50. package/dist/web/_app/immutable/chunks/tvOsokaa.js +1 -0
  51. package/dist/web/_app/immutable/chunks/uLEXaPwE.js +1 -0
  52. package/dist/web/_app/immutable/chunks/vSaooFHB.js +1 -0
  53. package/dist/web/_app/immutable/chunks/xIpYzBD-.js +1 -0
  54. package/dist/web/_app/immutable/entry/app.C69-BmkV.js +2 -0
  55. package/dist/web/_app/immutable/entry/start.DMOy7fnr.js +1 -0
  56. package/dist/web/_app/immutable/nodes/0.BT2Rw_DU.js +2 -0
  57. package/dist/web/_app/immutable/nodes/1.BSEv6vcJ.js +1 -0
  58. package/dist/web/_app/immutable/nodes/10.BIhs8vXv.js +1 -0
  59. package/dist/web/_app/immutable/nodes/2.BGLh68Kz.js +84 -0
  60. package/dist/web/_app/immutable/nodes/3.DyQckYHj.js +1 -0
  61. package/dist/web/_app/immutable/nodes/4.BFsSnTXE.js +12 -0
  62. package/dist/web/_app/immutable/nodes/5.8jG33wef.js +4 -0
  63. package/dist/web/_app/immutable/nodes/6.CHAzZlUe.js +2 -0
  64. package/dist/web/_app/immutable/nodes/7.BL0Jv36N.js +2 -0
  65. package/dist/web/_app/immutable/nodes/8.DaKBG906.js +1 -0
  66. package/dist/web/_app/immutable/nodes/9.DnnIdlg2.js +1 -0
  67. package/dist/web/_app/version.json +1 -1
  68. package/dist/web/index.html +11 -11
  69. package/package.json +1 -1
  70. package/dist/web/_app/immutable/assets/0.n3qM-DRk.css +0 -1
  71. package/dist/web/_app/immutable/assets/2.DNpjFx0k.css +0 -1
  72. package/dist/web/_app/immutable/assets/3.zsEg_MDN.css +0 -1
  73. package/dist/web/_app/immutable/assets/4.CjSyz-ka.css +0 -1
  74. package/dist/web/_app/immutable/assets/7.D55lTQ_F.css +0 -1
  75. package/dist/web/_app/immutable/assets/8.DfcI2i9H.css +0 -1
  76. package/dist/web/_app/immutable/assets/ViewToolbar.BX74Ki7U.css +0 -1
  77. package/dist/web/_app/immutable/chunks/B-PHzYeY.js +0 -1
  78. package/dist/web/_app/immutable/chunks/B3NI-DOv.js +0 -1
  79. package/dist/web/_app/immutable/chunks/BDTSG9D-.js +0 -1
  80. package/dist/web/_app/immutable/chunks/BEbZenUn.js +0 -1
  81. package/dist/web/_app/immutable/chunks/BHue2Ock.js +0 -1
  82. package/dist/web/_app/immutable/chunks/BPXdu_FX.js +0 -1
  83. package/dist/web/_app/immutable/chunks/BR3Oh1Lv.js +0 -1
  84. package/dist/web/_app/immutable/chunks/BYKARDRw.js +0 -1
  85. package/dist/web/_app/immutable/chunks/BfEy5AjR.js +0 -2
  86. package/dist/web/_app/immutable/chunks/BgBJ0u3M.js +0 -1
  87. package/dist/web/_app/immutable/chunks/Bnl5ADsW.js +0 -1
  88. package/dist/web/_app/immutable/chunks/Bolw6cIp.js +0 -1
  89. package/dist/web/_app/immutable/chunks/Bt5_mycY.js +0 -1
  90. package/dist/web/_app/immutable/chunks/C0v9FrTH.js +0 -1
  91. package/dist/web/_app/immutable/chunks/CB2-7g10.js +0 -1
  92. package/dist/web/_app/immutable/chunks/CRnhIQbv.js +0 -1
  93. package/dist/web/_app/immutable/chunks/CSzKZPD4.js +0 -1
  94. package/dist/web/_app/immutable/chunks/Cc0c675R.js +0 -1
  95. package/dist/web/_app/immutable/chunks/D2C1YupD.js +0 -1
  96. package/dist/web/_app/immutable/chunks/DCVmM0L5.js +0 -1
  97. package/dist/web/_app/immutable/chunks/DHtLlmE0.js +0 -1
  98. package/dist/web/_app/immutable/chunks/DQ5NTKSo.js +0 -1
  99. package/dist/web/_app/immutable/chunks/DQYNi3YK.js +0 -5
  100. package/dist/web/_app/immutable/chunks/DT3KtxWU.js +0 -1
  101. package/dist/web/_app/immutable/chunks/DiWKchgv.js +0 -1
  102. package/dist/web/_app/immutable/chunks/KHKAD2Ng.js +0 -1
  103. package/dist/web/_app/immutable/chunks/azUmHUDT.js +0 -1
  104. package/dist/web/_app/immutable/chunks/b0XUoOIH.js +0 -2
  105. package/dist/web/_app/immutable/entry/app.BuNYNoxY.js +0 -2
  106. package/dist/web/_app/immutable/entry/start.6840wwQK.js +0 -1
  107. package/dist/web/_app/immutable/nodes/0.Dowq8M1Z.js +0 -2
  108. package/dist/web/_app/immutable/nodes/1.UNZ7IKS_.js +0 -1
  109. package/dist/web/_app/immutable/nodes/10.7pt8gUOi.js +0 -1
  110. package/dist/web/_app/immutable/nodes/2.B5L8POz_.js +0 -84
  111. package/dist/web/_app/immutable/nodes/3.B1Y1g0du.js +0 -1
  112. package/dist/web/_app/immutable/nodes/4.BerDMn5m.js +0 -11
  113. package/dist/web/_app/immutable/nodes/5.IM34i9-W.js +0 -4
  114. package/dist/web/_app/immutable/nodes/6.DPwydXYm.js +0 -2
  115. package/dist/web/_app/immutable/nodes/7.DpSO-I2k.js +0 -2
  116. package/dist/web/_app/immutable/nodes/8.BVUyEEut.js +0 -1
  117. package/dist/web/_app/immutable/nodes/9.8nTMvuWx.js +0 -1
  118. /package/dist/web/_app/immutable/assets/{checkbox.D6tMDJWk.css → index.D6tMDJWk.css} +0 -0
@@ -248,7 +248,7 @@ body.sg-dragging iframe { pointer-events: none; }
248
248
 
249
249
  /* ── Footer (matches StatusBar.svelte) ─────────────────── */
250
250
  .sg-chrome-footer {
251
- height: 36px;
251
+ height: var(--row-height, 44px);
252
252
  flex-shrink: 0;
253
253
  display: flex;
254
254
  align-items: center;
@@ -7,7 +7,8 @@
7
7
  *
8
8
  * Adapted from feat/insights-home reference implementation.
9
9
  */
10
- import Anthropic from '@anthropic-ai/sdk';
10
+ import { generateText } from 'ai';
11
+ import { createModel } from './sync/model-factory.js';
11
12
  import { resolveApiKey, resolveProvider, resolveModelId, loadUserConfig } from '../core/user-config.js';
12
13
  /**
13
14
  * Gather entity summaries for insight generation.
@@ -134,7 +135,7 @@ ${tools.length > 0 ? tools.map(t => `- ${t.name}: ${t.description}`).join('\n')
134
135
 
135
136
  CRITICAL: Only suggest actions that use the tools listed above. If a connector (like Pipedrive, Linear, Slack, etc.) is NOT in the tool list, do NOT reference it in any action. Even if entities in the workspace mention an external system, only suggest actions the assistant can actually perform with its available tools. For example, if there is no pipedrive_connector tool, never suggest "Search Pipedrive" — instead suggest workspace-level actions like "Create a deal entity" or "Search for existing deal entities."
136
137
 
137
- Respond with valid JSON matching this schema:
138
+ Respond with ONLY valid JSON (no markdown fences, no explanation) matching this schema:
138
139
  {
139
140
  "insights": [
140
141
  {
@@ -160,6 +161,7 @@ Each insight should have exactly 1 action — the single most impactful next ste
160
161
  export async function generateInsights(wm, repoNames, userBrief, authService, userId, workspaceConfig, tools) {
161
162
  const { context, entityCount } = gatherEntityContext(wm, repoNames);
162
163
  if (entityCount === 0) {
164
+ console.log('[insights] No entities found, skipping generation');
163
165
  const empty = { insights: [], generatedAt: new Date().toISOString(), entityCount: 0 };
164
166
  authService.setCachedInsights(userId, []);
165
167
  return empty;
@@ -167,16 +169,23 @@ export async function generateInsights(wm, repoNames, userBrief, authService, us
167
169
  const userConfig = loadUserConfig();
168
170
  const apiKey = resolveApiKey(userConfig, workspaceConfig);
169
171
  const provider = resolveProvider(userConfig, workspaceConfig);
170
- if (!apiKey || provider !== 'anthropic') {
172
+ console.log(`[insights] Provider: ${provider}, model: ${resolveModelId(userConfig, workspaceConfig)}, apiKey: ${apiKey ? 'set' : 'MISSING'}, entities: ${entityCount}`);
173
+ if (!apiKey) {
174
+ console.warn('[insights] No API key configured, returning empty');
171
175
  const empty = { insights: [], generatedAt: new Date().toISOString(), entityCount };
172
176
  authService.setCachedInsights(userId, []);
173
177
  return empty;
174
178
  }
175
179
  const modelId = resolveModelId(userConfig, workspaceConfig);
176
- const client = new Anthropic({ apiKey });
177
- const response = await client.messages.create({
178
- model: modelId,
179
- max_tokens: 3000,
180
+ const model = createModel(provider, modelId, apiKey);
181
+ // For Google thinking models (gemini-2.5-*), enable thinking with a budget
182
+ const isGoogleThinking = provider === 'google' && modelId.includes('2.5');
183
+ const providerOptions = isGoogleThinking
184
+ ? { google: { thinkingConfig: { thinkingBudget: 1024 } } }
185
+ : undefined;
186
+ const response = await generateText({
187
+ model,
188
+ maxOutputTokens: 3000,
180
189
  system: buildSystemPrompt(userBrief, tools ?? []),
181
190
  messages: [
182
191
  {
@@ -184,28 +193,47 @@ export async function generateInsights(wm, repoNames, userBrief, authService, us
184
193
  content: `Here are the entities in my workspace (today is ${new Date().toISOString().split('T')[0]}):\n\n${context}\n\nGenerate actionable insights.`,
185
194
  },
186
195
  ],
196
+ providerOptions,
187
197
  });
188
- const text = response.content
189
- .filter((b) => b.type === 'text')
190
- .map(b => b.text)
191
- .join('');
198
+ const text = response.text || '';
199
+ console.log(`[insights] LLM finishReason: ${response.finishReason}, text: ${text.length} chars, usage: ${JSON.stringify(response.usage)}`);
192
200
  let insights = [];
193
201
  try {
194
- const jsonMatch = text.match(/\{[\s\S]*\}/);
195
- if (jsonMatch) {
196
- const parsed = JSON.parse(jsonMatch[0]);
197
- insights = (parsed.insights ?? []).map((i) => ({
198
- headline: i.headline ?? '',
199
- detail: i.detail ?? '',
200
- urgency: (['high', 'medium', 'low'].includes(i.urgency) ? i.urgency : 'medium'),
201
- actions: Array.isArray(i.actions) ? i.actions.filter((a) => typeof a === 'string') : (i.action ? [i.action] : []),
202
- entities: Array.isArray(i.entities) ? i.entities : [],
203
- pattern: (['risk', 'relationship', 'opportunity', 'quality', 'trend'].includes(i.pattern) ? i.pattern : 'trend'),
204
- }));
202
+ // Strip markdown code fences if present
203
+ const cleaned = text.replace(/```json\s*/gi, '').replace(/```\s*/g, '').trim();
204
+ // Try to find a JSON object with "insights" key
205
+ let parsed;
206
+ const objMatch = cleaned.match(/\{[\s\S]*\}/);
207
+ if (objMatch) {
208
+ parsed = JSON.parse(objMatch[0]);
205
209
  }
210
+ // If the object doesn't have an insights array, try parsing as a raw array
211
+ let rawInsights = [];
212
+ if (parsed?.insights && Array.isArray(parsed.insights)) {
213
+ rawInsights = parsed.insights;
214
+ }
215
+ else if (Array.isArray(parsed)) {
216
+ rawInsights = parsed;
217
+ }
218
+ else {
219
+ // Try parsing the whole cleaned text as a JSON array
220
+ const arrMatch = cleaned.match(/\[[\s\S]*\]/);
221
+ if (arrMatch) {
222
+ rawInsights = JSON.parse(arrMatch[0]);
223
+ }
224
+ }
225
+ insights = rawInsights.map((i) => ({
226
+ headline: i.headline ?? '',
227
+ detail: i.detail ?? '',
228
+ urgency: (['high', 'medium', 'low'].includes(i.urgency) ? i.urgency : 'medium'),
229
+ actions: Array.isArray(i.actions) ? i.actions.filter((a) => typeof a === 'string') : (i.action ? [i.action] : []),
230
+ entities: Array.isArray(i.entities) ? i.entities : [],
231
+ pattern: (['risk', 'relationship', 'opportunity', 'quality', 'trend'].includes(i.pattern) ? i.pattern : 'trend'),
232
+ }));
233
+ console.log(`[insights] Parsed ${insights.length} insights`);
206
234
  }
207
- catch {
208
- console.error('[insights] Failed to parse LLM response:', text.slice(0, 200));
235
+ catch (e) {
236
+ console.error('[insights] Failed to parse LLM response:', e.message, '\nFirst 500 chars:', text.slice(0, 500));
209
237
  }
210
238
  // Cache per-user
211
239
  authService.setCachedInsights(userId, insights);
@@ -1 +1 @@
1
- {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/services/insights.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/services/insights.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,12 @@
2
2
  * Maps (provider, modelId, apiKey?) to an AI SDK LanguageModel.
3
3
  *
4
4
  * Each provider falls back to its own env var when no apiKey is given:
5
- * anthropic → ANTHROPIC_API_KEY
6
- * openai → OPENAI_API_KEY
7
- * google → GOOGLE_API_KEY (also GOOGLE_GENERATIVE_AI_API_KEY)
5
+ * anthropic → ANTHROPIC_API_KEY
6
+ * openai → OPENAI_API_KEY
7
+ * google → GOOGLE_API_KEY (also GOOGLE_GENERATIVE_AI_API_KEY)
8
+ * xai → XAI_API_KEY (OpenAI-compatible, api.x.ai)
9
+ * groq → GROQ_API_KEY (OpenAI-compatible, api.groq.com)
10
+ * openrouter → OPENROUTER_API_KEY (OpenAI-compatible, openrouter.ai)
8
11
  */
9
12
  import type { LanguageModel } from 'ai';
10
13
  export declare function createModel(provider: string, modelId: string, apiKey?: string): LanguageModel;
@@ -2,13 +2,21 @@
2
2
  * Maps (provider, modelId, apiKey?) to an AI SDK LanguageModel.
3
3
  *
4
4
  * Each provider falls back to its own env var when no apiKey is given:
5
- * anthropic → ANTHROPIC_API_KEY
6
- * openai → OPENAI_API_KEY
7
- * google → GOOGLE_API_KEY (also GOOGLE_GENERATIVE_AI_API_KEY)
5
+ * anthropic → ANTHROPIC_API_KEY
6
+ * openai → OPENAI_API_KEY
7
+ * google → GOOGLE_API_KEY (also GOOGLE_GENERATIVE_AI_API_KEY)
8
+ * xai → XAI_API_KEY (OpenAI-compatible, api.x.ai)
9
+ * groq → GROQ_API_KEY (OpenAI-compatible, api.groq.com)
10
+ * openrouter → OPENROUTER_API_KEY (OpenAI-compatible, openrouter.ai)
8
11
  */
9
12
  import { createAnthropic } from '@ai-sdk/anthropic';
10
13
  import { createOpenAI } from '@ai-sdk/openai';
11
14
  import { createGoogleGenerativeAI } from '@ai-sdk/google';
15
+ const OPENAI_COMPATIBLE = {
16
+ xai: { baseURL: 'https://api.x.ai/v1', envKey: 'XAI_API_KEY' },
17
+ groq: { baseURL: 'https://api.groq.com/openai/v1', envKey: 'GROQ_API_KEY' },
18
+ openrouter: { baseURL: 'https://openrouter.ai/api/v1', envKey: 'OPENROUTER_API_KEY' },
19
+ };
12
20
  export function createModel(provider, modelId, apiKey) {
13
21
  switch (provider) {
14
22
  case 'anthropic':
@@ -17,8 +25,14 @@ export function createModel(provider, modelId, apiKey) {
17
25
  return createOpenAI(apiKey ? { apiKey } : {})(modelId);
18
26
  case 'google':
19
27
  return createGoogleGenerativeAI(apiKey ? { apiKey } : {})(modelId);
20
- default:
21
- throw new Error(`Unsupported provider: ${provider}. Supported: anthropic, openai, google`);
28
+ default: {
29
+ const compat = OPENAI_COMPATIBLE[provider];
30
+ if (compat) {
31
+ const key = apiKey || process.env[compat.envKey];
32
+ return createOpenAI({ apiKey: key, baseURL: compat.baseURL })(modelId);
33
+ }
34
+ throw new Error(`Unsupported provider: ${provider}. Supported: anthropic, openai, google, xai, groq, openrouter`);
35
+ }
22
36
  }
23
37
  }
24
38
  //# sourceMappingURL=model-factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-factory.js","sourceRoot":"","sources":["../../../src/services/sync/model-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAe,EAAE,MAAe;IAC5E,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5D,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACzD,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACrE;YACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,wCAAwC,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"model-factory.js","sourceRoot":"","sources":["../../../src/services/sync/model-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,iBAAiB,GAAwD;IAC7E,GAAG,EAAE,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,aAAa,EAAE;IAC9D,IAAI,EAAE,EAAE,OAAO,EAAE,gCAAgC,EAAE,MAAM,EAAE,cAAc,EAAE;IAC3E,UAAU,EAAE,EAAE,OAAO,EAAE,8BAA8B,EAAE,MAAM,EAAE,oBAAoB,EAAE;CACtF,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAe,EAAE,MAAe;IAC5E,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QAC5D,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACzD,KAAK,QAAQ;YACX,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACjD,OAAO,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,+DAA+D,CAAC,CAAC;QACpH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
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-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--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-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--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-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:"IBM Plex Sans", ui-sans-serif, system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-lg:32rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--radius-sm:4px;--radius-md:6px;--radius-lg:12px;--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--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:#e05050;--color-accent-hover:#c94444;--color-success:#3ecf8e;--color-destructive:#e54d4d;--color-destructive-hover:#c93c3c;--color-link:#e07070;--row-height:44px}}@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}*{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:14px;line-height:22px}::-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)}}@layer components;@layer utilities{.\@container{container-type:inline-size}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-1\/2,.top-\[50\%\]{top:50%}.left-1\/2,.left-\[50\%\]{left:50%}.z-50{z-index:50}.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}}.my-0{margin-block:calc(var(--spacing) * 0)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-2{margin-left:calc(var(--spacing) * 2)}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.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)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\[22px\]{width:22px;height:22px}.size-full{width:100%;height:100%}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.flex-1{flex:1}.flex-shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.basis-full{flex-basis:100%}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-\[-50\%\]{--tw-translate-x:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%;translate:var(--tw-translate-x) var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-y{resize:vertical}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-\[11px\]{gap:11px}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-\[4px\]{border-radius:4px}.rounded-\[6px\]{border-radius:6px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-\[var\(--color-border\)\]{border-color:var(--color-border)}.border-transparent{border-color:#0000}.bg-\[var\(--color-accent\)\]{background-color:var(--color-accent)}.bg-\[var\(--color-badge-bg\)\]{background-color:var(--color-badge-bg)}.bg-\[var\(--color-bg\)\]{background-color:var(--color-bg)}.bg-\[var\(--color-bg-elevated\)\]{background-color:var(--color-bg-elevated)}.bg-\[var\(--color-bg-surface\)\]{background-color:var(--color-bg-surface)}.bg-\[var\(--color-destructive\)\]{background-color:var(--color-destructive)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-transparent{background-color:#0000}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.p-0{padding:calc(var(--spacing) * 0)}.p-2{padding:calc(var(--spacing) * 2)}.p-6{padding:calc(var(--spacing) * 6)}.p-\[3px\]{padding:3px}.px-0{padding-inline:calc(var(--spacing) * 0)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pl-\[19px\]{padding-left:19px}.text-center{text-align:center}.text-start{text-align:start}.align-baseline{vertical-align:baseline}.align-middle{vertical-align:middle}.font-\[inherit\]{font-family:inherit}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-\[var\(--color-accent\)\]{color:var(--color-accent)}.text-\[var\(--color-badge-text\)\]{color:var(--color-badge-text)}.text-\[var\(--color-text-primary\)\]{color:var(--color-text-primary)}.text-\[var\(--color-text-secondary\)\]{color:var(--color-text-secondary)}.text-\[var\(--color-text-tertiary\)\]{color:var(--color-text-tertiary)}.text-current{color:currentColor}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.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,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.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))}.transition-\[color\,background\]{transition-property:color,background;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.outline-none{--tw-outline-style:none;outline-style:none}.placeholder\:text-\[var\(--color-text-tertiary\)\]::placeholder{color:var(--color-text-tertiary)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-x-3:after{content:var(--tw-content);inset-inline:calc(var(--spacing) * -3)}.after\:-inset-y-2:after{content:var(--tw-content);inset-block:calc(var(--spacing) * -2)}@media(hover:hover){.hover\:border-\[var\(--color-accent\)\]:hover{border-color:var(--color-accent)}.hover\:bg-\[var\(--color-accent-hover\)\]:hover{background-color:var(--color-accent-hover)}.hover\:bg-\[var\(--color-bg-hover\)\]:hover{background-color:var(--color-bg-hover)}.hover\:bg-\[var\(--color-destructive-hover\)\]:hover{background-color:var(--color-destructive-hover)}.hover\:text-\[var\(--color-text-primary\)\]:hover{color:var(--color-text-primary)}.hover\:text-\[var\(--color-text-secondary\)\]:hover{color:var(--color-text-secondary)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:border-\[var\(--color-accent\,\#e05050\)\]:focus{border-color:var(--color-accent,#e05050)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-3:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[var\(--color-accent\)\]:focus-visible{--tw-ring-color:var(--color-accent)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-\[var\(--color-bg-primary\)\]:focus-visible{--tw-ring-offset-color:var(--color-bg-primary)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--color-destructive)}.aria-invalid\:ring-3[aria-invalid=true]{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:#e54d4d33}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--color-destructive) 20%, transparent)}}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:min-h-full[data-orientation=vertical]{min-height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[state\=active\]\:bg-\[var\(--color-bg-hover\)\][data-state=active]{background-color:var(--color-bg-hover)}.data-\[state\=active\]\:font-medium[data-state=active]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[state\=active\]\:text-\[var\(--color-text-primary\)\][data-state=active]{color:var(--color-text-primary)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:border-\[var\(--color-accent\)\][data-state=checked]{border-color:var(--color-accent)}.data-\[state\=checked\]\:bg-\[var\(--color-accent\)\][data-state=checked]{background-color:var(--color-accent)}.data-\[state\=checked\]\:text-white[data-state=checked]{color:var(--color-white)}@media(min-width:40rem){.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-start{text-align:start}}@media(prefers-color-scheme:dark){.dark\:aria-invalid\:border-destructive\/50[aria-invalid=true]{border-color:#e54d4d80}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:border-destructive\/50[aria-invalid=true]{border-color:color-mix(in oklab,var(--color-destructive) 50%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:#e54d4d66}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40[aria-invalid=true]{--tw-ring-color:color-mix(in oklab, var(--color-destructive) 40%, transparent)}}}.\[\&_img\]\:size-full img{width:100%;height:100%}.\[\&_img\]\:object-cover img{object-fit:cover}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\+\[data-slot\=item-content\]\]\:flex-none+[data-slot=item-content]{flex:none}.\[\&\:has\(\[role\=checkbox\]\)\]\:pe-0:has([role=checkbox]){padding-inline-end:calc(var(--spacing) * 0)}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}}: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:#e0505014;--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:#e0505014;--color-badge-bg:#e0e0e5;--color-badge-text:#63636b}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@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-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@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-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}[data-sonner-toast]{background:#0f0f12d1!important;backdrop-filter:blur(12px)!important;-webkit-backdrop-filter:blur(12px)!important;border-color:var(--color-border-strong, #2a2a32)!important;color:var(--color-text-primary, #ededef)!important}
@@ -0,0 +1 @@
1
+ .resize-handle.svelte-tfh9g9{position:absolute;top:0;bottom:0;width:6px;cursor:col-resize;z-index:10}.resize-handle.right.svelte-tfh9g9{right:-3px}.resize-handle.left.svelte-tfh9g9{left:-3px}.resize-handle.svelte-tfh9g9:hover,.resize-handle.active.svelte-tfh9g9{background:var(--color-accent);opacity:.3}.resize-handle.active.svelte-tfh9g9{opacity:.5}.entity-body{padding:16px 24px 24px;display:flex;flex-direction:column;gap:20px;overflow-x:hidden}.type-section.svelte-ak7t5k{display:flex;flex-direction:column;gap:8px}.type-section-label.svelte-ak7t5k{font-size:11px;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,minmax(0,1fr));gap:8px}.type-grid.svelte-ak7t5k .type-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:12px;height:auto;border-radius:8px;text-align:left;color:var(--color-text-secondary);justify-content:flex-start}.type-grid.svelte-ak7t5k .type-card:hover{background:var(--color-bg-hover);border-color:var(--color-border-strong)}.type-grid.svelte-ak7t5k .type-card:hover .type-name{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:14px;font-weight:500;color:var(--color-text-secondary)}.type-desc.svelte-ak7t5k{font-size:12px;color:var(--color-text-tertiary);line-height:1.3}.sidebar.svelte-6dohdz{position:relative;flex-shrink:0;display:flex;flex-direction:column;overflow:hidden;background:var(--color-bg);border-right:1px solid var(--color-border)}.sidebar-header.svelte-6dohdz{height:var(--row-height);display:flex;align-items:center;gap:11px;padding:0 12px 0 19px;border-bottom:1px solid var(--color-border);flex-shrink:0}.header-actions.svelte-6dohdz{margin-left:auto;display:flex;align-items:center}.sidebar-header.svelte-6dohdz .home-btn{display:inline-flex;align-items:center;gap:11px;padding:0;min-width:0;text-align:left;border-radius:0;height:auto;background:transparent!important}.sidebar-header.svelte-6dohdz .home-btn:hover .workspace-icon{opacity:.8}.sidebar-header.svelte-6dohdz .home-btn:hover .workspace-name{color:var(--color-text-secondary)}.workspace-icon.svelte-6dohdz{width:22px;height:22px;border-radius:50%;background:var(--color-accent, #e05050);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:11px;flex-shrink:0}.workspace-name.svelte-6dohdz{flex:1;font-size:14px;font-weight:600;color:var(--color-text-primary)}.settings-nav.svelte-6dohdz{display:flex;flex-direction:column;flex:1;padding-top:0}.settings-nav.svelte-6dohdz button[data-slot=tabs-trigger]{display:flex;align-items:center;width:100%;height:var(--row-height);padding:0 12px 0 19px;gap:11px;border:none;background:transparent;cursor:pointer;font-family:inherit;font-size:14px;color:var(--color-text-secondary);transition:color .15s,background .15s}.settings-nav.svelte-6dohdz button[data-slot=tabs-trigger]:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.settings-nav.svelte-6dohdz button[data-slot=tabs-trigger][data-state=active]{background:var(--color-bg-hover);color:var(--color-text-primary);font-weight:500}.settings-nav.svelte-6dohdz button[data-slot=tabs-trigger] svg{width:14px;height:14px;flex-shrink:0;box-sizing:content-box;padding:0 4px}.filter-bar.svelte-6dohdz{position:relative;display:flex;align-items:center;height:var(--row-height);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-bar.svelte-6dohdz .filter-input{flex:1;background:transparent;border:none;outline:none;padding:0;margin:0;font-size:14px;line-height:1.4;height:auto;border-radius:0}.filter-bar.svelte-6dohdz .filter-clear{width:20px;height:20px;flex-shrink:0}.filter-bar.svelte-6dohdz .sort-toggle{width:28px;height:28px;flex-shrink:0;margin-left:4px}.filter-bar.svelte-6dohdz .sort-toggle.active{color:var(--color-accent, #e05050)}.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{display:flex;align-items:baseline;height:var(--row-height);line-height:var(--row-height);width:100%;padding:0 12px 0 20px;border:none;background:transparent;font-family:inherit;text-align:left;border-left:2px solid transparent;border-radius:0;gap:0;justify-content:flex-start}.repo-row:hover,.repo-row.focused{background:var(--color-bg-hover)}.repo-row.repo-active{border-left-color:var(--active-color)}.repo-name.svelte-6dohdz{font-size:14px;color:var(--color-text-secondary)}.repo-row.repo-active .repo-name.svelte-6dohdz,.repo-row.repo-active .repo-type-icon.svelte-6dohdz{font-weight:600;color:var(--color-text-primary)}.tree-row{position:relative;display:flex;align-items:baseline;height:var(--row-height);line-height:var(--row-height);padding-right:40px;color:var(--color-text-secondary);font-size:14px;border:none;background:transparent;font-family:inherit;text-align:left;width:100%;border-left:2px solid transparent;border-radius:0;gap:0;justify-content:flex-start}.tree-row:hover,.tree-row.focused{background:var(--color-bg-hover)}.tree-row.selected{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;align-self:center;width:16px;height:16px;flex-shrink:0;margin-right:14px;color:var(--color-text-tertiary);transition:transform .15s}.row-chevron.open.svelte-6dohdz{transform:rotate(90deg)}.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:12px;font-weight:400;color:var(--color-text-tertiary);margin-left:8px;flex-shrink:0;opacity:0;transition:opacity .15s}.tree-row:hover .item-count.svelte-6dohdz,.repo-row-wrapper.svelte-6dohdz:hover .item-count:where(.svelte-6dohdz),.repo-row-wrapper.svelte-6dohdz:has(.repo-actions-btn.menu-open) .item-count:where(.svelte-6dohdz),.type-header-wrapper.svelte-6dohdz:hover .item-count:where(.svelte-6dohdz),.type-header-wrapper.svelte-6dohdz:has(.type-actions-btn.menu-open) .item-count:where(.svelte-6dohdz),.entity-row-wrapper.svelte-6dohdz:hover .item-count:where(.svelte-6dohdz),.entity-row-wrapper.svelte-6dohdz:has(.entity-actions-btn.menu-open) .item-count:where(.svelte-6dohdz){opacity:1}.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:var(--row-height);display:flex;align-items:center;font-size:14px;color:var(--color-text-tertiary)}.type-header-row{color:var(--color-text-secondary);border-left:2px solid transparent}.type-header-row.type-active{color:var(--color-text-primary);font-weight:600}.type-header-row .row-label.svelte-6dohdz{flex:none;mask-image:none;-webkit-mask-image:none}.entity-type-dot.svelte-6dohdz{width:6px;height:6px;border-radius:3px;flex-shrink:0;margin-right:2px}.new-entity-row{color:var(--color-text-tertiary);align-items:center}.new-entity-row: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{flex:1;min-width:0}.entity-row-wrapper.svelte-6dohdz .entity-actions-btn{display:none;width:28px;height:28px;position:absolute;right:12px;flex-shrink:0;padding:0;border:none;background:none;cursor:pointer;color:var(--color-text-tertiary);border-radius:4px;align-items:center;justify-content:center}.entity-row-wrapper.svelte-6dohdz .entity-actions-btn:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.entity-row-wrapper.svelte-6dohdz:hover .tree-row,.entity-row-wrapper.svelte-6dohdz:has(.entity-actions-btn.menu-open) .tree-row{background:var(--color-bg-hover)}.entity-row-wrapper.svelte-6dohdz:hover .entity-actions-btn,.entity-row-wrapper.svelte-6dohdz .entity-actions-btn.menu-open{display:inline-flex}.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:12px;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}.presence-stack.svelte-6dohdz{display:flex;align-items:center;gap:-4px;margin-left:auto;flex-shrink:0;align-self:center}.presence-avatar.svelte-6dohdz{width:18px;height:18px;border-radius:50%;font-size:10px;font-weight:600;color:#fff;background:var(--color-accent);display:flex;align-items:center;justify-content:center;margin-left:-3px;border:1px solid var(--color-bg);box-sizing:border-box;flex-shrink:0;align-self:center}.presence-stack.svelte-6dohdz .presence-avatar:where(.svelte-6dohdz):first-child{margin-left:4px}.repo-row .presence-stack.svelte-6dohdz{margin-right:28px}.presence-avatar.svelte-6dohdz:nth-child(1){z-index:3}.presence-avatar.svelte-6dohdz:nth-child(2){z-index:2}.presence-avatar.svelte-6dohdz:nth-child(3){z-index:1}.filter-match.svelte-6dohdz{background:var(--color-accent, #e05050);color:#fff;border-radius:2px;padding:0}.no-results.svelte-6dohdz{padding:24px 16px;font-size:14px;color:var(--color-text-tertiary);text-align:center}.repo-row .repo-rename-input{flex:1;min-width:0;height:100%;padding:0 6px;margin:0;border:1px solid var(--color-accent, #e05050);border-radius:3px;font-size:14px;font-weight:600}.repo-row-wrapper.svelte-6dohdz{position:relative;display:flex;align-items:center}.repo-row-wrapper.drop-target.svelte-6dohdz{outline:2px solid var(--color-accent, #e05050);outline-offset:-2px;border-radius:6px;background:#e0505014}.import-modal{max-width:480px}.import-modal .dialog-header{flex-direction:column;align-items:flex-start;gap:4px}.import-modal-body.svelte-6dohdz{padding:16px 24px 8px}.import-modal .dialog-footer{border-top:none}.import-file-list.svelte-6dohdz{display:flex;flex-direction:column;max-height:240px;overflow-y:auto}.import-file-row.svelte-6dohdz{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--color-border)}.import-file-icon.svelte-6dohdz{flex-shrink:0;color:var(--color-text-tertiary)}.import-file-info.svelte-6dohdz{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.import-file-name.svelte-6dohdz{font-size:14px;color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-file-size.svelte-6dohdz{font-size:12px;color:var(--color-text-tertiary)}.import-file-remove.svelte-6dohdz{flex-shrink:0;background:none;border:none;color:var(--color-text-tertiary);cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center}.import-file-remove.svelte-6dohdz:hover{color:var(--color-text-primary);background:var(--color-bg-hover)}.import-drop-zone.svelte-6dohdz{border:1px solid var(--color-border, #333);border-radius:0;padding:40px 16px;text-align:center;color:var(--color-text-tertiary);font-size:15px;min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;transition:background .15s}.import-drop-zone-compact.svelte-6dohdz{min-height:0;padding:14px 16px;border-top:none}.import-hint.svelte-6dohdz{font-size:13px;color:var(--color-text-tertiary);margin:0}.file-picker-link.svelte-6dohdz{background:none;border:none;color:var(--color-accent, #e05050);cursor:pointer;text-decoration:underline;font-size:15px;padding:0}.file-picker-link-sm.svelte-6dohdz{font-size:13px}.repo-row-wrapper.svelte-6dohdz .repo-row{flex:1;min-width:0}.repo-row-wrapper.svelte-6dohdz .repo-actions-btn{display:none;width:28px;height:28px;position:absolute;right:12px;flex-shrink:0;padding:0;border:none;background:none;cursor:pointer;color:var(--color-text-tertiary);border-radius:4px;align-items:center;justify-content:center}.repo-row-wrapper.svelte-6dohdz .repo-actions-btn:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.repo-row-wrapper.svelte-6dohdz:hover .repo-row,.repo-row-wrapper.svelte-6dohdz:has(.repo-actions-btn.menu-open) .repo-row{background:var(--color-bg-hover)}.repo-row-wrapper.svelte-6dohdz:hover .repo-actions-btn,.repo-row-wrapper.svelte-6dohdz .repo-actions-btn.menu-open{display:inline-flex}.type-header-wrapper.svelte-6dohdz{position:relative;display:flex;align-items:center}.type-header-wrapper.svelte-6dohdz .type-header-row{flex:1;min-width:0}.type-header-wrapper.svelte-6dohdz .type-actions-btn{display:none;width:24px;height:24px;position:absolute;right:12px;flex-shrink:0;padding:0;border:none;background:none;cursor:pointer;color:var(--color-text-tertiary);border-radius:4px;align-items:center;justify-content:center}.type-header-wrapper.svelte-6dohdz .type-actions-btn:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.type-header-wrapper.svelte-6dohdz:hover .type-header-row,.type-header-wrapper.svelte-6dohdz:has(.type-actions-btn.menu-open) .type-header-row{background:var(--color-bg-hover)}.type-header-wrapper.svelte-6dohdz:hover .type-actions-btn,.type-header-wrapper.svelte-6dohdz .type-actions-btn.menu-open{display:inline-flex}.repo-actions-menu{min-width:120px;padding:4px;border-radius:6px;background:var(--color-bg-elevated);border:1px solid var(--color-border);box-shadow:0 4px 12px #00000026;z-index:1000}.repo-menu-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:4px;cursor:pointer;font-size:13px;color:var(--color-text-primary)}.repo-menu-item:hover{background:var(--color-bg-hover)}.repo-menu-item-danger{color:var(--color-error, #e55)}.new-collection-btn,.new-collection-btn .repo-name.svelte-6dohdz,.new-collection-btn .row-chevron.svelte-6dohdz{color:var(--color-text-tertiary)}.new-collection-btn:hover,.new-collection-btn:hover .repo-name.svelte-6dohdz{color:var(--color-text-secondary)}.new-collection-row.svelte-6dohdz{display:flex;align-items:center;height:var(--row-height);padding:0 12px 0 20px;border-left:2px solid transparent}.new-collection-row.svelte-6dohdz .new-collection-input{flex:1;height:100%;padding:0 0 0 30px;margin-top:-1px;border:none;background:transparent;font-size:14px;border-radius:0}.new-collection-row.svelte-6dohdz .new-collection-clear{width:20px;height:20px;flex-shrink:0;margin-right:4px}.new-collection-row.svelte-6dohdz .private-toggle{width:20px;height:20px;flex-shrink:0;margin-left:auto;margin-right:4px;color:var(--color-text-secondary)}.new-collection-row.svelte-6dohdz .private-toggle.active{color:var(--color-accent, #e05050)}@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 .new-collection-input.shake{animation:svelte-6dohdz-shake .3s ease-in-out}.sidebar-footer.svelte-6dohdz{display:flex;align-items:center;height:var(--row-height);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:13px;color:var(--color-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer.svelte-6dohdz .footer-icon-btn{width:28px;height:28px}.transfer-header-col.svelte-6dohdz{display:flex;flex-direction:column;gap:4px}.transfer-list.svelte-6dohdz{display:flex;flex-direction:column;gap:2px}.transfer-list-item.svelte-6dohdz{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border-radius:6px;color:var(--color-text);font-size:13px;cursor:pointer}.transfer-list-item.svelte-6dohdz:hover{background:var(--color-bg-hover)}.chat-panel.svelte-1xwj6s7{position:relative;flex-shrink:0;display:flex;flex-direction:column;background:var(--color-bg);border-left:1px solid var(--color-border)}.chat-panel.chat-full.svelte-1xwj6s7{width:100%;min-width:0;flex:1;border-left:none}.chat-full.svelte-1xwj6s7 .chat-messages:where(.svelte-1xwj6s7){padding-left:calc((100% - 720px)/2);padding-right:calc((100% - 720px)/2)}.chat-full.svelte-1xwj6s7 .chat-input-area:where(.svelte-1xwj6s7){padding-left:calc((100% - 720px)/2);padding-right:calc((100% - 720px)/2)}.chat-header.svelte-1xwj6s7{height:var(--row-height);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,.chat-header-right.svelte-1xwj6s7{display:flex;align-items:center;gap:2px}.history-active{color:var(--color-accent, #e05050)!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-row.svelte-1xwj6s7 .session-item{display:flex;align-items:center;justify-content:flex-start;flex:1;min-width:0;padding:0 32px 0 16px;height:var(--row-height);line-height:var(--row-height);font-size:14px;color:var(--color-text-secondary);text-align:left;border-radius:0}.session-row.svelte-1xwj6s7:hover .session-item{background:var(--color-bg-hover)}.session-row.svelte-1xwj6s7 .session-item.active{background:var(--color-bg-hover);color:var(--color-text-primary);font-weight:500}.session-row.svelte-1xwj6s7 .session-delete-btn{display:none;width:20px;height:20px;position:absolute;right:6px;flex-shrink:0;padding:0}.session-row.svelte-1xwj6s7 .session-delete-btn:hover{color:var(--color-error, #e55)}.session-row.svelte-1xwj6s7:hover .session-delete-btn{display:flex}.session-title.svelte-1xwj6s7{flex:1;overflow:hidden;white-space:nowrap;min-width:0;mask-image:linear-gradient(to right,black calc(100% - 24px),transparent 100%);-webkit-mask-image:linear-gradient(to right,black calc(100% - 24px),transparent 100%)}.chat-messages.svelte-1xwj6s7{flex:1;overflow-y:auto;padding:24px 16px;display:flex;flex-direction:column;gap:32px}.empty-state.svelte-1xwj6s7{flex:1;display:flex;align-items:center;justify-content:center;color:var(--color-text-tertiary);font-size:14px}.seed-prompts.svelte-1xwj6s7{display:flex;flex-direction:column;gap:8px;width:100%}.seed-prompts.svelte-1xwj6s7 .seed-prompt{font-size:14px;line-height:20px;padding:9px 13px;min-height:var(--row-height);height:auto;border-radius:8px;color:var(--color-text-secondary);text-align:left;white-space:normal;justify-content:flex-start}.seed-prompts.svelte-1xwj6s7 .seed-prompt:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.message-group.svelte-1xwj6s7{display:flex;flex-direction:column;gap:16px}.user-bubble.svelte-1xwj6s7{background:var(--color-bg-surface);border-radius:8px;padding:12px 14px;font-size:14px;line-height:22px;color:var(--color-text-primary)}.agent-content.svelte-1xwj6s7{display:flex;flex-direction:column;gap:14px;position:relative}.msg-actions.svelte-1xwj6s7{display:flex;gap:2px;align-self:flex-start}.copy-btn.svelte-1xwj6s7{display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-text-tertiary);cursor:pointer;padding:4px;border-radius:4px;align-self:flex-start}.copy-btn.svelte-1xwj6s7:hover{color:var(--color-text-primary);background:var(--color-bg-hover)}.tool-calls.svelte-1xwj6s7{display:flex;flex-direction:column;gap:4px}.tool-call.svelte-1xwj6s7{font-family:var(--font-mono);font-size:12px;color:var(--color-accent)}.agent-text.svelte-1xwj6s7{font-size:14px;line-height:22px;color:var(--color-text-primary)}.prose.svelte-1xwj6s7 h1{font-size:18px;font-weight:600;color:var(--color-text-primary);margin:24px 0 12px}.prose.svelte-1xwj6s7 h2{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:22px 0 10px}.prose.svelte-1xwj6s7 h3{font-size:15px;font-weight:600;color:var(--color-text-primary);margin:20px 0 8px}.prose.svelte-1xwj6s7 p{margin:0 0 14px}.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 14px;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:6px}.prose.svelte-1xwj6s7 table{width:100%;border-collapse:collapse;font-size:13px;margin:16px 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:6px;padding:10px 12px;overflow-x:auto;margin:16px 0;font-family:var(--font-mono);font-size:13px;line-height:18px}.prose.svelte-1xwj6s7 code{font-family:var(--font-mono);font-size:13px;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:12px;margin:16px 0;color:var(--color-text-secondary)}.prose.svelte-1xwj6s7 hr{border:none;border-top:1px solid var(--color-border);margin:24px 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:12px;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:var(--row-height);max-height:140px;padding:0 0 0 13px;background:transparent;border:1px solid var(--color-border);border-radius:8px;transition:border-color .15s}.text-input.svelte-1xwj6s7:focus-within{border-color:var(--color-accent)}.send-btn{color:var(--color-text-tertiary);margin:6px;flex-shrink:0;pointer-events:none}.send-btn.send-active{pointer-events:auto;color:#fff;background:var(--color-accent);border-radius:6px}.stop-btn{color:#fff;background:var(--color-accent);border-radius:6px}.input-field.svelte-1xwj6s7{flex:1;background:transparent;border:none;outline:none;font-family:inherit;font-size:14px;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}.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-header.svelte-1xems06 .search-input{flex:1;font-size:16px;line-height:20px;border:none;background:transparent;box-shadow:none;padding:0;height:auto}.search-header.svelte-1xems06 .search-input:focus{box-shadow:none;border:none}.esc-badge.svelte-1xems06{font-family:var(--font-sans);font-size:12px;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:14px;color:var(--color-text-tertiary)}.results-list.svelte-1xems06 .result-row{display:flex;align-items:flex-start;padding:10px 16px;width:100%;text-align:left;border-radius:0;height:auto;justify-content:flex-start}.results-list.svelte-1xems06 .result-row:hover,.results-list.svelte-1xems06 .result-row.selected{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:14px;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:11px;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:13px;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:12px;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}
@@ -0,0 +1 @@
1
+ .chat-input-wrap.svelte-1anss1t{width:100%;max-width:640px}.chat-input-box.svelte-1anss1t{display:flex;align-items:center;gap:8px;border-radius:8px;border:1px solid var(--color-border);background:transparent;padding:6px 6px 6px 16px;transition:border-color .15s;cursor:text}.chat-input-box.svelte-1anss1t:focus-within{border-color:var(--color-accent)}.chat-textarea.svelte-1anss1t{flex:1;min-height:24px;max-height:160px;padding:0;border:none;background:transparent;color:var(--color-text-primary);font-family:inherit;font-size:15px;line-height:1.5;resize:none;outline:none;box-sizing:border-box}.chat-textarea.svelte-1anss1t::placeholder{color:var(--color-text-tertiary)}.send-btn.svelte-1anss1t{display:flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:none;border-radius:8px;background:var(--color-text-tertiary);color:var(--color-bg);cursor:not-allowed;transition:background .15s}.send-btn.active.svelte-1anss1t{background:var(--color-accent);color:#fff;cursor:pointer}.send-btn.active.svelte-1anss1t:hover{background:var(--color-accent-hover)}.home.svelte-h7bcrl{flex:1;display:flex;flex-direction:column;min-height:0;overflow-y:auto;container-type:inline-size}.hero.svelte-h7bcrl{display:flex;flex-direction:column;align-items:center;gap:24px;padding:80px 24px 32px}.hero.centered.svelte-h7bcrl{flex:1;justify-content:center}.workspace-name.svelte-h7bcrl{font-size:42px;font-weight:300;color:var(--color-text-primary);letter-spacing:-.02em;line-height:1.1;text-align:center;margin:0}@container (max-width: 700px){.workspace-name.svelte-h7bcrl{font-size:32px}}.suggestions-hint.svelte-h7bcrl{font-size:15px;color:var(--color-text-tertiary);text-align:center;margin:0}.suggestions.svelte-h7bcrl{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:640px}.suggestion-chip.svelte-h7bcrl{padding:6px 14px;border:1px solid var(--color-border);border-radius:9999px;background:var(--color-bg-surface);color:var(--color-text-secondary);font-family:inherit;font-size:13px;cursor:pointer;transition:border-color .15s,color .15s}.suggestion-chip.svelte-h7bcrl:hover{border-color:var(--color-accent);color:var(--color-text-primary)}.loading-state.svelte-h7bcrl{display:flex;align-items:center;justify-content:center;gap:10px;padding:48px 24px;color:var(--color-text-tertiary);font-size:14px}.animate-spin{animation:svelte-h7bcrl-spin 1s linear infinite}@keyframes svelte-h7bcrl-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.insights-section.svelte-h7bcrl{padding:0 24px 24px;max-width:1080px;margin:0 auto;width:100%;box-sizing:border-box}.insights-header.svelte-h7bcrl{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.insights-title.svelte-h7bcrl{display:flex;align-items:baseline;gap:10px}.insights-meta.svelte-h7bcrl{font-size:12px;color:var(--color-text-tertiary)}.insights-actions.svelte-h7bcrl{display:flex;align-items:center;gap:8px}.edit-focus-link.svelte-h7bcrl{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-family:inherit;color:var(--color-text-tertiary);background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:4px}.edit-focus-link.svelte-h7bcrl:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.insights-grid.svelte-h7bcrl{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.insight-card.svelte-h7bcrl{padding:16px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg)}.insight-top.svelte-h7bcrl{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.pattern-tag.svelte-h7bcrl{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-tertiary)}.insight-headline.svelte-h7bcrl{font-size:14px;font-weight:600;color:var(--color-text-primary);margin:0 0 6px;line-height:1.3}.insight-detail.svelte-h7bcrl{font-size:13px;color:var(--color-text-secondary);line-height:1.5;margin:0 0 8px}.action-btn.svelte-h7bcrl{display:flex;align-items:flex-start;padding:6px 8px;margin-bottom:8px;font-family:inherit;font-size:13px;font-weight:500;color:var(--color-accent);background:transparent;border:1px solid var(--color-border);border-radius:6px;cursor:pointer;text-align:left;line-height:1.3;transition:border-color .15s}.action-btn.svelte-h7bcrl:hover{border-color:var(--color-accent)}.insight-entities.svelte-h7bcrl{display:flex;flex-wrap:wrap;gap:4px}.entity-chip.svelte-h7bcrl{padding:2px 8px;font-size:12px;font-family:inherit;color:var(--color-text-secondary);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:4px;cursor:pointer}.entity-chip.svelte-h7bcrl:hover{border-color:var(--color-accent);color:var(--color-text-primary)}
@@ -0,0 +1 @@
1
+ .autocomplete.svelte-84vb17{position:relative;width:100%}.input-row.svelte-84vb17{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:26px;padding:0;background:transparent;border:none;border-radius:4px}.chip.svelte-84vb17{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:4px;font-size:13px;background:var(--color-bg-surface);color:var(--color-link, #e07070);flex-shrink:0}.chip-remove.svelte-84vb17{all:unset;display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;color:var(--color-text-tertiary);font-size:13px;line-height:1;cursor:pointer;border-radius:2px}.chip-remove.svelte-84vb17:hover{color:var(--color-text-primary);background:var(--color-bg-hover)}.ac-input.svelte-84vb17{flex:1;min-width:80px;height:22px;padding:0;font-size:14px;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:14px;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:12px;padding:1px 6px;border-radius:9999px;background:var(--color-badge-bg);color:var(--color-badge-text)}.entity-repo.svelte-84vb17{font-size:12px;color:var(--color-text-tertiary)}.property-row.svelte-eh8ho9{display:grid;grid-template-columns:20px 130px 1fr;align-items:baseline;gap:10px;padding:5px 8px;margin:0 -8px;border-radius:4px;min-height:30px}.prop-icon.svelte-eh8ho9{display:inline-flex;align-items:center;justify-content:center;font-size:14px;line-height:1;color:var(--color-text-tertiary)}.prop-icon.svelte-eh8ho9:before{content:"​"}.icon-trigger{all:unset;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-tertiary);border-radius:3px}.icon-trigger:hover{color:var(--color-text-primary)}.prop-key.svelte-eh8ho9{font-size:14px;color:var(--color-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prop-value.svelte-eh8ho9{font-size:14px;color:var(--color-text-primary);min-width:0;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}.dot.svelte-eh8ho9{width:8px;height:8px;border-radius:50%;flex-shrink:0}.edit-input.svelte-eh8ho9{width:100%;font-size:14px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;outline:none;padding:0}.text-value.svelte-eh8ho9{word-break:break-word;cursor:text;line-height:1.6}.edit-textarea.svelte-eh8ho9{width:100%;font-size:14px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;outline:none;padding:0;resize:vertical;line-height:1.6;field-sizing:content}.date-value.svelte-eh8ho9{white-space:nowrap}.edit-input.svelte-eh8ho9::placeholder{color:var(--color-text-tertiary)}.url-display.svelte-eh8ho9{display:flex;align-items:center;gap:4px;min-width:0;white-space:nowrap}.url-link.svelte-eh8ho9{color:var(--color-link, #e07070);text-decoration:none;overflow:hidden;white-space:nowrap;min-width:0;flex:1;-webkit-mask-image:linear-gradient(to right,black calc(100% - 16px),transparent);mask-image:linear-gradient(to right,black calc(100% - 16px),transparent)}.url-link.svelte-eh8ho9:hover{text-decoration:underline}.url-edit-btn.svelte-eh8ho9{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:22px;height:22px;border-radius:3px;color:var(--color-text-tertiary);cursor:pointer;opacity:0;transition:opacity .1s}.url-display.svelte-eh8ho9:hover .url-edit-btn:where(.svelte-eh8ho9){opacity:1}.url-edit-btn.svelte-eh8ho9:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.empty-hint.svelte-eh8ho9{color:var(--color-text-tertiary)}.date-input.svelte-eh8ho9{color-scheme:dark;width:auto!important;height:auto;padding:0!important;margin:0;line-height:inherit}.date-empty.svelte-eh8ho9{color:var(--color-text-tertiary)!important}.date-input.svelte-eh8ho9::-webkit-calendar-picker-indicator{filter:brightness(.35);cursor:pointer;transition:filter .1s}.date-input.svelte-eh8ho9::-webkit-calendar-picker-indicator:hover{filter:brightness(.6)}.badge-value.svelte-eh8ho9{display:inline-flex;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:500;background:var(--color-badge-bg, rgba(224, 80, 80, .1));color:var(--color-badge-text, #e07070)}.wikilink-display.svelte-eh8ho9{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-width:0;min-height:26px}.wikilink-input.svelte-eh8ho9{flex:1;min-width:60px;font-size:14px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;outline:none;padding:0;cursor:text}.wikilink-input.svelte-eh8ho9::placeholder{color:var(--color-text-tertiary)}.wikilink-chip.svelte-eh8ho9{display:inline-flex;align-items:center;padding:2px 8px;font-size:13px;font-family:inherit;border-radius:4px;background:var(--color-bg-surface);color:var(--color-link, #e07070);border:none;cursor:pointer;transition:background .1s}.wikilink-chip.svelte-eh8ho9:hover{background:var(--color-bg-hover)}.dotted-item{display:flex;align-items:center;gap:8px;min-height:36px;padding:4px 10px;border-radius:4px;font-size:14px;color:var(--color-text-secondary);cursor:pointer;outline:none}.dotted-item[data-highlighted]{background:var(--color-bg-hover);color:var(--color-text-primary)}.dotted-item[data-selected]{color:var(--color-text-primary)}.item-check{margin-left:auto;color:var(--color-accent)}.status-trigger{border:none!important;box-shadow:none!important;padding:0!important;height:auto!important;background:transparent!important;gap:6px!important}.type-menu-content{z-index:1100;min-width:140px;padding:6px;border:1px solid var(--color-border-strong, var(--color-border));border-radius:8px;background:var(--color-bg-elevated);box-shadow:0 8px 24px #0000004d}.type-menu-item{display:flex;align-items:center;gap:8px;height:36px;padding:0 10px;border-radius:4px;font-size:14px;color:var(--color-text-secondary);cursor:pointer;outline:none}.type-menu-item[data-highlighted]{background:var(--color-bg-hover);color:var(--color-text-primary)}.menu-label.svelte-eh8ho9{flex:1}.type-menu-danger{color:var(--color-error, #e55)!important}[data-dropdown-menu-separator]{height:1px;margin:4px 0;background:var(--color-border)}.entity-properties.svelte-1a2lez6{padding:16px 0 8px;border-bottom:1px solid var(--color-border)}.name-headline.svelte-1a2lez6{margin:8px 0 16px;cursor:text}.name-input.svelte-1a2lez6{font-size:22px;font-weight:600;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;outline:none;width:100%;line-height:1.3;padding:0}.fields-toggle.svelte-1a2lez6{display:flex;align-items:baseline;gap:10px;background:none;border:none;font-family:inherit;font-size:14px;color:var(--color-text-secondary);cursor:pointer;padding:4px 8px;margin:0 -8px}.fields-toggle.svelte-1a2lez6:hover{color:var(--color-text-primary)}.fields-chevron.svelte-1a2lez6{display:inline-flex;align-items:center;justify-content:center;align-self:center;width:20px;color:var(--color-text-tertiary);transition:transform .15s}.fields-chevron.expanded.svelte-1a2lez6{transform:rotate(90deg)}.fields-label.svelte-1a2lez6{font-weight:400}.fields-count.svelte-1a2lez6{font-size:12px;color:var(--color-text-tertiary)}.fields-list.svelte-1a2lez6{margin-top:4px}.add-field-row.svelte-1a2lez6{padding:5px 8px;margin:0 -8px}.add-field-input.svelte-1a2lez6{font-size:14px;font-family:inherit;color:var(--color-text-primary);background:transparent;border:none;outline:none;padding:0;width:100%}.entity-properties.svelte-1a2lez6 .add-field-btn{margin:8px -8px;font-size:14px}.connections-panel.svelte-16xienp{margin:80px 0 48px;padding-top:16px;border-top:1px solid var(--color-border)}.connections-header.svelte-16xienp{display:flex;align-items:baseline;gap:10px;background:none;border:none;font-family:inherit;font-size:14px;color:var(--color-text-secondary);cursor:pointer;padding:4px 8px;margin:0 -8px}.connections-header.svelte-16xienp:hover{color:var(--color-text-primary)}.header-chevron.svelte-16xienp{display:inline-flex;align-items:center;justify-content:center;width:20px;color:var(--color-text-tertiary);transition:transform .15s;transform:rotate(90deg)}.header-chevron.collapsed.svelte-16xienp{transform:rotate(0)}.header-label.svelte-16xienp{font-weight:400}.header-count.svelte-16xienp{font-size:12px;color:var(--color-text-tertiary)}.connections-body.svelte-16xienp{display:flex;flex-direction:column;gap:0;margin-top:8px}.connection-chip.svelte-16xienp{display:flex;align-items:center;gap:8px;padding:6px 8px;background:none;border:none;border-radius:4px;font-family:inherit;font-size:13px;color:var(--color-text-primary);cursor:pointer;text-align:left}.connection-chip.svelte-16xienp:hover{background:var(--color-bg-hover)}.chip-dot.svelte-16xienp{width:6px;height:6px;border-radius:50%;flex-shrink:0}.chip-name.svelte-16xienp{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip-type.svelte-16xienp{font-size:12px;color:var(--color-text-tertiary);flex-shrink:0}.editor-wrap.svelte-ok7wy5{display:flex;min-height:0;position:relative}.cm-container.svelte-ok7wy5{flex:1;min-height:100px}.cm-container.svelte-ok7wy5 .cm-editor{min-height:100px;outline:none}.cm-container.svelte-ok7wy5 .cm-scroller{overflow:visible!important}.cursor-overlay.svelte-ok7wy5{position:absolute;inset:0;pointer-events:none;overflow:hidden}.remote-cursor.svelte-ok7wy5{position:absolute;width:2px;background-color:var(--cursor-color);z-index:10}.remote-cursor-label.svelte-ok7wy5{position:absolute;top:-1.4em;left:-1px;font-size:12px;font-family:var(--font-sans);font-weight:500;padding:0 4px;border-radius:3px 3px 3px 0;white-space:nowrap;line-height:1.5;color:#fff}.csv-editor.svelte-63hltt{padding:32px 16px 0}.table-scroll.svelte-63hltt{overflow-x:auto}table.svelte-63hltt{border-collapse:collapse;width:max-content;font-size:14px;font-family:var(--font-sans)}th.svelte-63hltt,td.svelte-63hltt{border:1px solid var(--color-border);padding:0;height:32px;min-width:120px;max-width:300px}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;min-width:40px;max-width:40px;text-align:center;color:var(--color-text-tertiary);font-size:12px;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:14px;padding:4px 8px;outline:none}.cell-input.svelte-63hltt:focus{outline:1px solid var(--color-accent);outline-offset:-1px}.header-input.svelte-63hltt{font-weight:500;color:var(--color-text-secondary)}th.svelte-63hltt:not(.row-num):not(.col-add){position:relative}th.svelte-63hltt .col-delete-btn{position:absolute;top:50%;right:2px;transform:translateY(-50%);width:18px;height:18px;display:none;background:var(--color-bg-hover);border-radius:3px;padding:0}th.svelte-63hltt:hover .col-delete-btn{display:flex}th.svelte-63hltt .col-delete-btn:hover{color:var(--color-destructive);background:var(--color-bg-selected)}.col-add.svelte-63hltt{width:28px;min-width:28px;max-width:28px;background:transparent}.col-add.svelte-63hltt .col-add-btn{width:100%;height:100%;border-radius:0;padding:0}.col-add.svelte-63hltt .col-add-btn:hover{color:var(--color-accent)}.actions.svelte-63hltt{width:28px;min-width:28px;max-width:28px;text-align:center}.actions.svelte-63hltt .delete-btn{display:none;width:18px;height:18px;padding:0;margin:0 auto;background:var(--color-bg-hover);border-radius:3px}tr.svelte-63hltt:hover .delete-btn{display:flex}tr.svelte-63hltt .delete-btn:hover{color:var(--color-destructive);background:var(--color-bg-selected)}.csv-footer.svelte-63hltt{display:flex;align-items:center;gap:16px;padding:8px 0}.csv-footer.svelte-63hltt .add-row-btn{font-size:14px}.remote-active.svelte-63hltt{outline:2px solid var(--rc-color, #e05050);outline-offset:-2px;position:relative}.remote-cell-label.svelte-63hltt{position:absolute;top:-18px;left:-1px;font-size:11px;font-family:var(--font-sans);font-weight:500;padding:0 4px;border-radius:3px 3px 3px 0;white-space:nowrap;line-height:1.6;color:#fff;z-index:2;pointer-events:none}.diff-view.svelte-1g4tvol{flex:1;overflow-y:auto;min-height:0}.diff-properties.svelte-1g4tvol{padding:16px 40px 8px;border-bottom:1px solid var(--color-border)}.dp-row.svelte-1g4tvol{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}.dp-icon.svelte-1g4tvol{display:flex;align-items:center;justify-content:center;color:var(--color-text-tertiary);height:22px}.dp-key.svelte-1g4tvol{font-size:14px;color:var(--color-text-tertiary);line-height:22px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dp-value.svelte-1g4tvol{display:flex;flex-direction:column;gap:2px;min-height:22px;line-height:22px;font-size:14px;color:var(--color-text-primary)}.dp-diff-old.svelte-1g4tvol{display:inline-flex;align-items:center;padding:0 8px;border-radius:4px;background:#dc505026;color:var(--color-destructive, #e54d4d);min-height:22px;line-height:22px;width:fit-content}.dp-diff-new.svelte-1g4tvol{display:inline-flex;align-items:center;padding:0 8px;border-radius:4px;background:#50c86426;color:var(--color-success, #3ecf8e);min-height:22px;line-height:22px;width:fit-content}.diff-body.svelte-1g4tvol{padding:32px 40px;font-family:var(--font-sans);font-size:16px;line-height:1.6;color:var(--color-text-primary);white-space:pre-wrap;word-break:break-word}.diff-body.svelte-1g4tvol .db-removed{background:#dc505026;color:var(--color-destructive, #e54d4d);border-radius:2px}.diff-body.svelte-1g4tvol .db-added{background:#50c86426;color:var(--color-success, #3ecf8e);border-radius:2px}.document-scroll.svelte-udj3er{flex:1;overflow-y:auto;min-height:0}.document-well.svelte-udj3er{max-width:720px;margin:0 auto;padding:0 40px;width:100%;box-sizing:border-box}.dataset-view.svelte-udj3er .entity-properties{border-bottom:none}.dataset-view.svelte-udj3er .connections-panel{border-top:none}.editor-bar.svelte-udj3er{height:var(--row-height);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-udj3er{font-size:14px;color:var(--color-text-secondary);line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.bc-sep.svelte-udj3er{color:var(--color-text-tertiary);margin:0 6px}.bc-segment.svelte-udj3er{color:var(--color-text-secondary)}.bc-current.svelte-udj3er{color:var(--color-text-primary)}.editor-actions.svelte-udj3er{display:flex;align-items:center;gap:8px;flex-shrink:0;white-space:nowrap}.status-text.svelte-udj3er{font-size:13px}.status-text.saving.svelte-udj3er{color:var(--color-text-tertiary)}.status-text.error.svelte-udj3er{color:var(--color-destructive)}.editor-actions.svelte-udj3er .open-app{text-transform:capitalize}.refresh-panel.svelte-udj3er{border-bottom:1px solid var(--color-border);padding:12px 40px;background:var(--color-bg-secondary, var(--color-bg-hover));font-size:14px;flex-shrink:0}.refresh-uptodate.svelte-udj3er{color:var(--color-text-secondary)}.editor-bar-diff.svelte-udj3er{background:var(--color-bg)}.diff-action-title.svelte-udj3er{font-size:14px;color:var(--color-text-primary);font-weight:600}.diff-action-buttons.svelte-udj3er{display:flex;align-items:center;gap:6px}@media(max-width:960px){.breadcrumb-path.svelte-udj3er{display:none}}
@@ -0,0 +1 @@
1
+ .json-editor-wrap.svelte-1grruw9{width:100%;max-height:50vh;overflow-y:auto;border-radius:6px}.json-editor-wrap.svelte-1grruw9 .cm-editor{outline:none}.json-editor-wrap.svelte-1grruw9 .cm-scroller{overflow:visible!important}.settings-page.svelte-zymv0t{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.settings-header.svelte-zymv0t{height:var(--row-height);flex-shrink:0;border-bottom:1px solid var(--color-border)}.content-toolbar.svelte-zymv0t{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.content-count.svelte-zymv0t{font-size:13px;color:var(--color-text-tertiary)}.settings-content.svelte-zymv0t{flex:1;overflow-y:auto;padding:20px 40px 32px}.tab-header.svelte-zymv0t{margin-bottom:20px}.tab-title.svelte-zymv0t{font-size:17px;font-weight:600;color:var(--color-text-primary);margin:0 0 4px}.tab-description.svelte-zymv0t{font-size:14px;color:var(--color-text-tertiary);margin:0}.accordion-item{border-bottom:1px solid var(--color-border)}.accordion-item:last-child{border-bottom:none}.accordion-trigger{display:flex;align-items:center;gap:0;width:100%;padding:10px 4px;border:none;background:transparent;cursor:pointer;font-family:inherit;text-align:left}.accordion-trigger:hover{background:var(--color-bg-hover);border-radius:6px}.accordion-chevron.svelte-zymv0t{display:flex;align-items:center;justify-content:center;width:16px;height:22px;margin-right:14px;color:var(--color-text-tertiary);flex-shrink:0;transition:transform .15s ease}[data-state=open]>.accordion-trigger .accordion-chevron,.accordion-trigger[data-state=open] .accordion-chevron{transform:rotate(90deg)}.accordion-label.svelte-zymv0t{font-size:14px;font-weight:500;color:var(--color-text-primary);flex:1}.accordion-count{margin-left:auto}.accordion-content{overflow:hidden;padding:0 0 8px 34px}.accordion-content[data-state=closed]{display:none}.section-header.svelte-zymv0t{display:flex;align-items:center;height:32px;gap:0;margin-top:8px}.section-label.svelte-zymv0t{font-size:12px;font-weight:600;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.05em;flex:1}.member-row.svelte-zymv0t{display:grid;grid-template-columns:22px 1fr 2fr 80px;align-items:center;height:44px;gap:0 14px;font-size:14px}.member-name-cell.svelte-zymv0t{display:flex;align-items:baseline;gap:0;min-width:0}.member-name.svelte-zymv0t{font-size:15px;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pill-key{color:var(--color-text-tertiary)}.pill-val{color:var(--color-text-secondary)}.member-pills.svelte-zymv0t{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.member-email.svelte-zymv0t{font-size:13px;color:var(--color-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.member-list.svelte-zymv0t>.member-row:where(.svelte-zymv0t),.accordion-content .member-row.svelte-zymv0t{border-bottom:1px solid var(--color-border)}.member-list.svelte-zymv0t>.member-row:where(.svelte-zymv0t):last-child,.accordion-content .member-row.svelte-zymv0t:last-child{border-bottom:none}.member-actions.svelte-zymv0t{display:flex;justify-content:flex-end;gap:4px}.icon-danger:hover{color:var(--color-error, #e55)!important}.confirm-row.svelte-zymv0t{display:flex;grid-column:1 / -1;background:#e5555514;border-radius:6px;padding:0 10px 0 12px}.confirm-text.svelte-zymv0t{flex:1;font-size:14px;color:var(--color-text-primary)}.dialog-fields.svelte-zymv0t{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.dialog-field.svelte-zymv0t{display:flex;flex-direction:column;gap:4px}.checkbox-list.svelte-zymv0t{display:flex;flex-direction:column;gap:2px}.checkbox-item.svelte-zymv0t{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;font-size:14px;color:var(--color-text-primary);cursor:pointer}.checkbox-item.svelte-zymv0t:hover{background:var(--color-bg-hover)}.modal-member-list.svelte-zymv0t{display:flex;flex-direction:column;gap:2px;margin:8px 0;max-height:300px;overflow-y:auto}.modal-member-row.svelte-zymv0t{display:flex;align-items:center;gap:12px;padding:8px 12px;border-radius:6px;cursor:pointer}.modal-member-row.svelte-zymv0t:hover{background:var(--color-bg-hover)}.modal-member-info.svelte-zymv0t{display:flex;flex-direction:column;min-width:0}.connector-list.svelte-zymv0t{display:flex;flex-direction:column}.connector-row.svelte-zymv0t{display:flex;align-items:center;gap:14px;height:44px;border-bottom:1px solid var(--color-border);font-size:14px}.connector-row.svelte-zymv0t:last-child{border-bottom:none}.connector-section-label.svelte-zymv0t{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-tertiary);margin-top:20px;margin-bottom:4px}.connector-description{font-size:14px;color:var(--color-text-secondary);margin:0 0 12px}.connector-row-actions.svelte-zymv0t{display:flex;align-items:center;gap:2px;margin-left:auto}.connector-action{margin-left:auto!important;font-size:13px!important;gap:4px!important}.connector-action.connected{color:var(--color-success, #4ade80)!important}.setup-instructions.svelte-zymv0t{display:flex;flex-direction:column;gap:16px}.setup-instructions.svelte-zymv0t p:where(.svelte-zymv0t){margin:0;font-size:14px;line-height:22px;color:var(--color-text-secondary)}.setup-instructions.svelte-zymv0t a:where(.svelte-zymv0t){color:var(--color-accent)}.setup-steps.svelte-zymv0t{display:flex;flex-direction:column;gap:16px}.setup-step.svelte-zymv0t{display:flex;gap:12px}.step-number.svelte-zymv0t{width:24px;height:24px;border-radius:50%;background:var(--color-bg-surface);color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0}.env-var.svelte-zymv0t{display:block;margin-top:8px;padding:8px 12px;background:var(--color-bg-surface);border-radius:6px;font-family:var(--font-mono);font-size:13px;color:var(--color-accent)}.connector-row-actions.svelte-zymv0t .connector-action{margin-left:0!important}.connector-hint{font-size:13px;color:var(--color-text-tertiary);margin:0}.connector-form{display:flex;flex-direction:column;gap:16px;margin-top:16px}.connector-field{display:flex;flex-direction:column;gap:6px}.connector-field-hint{font-size:13px;color:var(--color-text-tertiary);margin-top:2px}.connector-docs-link{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--color-text-tertiary);text-decoration:none}.connector-docs-link:hover{color:var(--color-text-secondary)}.status-msg.svelte-zymv0t{font-size:14px;color:var(--color-error, #e55);padding:0;background:none}.loading-text.svelte-zymv0t{font-size:14px;color:var(--color-text-tertiary);padding:20px 0;text-align:center}.spinning{animation:svelte-zymv0t-spin 1s linear infinite}@keyframes svelte-zymv0t-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.about-section.svelte-zymv0t{display:flex;flex-direction:column;gap:16px}.ws-field.svelte-zymv0t{display:flex;flex-direction:column;gap:6px}.field-help.svelte-zymv0t{font-size:13px;color:var(--color-text-tertiary);line-height:1.4}.about-actions.svelte-zymv0t{display:flex;justify-content:flex-end;gap:8px}.accent-palette.svelte-zymv0t{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.accent-palette.saving.svelte-zymv0t{opacity:.5;pointer-events:none}.accent-swatch.svelte-zymv0t{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:border-color .15s,transform .15s}.accent-swatch.svelte-zymv0t:hover{transform:scale(1.15)}.accent-swatch.active.svelte-zymv0t{border-color:var(--color-text-primary)}.prefs-sections.svelte-zymv0t{display:flex;flex-direction:column;gap:32px}.prefs-block.svelte-zymv0t{display:flex;flex-direction:column;gap:8px}.section-heading.svelte-zymv0t{font-size:14px;font-weight:600;color:var(--color-text-primary)}.mcp-header.svelte-zymv0t{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.mcp-actions.svelte-zymv0t{display:flex;gap:4px}.mcp-hint.svelte-zymv0t{font-size:14px;color:var(--color-text-tertiary);margin:0 0 8px}.mcp-config-textarea{font-family:var(--font-mono, ui-monospace, monospace)!important;font-size:13px!important}
@@ -0,0 +1 @@
1
+ .list-view.svelte-1p6fd26{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.list-toolbar.svelte-1p6fd26{display:flex;align-items:center;justify-content:space-between;height:var(--row-height);padding:0 16px;border-bottom:1px solid var(--color-border);flex-shrink:0}.toolbar-left.svelte-1p6fd26{display:flex;align-items:center;gap:4px;flex-shrink:0;padding:6px 0}.toolbar-left.svelte-1p6fd26 .select-trigger{border:none!important;box-shadow:none!important}.toolbar-left.svelte-1p6fd26 .select-trigger:hover{background:var(--color-bg-hover)!important}.toolbar-filters.svelte-1p6fd26{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:6px 0}.row-count.svelte-1p6fd26{font-size:13px;color:var(--color-text-tertiary)}.empty.svelte-1p6fd26{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--color-text-tertiary);font-size:14px}.table-scroll.svelte-1p6fd26{flex:1;overflow:auto}.list-table.svelte-1p6fd26{width:100%;border-collapse:collapse;font-size:14px}thead.svelte-1p6fd26{position:sticky;top:0;z-index:1;background:var(--color-bg)}th.svelte-1p6fd26{text-align:left;height:var(--row-height);padding:0 12px;font-weight:500;font-size:14px;color:var(--color-text-tertiary);border-bottom:1px solid var(--color-border);white-space:nowrap;-webkit-user-select:none;user-select:none}.th-controls.svelte-1p6fd26{display:flex;align-items:center;gap:2px}.th-sort-btn.svelte-1p6fd26{display:inline-flex;align-items:center;border:none;background:transparent;color:inherit;font:inherit;cursor:pointer;padding:0}.th-sort-btn.svelte-1p6fd26:hover{color:var(--color-text-secondary)}.th-sort-btn.sort-active.svelte-1p6fd26{color:var(--color-text-primary)}.th-sort-btn.sort-active.svelte-1p6fd26 .th-sort:where(.svelte-1p6fd26){opacity:1}.th-label.svelte-1p6fd26{margin-right:4px}.th-sort.svelte-1p6fd26{display:inline-flex;align-items:center;vertical-align:middle;opacity:.5}.th-sort-btn.svelte-1p6fd26:hover .th-sort:where(.svelte-1p6fd26){opacity:1}.th-filter-btn{all:unset;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:3px;cursor:pointer;color:var(--color-text-tertiary);opacity:0;transition:opacity .15s,color .15s}th.svelte-1p6fd26:hover .th-filter-btn,.th-filter-btn.filter-active{opacity:1}.th-filter-btn:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.th-filter-btn.filter-active{color:var(--color-accent)}.filter-popover{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 16px #00000040;padding:8px;min-width:180px;z-index:50}.filter-text-input{font-size:13px!important;height:30px!important}.filter-checks.svelte-1p6fd26{display:flex;flex-direction:column;gap:4px}.filter-check-label.svelte-1p6fd26{display:flex;align-items:center;gap:6px;padding:4px;font-size:13px;color:var(--color-text-primary);cursor:pointer;border-radius:3px;text-transform:capitalize}.filter-check-label.svelte-1p6fd26:hover{background:var(--color-bg-hover)}.filter-date-range.svelte-1p6fd26{display:flex;flex-direction:column;gap:6px}.filter-date-label.svelte-1p6fd26{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text-tertiary)}.filter-date-label.svelte-1p6fd26 .filter-date-input{flex:1;font-size:13px!important;height:30px!important;color-scheme:dark}.filter-pill.svelte-1p6fd26{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:12px;font-family:inherit;color:var(--color-text-secondary);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:9999px;cursor:pointer;white-space:nowrap;flex-shrink:0}.filter-pill.svelte-1p6fd26:hover{border-color:var(--color-accent);color:var(--color-text-primary)}.filter-clear-all.svelte-1p6fd26{font-size:12px;font-family:inherit;color:var(--color-text-tertiary);background:transparent;border:none;cursor:pointer;white-space:nowrap;padding:2px 4px;flex-shrink:0}.filter-clear-all.svelte-1p6fd26:hover{color:var(--color-text-secondary)}.group-header.svelte-1p6fd26{cursor:pointer}.group-header.svelte-1p6fd26:hover td:where(.svelte-1p6fd26){background:var(--color-bg-hover)}.group-header.svelte-1p6fd26 td:where(.svelte-1p6fd26){height:var(--row-height);padding:0;border-bottom:1px solid var(--color-border)}.group-header-content.svelte-1p6fd26{display:flex;align-items:center;gap:10px;height:100%;padding:0 16px}.group-chevron.svelte-1p6fd26{display:inline-flex;align-items:center;align-self:center;color:var(--color-text-tertiary);transition:transform .15s;transform:rotate(90deg)}.group-chevron.collapsed.svelte-1p6fd26{transform:rotate(0)}.group-label.svelte-1p6fd26{font-size:14px;font-weight:400;color:var(--color-text-primary);text-transform:capitalize}.group-count.svelte-1p6fd26{font-size:12px;color:var(--color-text-tertiary)}tr.svelte-1p6fd26{cursor:pointer}tbody.svelte-1p6fd26 tr:where(.svelte-1p6fd26):not(.group-header):hover{background:var(--color-bg-hover)}td.svelte-1p6fd26{height:var(--row-height);padding:0 12px;color:var(--color-text-primary);border-bottom:1px solid var(--color-border);white-space:nowrap;overflow:hidden}.cell-name.svelte-1p6fd26{font-weight:500;max-width:300px;overflow:hidden;-webkit-mask-image:linear-gradient(to right,black calc(100% - 16px),transparent);mask-image:linear-gradient(to right,black calc(100% - 16px),transparent)}.cell-date.svelte-1p6fd26{color:var(--color-text-tertiary)}.cell-meta.svelte-1p6fd26{color:var(--color-text-secondary);text-transform:capitalize}.colored-value.svelte-1p6fd26{display:inline-flex;align-items:center;gap:5px;text-transform:capitalize}.status-dot.svelte-1p6fd26{width:6px;height:6px;border-radius:3px;flex-shrink:0}.calendar-view.svelte-dnwsps{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.calendar-toolbar.svelte-dnwsps{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:var(--row-height);padding:0 16px;border-bottom:1px solid var(--color-border);flex-shrink:0}.toolbar-left.svelte-dnwsps{display:flex;align-items:center;gap:4px}.toolbar-left.svelte-dnwsps .select-trigger{border:none!important;box-shadow:none!important}.toolbar-left.svelte-dnwsps .select-trigger:hover{background:var(--color-bg-hover)!important}.entity-count.svelte-dnwsps{font-size:13px;color:var(--color-text-tertiary)}.toolbar-center.svelte-dnwsps{display:flex;justify-content:center;align-items:center;gap:4px}.nav-btn.svelte-dnwsps{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:4px;background:transparent;color:var(--color-text-secondary);cursor:pointer}.nav-btn.svelte-dnwsps:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.today-btn.svelte-dnwsps{font-size:13px;font-family:inherit;color:var(--color-text-tertiary);background:none;border:none;cursor:pointer;padding:0 4px}.today-btn.svelte-dnwsps:hover{color:var(--color-text-secondary)}.toolbar-right.svelte-dnwsps{display:flex;align-items:center;justify-content:flex-end;gap:8px}.toolbar-sep.svelte-dnwsps{color:var(--color-text-tertiary);opacity:.4;font-size:13px}.month-label.svelte-dnwsps{font-size:13px;font-weight:400;color:var(--color-text-primary);min-width:120px;text-align:center}.calendar-grid.svelte-dnwsps{flex:1;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:auto;grid-auto-rows:1fr;min-height:0;overflow-y:auto}.dow-header.svelte-dnwsps{display:flex;align-items:center;justify-content:center;height:var(--row-height);font-size:10px;font-weight:400;color:var(--color-text-tertiary);text-transform:uppercase;letter-spacing:.1em;border-bottom:1px solid var(--color-border)}.calendar-day.svelte-dnwsps{min-height:90px;padding:4px 6px;border-right:1px solid var(--color-border);border-bottom:1px solid var(--color-border);display:flex;flex-direction:column;gap:2px;min-width:0;overflow:hidden}.calendar-day.svelte-dnwsps:nth-child(7n+7){border-right:none}.calendar-day.svelte-dnwsps:nth-last-child(-n+7){border-bottom:none}.calendar-day.outside-month.svelte-dnwsps .day-number:where(.svelte-dnwsps){color:var(--color-text-tertiary)}.calendar-day.today.svelte-dnwsps{background:var(--color-bg-surface)}.calendar-day.drop-target.svelte-dnwsps{background:var(--color-bg-hover);outline:1px solid var(--color-accent);outline-offset:-1px}.day-number.svelte-dnwsps{font-size:12px;color:var(--color-text-tertiary);padding:1px 4px;line-height:1;margin-bottom:2px}.today-number.svelte-dnwsps{font-weight:600;color:var(--color-text-primary)}.day-entities.svelte-dnwsps{display:flex;flex-direction:column;gap:1px;overflow:hidden}.entity-chip.svelte-dnwsps{display:flex;align-items:center;gap:4px;padding:2px 6px;border:none;border-radius:3px;font-family:inherit;font-size:12px;cursor:pointer;overflow:hidden;white-space:nowrap;text-align:left;transition:filter .1s;position:relative}.entity-chip.svelte-dnwsps:hover{background:var(--chip-hover-bg)!important}.chip-dot.svelte-dnwsps{width:5px;height:5px;border-radius:50%;flex-shrink:0}.floating-tooltip.svelte-dnwsps{position:fixed;padding:6px 10px;border-radius:6px;background:var(--color-bg-elevated);border:1px solid var(--color-border);box-shadow:0 8px 24px #00000040;z-index:1000;pointer-events:none;display:flex;flex-direction:column;gap:2px;min-width:160px;max-width:260px}.tooltip-title.svelte-dnwsps{font-size:13px;font-weight:600;color:var(--color-text-primary)}.tooltip-meta.svelte-dnwsps{font-size:13px;color:var(--color-text-tertiary)}.chip-label.svelte-dnwsps{flex:1;min-width:0;overflow:hidden;-webkit-mask-image:linear-gradient(to right,black calc(100% - 12px),transparent);mask-image:linear-gradient(to right,black calc(100% - 12px),transparent)}.more-label.svelte-dnwsps{font-size:12px;font-family:inherit;color:var(--color-text-tertiary);background:none;border:none;padding:0 6px;cursor:pointer;text-align:left}.more-label.svelte-dnwsps:hover{color:var(--color-text-secondary)}.overflow-backdrop.svelte-dnwsps{position:fixed;inset:0;z-index:999}.overflow-popover.svelte-dnwsps{position:fixed;z-index:1000;background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 8px 24px #00000040;width:260px;max-height:320px;display:flex;flex-direction:column}.overflow-list.svelte-dnwsps{overflow-y:auto;padding:4px}.overflow-item.svelte-dnwsps{display:flex;align-items:center;gap:6px;width:100%;padding:6px 8px;border:none;border-radius:4px;background:transparent;font-family:inherit;font-size:14px;color:var(--color-text-primary);cursor:pointer;text-align:left}.overflow-item.svelte-dnwsps:hover{background:var(--color-bg-hover)}.overflow-item-title.svelte-dnwsps{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-item-type.svelte-dnwsps{font-size:12px;color:var(--color-text-tertiary);flex-shrink:0}.empty.svelte-dnwsps{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--color-text-tertiary);font-size:14px}.empty-hint.svelte-dnwsps{font-size:13px;color:var(--color-text-tertiary)}
@@ -0,0 +1 @@
1
+ .tab-bar.svelte-r6dy5f{height:var(--row-height);flex-shrink:0;display:flex;align-items:stretch;position:relative}.tab-bar.svelte-r6dy5f:after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:var(--color-border);z-index:0}.tabs-scroll.svelte-r6dy5f{flex:1;display:flex;align-items:stretch;overflow-x:auto;scrollbar-width:none;min-width:0}.tabs-scroll.svelte-r6dy5f::-webkit-scrollbar{display:none}.tab.svelte-r6dy5f{display:inline-flex;align-items:center;gap:6px;padding:0 8px 0 24px;border:none;border-right:1px solid var(--color-border);background:transparent;color:var(--color-text-tertiary);font-family:inherit;font-size:13px;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:color .1s,background .1s}.tab.svelte-r6dy5f:hover{color:var(--color-text-secondary);background:var(--color-bg-hover)}.tab.active.svelte-r6dy5f{color:var(--color-text-primary);background:var(--color-bg);z-index:1;padding-bottom:1px;margin-bottom:-1px}.tab-permanent.svelte-r6dy5f{padding-right:24px}.tab-label.svelte-r6dy5f{max-width:160px;overflow:hidden;text-overflow:ellipsis}.tab-close.svelte-r6dy5f{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:3px;color:var(--color-text-tertiary);flex-shrink:0;transition:color .1s,background .1s}.tab-close.svelte-r6dy5f:hover{color:var(--color-text-primary);background:var(--color-bg-hover)}.tab-rename-input.svelte-r6dy5f{height:100%;padding:0;margin:0;border:none;background:transparent;color:var(--color-text-primary);font-family:inherit;font-size:13px;outline:none;width:auto;min-width:1ch}.new-view-btn{all:unset;display:inline-flex;align-items:center;gap:4px;padding:0 16px;color:var(--color-text-tertiary);font-family:inherit;font-size:13px;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:color .1s}.new-view-btn:hover{color:var(--color-text-secondary)}.bar-right.svelte-r6dy5f{display:flex;align-items:center;gap:8px;padding:0 8px;flex-shrink:0}.bar-right.svelte-r6dy5f .chat-toggle{width:28px;height:28px;border-radius:6px}.add-view-menu{background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:6px;box-shadow:0 4px 12px #00000026;padding:4px;min-width:120px;z-index:50}.add-view-option.svelte-r6dy5f{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;border:none;border-radius:4px;background:transparent;color:var(--color-text-primary);font-family:inherit;font-size:13px;cursor:pointer}.add-view-option.svelte-r6dy5f:hover{background:var(--color-bg-hover)}
@@ -0,0 +1 @@
1
+ import{c as m,a,f as l}from"./iDtAARVW.js";import{h as w}from"./CT6oIU-C.js";import{i as n}from"./72bZS3G9.js";import{p as d}from"./cLyZlkXv.js";import{L as b,T as k}from"./CHCEuAb1.js";import{t as y}from"./j4ZUlZ9A.js";import{u as S}from"./j4ZUlZ9A.js";var u=l('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" height="20" width="20"><path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd"></path></svg>'),x=l('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" height="20" width="20"><path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z" clip-rule="evenodd"></path></svg>'),_=l('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" height="20" width="20"><path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z" clip-rule="evenodd"></path></svg>'),z=l('<svg viewBox="0 0 64 64" fill="currentColor" height="20" width="20" xmlns="http://www.w3.org/2000/svg"><path d="M32.427,7.987c2.183,0.124 4,1.165 5.096,3.281l17.936,36.208c1.739,3.66 -0.954,8.585 -5.373,8.656l-36.119,0c-4.022,-0.064 -7.322,-4.631 -5.352,-8.696l18.271,-36.207c0.342,-0.65 0.498,-0.838 0.793,-1.179c1.186,-1.375 2.483,-2.111 4.748,-2.063Zm-0.295,3.997c-0.687,0.034 -1.316,0.419 -1.659,1.017c-6.312,11.979 -12.397,24.081 -18.301,36.267c-0.546,1.225 0.391,2.797 1.762,2.863c12.06,0.195 24.125,0.195 36.185,0c1.325,-0.064 2.321,-1.584 1.769,-2.85c-5.793,-12.184 -11.765,-24.286 -17.966,-36.267c-0.366,-0.651 -0.903,-1.042 -1.79,-1.03Z"></path><path d="M33.631,40.581l-3.348,0l-0.368,-16.449l4.1,0l-0.384,16.449Zm-3.828,5.03c0,-0.609 0.197,-1.113 0.592,-1.514c0.396,-0.4 0.935,-0.601 1.618,-0.601c0.684,0 1.223,0.201 1.618,0.601c0.395,0.401 0.593,0.905 0.593,1.514c0,0.587 -0.193,1.078 -0.577,1.473c-0.385,0.395 -0.929,0.593 -1.634,0.593c-0.705,0 -1.249,-0.198 -1.634,-0.593c-0.384,-0.395 -0.576,-0.886 -0.576,-1.473Z"></path></svg>');function H(s,v){const t=d(v,"type",3,"success");var e=m(),c=w(e);{var i=o=>{var r=u();a(o,r)},p=o=>{var r=x();a(o,r)},h=o=>{var r=_();a(o,r)},g=o=>{var r=z();a(o,r)},f=o=>{};n(c,o=>{t()==="success"?o(i):t()==="error"?o(p,1):t()==="info"?o(h,2):t()==="warning"?o(g,3):o(f,!1)})}a(s,e)}export{H as Icon,b as Loader,k as Toaster,y as toast,S as useSonner};
@@ -0,0 +1 @@
1
+ import{S as A,Z as u,T as k,j as _,I as v,F as g,o as l,A as T,ay as m,K as S,k as w,w as E,$ as R,x as F,a0 as M,H as x,y as D,q as I,z as b,az as N,aA as B,a6 as H,V as O,at as Y}from"./CT6oIU-C.js";class q{anchor;#e=new Map;#t=new Map;#s=new Map;#a=new Set;#i=!0;constructor(s,t=!0){this.anchor=s,this.#i=t}#r=s=>{if(this.#e.has(s)){var t=this.#e.get(s),a=this.#t.get(t);if(a)A(a),this.#a.delete(t);else{var i=this.#s.get(t);i&&(this.#t.set(t,i.effect),this.#s.delete(t),i.fragment.lastChild.remove(),this.anchor.before(i.fragment),a=i.effect)}for(const[e,f]of this.#e){if(this.#e.delete(e),e===s)break;const r=this.#s.get(f);r&&(u(r.effect),this.#s.delete(f))}for(const[e,f]of this.#t){if(e===t||this.#a.has(e))continue;const r=()=>{if(Array.from(this.#e.values()).includes(e)){var h=document.createDocumentFragment();m(f,h),h.append(_()),this.#s.set(e,{effect:f,fragment:h})}else u(f);this.#a.delete(e),this.#t.delete(e)};this.#i||!a?(this.#a.add(e),k(f,r,!1)):r()}}};#f=s=>{this.#e.delete(s);const t=Array.from(this.#e.values());for(const[a,i]of this.#s)t.includes(a)||(u(i.effect),this.#s.delete(a))};ensure(s,t){var a=g,i=S();if(t&&!this.#t.has(s)&&!this.#s.has(s))if(i){var e=document.createDocumentFragment(),f=_();e.append(f),this.#s.set(s,{effect:v(()=>t(f)),fragment:e})}else this.#t.set(s,v(()=>t(this.anchor)));if(this.#e.set(a,s),i){for(const[r,c]of this.#t)r===s?a.unskip_effect(c):a.skip_effect(c);for(const[r,c]of this.#s)r===s?a.unskip_effect(c.effect):a.skip_effect(c.effect);a.oncommit(this.#r),a.ondiscard(this.#f)}else l&&(this.anchor=T),this.#r(a)}}function z(n,s,t=!1){var a;l&&(a=T,E());var i=new q(n),e=t?R:0;function f(r,c){if(l){var h=F(a),o;if(h===M?o=0:h===x?o=!1:o=parseInt(h.substring(1)),r!==o){var d=D();I(d),i.anchor=d,b(!1),i.ensure(r,c),b(!0);return}}i.ensure(r,c)}w(()=>{var r=!1;s((c,h=0)=>{r=!0,f(h,c)}),r||f(!1,null)},e)}function p(n,s){return n===s||n?.[Y]===s}function C(n={},s,t,a){return N(()=>{var i,e;return B(()=>{i=e,e=[],H(()=>{n!==t(...e)&&(s(n,...e),i&&p(t(...i),n)&&s(null,...i))})}),()=>{O(()=>{e&&p(t(...e),n)&&s(null,...e)})}}),n}export{q as B,C as b,z as i};
@@ -1,2 +1,2 @@
1
- import{n as L,o as m,U as E,p as M,q as P,s as z,u as H,v as J,x as C,y as p,z as S}from"./CLFba8FK.js";import{V as T,E as D,a as u,W as N}from"./DnL9f0lc.js";import{EditorSelection as U,Facet as V,Annotation as I,RangeSet as W}from"./CX_61fY8.js";class O{constructor(e,t){this.yanchor=e,this.yhead=t}toJSON(){return{yanchor:L(this.yanchor),yhead:L(this.yhead)}}static fromJSON(e){return new O(m(e.yanchor),m(e.yhead))}}class q{constructor(e,t){this.ytext=e,this.awareness=t,this.undoManager=new E(e)}toYPos(e,t=0){return M(this.ytext,e,t)}fromYPos(e){const t=P(m(e),this.ytext.doc);if(t==null||t.type!==this.ytext)throw new Error("[y-codemirror] The position you want to retrieve was created by a different document");return{pos:t.index,assoc:t.assoc}}toYRange(e){const t=e.assoc,n=this.toYPos(e.anchor,t),s=this.toYPos(e.head,t);return new O(n,s)}fromYRange(e){const t=this.fromYPos(e.yanchor),n=this.fromYPos(e.yhead);return t.pos===n.pos?U.cursor(n.pos,n.assoc):U.range(t.pos,n.pos)}}const b=V.define({combine(o){return o[o.length-1]}}),R=I.define();class B{constructor(e){this.view=e,this.conf=e.state.facet(b),this._observer=(t,n)=>{if(n.origin!==this.conf){const s=t.delta,i=[];let r=0;for(let c=0;c<s.length;c++){const a=s[c];a.insert!=null?i.push({from:r,to:r,insert:a.insert}):a.delete!=null?(i.push({from:r,to:r+a.delete,insert:""}),r+=a.delete):r+=a.retain}e.dispatch({changes:i,annotations:[R.of(this.conf)]})}},this._ytext=this.conf.ytext,this._ytext.observe(this._observer)}update(e){if(!e.docChanged||e.transactions.length>0&&e.transactions[0].annotation(R)===this.conf)return;const t=this.conf.ytext;t.doc.transact(()=>{let n=0;e.changes.iterChanges((s,i,r,c,a)=>{const l=a.sliceString(0,a.length,`
2
- `);s!==i&&t.delete(s+n,i-s),l.length>0&&t.insert(s+n,l),n+=l.length-(i-s)})},this.conf)}destroy(){this._ytext.unobserve(this._observer)}}const K=T.fromClass(B),j=D.baseTheme({".cm-ySelection":{},".cm-yLineSelection":{padding:0,margin:"0px 2px 0px 4px"},".cm-ySelectionCaret":{position:"relative",borderLeft:"1px solid black",borderRight:"1px solid black",marginLeft:"-1px",marginRight:"-1px",boxSizing:"border-box",display:"inline"},".cm-ySelectionCaretDot":{borderRadius:"50%",position:"absolute",width:".4em",height:".4em",top:"-.2em",left:"-.2em",backgroundColor:"inherit",transition:"transform .3s ease-in-out",boxSizing:"border-box"},".cm-ySelectionCaret:hover > .cm-ySelectionCaretDot":{transformOrigin:"bottom center",transform:"scale(0)"},".cm-ySelectionInfo":{position:"absolute",top:"-1.05em",left:"-1px",fontSize:".75em",fontFamily:"serif",fontStyle:"normal",fontWeight:"normal",lineHeight:"normal",userSelect:"none",color:"white",paddingLeft:"2px",paddingRight:"2px",zIndex:101,transition:"opacity .3s ease-in-out",backgroundColor:"inherit",opacity:0,transitionDelay:"0s",whiteSpace:"nowrap"},".cm-ySelectionCaret:hover > .cm-ySelectionInfo":{opacity:1,transitionDelay:"0s"}}),G=I.define();class Q extends N{constructor(e,t){super(),this.color=e,this.name=t}toDOM(){return C("span",[S("class","cm-ySelectionCaret"),S("style",`background-color: ${this.color}; border-color: ${this.color}`)],[p("⁠"),C("div",[S("class","cm-ySelectionCaretDot")]),p("⁠"),C("div",[S("class","cm-ySelectionInfo")],[p(this.name)]),p("⁠")])}eq(e){return e.color===this.color}compare(e){return e.color===this.color}updateDOM(){return!1}get estimatedHeight(){return-1}ignoreEvent(){return!0}}class X{constructor(e){this.conf=e.state.facet(b),this._listener=({added:t,updated:n,removed:s},i,r)=>{t.concat(n).concat(s).findIndex(a=>a!==this.conf.awareness.doc.clientID)>=0&&e.dispatch({annotations:[G.of([])]})},this._awareness=this.conf.awareness,this._awareness.on("change",this._listener),this.decorations=W.of([])}destroy(){this._awareness.off("change",this._listener)}update(e){const t=this.conf.ytext,n=t.doc,s=this.conf.awareness,i=[],r=this.conf.awareness.getLocalState();if(r!=null){const c=e.view.hasFocus&&e.view.dom.ownerDocument.hasFocus(),a=c?e.state.selection.main:null,l=r.cursor==null?null:m(r.cursor.anchor),d=r.cursor==null?null:m(r.cursor.head);if(a!=null){const h=M(t,a.anchor),f=M(t,a.head);(r.cursor==null||!z(l,h)||!z(d,f))&&s.setLocalStateField("cursor",{anchor:h,head:f})}else r.cursor!=null&&c&&s.setLocalStateField("cursor",null)}s.getStates().forEach((c,a)=>{if(a===s.doc.clientID)return;const l=c.cursor;if(l==null||l.anchor==null||l.head==null)return;const d=P(l.anchor,n),h=P(l.head,n);if(d==null||h==null||d.type!==t||h.type!==t)return;const{color:f="#30bced",name:$="Anonymous"}=c.user||{},y=c.user&&c.user.colorLight||f+"33",k=H(d.index,h.index),_=J(d.index,h.index),g=e.view.state.doc.lineAt(k),v=e.view.state.doc.lineAt(_);if(g.number===v.number)i.push({from:k,to:_,value:u.mark({attributes:{style:`background-color: ${y}`},class:"cm-ySelection"})});else{i.push({from:k,to:g.from+g.length,value:u.mark({attributes:{style:`background-color: ${y}`},class:"cm-ySelection"})}),i.push({from:v.from,to:_,value:u.mark({attributes:{style:`background-color: ${y}`},class:"cm-ySelection"})});for(let w=g.number+1;w<v.number;w++){const F=e.view.state.doc.line(w).from;i.push({from:F,to:F,value:u.line({attributes:{style:`background-color: ${y}`,class:"cm-yLineSelection"}})})}}i.push({from:h.index,to:h.index,value:u.widget({side:h.index-d.index>0?-1:1,block:!1,widget:new Q(f,$)})})}),this.decorations=u.set(i,!0)}}const Z=T.fromClass(X,{decorations:o=>o.decorations}),ee=()=>{let o=!0;return(e,t)=>{if(o){o=!1;try{e()}finally{o=!0}}else t!==void 0&&t()}};class te{constructor(e){this.undoManager=e}addTrackedOrigin(e){this.undoManager.addTrackedOrigin(e)}removeTrackedOrigin(e){this.undoManager.removeTrackedOrigin(e)}undo(){return this.undoManager.undo()!=null}redo(){return this.undoManager.redo()!=null}}const x=V.define({combine(o){return o[o.length-1]}});I.define();class oe{constructor(e){this.view=e,this.conf=e.state.facet(x),this._undoManager=this.conf.undoManager,this.syncConf=e.state.facet(b),this._beforeChangeSelection=null,this._mux=ee(),this._onStackItemAdded=({stackItem:t,changedParentTypes:n})=>{n.has(this.syncConf.ytext)&&this._beforeChangeSelection&&!t.meta.has(this)&&t.meta.set(this,this._beforeChangeSelection)},this._onStackItemPopped=({stackItem:t})=>{const n=t.meta.get(this);if(n){const s=this.syncConf.fromYRange(n);e.dispatch(e.state.update({selection:s,effects:[D.scrollIntoView(s)]})),this._storeSelection()}},this._storeSelection=()=>{this._beforeChangeSelection=this.syncConf.toYRange(this.view.state.selection.main)},this._undoManager.on("stack-item-added",this._onStackItemAdded),this._undoManager.on("stack-item-popped",this._onStackItemPopped),this._undoManager.addTrackedOrigin(this.syncConf)}update(e){e.selectionSet&&(e.transactions.length===0||e.transactions[0].annotation(R)!==this.syncConf)&&this._storeSelection()}destroy(){this._undoManager.off("stack-item-added",this._onStackItemAdded),this._undoManager.off("stack-item-popped",this._onStackItemPopped),this._undoManager.removeTrackedOrigin(this.syncConf)}}const ne=T.fromClass(oe),A=({state:o,dispatch:e})=>o.facet(x).undo()||!0,Y=({state:o,dispatch:e})=>o.facet(x).redo()||!0,ae=[{key:"Mod-z",run:A,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Y,preventDefault:!0},{key:"Mod-Shift-z",run:Y,preventDefault:!0}],ce=(o,e,{undoManager:t=new E(o)}={})=>{const n=new q(o,e),s=[b.of(n),K];return e&&s.push(j,Z),t!==!1&&s.push(x.of(new te(t)),ne,D.domEventHandlers({beforeinput(i,r){return i.inputType==="historyUndo"?A(r):i.inputType==="historyRedo"?Y(r):!1}})),s};export{O as YRange,q as YSyncConfig,ce as yCollab,Z as yRemoteSelections,j as yRemoteSelectionsTheme,K as ySync,b as ySyncFacet,ae as yUndoManagerKeymap};
1
+ import{n as L,o as m,U as A,q as M,s as P,u as z,v as H,x as J,y as C,z as p,A as S}from"./CSVbGg_b.js";import{V as T,E as D,a as u,W as N}from"./DnL9f0lc.js";import{EditorSelection as U,Facet as E,Annotation as I,RangeSet as W}from"./CX_61fY8.js";class O{constructor(e,t){this.yanchor=e,this.yhead=t}toJSON(){return{yanchor:L(this.yanchor),yhead:L(this.yhead)}}static fromJSON(e){return new O(m(e.yanchor),m(e.yhead))}}class q{constructor(e,t){this.ytext=e,this.awareness=t,this.undoManager=new A(e)}toYPos(e,t=0){return M(this.ytext,e,t)}fromYPos(e){const t=P(m(e),this.ytext.doc);if(t==null||t.type!==this.ytext)throw new Error("[y-codemirror] The position you want to retrieve was created by a different document");return{pos:t.index,assoc:t.assoc}}toYRange(e){const t=e.assoc,n=this.toYPos(e.anchor,t),s=this.toYPos(e.head,t);return new O(n,s)}fromYRange(e){const t=this.fromYPos(e.yanchor),n=this.fromYPos(e.yhead);return t.pos===n.pos?U.cursor(n.pos,n.assoc):U.range(t.pos,n.pos)}}const b=E.define({combine(o){return o[o.length-1]}}),R=I.define();class B{constructor(e){this.view=e,this.conf=e.state.facet(b),this._observer=(t,n)=>{if(n.origin!==this.conf){const s=t.delta,i=[];let r=0;for(let c=0;c<s.length;c++){const a=s[c];a.insert!=null?i.push({from:r,to:r,insert:a.insert}):a.delete!=null?(i.push({from:r,to:r+a.delete,insert:""}),r+=a.delete):r+=a.retain}e.dispatch({changes:i,annotations:[R.of(this.conf)]})}},this._ytext=this.conf.ytext,this._ytext.observe(this._observer)}update(e){if(!e.docChanged||e.transactions.length>0&&e.transactions[0].annotation(R)===this.conf)return;const t=this.conf.ytext;t.doc.transact(()=>{let n=0;e.changes.iterChanges((s,i,r,c,a)=>{const l=a.sliceString(0,a.length,`
2
+ `);s!==i&&t.delete(s+n,i-s),l.length>0&&t.insert(s+n,l),n+=l.length-(i-s)})},this.conf)}destroy(){this._ytext.unobserve(this._observer)}}const K=T.fromClass(B),j=D.baseTheme({".cm-ySelection":{},".cm-yLineSelection":{padding:0,margin:"0px 2px 0px 4px"},".cm-ySelectionCaret":{position:"relative",borderLeft:"1px solid black",borderRight:"1px solid black",marginLeft:"-1px",marginRight:"-1px",boxSizing:"border-box",display:"inline"},".cm-ySelectionCaretDot":{borderRadius:"50%",position:"absolute",width:".4em",height:".4em",top:"-.2em",left:"-.2em",backgroundColor:"inherit",transition:"transform .3s ease-in-out",boxSizing:"border-box"},".cm-ySelectionCaret:hover > .cm-ySelectionCaretDot":{transformOrigin:"bottom center",transform:"scale(0)"},".cm-ySelectionInfo":{position:"absolute",top:"-1.05em",left:"-1px",fontSize:".75em",fontFamily:"serif",fontStyle:"normal",fontWeight:"normal",lineHeight:"normal",userSelect:"none",color:"white",paddingLeft:"2px",paddingRight:"2px",zIndex:101,transition:"opacity .3s ease-in-out",backgroundColor:"inherit",opacity:0,transitionDelay:"0s",whiteSpace:"nowrap"},".cm-ySelectionCaret:hover > .cm-ySelectionInfo":{opacity:1,transitionDelay:"0s"}}),G=I.define();class Q extends N{constructor(e,t){super(),this.color=e,this.name=t}toDOM(){return C("span",[S("class","cm-ySelectionCaret"),S("style",`background-color: ${this.color}; border-color: ${this.color}`)],[p("⁠"),C("div",[S("class","cm-ySelectionCaretDot")]),p("⁠"),C("div",[S("class","cm-ySelectionInfo")],[p(this.name)]),p("⁠")])}eq(e){return e.color===this.color}compare(e){return e.color===this.color}updateDOM(){return!1}get estimatedHeight(){return-1}ignoreEvent(){return!0}}class X{constructor(e){this.conf=e.state.facet(b),this._listener=({added:t,updated:n,removed:s},i,r)=>{t.concat(n).concat(s).findIndex(a=>a!==this.conf.awareness.doc.clientID)>=0&&e.dispatch({annotations:[G.of([])]})},this._awareness=this.conf.awareness,this._awareness.on("change",this._listener),this.decorations=W.of([])}destroy(){this._awareness.off("change",this._listener)}update(e){const t=this.conf.ytext,n=t.doc,s=this.conf.awareness,i=[],r=this.conf.awareness.getLocalState();if(r!=null){const c=e.view.hasFocus&&e.view.dom.ownerDocument.hasFocus(),a=c?e.state.selection.main:null,l=r.cursor==null?null:m(r.cursor.anchor),d=r.cursor==null?null:m(r.cursor.head);if(a!=null){const h=M(t,a.anchor),f=M(t,a.head);(r.cursor==null||!z(l,h)||!z(d,f))&&s.setLocalStateField("cursor",{anchor:h,head:f})}else r.cursor!=null&&c&&s.setLocalStateField("cursor",null)}s.getStates().forEach((c,a)=>{if(a===s.doc.clientID)return;const l=c.cursor;if(l==null||l.anchor==null||l.head==null)return;const d=P(l.anchor,n),h=P(l.head,n);if(d==null||h==null||d.type!==t||h.type!==t)return;const{color:f="#30bced",name:$="Anonymous"}=c.user||{},y=c.user&&c.user.colorLight||f+"33",k=H(d.index,h.index),_=J(d.index,h.index),g=e.view.state.doc.lineAt(k),v=e.view.state.doc.lineAt(_);if(g.number===v.number)i.push({from:k,to:_,value:u.mark({attributes:{style:`background-color: ${y}`},class:"cm-ySelection"})});else{i.push({from:k,to:g.from+g.length,value:u.mark({attributes:{style:`background-color: ${y}`},class:"cm-ySelection"})}),i.push({from:v.from,to:_,value:u.mark({attributes:{style:`background-color: ${y}`},class:"cm-ySelection"})});for(let w=g.number+1;w<v.number;w++){const F=e.view.state.doc.line(w).from;i.push({from:F,to:F,value:u.line({attributes:{style:`background-color: ${y}`,class:"cm-yLineSelection"}})})}}i.push({from:h.index,to:h.index,value:u.widget({side:h.index-d.index>0?-1:1,block:!1,widget:new Q(f,$)})})}),this.decorations=u.set(i,!0)}}const Z=T.fromClass(X,{decorations:o=>o.decorations}),ee=()=>{let o=!0;return(e,t)=>{if(o){o=!1;try{e()}finally{o=!0}}else t!==void 0&&t()}};class te{constructor(e){this.undoManager=e}addTrackedOrigin(e){this.undoManager.addTrackedOrigin(e)}removeTrackedOrigin(e){this.undoManager.removeTrackedOrigin(e)}undo(){return this.undoManager.undo()!=null}redo(){return this.undoManager.redo()!=null}}const x=E.define({combine(o){return o[o.length-1]}});I.define();class oe{constructor(e){this.view=e,this.conf=e.state.facet(x),this._undoManager=this.conf.undoManager,this.syncConf=e.state.facet(b),this._beforeChangeSelection=null,this._mux=ee(),this._onStackItemAdded=({stackItem:t,changedParentTypes:n})=>{n.has(this.syncConf.ytext)&&this._beforeChangeSelection&&!t.meta.has(this)&&t.meta.set(this,this._beforeChangeSelection)},this._onStackItemPopped=({stackItem:t})=>{const n=t.meta.get(this);if(n){const s=this.syncConf.fromYRange(n);e.dispatch(e.state.update({selection:s,effects:[D.scrollIntoView(s)]})),this._storeSelection()}},this._storeSelection=()=>{this._beforeChangeSelection=this.syncConf.toYRange(this.view.state.selection.main)},this._undoManager.on("stack-item-added",this._onStackItemAdded),this._undoManager.on("stack-item-popped",this._onStackItemPopped),this._undoManager.addTrackedOrigin(this.syncConf)}update(e){e.selectionSet&&(e.transactions.length===0||e.transactions[0].annotation(R)!==this.syncConf)&&this._storeSelection()}destroy(){this._undoManager.off("stack-item-added",this._onStackItemAdded),this._undoManager.off("stack-item-popped",this._onStackItemPopped),this._undoManager.removeTrackedOrigin(this.syncConf)}}const ne=T.fromClass(oe),V=({state:o,dispatch:e})=>o.facet(x).undo()||!0,Y=({state:o,dispatch:e})=>o.facet(x).redo()||!0,ae=[{key:"Mod-z",run:V,preventDefault:!0},{key:"Mod-y",mac:"Mod-Shift-z",run:Y,preventDefault:!0},{key:"Mod-Shift-z",run:Y,preventDefault:!0}],ce=(o,e,{undoManager:t=new A(o)}={})=>{const n=new q(o,e),s=[b.of(n),K];return e&&s.push(j,Z),t!==!1&&s.push(x.of(new te(t)),ne,D.domEventHandlers({beforeinput(i,r){return i.inputType==="historyUndo"?V(r):i.inputType==="historyRedo"?Y(r):!1}})),s};export{O as YRange,q as YSyncConfig,ce as yCollab,Z as yRemoteSelections,j as yRemoteSelectionsTheme,K as ySync,b as ySyncFacet,ae as yUndoManagerKeymap};
@@ -0,0 +1 @@
1
+ import{s as e}from"./CNaKDtJn.js";const r=()=>{const s=e;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},b={subscribe(s){return r().page.subscribe(s)}};export{b as p};
@@ -1,4 +1,4 @@
1
- import{e as h,f as U,s as a,g as t,aw as x}from"./DSh-OF2y.js";import{i as L,g as V}from"./C0v9FrTH.js";import{n as y}from"./HVmKTSmh.js";import{w as W}from"./Cc0c675R.js";function X(g,c,o){fetch("/api/chat/stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g),signal:o}).then(async n=>{if(!n.ok){c({type:"error",message:`HTTP ${n.status}`});return}const r=n.body?.getReader();if(!r){c({type:"error",message:"No response body"});return}const p=new TextDecoder;let m="";for(;;){const{done:k,value:O}=await r.read();if(k)break;m+=p.decode(O,{stream:!0});const A=m.split(`
1
+ import{e as h,f as U,s as a,g as t,av as x}from"./CT6oIU-C.js";import{i as L,g as V}from"./CNaKDtJn.js";import{n as y}from"./D_2DWVrt.js";import{w as W}from"./CDcXSODb.js";function X(g,c,o){fetch("/api/chat/stream",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(g),signal:o}).then(async n=>{if(!n.ok){c({type:"error",message:`HTTP ${n.status}`});return}const r=n.body?.getReader();if(!r){c({type:"error",message:"No response body"});return}const p=new TextDecoder;let m="";for(;;){const{done:k,value:O}=await r.read();if(k)break;m+=p.decode(O,{stream:!0});const A=m.split(`
2
2
  `);m=A.pop()??"";for(const C of A)if(C.startsWith("data: "))try{const f=JSON.parse(C.slice(6));c(f)}catch{}}}).catch(n=>{n.name!=="AbortError"&&c({type:"error",message:n.message})})}const D="sg-chat-sessions",J="sg-chat-version",z=14;function b(){try{const g=localStorage.getItem(D);if(!g)return[];if(localStorage.getItem(J)==="2")return JSON.parse(g);const n=JSON.parse(g).map(r=>({id:crypto.randomUUID(),createdAt:r.date+"T00:00:00.000Z",updatedAt:r.date+"T00:00:00.000Z",title:r.messages.find(p=>p.role==="user")?.content.slice(0,50)||"New chat",messages:r.messages}));return localStorage.setItem(D,JSON.stringify(n)),localStorage.setItem(J,"2"),n}catch{return[]}}function _(g){const o=[...g].sort((n,r)=>r.updatedAt.localeCompare(n.updatedAt)).slice(0,z);try{localStorage.setItem(D,JSON.stringify(o)),localStorage.setItem(J,"2")}catch{}}function N(g,c){const o=b(),n=c.map(({streaming:p,...m})=>m),r=o.findIndex(p=>p.id===g);r>=0&&(o[r].messages=n,o[r].updatedAt=new Date().toISOString()),_(o)}function B(){const c=b().sort((e,i)=>i.updatedAt.localeCompare(e.updatedAt))[0];let o=h(U(c?c.messages.map(e=>({...e,streaming:!1})):[])),n=h(U(c?.id??null)),r=h(!1),p=h(0),m=h(0),k=h(0),O=h(null),A=null,C=h(""),f=h(U(!!c));const R=new Set(["create_entity","update_entity","delete_entity","move_entity"]);function M(){$();const e=crypto.randomUUID();a(n,e,!0),a(o,[],!0),a(f,!1)}function E(){if(t(n)&&t(f))return t(n);const e=t(n)||crypto.randomUUID();a(n,e,!0);const i=new Date().toISOString(),d=b();return d.push({id:e,createdAt:i,updatedAt:i,title:"New chat",messages:[]}),_(d),a(f,!0),e}function K(e){if(!e.trim()||t(r))return;a(O,null);const i=E();t(o).push({role:"user",content:e}),t(o).push({role:"agent",content:"",segments:[],streaming:!0}),a(r,!0);const d=b(),l=d.find(s=>s.id===i);l&&l.title==="New chat"&&(l.title=e.slice(0,50),_(d)),N(i,t(o));let T=!1,w=null;A=new AbortController;const G=y.selectedSubPath?`${y.selectedRepo}/${y.selectedType}/${y.selectedId}/${y.selectedSubPath}`:y.selectedId?`${y.selectedRepo}/${y.selectedType}/${y.selectedId}`:null,P=t(o).slice(0,-2).map(s=>({role:s.role==="agent"?"assistant":s.role,content:s.content})),H={message:e,context:G??void 0,sessionId:i,history:P.length>0?P:void 0};X(H,s=>{if(!t(r))return;const u=t(o)[t(o).length-1];if(!u||u.role!=="agent")return;const S=u.segments;switch(s.type){case"token":{u.content+=s.text??"";const I=S[S.length-1];I&&I.type==="text"?I.content+=s.text??"":S.push({type:"text",content:s.text??""}),u.segments=S,x(m);break}case"tool_start":if(s.name){R.has(s.name)&&(T=!0);const I=S[S.length-1];I&&I.type==="tools"?I.names=[...I.names,s.name]:S.push({type:"tools",names:[s.name]}),u.segments=S,x(m)}break;case"mutation":T=!0,s.action==="created"&&s.repo&&s.entityType&&s.entityId&&(w={repo:s.repo,entityType:s.entityType,entityId:s.entityId}),window.StudioChrome?.emitMutation?.({action:s.action,repo:s.repo,entityType:s.entityType,entityId:s.entityId});break;case"highlight":a(O,s.entityIds&&s.entityIds.length>0?new Set(s.entityIds):null,!0);break;case"done":s.message&&!u.content&&(u.content=s.message,u.segments=[{type:"text",content:s.message}]),u.streaming=!1,a(r,!1),N(i,t(o)),T&&(L().then(()=>{x(p)}),W.refreshAll().then(()=>{w&&V(`/${w.repo}/${w.entityType}/${w.entityId}`)}));break;case"error":u.content+=`
3
3
 
4
4
  Error: ${s.message}`,u.streaming=!1,a(r,!1),N(i,t(o));break}},A.signal)}function $(){if(!t(r))return;fetch("/api/chat/abort",{method:"POST",credentials:"include"}).catch(()=>{}),A?.abort(),A=null,a(r,!1);const e=t(o)[t(o).length-1];e?.streaming&&(e.streaming=!1,t(n)&&N(t(n),t(o)))}function Y(){$(),a(o,[],!0),t(n)&&t(f)&&N(t(n),t(o))}function Z(e){const d=b().filter(l=>l.id!==e);if(_(d),t(n)===e){const l=d.sort((T,w)=>w.updatedAt.localeCompare(T.updatedAt));l.length>0?(a(n,l[0].id,!0),a(o,l[0].messages.map(T=>({...T,streaming:!1})),!0),a(f,!0)):(a(n,null),a(o,[],!0),a(f,!1))}}function j(e){const d=b().find(l=>l.id===e);d&&($(),a(n,d.id,!0),a(o,d.messages.map(l=>({...l,streaming:!1})),!0),a(f,!0))}function q(){return b().sort((e,i)=>i.updatedAt.localeCompare(e.updatedAt)).map(e=>({id:e.id,title:e.title,createdAt:e.createdAt,updatedAt:e.updatedAt,preview:e.messages.find(i=>i.role==="user")?.content.slice(0,80)||"",count:e.messages.length,active:e.id===t(n)}))}return{get messages(){return t(o)},get streaming(){return t(r)},get mutationCount(){return t(p)},get scrollTick(){return t(m)},get forceScroll(){return t(k)},triggerScroll(){x(k)},get highlightedIds(){return t(O)},get activeSessionId(){return t(n)},get draftInput(){return t(C)},set draftInput(e){a(C,e,!0)},send:K,stop:$,clear:Y,newSession:M,deleteSession:Z,getSessions:q,loadSession:j}}const te=B();export{te as chatStore};