studiograph 1.3.48-next.21 → 1.3.48-next.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/tools/message-tools.js +7 -3
- package/dist/agent/tools/message-tools.js.map +1 -1
- package/dist/server/routes/messages-api.js +134 -2
- package/dist/server/routes/messages-api.js.map +1 -1
- package/dist/server/ws-hub.d.ts +23 -4
- package/dist/server/ws-hub.js +4 -0
- package/dist/server/ws-hub.js.map +1 -1
- package/dist/services/message-service.d.ts +40 -5
- package/dist/services/message-service.js +154 -6
- package/dist/services/message-service.js.map +1 -1
- package/dist/web/_app/immutable/assets/2.BT_zrekP.css +1 -0
- package/dist/web/_app/immutable/chunks/BA905oIh.js +2 -0
- package/dist/web/_app/immutable/chunks/{BGk8kfOE.js → C2yWcTgh.js} +2 -2
- package/dist/web/_app/immutable/chunks/{BFNNbCAM.js → C50QlEfb.js} +1 -1
- package/dist/web/_app/immutable/chunks/{BIBCr278.js → CBxCHi8W.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DY8-EONP.js → CE5FBajK.js} +1 -1
- package/dist/web/_app/immutable/chunks/{-jG4Obyh.js → Ceu9tef6.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DujahU3W.js → CzvyORji.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CDRHrs0g.js → DDbu87xK.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CWyU-seV.js → DHouWzJA.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CPne482a.js → DKVwX-g0.js} +1 -1
- package/dist/web/_app/immutable/chunks/{pBTf4stg.js → DeTlzd-_.js} +1 -1
- package/dist/web/_app/immutable/chunks/{BzJTZOK2.js → DgdJAo4A.js} +1 -1
- package/dist/web/_app/immutable/chunks/{BEn6N5c2.js → YxOzuzo0.js} +1 -1
- package/dist/web/_app/immutable/chunks/{CN5_py1I.js → hKIlbeTO.js} +1 -1
- package/dist/web/_app/immutable/chunks/{DKaafS50.js → tlhR7r2b.js} +1 -1
- package/dist/web/_app/immutable/entry/{app.ZHiTM8WS.js → app.xtJS_T6-.js} +2 -2
- package/dist/web/_app/immutable/entry/start.CplP4Tta.js +1 -0
- package/dist/web/_app/immutable/nodes/{0.D92Orz8k.js → 0.CXKwjs4U.js} +2 -2
- package/dist/web/_app/immutable/nodes/{1.BMdyglM_.js → 1.DNx5LZv1.js} +1 -1
- package/dist/web/_app/immutable/nodes/{10.BilVDHSL.js → 10.12cppxWZ.js} +1 -1
- package/dist/web/_app/immutable/nodes/{11.CS9E0Hic.js → 11.uVqRL_He.js} +1 -1
- package/dist/web/_app/immutable/nodes/{12.D3BOxYzG.js → 12.Cm9ETZkQ.js} +1 -1
- package/dist/web/_app/immutable/nodes/{13.CClMKYtN.js → 13.CmoH0CCC.js} +1 -1
- package/dist/web/_app/immutable/nodes/2.BVueWdeX.js +267 -0
- package/dist/web/_app/immutable/nodes/{3.C5n5uiWU.js → 3.B7iHCEWu.js} +3 -3
- package/dist/web/_app/immutable/nodes/{4.DcGVvgiL.js → 4.B52sGhtq.js} +3 -3
- package/dist/web/_app/immutable/nodes/{5.DxIjnFQO.js → 5.CNrv7A5m.js} +1 -1
- package/dist/web/_app/immutable/nodes/{6.lkh6kKLj.js → 6.lTIzFo68.js} +1 -1
- package/dist/web/_app/immutable/nodes/{7.Bg7SbfhA.js → 7.Ea5Cjcvm.js} +1 -1
- package/dist/web/_app/immutable/nodes/{8.DcXWCNBE.js → 8.CVTUi9tC.js} +1 -1
- package/dist/web/_app/immutable/nodes/{9.Cefi8Jfm.js → 9.CGLfUHbZ.js} +1 -1
- package/dist/web/_app/version.json +1 -1
- package/dist/web/index.html +6 -6
- package/package.json +1 -1
- package/dist/web/_app/immutable/assets/2.DpQWr6q6.css +0 -1
- package/dist/web/_app/immutable/chunks/UwYfmrPx.js +0 -2
- package/dist/web/_app/immutable/entry/start.C9-FfAVc.js +0 -1
- package/dist/web/_app/immutable/nodes/2.C8KKElPL.js +0 -267
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Message Service
|
|
3
3
|
*
|
|
4
|
-
* SQLite-backed persistence for collection-scoped
|
|
5
|
-
* Database lives at .studiograph/messages.db inside the workspace.
|
|
4
|
+
* SQLite-backed persistence for both collection-scoped and workspace-scoped
|
|
5
|
+
* messaging. Database lives at .studiograph/messages.db inside the workspace.
|
|
6
6
|
* Follows the AuthService pattern (WAL mode, table creation on init).
|
|
7
|
+
*
|
|
8
|
+
* Scope model:
|
|
9
|
+
* - messages.collection = '<name>' → collection-scoped (team chat within a collection)
|
|
10
|
+
* - messages.collection = NULL → workspace-scoped (shared home chat)
|
|
11
|
+
*
|
|
12
|
+
* Read receipts are split across two tables (collection vs. workspace) because
|
|
13
|
+
* the collection read_receipts PK is (user_id, collection); allowing NULL there
|
|
14
|
+
* would break uniqueness semantics.
|
|
7
15
|
*/
|
|
8
16
|
import Database from 'better-sqlite3';
|
|
9
17
|
import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
|
|
@@ -18,10 +26,11 @@ export class MessageService {
|
|
|
18
26
|
const dbPath = join(sgDir, 'messages.db');
|
|
19
27
|
this.db = new Database(dbPath);
|
|
20
28
|
this.db.pragma('journal_mode = WAL');
|
|
29
|
+
// messages.collection is nullable: NULL = workspace-scoped, string = collection-scoped.
|
|
21
30
|
this.db.exec(`
|
|
22
31
|
CREATE TABLE IF NOT EXISTS messages (
|
|
23
32
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
24
|
-
collection TEXT
|
|
33
|
+
collection TEXT,
|
|
25
34
|
user_id INTEGER NOT NULL,
|
|
26
35
|
user_display_name TEXT NOT NULL,
|
|
27
36
|
role TEXT NOT NULL DEFAULT 'user' CHECK(role IN ('user', 'agent')),
|
|
@@ -33,6 +42,9 @@ export class MessageService {
|
|
|
33
42
|
CREATE INDEX IF NOT EXISTS idx_messages_collection_id
|
|
34
43
|
ON messages(collection, id)
|
|
35
44
|
`);
|
|
45
|
+
// Collection read receipts — keyed by (user_id, collection). For workspace
|
|
46
|
+
// read state we use a separate table (workspace_read_receipts) because
|
|
47
|
+
// SQLite does not enforce uniqueness over NULL in a composite PK.
|
|
36
48
|
this.db.exec(`
|
|
37
49
|
CREATE TABLE IF NOT EXISTS read_receipts (
|
|
38
50
|
user_id INTEGER NOT NULL,
|
|
@@ -42,7 +54,14 @@ export class MessageService {
|
|
|
42
54
|
PRIMARY KEY (user_id, collection)
|
|
43
55
|
)
|
|
44
56
|
`);
|
|
45
|
-
|
|
57
|
+
this.db.exec(`
|
|
58
|
+
CREATE TABLE IF NOT EXISTS workspace_read_receipts (
|
|
59
|
+
user_id INTEGER PRIMARY KEY,
|
|
60
|
+
last_read_message_id INTEGER NOT NULL DEFAULT 0,
|
|
61
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
62
|
+
)
|
|
63
|
+
`);
|
|
64
|
+
// Legacy column additions (messages pre-dating reply_to_id/mentions)
|
|
46
65
|
try {
|
|
47
66
|
this.db.exec('ALTER TABLE messages ADD COLUMN reply_to_id INTEGER');
|
|
48
67
|
}
|
|
@@ -51,12 +70,12 @@ export class MessageService {
|
|
|
51
70
|
this.db.exec('ALTER TABLE messages ADD COLUMN mentions TEXT');
|
|
52
71
|
}
|
|
53
72
|
catch { }
|
|
54
|
-
// Notifications
|
|
73
|
+
// Notifications: collection nullable for workspace-wide mentions.
|
|
55
74
|
this.db.exec(`
|
|
56
75
|
CREATE TABLE IF NOT EXISTS notifications (
|
|
57
76
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
58
77
|
user_id INTEGER NOT NULL,
|
|
59
|
-
collection TEXT
|
|
78
|
+
collection TEXT,
|
|
60
79
|
message_id INTEGER NOT NULL,
|
|
61
80
|
mentioner_name TEXT NOT NULL,
|
|
62
81
|
message_preview TEXT NOT NULL,
|
|
@@ -68,9 +87,87 @@ export class MessageService {
|
|
|
68
87
|
CREATE INDEX IF NOT EXISTS idx_notifications_user
|
|
69
88
|
ON notifications(user_id, read, id DESC)
|
|
70
89
|
`);
|
|
90
|
+
// Migrate pre-existing databases that were created with NOT NULL collection.
|
|
91
|
+
// No-op for fresh databases created with the schema above.
|
|
92
|
+
this.migrateCollectionToNullable();
|
|
71
93
|
// Ensure messages.db is gitignored
|
|
72
94
|
this.ensureGitignore(sgDir);
|
|
73
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* If an older database exists with `collection TEXT NOT NULL`, rebuild the
|
|
98
|
+
* table to allow NULL. SQLite has no direct `ALTER COLUMN DROP NOT NULL`, so
|
|
99
|
+
* we do the canonical table-rebuild dance inside a transaction.
|
|
100
|
+
*
|
|
101
|
+
* Safe to run every boot: no-op when the column is already nullable.
|
|
102
|
+
*/
|
|
103
|
+
migrateCollectionToNullable() {
|
|
104
|
+
const isColumnNotNull = (table, column) => {
|
|
105
|
+
const rows = this.db.prepare(`PRAGMA table_info(${table})`).all();
|
|
106
|
+
const col = rows.find(r => r.name === column);
|
|
107
|
+
return col?.notnull === 1;
|
|
108
|
+
};
|
|
109
|
+
if (isColumnNotNull('messages', 'collection')) {
|
|
110
|
+
this.db.exec('BEGIN IMMEDIATE TRANSACTION');
|
|
111
|
+
try {
|
|
112
|
+
this.db.exec(`
|
|
113
|
+
CREATE TABLE messages_new (
|
|
114
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
115
|
+
collection TEXT,
|
|
116
|
+
user_id INTEGER NOT NULL,
|
|
117
|
+
user_display_name TEXT NOT NULL,
|
|
118
|
+
role TEXT NOT NULL DEFAULT 'user' CHECK(role IN ('user', 'agent')),
|
|
119
|
+
content TEXT NOT NULL,
|
|
120
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
121
|
+
reply_to_id INTEGER,
|
|
122
|
+
mentions TEXT
|
|
123
|
+
)
|
|
124
|
+
`);
|
|
125
|
+
this.db.exec(`
|
|
126
|
+
INSERT INTO messages_new (id, collection, user_id, user_display_name, role, content, created_at, reply_to_id, mentions)
|
|
127
|
+
SELECT id, collection, user_id, user_display_name, role, content, created_at, reply_to_id, mentions FROM messages
|
|
128
|
+
`);
|
|
129
|
+
this.db.exec('DROP TABLE messages');
|
|
130
|
+
this.db.exec('ALTER TABLE messages_new RENAME TO messages');
|
|
131
|
+
this.db.exec('CREATE INDEX IF NOT EXISTS idx_messages_collection_id ON messages(collection, id)');
|
|
132
|
+
this.db.exec('COMMIT');
|
|
133
|
+
console.log('[message-service] Migrated messages.collection to nullable');
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
this.db.exec('ROLLBACK');
|
|
137
|
+
throw err;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (isColumnNotNull('notifications', 'collection')) {
|
|
141
|
+
this.db.exec('BEGIN IMMEDIATE TRANSACTION');
|
|
142
|
+
try {
|
|
143
|
+
this.db.exec(`
|
|
144
|
+
CREATE TABLE notifications_new (
|
|
145
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
146
|
+
user_id INTEGER NOT NULL,
|
|
147
|
+
collection TEXT,
|
|
148
|
+
message_id INTEGER NOT NULL,
|
|
149
|
+
mentioner_name TEXT NOT NULL,
|
|
150
|
+
message_preview TEXT NOT NULL,
|
|
151
|
+
read INTEGER NOT NULL DEFAULT 0,
|
|
152
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
153
|
+
)
|
|
154
|
+
`);
|
|
155
|
+
this.db.exec(`
|
|
156
|
+
INSERT INTO notifications_new (id, user_id, collection, message_id, mentioner_name, message_preview, read, created_at)
|
|
157
|
+
SELECT id, user_id, collection, message_id, mentioner_name, message_preview, read, created_at FROM notifications
|
|
158
|
+
`);
|
|
159
|
+
this.db.exec('DROP TABLE notifications');
|
|
160
|
+
this.db.exec('ALTER TABLE notifications_new RENAME TO notifications');
|
|
161
|
+
this.db.exec('CREATE INDEX IF NOT EXISTS idx_notifications_user ON notifications(user_id, read, id DESC)');
|
|
162
|
+
this.db.exec('COMMIT');
|
|
163
|
+
console.log('[message-service] Migrated notifications.collection to nullable');
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
this.db.exec('ROLLBACK');
|
|
167
|
+
throw err;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
74
171
|
/** Post a new message to a collection thread. */
|
|
75
172
|
postMessage(collection, userId, displayName, role, content, replyToId) {
|
|
76
173
|
const stmt = this.db.prepare('INSERT INTO messages (collection, user_id, user_display_name, role, content, reply_to_id) VALUES (?, ?, ?, ?, ?, ?)');
|
|
@@ -154,7 +251,58 @@ export class MessageService {
|
|
|
154
251
|
setMentions(messageId, userIds) {
|
|
155
252
|
this.db.prepare('UPDATE messages SET mentions = ? WHERE id = ?').run(JSON.stringify(userIds), messageId);
|
|
156
253
|
}
|
|
254
|
+
// ── Workspace-scoped messaging (collection IS NULL) ──
|
|
255
|
+
/** Post a new message to the workspace-wide chat. */
|
|
256
|
+
postWorkspaceMessage(userId, displayName, role, content, replyToId) {
|
|
257
|
+
const stmt = this.db.prepare('INSERT INTO messages (collection, user_id, user_display_name, role, content, reply_to_id) VALUES (NULL, ?, ?, ?, ?, ?)');
|
|
258
|
+
const result = stmt.run(userId, displayName, role, content, replyToId ?? null);
|
|
259
|
+
const row = this.db.prepare('SELECT * FROM messages WHERE id = ?').get(result.lastInsertRowid);
|
|
260
|
+
return this.toMessage(row);
|
|
261
|
+
}
|
|
262
|
+
/** Get workspace-wide messages with cursor-based pagination (newest first). */
|
|
263
|
+
getWorkspaceMessages(opts = {}) {
|
|
264
|
+
const limit = Math.min(opts.limit ?? 50, 200);
|
|
265
|
+
let rows;
|
|
266
|
+
if (opts.before) {
|
|
267
|
+
rows = this.db.prepare('SELECT * FROM messages WHERE collection IS NULL AND id < ? ORDER BY id DESC LIMIT ?').all(opts.before, limit);
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
rows = this.db.prepare('SELECT * FROM messages WHERE collection IS NULL ORDER BY id DESC LIMIT ?').all(limit);
|
|
271
|
+
}
|
|
272
|
+
return rows.map(r => this.toMessage(r));
|
|
273
|
+
}
|
|
274
|
+
/** Mark workspace messages as read up to a given message ID (UPSERT). */
|
|
275
|
+
markWorkspaceRead(userId, messageId) {
|
|
276
|
+
this.db.prepare(`
|
|
277
|
+
INSERT INTO workspace_read_receipts (user_id, last_read_message_id, updated_at)
|
|
278
|
+
VALUES (?, ?, datetime('now'))
|
|
279
|
+
ON CONFLICT (user_id)
|
|
280
|
+
DO UPDATE SET
|
|
281
|
+
last_read_message_id = MAX(excluded.last_read_message_id, workspace_read_receipts.last_read_message_id),
|
|
282
|
+
updated_at = excluded.updated_at
|
|
283
|
+
`).run(userId, messageId);
|
|
284
|
+
}
|
|
285
|
+
/** Count unread workspace messages for a user. */
|
|
286
|
+
getWorkspaceUnreadCount(userId) {
|
|
287
|
+
const row = this.db.prepare(`
|
|
288
|
+
SELECT COUNT(*) as count FROM messages
|
|
289
|
+
WHERE collection IS NULL AND id > COALESCE(
|
|
290
|
+
(SELECT last_read_message_id FROM workspace_read_receipts WHERE user_id = ?),
|
|
291
|
+
0
|
|
292
|
+
)
|
|
293
|
+
`).get(userId);
|
|
294
|
+
return row.count;
|
|
295
|
+
}
|
|
296
|
+
/** Latest workspace message ID (for mark-read on load). */
|
|
297
|
+
getLatestWorkspaceMessageId() {
|
|
298
|
+
const row = this.db.prepare('SELECT MAX(id) as max_id FROM messages WHERE collection IS NULL').get();
|
|
299
|
+
return row.max_id;
|
|
300
|
+
}
|
|
157
301
|
// ── Notifications ──
|
|
302
|
+
/**
|
|
303
|
+
* Create a mention notification.
|
|
304
|
+
* @param collection collection name, or `null` for workspace-wide mentions.
|
|
305
|
+
*/
|
|
158
306
|
createNotification(userId, collection, messageId, mentionerName, messagePreview) {
|
|
159
307
|
this.db.prepare('INSERT INTO notifications (user_id, collection, message_id, mentioner_name, message_preview) VALUES (?, ?, ?, ?, ?)').run(userId, collection, messageId, mentionerName, messagePreview.slice(0, 200));
|
|
160
308
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-service.js","sourceRoot":"","sources":["../../src/services/message-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message-service.js","sourceRoot":"","sources":["../../src/services/message-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -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}.asset-manager.svelte-3ci416{max-height:calc(70vh - 80px);overflow-y:auto;padding-right:12px}.asset-status.svelte-3ci416{color:var(--color-text-secondary);font-size:13px;text-align:center;padding:32px 0}.asset-error.svelte-3ci416{color:var(--color-text-error, #e05050)}.asset-grid.svelte-3ci416{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.asset-card.svelte-3ci416{position:relative;border:1px solid var(--color-border);border-radius:6px;overflow:hidden;background:var(--color-bg-secondary)}.asset-card.svelte-3ci416:hover .asset-delete:where(.svelte-3ci416){opacity:1}.asset-preview.svelte-3ci416{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--color-bg-tertiary, var(--color-bg-secondary))}.asset-preview.svelte-3ci416 img:where(.svelte-3ci416){width:100%;height:100%;object-fit:cover}.asset-icon.svelte-3ci416{color:var(--color-text-secondary)}.asset-info.svelte-3ci416{padding:8px 10px;display:flex;flex-direction:column;gap:2px}.asset-filename.svelte-3ci416{font-size:12px;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-meta.svelte-3ci416{font-size:11px;color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-delete.svelte-3ci416{position:absolute;top:6px;right:6px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:none;border-radius:4px;background:#0009;color:#fff;cursor:pointer;opacity:0;transition:opacity .15s}.asset-delete.svelte-3ci416:hover{background:#e05050e6}.sidebar-empty-state.svelte-6dohdz{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:32px 24px;text-align:center}.empty-title.svelte-6dohdz{font-size:14px;font-weight:500;color:var(--color-text-secondary);margin:0 0 6px}.empty-desc.svelte-6dohdz{font-size:13px;color:var(--color-text-tertiary, var(--color-text-secondary));margin:0;line-height:1.4}.sidebar.svelte-6dohdz{position:relative;z-index:2;flex-shrink:0;display:flex;flex-direction:column;overflow:clip;overflow-x:visible;background:var(--color-bg);border-right:1px solid var(--color-border);transition:width .15s ease}.sidebar.collapsed.svelte-6dohdz{overflow:visible}.rail.svelte-6dohdz{display:flex;flex-direction:column;align-items:center;padding:8px 0;gap:4px;height:100%}.rail-spacer.svelte-6dohdz{flex:1}.rail-btn{width:36px!important;height:36px!important;display:flex!important;align-items:center;justify-content:center;border-radius:8px}.rail-btn:hover{background:var(--color-bg-hover)!important}.rail.svelte-6dohdz .workspace-icon:where(.svelte-6dohdz){width:28px;height:28px;font-size:14px}.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;gap:4px}.header-action-btn{display:flex;align-items:center;justify-content:center;position:relative;width:28px;height:28px;border-radius:6px;color:var(--color-text-secondary);cursor:pointer;background:none;border:none}.header-action-btn:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.header-add-menu{background:var(--color-bg-elevated)!important;border:1px solid var(--color-border-strong)!important;border-radius:8px!important;box-shadow:0 4px 16px #0003!important;padding:4px!important;min-width:var(--menu-min-width);z-index:200!important}.menu-divider.svelte-6dohdz{height:1px;background:var(--color-border);margin:4px 8px}.header-add-item{display:flex!important;align-items:center;gap:8px;min-height:var(--menu-item-height);padding:var(--menu-item-padding)!important;border-radius:var(--menu-item-radius)!important;font-size:var(--menu-font-size);color:var(--color-text-secondary);cursor:pointer}.header-add-item:hover,.header-add-item[data-highlighted]{background:var(--color-bg-hover)!important;color:var(--color-text-primary)}.notif-dropdown{width:320px!important;max-height:400px;background:var(--color-bg)!important;border:1px solid var(--color-border)!important;border-radius:8px!important;box-shadow:0 4px 16px #0000001f!important;display:flex;flex-direction:column;overflow:hidden;padding:0!important;z-index:200!important}.notif-dropdown .notif-header{display:flex;align-items:baseline;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--color-border);flex-shrink:0}.notif-dropdown .notif-title{font-size:var(--menu-font-size);font-weight:400;color:var(--color-text-primary)}.notif-dropdown .notif-mark-all{background:none;border:none;color:var(--color-accent);font-size:12px;cursor:pointer;padding:0}.notif-dropdown .notif-mark-all:hover{text-decoration:underline}.notif-dropdown .notif-list{overflow-y:auto;flex:1}.notif-dropdown .notif-empty{padding:24px 12px;text-align:center;font-size:var(--menu-font-size);color:var(--color-text-tertiary)}.notif-item{display:flex!important;flex-direction:row!important;align-items:flex-start;position:relative;padding:12px 16px 12px 32px!important;border:none;background:none;text-align:left;width:100%;cursor:pointer;border-radius:0!important}.notif-item+.notif-item{border-top:1px solid var(--color-border)}.notif-item:hover,.notif-item[data-highlighted]{background:var(--color-bg-hover)!important}.notif-dot{position:absolute;left:12px;top:17px;width:6px;height:6px;border-radius:3px;background:var(--color-accent)}.notif-item-body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.notif-item-line{display:flex;align-items:baseline;gap:4px;font-size:var(--menu-font-size);line-height:16px}.notif-item-who{font-weight:600;color:var(--color-text-primary);white-space:nowrap}.notif-item-time{font-size:12px;color:var(--color-text-tertiary);white-space:nowrap;margin-left:auto}.notif-item-preview{font-size:12px;line-height:16px;color:var(--color-text-secondary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notif-mention{color:var(--color-accent)}.notif-badge.svelte-6dohdz{position:absolute;top:2px;right:2px;min-width:14px;height:14px;border-radius:7px;background:var(--color-accent);color:#fff;font-size:9px;font-weight:600;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1}.sidebar-header.svelte-6dohdz .home-btn:where(.svelte-6dohdz){display:inline-flex;align-items:center;gap:11px;min-width:0}.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)}.sidebar-scroll.svelte-6dohdz{flex:1;overflow-y:auto;min-height:0}.repo-row{display:flex;align-items:baseline;height:var(--row-height);line-height:var(--row-height);width:100%;padding:0 12px 0 22px;border:none;background:transparent;font-family:inherit;text-align:left;border-radius:0;gap:0;justify-content:flex-start}.repo-row:hover,.repo-row.focused{background:var(--color-bg-hover)}.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-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);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-secondary);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%)}.type-header-row{color:var(--color-text-secondary)}.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}.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:none;box-sizing:border-box;flex-shrink:0;align-self:center}.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}.unread-dot.svelte-6dohdz{width:6px;height:6px;border-radius:50%;background:var(--color-accent);display:block}.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}.import-description.svelte-6dohdz{font-size:14px;color:var(--color-text-secondary);margin:0 0 16px}.import-modal-body.svelte-6dohdz{padding:0}.import-skipped.svelte-6dohdz{font-size:var(--font-xs);color:var(--color-text-secondary);margin:0 0 8px}.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:8px;padding:40px 16px;text-align:center;color:var(--color-text-tertiary);font-size:14px;min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;transition:background .15s}.import-drop-zone-active.svelte-6dohdz{border-color:var(--color-accent);background:color-mix(in srgb,var(--color-accent) 6%,transparent);color:var(--color-accent)}.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-secondary);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-actions-menu{min-width:var(--menu-min-width);padding:4px!important;border-radius:8px!important;background:var(--color-bg-elevated)!important;border:1px solid var(--color-border-strong)!important;box-shadow:0 4px 16px #0003!important;z-index:1000}.repo-menu-item{display:flex!important;align-items:center;gap:8px;min-height:var(--menu-item-height);padding:var(--menu-item-padding)!important;border-radius:var(--menu-item-radius)!important;cursor:pointer;font-size:var(--menu-font-size);color:var(--color-text-secondary)}.repo-menu-item:hover,.repo-menu-item[data-highlighted]{background:var(--color-bg-hover)!important;color:var(--color-text-primary)}.repo-menu-item-danger{color:var(--color-error, #e55)}.share-loading.svelte-6dohdz,.share-empty.svelte-6dohdz{font-size:13px;color:var(--color-text-secondary);margin:8px 0}.share-user-list.svelte-6dohdz{display:flex;flex-direction:column;gap:2px}.share-user-row.svelte-6dohdz{all:unset;display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:13px}.share-user-row.svelte-6dohdz:hover{background:var(--color-bg-hover)}.share-user-name.svelte-6dohdz{color:var(--color-text-primary)}.share-user-email.svelte-6dohdz{color:var(--color-text-tertiary);font-size:12px;margin-left:auto}.new-collection-btn,.new-collection-btn .row-chevron.svelte-6dohdz{color:var(--color-text-tertiary)}.new-collection-btn:hover{color:var(--color-text-secondary)}@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)}}.sidebar-footer.svelte-6dohdz{display:flex;align-items:center;height:var(--row-height);padding:0 12px 0 27px;border-top:1px solid var(--color-border);flex-shrink:0;gap:8px;margin-top:auto}.user-name.svelte-6dohdz{flex:1;font-size:14px;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer.svelte-6dohdz .footer-icon-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--color-text-secondary);cursor:pointer;background:none;border:none;flex-shrink:0}.sidebar-footer.svelte-6dohdz .footer-icon-btn:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.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)}.entity-floating-tooltip.svelte-6dohdz{position:fixed;z-index:1000;transform:translateY(-50%);display:flex;flex-direction:column;gap:2px;padding:6px 10px;border-radius:6px;background:var(--color-bg-elevated);border:1px solid var(--color-border);box-shadow:0 4px 16px #0000004d;pointer-events:none;min-width:120px;max-width:260px}.entity-floating-tooltip.fading.svelte-6dohdz{opacity:0;transition:opacity .12s ease-out}.entity-tooltip-title.svelte-6dohdz{font-size:13px;font-weight:600;color:var(--color-text-primary)}.entity-tooltip-meta.svelte-6dohdz{font-size:13px;color:var(--color-text-tertiary)}.section-add-btn{display:flex!important;align-items:center;justify-content:center;width:24px!important;height:24px!important;border:none!important;background:none!important;color:var(--color-text-secondary);cursor:pointer;border-radius:4px;padding:0!important}.section-add-btn:hover{background:var(--color-bg-hover)!important;color:var(--color-text-primary)}.view-icon-dot.svelte-6dohdz{position:relative;background:none!important;overflow:visible}.view-icon-dot.svelte-6dohdz svg{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:14px;height:14px;color:inherit}.no-transition.svelte-6dohdz .tree-row{transition:none!important}.home-row.svelte-6dohdz{height:var(--row-height)}.section-row-wrapper.svelte-6dohdz{height:var(--row-height);border-top:1px solid var(--color-border)}.section-row-wrapper.svelte-6dohdz .repo-actions-btn{display:inline-flex}.section-name.svelte-6dohdz{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);flex:1;text-align:left}.section-row-wrapper.svelte-6dohdz:hover .repo-row{background:var(--color-bg-hover)}.new-entry-form.svelte-6dohdz{display:flex;flex-direction:column;gap:16px}.new-entry-field.svelte-6dohdz{display:flex;flex-direction:column;gap:6px}.new-entry-label.svelte-6dohdz{font-size:13px;font-weight:500;color:var(--color-text-secondary)}.new-entry-input.svelte-6dohdz{padding:8px 12px;font-family:inherit;font-size:14px;color:var(--color-text-primary);background:var(--color-bg);border:1px solid var(--color-border);border-radius:6px;outline:none}.new-entry-input.svelte-6dohdz:focus{border-color:var(--color-accent)}.new-entry-input.svelte-6dohdz::placeholder{color:var(--color-text-tertiary)}.type-dot-item.svelte-6dohdz{display:flex;align-items:center;gap:8px}.type-dot-color.svelte-6dohdz{width:6px;height:6px;border-radius:50%;flex-shrink:0}.app-footer.svelte-1jf7fcf{height:var(--row-height, 44px);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 16px 0 18px;background:var(--color-bg);border-top:1px solid var(--color-border);font-size:12px;z-index:50}.footer-left.svelte-1jf7fcf{display:flex;align-items:center;gap:0}.theme-toggle.svelte-1jf7fcf{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:1px solid var(--color-border);background:transparent;color:var(--color-text-tertiary);cursor:pointer;border-radius:4px;transition:color .15s,border-color .15s}.theme-toggle.svelte-1jf7fcf:hover{color:var(--color-text-primary);border-color:var(--color-border-strong)}.footer-stat.svelte-1jf7fcf{color:var(--color-text-tertiary);font-size:12px;margin-left:10px}.footer-sep.svelte-1jf7fcf{color:var(--color-text-tertiary);opacity:.5;font-size:12px;margin:0 6px}.footer-link.svelte-1jf7fcf{font-size:12px;color:var(--color-text-tertiary);text-decoration:none}.footer-link.svelte-1jf7fcf:hover{color:var(--color-text-secondary)}.footer-right.svelte-1jf7fcf{display:flex;align-items:center;gap:8px}.collaborator.svelte-1jf7fcf{display:inline-flex;align-items:center;gap:4px}.collaborator-avatar.svelte-1jf7fcf{width:18px;height:18px;border-radius:50%;background:var(--color-accent);color:var(--color-accent-text, #fff);font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center}.collaborator-name.svelte-1jf7fcf{font-size:12px;color:var(--color-text-tertiary)}.footer-center.svelte-1jf7fcf{display:flex;align-items:center;gap:2px}.fmt-btn.svelte-1jf7fcf{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:none;border-radius:4px;background:transparent;color:var(--color-text-secondary);cursor:pointer;transition:background .1s,color .1s}.fmt-btn.svelte-1jf7fcf:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.fmt-sep.svelte-1jf7fcf{width:1px;height:14px;background:var(--color-border);margin:0 3px}.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.svelte-1xwj6s7 .chat-tab-content{flex:1;min-height:0;display:flex;flex-direction:column}.chat-header.svelte-1xwj6s7{height:var(--row-height);display:flex;align-items:center;justify-content:space-between;padding:0 8px 0 16px;border-bottom:1px solid var(--color-border);position:relative;flex-shrink:0;gap:8px}.chat-panel.svelte-1xwj6s7 .chat-tabs-list{display:flex;align-items:center;background:transparent;padding:0;border-radius:0;gap:2px}.chat-panel.svelte-1xwj6s7 .chat-tab{display:inline-flex;align-items:center;gap:6px;height:var(--btn-height, 28px);padding:0 12px;border:none;border-radius:6px;background:transparent;cursor:pointer;white-space:nowrap;color:var(--color-text-secondary);font-size:13px;font-weight:400;box-shadow:none;transition:background .1s,color .1s}.chat-panel.svelte-1xwj6s7 .chat-tab:hover{background:var(--color-bg-hover)}.chat-panel.svelte-1xwj6s7 .chat-tab[data-state=active]{background:var(--color-accent);color:#fff;font-weight:500}.chat-tab-unread-dot.svelte-1xwj6s7{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--color-accent, #3b82f6)}.chat-tab-placeholder.svelte-1xwj6s7{flex:1;display:flex;align-items:center;justify-content:center;padding:0 16px;color:var(--color-text-tertiary);font-size:14px}.chat-header-right.svelte-1xwj6s7{display:flex;align-items:center;gap:2px;margin-left:auto}.chat-messages.svelte-1xwj6s7{flex:1;overflow-y:auto;padding:16px 0;display:flex;flex-direction:column;gap:16px}.empty-state.svelte-1xwj6s7{flex:1;display:flex;align-items:center;justify-content:center;padding:0 16px;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;width:100%;border-radius:8px;color:var(--color-text-secondary);background:var(--color-bg-secondary, rgba(128, 128, 128, .06));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)}.follow-up-prompts.svelte-1xwj6s7{display:flex;flex-direction:column;gap:8px;padding:0 16px;width:100%}.follow-up-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);background:var(--color-bg-secondary, rgba(128, 128, 128, .06));text-align:left;white-space:normal;justify-content:flex-start}.follow-up-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;padding:0 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 li ul,.prose.svelte-1xwj6s7 li ol{margin:4px 0 0}.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);text-decoration:none}.prose.svelte-1xwj6s7 a:hover{text-decoration:underline}.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}.scroll-to-bottom-wrapper.svelte-1xwj6s7{display:flex;justify-content:center;position:relative;height:0;z-index:100}.scroll-to-bottom.svelte-1xwj6s7{position:absolute;bottom:8px;width:28px;height:28px;border-radius:50%;border:1px solid var(--color-border);background:var(--color-bg-elevated);color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px #00000026}.scroll-to-bottom.svelte-1xwj6s7:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.chat-input-area.svelte-1xwj6s7{padding:12px 16px 16px;position:relative}.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:7px;flex-shrink:0;pointer-events:none}.send-btn.send-active,.stop-btn{pointer-events:auto;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:7px 0 11px;max-height:120px;min-height:20px;white-space:pre-wrap;word-wrap:break-word;field-sizing:content}.input-field[data-placeholder].svelte-1xwj6s7:empty:before{content:attr(data-placeholder);color:var(--color-text-tertiary);pointer-events:none}.input-field.svelte-1xwj6s7::placeholder{color:var(--color-text-tertiary)}.input-field.svelte-1xwj6s7:disabled{opacity:.5}.input-field.svelte-1xwj6s7 .cm-mention-input{color:var(--color-accent)}.cm-loading-more.svelte-1xwj6s7{text-align:center;padding:8px 16px;font-size:12px;color:var(--color-text-tertiary)}.cm-message.svelte-1xwj6s7{display:flex;flex-direction:column;gap:2px;padding:8px 16px;background:transparent;transition:background 1.5s ease-out}.cm-highlight{background:var(--color-bg-hover)!important}.cm-meta.svelte-1xwj6s7{display:flex;align-items:center;gap:6px}.cm-meta.svelte-1xwj6s7 .cm-name:where(.svelte-1xwj6s7){align-self:baseline}.cm-avatar.svelte-1xwj6s7{width:18px;height:18px;border-radius:9px;background:var(--color-accent);color:#fff;font-size:9px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.cm-body.svelte-1xwj6s7{display:flex;flex-direction:column;gap:2px;min-width:0;padding-left:24px}.cm-name.svelte-1xwj6s7{font-size:14px;font-weight:600;color:var(--color-text-primary)}.cm-time.svelte-1xwj6s7{font-size:12px;color:var(--color-text-tertiary)}.cm-content.svelte-1xwj6s7{font-size:14px;line-height:22px;color:var(--color-text-primary)}.cm-truncated.svelte-1xwj6s7{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.cm-reply-label.svelte-1xwj6s7{font-size:12px;color:var(--color-text-tertiary)}.cm-agent-actions.svelte-1xwj6s7{display:flex;gap:12px;align-items:center}.cm-expand.svelte-1xwj6s7{background:none;border:none;color:var(--color-accent);font-size:12px;cursor:pointer;padding:2px 0}.cm-expand.svelte-1xwj6s7:hover{text-decoration:underline}.cm-reply-btn.svelte-1xwj6s7{background:none;border:none;color:var(--color-text-tertiary);font-size:12px;cursor:pointer;padding:2px 0}.cm-reply-btn.svelte-1xwj6s7:hover{color:var(--color-accent)}.cm-suggestion-prompts.svelte-1xwj6s7{display:flex;flex-direction:column;gap:8px;width:100%}.cm-suggestion-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);background:var(--color-bg-secondary, rgba(128, 128, 128, .06));text-align:left;white-space:normal;justify-content:flex-start}.cm-suggestion-prompts.svelte-1xwj6s7 .seed-prompt:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.cm-suggestion-busy.svelte-1xwj6s7,.cm-suggestion-done.svelte-1xwj6s7{font-size:14px;line-height:20px;padding:9px 13px;min-height:var(--row-height);height:auto;border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-tertiary);text-align:left;white-space:normal}.cm-suggestion-done.svelte-1xwj6s7 a:where(.svelte-1xwj6s7){color:var(--color-link);text-decoration:none}.cm-suggestion-done.svelte-1xwj6s7 a:where(.svelte-1xwj6s7):hover{text-decoration:underline}.cm-ellipsis.svelte-1xwj6s7:after{content:"";animation:svelte-1xwj6s7-ellipsis 1.5s steps(4,end) infinite}@keyframes svelte-1xwj6s7-ellipsis{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.cm-content.svelte-1xwj6s7 .cm-mention{color:var(--color-accent);font-weight:400}.reply-chip.svelte-1xwj6s7{display:flex;align-items:center;gap:6px;padding:4px 8px;margin-bottom:6px;background:var(--color-bg-surface);border-radius:6px;font-size:12px;color:var(--color-accent);font-weight:500}.reply-chip-close.svelte-1xwj6s7{display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--color-text-tertiary);cursor:pointer;padding:0;border-radius:3px}.reply-chip-close.svelte-1xwj6s7:hover{color:var(--color-text-primary)}.at-popup.svelte-1xwj6s7{position:absolute;bottom:100%;left:16px;margin-bottom:4px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 2px 8px #0000001f;padding:4px;z-index:10}.at-popup-item.svelte-1xwj6s7{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:5px;cursor:pointer;font-size:13px;color:var(--color-text-primary)}.at-popup-item.svelte-1xwj6s7:hover,.at-popup-selected.svelte-1xwj6s7{background:var(--color-bg-hover)}.at-popup-avatar.svelte-1xwj6s7{width:18px;height:18px;font-size:9px}.at-popup-hint.svelte-1xwj6s7{margin-left:auto;font-size:11px;color:var(--color-text-tertiary);background:var(--color-bg-surface);padding:1px 5px;border-radius:3px}.modal-body.svelte-1vpgrso{padding:8px 32px 28px;overflow-y:auto;max-height:calc(85vh - 40px);display:flex;flex-direction:column;gap:24px}.modal-title.svelte-1vpgrso{font-size:20px;font-weight:400;color:var(--color-text-primary);margin:0 0 24px;letter-spacing:-.01em;line-height:1.2}.section.svelte-1vpgrso{display:flex;flex-direction:column;gap:12px}.section-label.svelte-1vpgrso{font-size:14px;font-weight:500;color:var(--color-text-primary);margin:0}.color-grid.svelte-1vpgrso{display:flex;gap:6px;flex-wrap:wrap}.color-grid.saving.svelte-1vpgrso{opacity:.5;pointer-events:none}.color-swatch.svelte-1vpgrso{width:24px;height:24px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:border-color .15s,transform .15s}.color-swatch.svelte-1vpgrso:hover{transform:scale(1.15)}.color-swatch.active.svelte-1vpgrso{border-color:var(--color-text-primary)}.fields.svelte-1vpgrso{display:flex;flex-direction:column;gap:16px}.field.svelte-1vpgrso{display:flex;flex-direction:column;gap:8px}.password-wrapper.svelte-1vpgrso{position:relative}.pw-toggle.svelte-1vpgrso{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--color-text-tertiary);padding:4px;display:flex}.pw-toggle.svelte-1vpgrso:hover{color:var(--color-text-secondary)}.save-row.svelte-1vpgrso{display:flex;justify-content:flex-end;padding-top:8px}.error-msg.svelte-1vpgrso{font-size:14px;color:var(--color-error, #e55)}.meeting-settings.svelte-67gzoi{padding:24px 32px}.panel-title.svelte-67gzoi{font-size:18px;font-weight:600;margin-bottom:8px}.panel-description.svelte-67gzoi{font-size:14px;color:var(--color-text-secondary);margin-bottom:24px;line-height:1.5}.setting-group.svelte-67gzoi{margin-bottom:20px}.setting-help.svelte-67gzoi{font-size:13px;color:var(--color-text-tertiary);margin-top:4px}.setting-help.svelte-67gzoi a:where(.svelte-67gzoi){color:var(--color-accent)}.select-input.svelte-67gzoi{width:100%;padding:8px 12px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-bg);color:var(--color-text-primary);font-size:14px;font-family:inherit;outline:none;margin-top:4px}.select-input.svelte-67gzoi:focus{border-color:var(--color-border-strong)}.error-text.svelte-67gzoi{color:#ef4444;font-size:13px;margin-bottom:12px}.loading-text.svelte-67gzoi{color:var(--color-text-tertiary);font-size:14px}.save-row.svelte-67gzoi{margin-top:24px}.split-layout.svelte-1pdwh4i{display:flex;height:520px;max-height:calc(100vh - 160px)}.settings-sidebar.svelte-1pdwh4i{width:210px;flex-shrink:0;border-right:1px solid var(--color-border);display:flex;flex-direction:column;padding:20px 0}.sidebar-header.svelte-1pdwh4i{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-tertiary);padding:0 20px 12px}.sidebar-nav.svelte-1pdwh4i{display:flex;flex-direction:column;gap:2px;padding:0 8px}.sidebar-nav.svelte-1pdwh4i .nav-item{display:flex;align-items:center;gap:10px;padding:0 12px;height:var(--row-height, 44px);border-radius:8px;font-size:14px;color:var(--color-text-secondary);text-align:left;width:100%;justify-content:flex-start}.sidebar-nav.svelte-1pdwh4i .nav-item:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.sidebar-nav.svelte-1pdwh4i .nav-item.active{background:var(--color-bg-selected);color:var(--color-text-primary);font-weight:600}.settings-main.svelte-1pdwh4i{flex:1;min-width:0;display:flex;flex-direction:column}.panel-title.svelte-1pdwh4i{font-size:20px;font-weight:400;color:var(--color-text-primary);margin:0 0 24px;letter-spacing:-.01em;line-height:1.2}.mcp-layout.svelte-1pdwh4i .panel-title:where(.svelte-1pdwh4i){margin-bottom:0}.hint.svelte-1pdwh4i{font-size:14px;color:var(--color-text-tertiary);margin:0}.error-msg.svelte-1pdwh4i{font-size:14px;color:var(--color-error, #e55)}.card.svelte-1pdwh4i{background:var(--color-bg);border:1px solid var(--color-border);border-radius:10px;padding:14px 16px;transition:border-color .15s}.card-row.svelte-1pdwh4i{display:flex;align-items:center;gap:14px}.card-title.svelte-1pdwh4i{font-size:14px;font-weight:600;color:var(--color-text-primary)}.confirm-hint.svelte-1pdwh4i{font-size:13px;color:var(--color-text-tertiary);flex:1}.mcp-layout.svelte-1pdwh4i{display:flex;flex-direction:column;gap:24px}.credential-field.svelte-1pdwh4i{display:flex;flex-direction:column;gap:8px}.credential-label.svelte-1pdwh4i{font-size:14px;font-weight:500;color:var(--color-text-primary)}.credential-header.svelte-1pdwh4i{display:flex;align-items:center;gap:8px}.input-with-copy.svelte-1pdwh4i{position:relative}.copy-overlay.svelte-1pdwh4i{position:absolute;right:1px;top:1px;bottom:1px;background:linear-gradient(to right,transparent,var(--color-bg) 40%);border:none;cursor:pointer;padding:0 10px 0 24px;color:var(--color-text-tertiary);display:flex;align-items:center;transition:color .15s;border-radius:0 6px 6px 0}.copy-overlay.svelte-1pdwh4i:hover{color:var(--color-text-primary)}.mono-input{font-family:var(--font-mono, monospace)!important;font-size:13px!important}.raw-config.svelte-1pdwh4i{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.textarea-with-copy.svelte-1pdwh4i{position:relative;align-self:stretch}.copy-overlay-top.svelte-1pdwh4i{position:absolute;right:1px;top:1px;background:linear-gradient(to right,transparent,var(--color-bg) 40%);border:none;cursor:pointer;padding:8px 10px 8px 24px;color:var(--color-text-tertiary);display:flex;align-items:center;transition:color .15s;border-radius:0 6px 0 0}.copy-overlay-top.svelte-1pdwh4i:hover{color:var(--color-text-primary)}.mcp-config-textarea{font-family:var(--font-mono, ui-monospace, monospace)!important;font-size:13px!important}.connector-list.svelte-1pdwh4i{display:flex;flex-direction:column;gap:8px}.card-actions.svelte-1pdwh4i{display:flex;align-items:center;gap:4px}.connected-label.svelte-1pdwh4i{display:flex;align-items:center;gap:4px;font-size:13px;color:var(--color-success, #4ade80);background:none;border:none;font-family:inherit;cursor:default;padding:0}button.connected-label.svelte-1pdwh4i{cursor:pointer}button.connected-label.svelte-1pdwh4i:hover{opacity:.7}.confirm-row.svelte-1pdwh4i{display:flex;align-items:center;gap:8px;background:#e5555514}.confirm-text.svelte-1pdwh4i{font-size:14px;color:var(--color-text-primary);flex:1}.edit-form.svelte-1pdwh4i{display:flex;flex-direction:column;gap:8px;padding:12px 0}.add-form.svelte-1pdwh4i{display:flex;flex-direction:column;gap:20px;padding:20px;background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:10px;margin-top:12px}.field.svelte-1pdwh4i{display:flex;flex-direction:column;gap:8px}.add-form.svelte-1pdwh4i label{font-size:14px}.form-actions.svelte-1pdwh4i{display:flex;justify-content:flex-end;gap:8px}.add-server-btn.svelte-1pdwh4i{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px 16px;margin-top:8px;background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:10px;color:var(--color-text-secondary);font-size:13px;font-weight:550;font-family:inherit;cursor:pointer;transition:all .15s}.add-server-btn.svelte-1pdwh4i:hover{background:var(--color-bg-hover)}.split-layout.svelte-1hdlfew{display:flex;height:560px;max-height:calc(100vh - 160px)}.settings-sidebar.svelte-1hdlfew{width:210px;flex-shrink:0;border-right:1px solid var(--color-border);display:flex;flex-direction:column;padding:20px 0}.sidebar-header.svelte-1hdlfew{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-tertiary);padding:0 20px 12px}.sidebar-nav.svelte-1hdlfew{display:flex;flex-direction:column;gap:2px;padding:0 8px}.sidebar-nav.svelte-1hdlfew .nav-item{display:flex;align-items:center;gap:10px;padding:0 12px;border-radius:8px;font-size:14px;color:var(--color-text-secondary);text-align:left;width:100%;justify-content:flex-start;height:var(--row-height, 44px)}.sidebar-nav.svelte-1hdlfew .nav-item:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}.sidebar-nav.svelte-1hdlfew .nav-item.active{background:var(--color-bg-selected);color:var(--color-text-primary);font-weight:600}.settings-main.svelte-1hdlfew{flex:1;min-width:0;display:flex;flex-direction:column}.panel-title.svelte-1hdlfew{font-size:20px;font-weight:400;color:var(--color-text-primary);margin:0 0 24px;letter-spacing:-.01em;line-height:1.2}.hint.svelte-1hdlfew{font-size:14px;color:var(--color-text-tertiary);margin:0}.error-msg.svelte-1hdlfew{font-size:14px;color:var(--color-error, #e55)}.fields.svelte-1hdlfew{display:flex;flex-direction:column;gap:16px;margin-bottom:20px}.field.svelte-1hdlfew{display:flex;flex-direction:column;gap:6px}.form-actions.svelte-1hdlfew{display:flex;justify-content:flex-end;gap:8px}.save-row.svelte-1hdlfew{display:flex;justify-content:flex-end;gap:8px;padding-top:8px}.search-wrapper.svelte-1hdlfew{position:relative;margin-bottom:8px;color:var(--color-text-tertiary)}.search-wrapper.svelte-1hdlfew svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);pointer-events:none}.search-input.svelte-1hdlfew{width:100%;padding:10px 13px 10px 36px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:9px;font-size:14px;color:var(--color-text-primary);font-family:inherit;outline:none;transition:border-color .15s}.search-input.svelte-1hdlfew::placeholder{color:var(--color-text-tertiary)}.search-input.svelte-1hdlfew:focus{border-color:var(--color-accent)}.card.svelte-1hdlfew{background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:14px;transition:border-color .15s}.card-row.svelte-1hdlfew{display:flex;align-items:center;gap:14px}.card-text.svelte-1hdlfew{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.card-title.svelte-1hdlfew{font-size:14px;font-weight:600;color:var(--color-text-primary);line-height:1.2}.card-desc.svelte-1hdlfew{font-size:12px;color:var(--color-text-tertiary);line-height:1.2}.member-list.svelte-1hdlfew,.collection-list.svelte-1hdlfew{display:flex;flex-direction:column;gap:8px}.member-card.svelte-1hdlfew{cursor:default}.role-label.svelte-1hdlfew{font-size:12px;font-weight:400;color:var(--color-accent);margin-left:8px}.card-actions.svelte-1hdlfew{display:flex;align-items:center;gap:4px}.user-avatar.svelte-1hdlfew{width:18px;height:18px;border-radius:50%;background:var(--color-accent);color:#fff;font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}.icon-danger:hover{color:var(--color-error, #e55)!important}.collection-group.svelte-1hdlfew{display:flex;flex-direction:column}.collection-group.expanded.svelte-1hdlfew .collection-card:where(.svelte-1hdlfew){border-radius:8px 8px 0 0;border-bottom-color:transparent}.collection-card.svelte-1hdlfew{cursor:pointer;width:100%;text-align:left;font-family:inherit}.collection-card.svelte-1hdlfew:hover{border-color:var(--color-text-tertiary)}.collection-card.selected.svelte-1hdlfew{border-color:var(--color-border)}.collection-chevron.svelte-1hdlfew{color:var(--color-text-tertiary);transition:transform .15s;display:flex;align-items:center;justify-content:center;width:28px;flex-shrink:0}.collection-chevron.rotated.svelte-1hdlfew{transform:rotate(90deg)}.collection-detail.svelte-1hdlfew{padding:16px 14px 16px 44px;border:1px solid var(--color-border);border-top:none;border-radius:0 0 8px 8px;background:var(--color-bg);display:flex;flex-direction:column;gap:24px}.detail-section.svelte-1hdlfew{display:flex;flex-direction:column;gap:8px}.detail-header.svelte-1hdlfew{display:flex;align-items:center;justify-content:space-between;min-height:24px}.section-label-small.svelte-1hdlfew{font-size:14px;font-weight:400;color:var(--color-text-primary)}.detail-member.svelte-1hdlfew{display:flex;align-items:center;gap:10px;height:36px;font-size:14px}.member-name.svelte-1hdlfew{font-size:14px;font-weight:500;color:var(--color-text-primary)}.rename-row.svelte-1hdlfew{position:relative}.rename-save.svelte-1hdlfew{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:4px;color:var(--color-text-tertiary);display:flex;align-items:center;transition:color .15s;border-radius:4px}.rename-save.svelte-1hdlfew:hover{color:var(--color-text-primary)}.delete-col-btn,.done-btn{align-self:flex-end;margin-top:8px}.confirm-row.svelte-1hdlfew{display:flex;align-items:center;gap:8px;padding:8px;border-radius:8px;background:#e5555514;border-color:#e5555526}.confirm-row.svelte-1hdlfew button:not([class*=destructive]):hover{background:transparent!important;color:var(--color-text-primary)!important;border-color:var(--color-border-strong)!important}.confirm-text.svelte-1hdlfew{font-size:14px;color:var(--color-text-primary);flex:1}.reset-form-card.svelte-1hdlfew{padding:14px 16px}.reset-form.svelte-1hdlfew{display:flex;flex-direction:column;gap:8px}.reset-label.svelte-1hdlfew{font-size:13px;color:var(--color-text-secondary);font-weight:500}.add-btn.svelte-1hdlfew{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px 16px;margin-top:8px;background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:10px;color:var(--color-text-secondary);font-size:13px;font-weight:550;font-family:inherit;cursor:pointer;transition:all .15s}.add-btn.svelte-1hdlfew:hover{background:var(--color-bg-hover)}.add-form.svelte-1hdlfew label{font-size:14px}.add-form.svelte-1hdlfew{display:flex;flex-direction:column;gap:20px;padding:20px;background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:10px;margin-top:8px}.modal-body.svelte-7xzjv8{padding:8px 32px 28px}.close-only-header{justify-content:flex-end;min-height:0;padding:12px 16px 0}.modal-title.svelte-7xzjv8{font-size:20px;font-weight:400;color:var(--color-text-primary);margin:0 0 24px;letter-spacing:-.01em;line-height:1.2}.form.svelte-7xzjv8{display:flex;flex-direction:column;gap:16px}.field.svelte-7xzjv8{display:flex;flex-direction:column;gap:8px}.error-msg.svelte-7xzjv8{font-size:14px;color:var(--color-error, #e55)}.form-footer.svelte-7xzjv8{display:flex;justify-content:flex-end;gap:8px;padding-top:8px}.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}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CtYLtD7K.js","./C3uBrOS5.js","./BhlvzGQx.js","./DFYOFE3o.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{_ as Y}from"./PPVm8Dsz.js";import{g as S,s as a,w as _}from"./C3uBrOS5.js";import{i as q}from"./YxOzuzo0.js";import{w as l}from"./BPCkkwqe.js";import{b as z}from"./DkoHPElM.js";import{n as h}from"./DUMOo1Pn.js";import{u as A}from"./BhlvzGQx.js";import{t as s}from"./BlMknQeF.js";const K=800;function Q(){let e=_(!1),n=_(null),t=_(null),r=null,i=null,g=!1;function j(u,p,d,c){r&&r.repo===u&&r.type===p&&r.id===d?(c.data!==void 0&&(r.payload.data=c.data),c.content!==void 0&&(r.payload.content=c.content)):r={repo:u,type:p,id:d,payload:{...c}},F()}function F(){i&&clearTimeout(i),i=setTimeout(E,K)}async function E(){if(i=null,!g&&r){const{repo:u,type:p,id:d,payload:c}=r;r=null,g=!0,a(e,!0),a(t,null);try{if(await A(u,p,d,c),a(n,new Date,!0),c.data?.name){const m=l.repos.find(H=>H.name===u)?.entities.find(H=>H.id===d);m&&(m.title=c.data.name)}}catch(f){a(t,f.message??"Save failed",!0);const m=f.status??f.statusCode;(!m||m>=500)&&(r={repo:u,type:p,id:d,payload:c})}finally{a(e,!1),g=!1,r&&E()}}}function L(){i&&(clearTimeout(i),i=null),r&&E()}async function V(u,p,d,c){a(e,!0),a(t,null);try{const f=await A(u,p,d,c);return a(n,new Date,!0),f}catch(f){return a(t,f.message??"Save failed",!0),null}finally{a(e,!1)}}function G(){a(t,null),a(n,null),r=null,i&&(clearTimeout(i),i=null)}return{get saving(){return S(e)},get lastSaved(){return S(n)},get error(){return S(t)},get hasPending(){return!!(r||g)},scheduleAutoSave:j,flush:L,saveEntity:V,reset:G}}const X=Q();let o=null,O=null,U=null,I=null,N=null,D=null,P=null,W=null,C=null,B=null,R=[],$=null,w=1e3,k=_(!1),x=_(null);const y=new Map,T={},b={};function M(e,n){y.delete(e);const t=n.entities.length,r=t===1?`${e} updated ${n.entities[0]}`:`${e} updated ${t} entities`;s(r)}function Z(e){for(const[n,t]of y)t.repo===e&&(clearTimeout(t.timer),y.delete(n))}function v(e){const n=z.user?.displayName;if(e.type==="sync_progress"){const t=T[e.repo];if(t){const r=e.message.trim(),i=r.match(/^Syncing from source:\s*(.+)$/i);i&&(b[e.repo]=`Syncing ${i[1].trim()}…`);const g=b[e.repo]??`Syncing ${e.repo}…`;s.loading(g,{id:t,description:r,duration:36e5})}return}if(e.type==="entity_change"){if(n&&e.actor===n&&e.source==="api"){l.refreshEntities(e.repo);return}if(l.refreshEntities(e.repo),h.selectedRepo===e.repo&&h.selectedType===e.entityType&&h.selectedId===e.entityId){X.hasPending?s(`${e.actor} also saved changes to this entity`):q();return}const r=y.get(e.actor);if(r)clearTimeout(r.timer),r.entities.includes(e.entityId)||r.entities.push(e.entityId),r.timer=setTimeout(()=>M(e.actor,r),1e4);else{const i={entities:[e.entityId],repo:e.repo,timer:setTimeout(()=>M(e.actor,i),1e4)};y.set(e.actor,i)}return}if(e.type==="session_commit"){if(n&&e.actor===n){a(x,e.timestamp,!0);return}const t=e.entities.length,r=t===1?`${e.actor} saved changes to ${e.entities[0]}`:`${e.actor} saved ${t} changes in ${e.repo}`;s(r),l.refreshEntities(e.repo);return}if(e.type==="sync_complete"){if(Z(e.repo),!T[e.repo]){const t=e.created+e.updated+e.deleted,r=t===0?`Sync complete · no changes in ${e.repo}`:`Sync complete · ${t} ${t===1?"entity":"entities"} from ${e.source}`;s.success(r)}l.refreshEntities(e.repo);return}if(e.type==="collection_created"){s(`${e.actor} created collection ${e.repo}`),l.refreshEntities(e.repo);return}if(e.type==="collection_deleted"){s(`${e.actor} deleted collection ${e.repo}`);return}if(e.type==="repo_sync"){s(`${e.actor} pushed to ${e.repo}`),l.refreshEntities(e.repo);return}if(e.type==="collection_message"){I?.(e);return}if(e.type==="message_update"){N?.(e);return}if(e.type==="collection_agent_thinking"){D?.(e);return}if(e.type==="workspace_message"){W?.(e);return}if(e.type==="workspace_message_update"){C?.(e);return}if(e.type==="workspace_agent_thinking"){B?.(e);return}if(e.type==="user_mention"){P?.(e);return}if(e.type==="presence"){O?.(e);return}if(e.type==="online"){U?.(e);return}if(e.type==="insights_updated"||e.type==="briefing_updated"){Y(()=>import("./CtYLtD7K.js"),__vite__mapDeps([0,1,2,3]),import.meta.url).then(t=>t.insightsStore.load());return}if(e.type==="access_granted"||e.type==="access_revoked"){e.type==="access_revoked"&&h.selectedRepo===e.repo&&h.deselect(),l.load();return}}function J(){if(typeof window>"u"||o&&(o.readyState===WebSocket.OPEN||o.readyState===WebSocket.CONNECTING))return;const n=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/ws`;o=new WebSocket(n),o.binaryType="arraybuffer",o.onopen=()=>{a(k,!0),w=1e3,l.refreshAll();for(const t of R)t()},o.onmessage=t=>{if(!(t.data instanceof ArrayBuffer))try{const r=JSON.parse(t.data);if(r?.type==="ping"){o?.send(JSON.stringify({type:"pong"}));return}const i=r;i.type&&i.type!=="toast"&&v(i)}catch{}},o.onclose=()=>{a(k,!1),o=null,$=setTimeout(()=>{w=Math.min(w*2,1e4),J()},w)},o.onerror=()=>{}}function ee(){$&&(clearTimeout($),$=null),o&&(o.close(),o=null),a(k,!1);for(const[,e]of y)clearTimeout(e.timer);y.clear()}function te(e,n=4e3){s(e,{duration:n})}function re(e,n){const t=crypto.randomUUID();return n?.loading?s.loading(e,{id:t,duration:36e5}):s(e,{id:t}),t}function ne(e,n,t){if(t?.loading){s.loading(n,{id:e});return}/failed|error/i.test(n)?s.error(n,{id:e,duration:t?.duration??6e3}):s.success(n,{id:e,duration:t?.duration??4e3})}function ie(e){const n=crypto.randomUUID();T[e]=n,s.loading(`Syncing ${e}…`,{id:n,duration:36e5})}function oe(e,n,t){const r=T[e];r&&(delete T[e],delete b[e],t?s.error(n,{id:r,duration:6e3}):s.success(n,{id:r,duration:4e3}))}function se(e){O=e}function ae(e){U=e}function ce(e){I=e}function le(e){N=e}function ue(e){D=e}function de(e){P=e}function fe(e){W=e}function pe(e){C=e}function ye(e){B=e}function ge(e){R.push(e)}function me(e){o?.readyState===WebSocket.OPEN&&o.send(JSON.stringify(e))}const He={get connected(){return S(k)},get lastAutoSaved(){return S(x)},get ws(){return o},connect:J,disconnect:ee,showToast:te,showPersistentToast:re,updateToast:ne,startSyncToast:ie,finishSyncToast:oe,send:me,setPresenceHandler:se,setOnlineHandler:ae,setMessagesHandler:ce,setMessageUpdateHandler:le,setAgentThinkingHandler:ue,setUserMentionHandler:de,setWorkspaceMessagesHandler:fe,setWorkspaceMessageUpdateHandler:pe,setWorkspaceAgentThinkingHandler:ye,addConnectHandler:ge};export{X as e,He as r};
|