@cryptiklemur/lattice 0.0.0

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 (162) hide show
  1. package/.editorconfig +12 -0
  2. package/.github/workflows/release.yml +44 -0
  3. package/.impeccable.md +66 -0
  4. package/.releaserc.json +32 -0
  5. package/.serena/project.yml +138 -0
  6. package/CLAUDE.md +35 -0
  7. package/CONTRIBUTING.md +93 -0
  8. package/LICENSE +21 -0
  9. package/README.md +83 -0
  10. package/bun.lock +1459 -0
  11. package/bunfig.toml +2 -0
  12. package/client/index.html +32 -0
  13. package/client/package.json +37 -0
  14. package/client/public/icons/icon-192.svg +11 -0
  15. package/client/public/icons/icon-512.svg +11 -0
  16. package/client/public/manifest.json +24 -0
  17. package/client/public/sw.js +61 -0
  18. package/client/src/App.tsx +28 -0
  19. package/client/src/components/auth/PassphrasePrompt.tsx +70 -0
  20. package/client/src/components/chat/ChatInput.tsx +241 -0
  21. package/client/src/components/chat/ChatView.tsx +727 -0
  22. package/client/src/components/chat/Message.tsx +362 -0
  23. package/client/src/components/chat/ModelSelector.tsx +87 -0
  24. package/client/src/components/chat/PermissionModeSelector.tsx +41 -0
  25. package/client/src/components/chat/StatusBar.tsx +50 -0
  26. package/client/src/components/chat/ToolGroup.tsx +129 -0
  27. package/client/src/components/chat/ToolResultRenderer.tsx +343 -0
  28. package/client/src/components/chat/toolSummary.ts +41 -0
  29. package/client/src/components/dashboard/DashboardView.tsx +219 -0
  30. package/client/src/components/dashboard/ProjectDashboardView.tsx +168 -0
  31. package/client/src/components/mesh/NodeBadge.tsx +24 -0
  32. package/client/src/components/mesh/PairingDialog.tsx +281 -0
  33. package/client/src/components/panels/FileBrowser.tsx +241 -0
  34. package/client/src/components/panels/StickyNotes.tsx +187 -0
  35. package/client/src/components/panels/Terminal.tsx +128 -0
  36. package/client/src/components/project-settings/ProjectClaude.tsx +304 -0
  37. package/client/src/components/project-settings/ProjectEnvironment.tsx +235 -0
  38. package/client/src/components/project-settings/ProjectGeneral.tsx +76 -0
  39. package/client/src/components/project-settings/ProjectMcp.tsx +232 -0
  40. package/client/src/components/project-settings/ProjectPermissions.tsx +209 -0
  41. package/client/src/components/project-settings/ProjectRules.tsx +277 -0
  42. package/client/src/components/project-settings/ProjectSettingsView.tsx +99 -0
  43. package/client/src/components/project-settings/ProjectSkills.tsx +91 -0
  44. package/client/src/components/settings/Appearance.tsx +151 -0
  45. package/client/src/components/settings/ClaudeSettings.tsx +151 -0
  46. package/client/src/components/settings/Environment.tsx +185 -0
  47. package/client/src/components/settings/GlobalMcp.tsx +207 -0
  48. package/client/src/components/settings/GlobalSkills.tsx +125 -0
  49. package/client/src/components/settings/MeshStatus.tsx +145 -0
  50. package/client/src/components/settings/SettingsView.tsx +57 -0
  51. package/client/src/components/settings/SkillMarketplace.tsx +175 -0
  52. package/client/src/components/settings/mcp-shared.tsx +194 -0
  53. package/client/src/components/settings/skill-shared.tsx +177 -0
  54. package/client/src/components/setup/SetupWizard.tsx +750 -0
  55. package/client/src/components/sidebar/NodeSettingsModal.tsx +180 -0
  56. package/client/src/components/sidebar/ProjectDropdown.tsx +43 -0
  57. package/client/src/components/sidebar/ProjectRail.tsx +291 -0
  58. package/client/src/components/sidebar/SearchFilter.tsx +52 -0
  59. package/client/src/components/sidebar/SessionList.tsx +384 -0
  60. package/client/src/components/sidebar/SettingsSidebar.tsx +128 -0
  61. package/client/src/components/sidebar/Sidebar.tsx +209 -0
  62. package/client/src/components/sidebar/UserIsland.tsx +59 -0
  63. package/client/src/components/sidebar/UserMenu.tsx +101 -0
  64. package/client/src/components/ui/CommandPalette.tsx +321 -0
  65. package/client/src/components/ui/ErrorBoundary.tsx +56 -0
  66. package/client/src/components/ui/IconPicker.tsx +209 -0
  67. package/client/src/components/ui/LatticeLogomark.tsx +19 -0
  68. package/client/src/components/ui/PopupMenu.tsx +98 -0
  69. package/client/src/components/ui/SaveFooter.tsx +38 -0
  70. package/client/src/components/ui/Toast.tsx +112 -0
  71. package/client/src/hooks/useMesh.ts +89 -0
  72. package/client/src/hooks/useProjectSettings.ts +56 -0
  73. package/client/src/hooks/useProjects.ts +66 -0
  74. package/client/src/hooks/useSaveState.ts +59 -0
  75. package/client/src/hooks/useSession.ts +317 -0
  76. package/client/src/hooks/useSidebar.ts +74 -0
  77. package/client/src/hooks/useSkills.ts +30 -0
  78. package/client/src/hooks/useTheme.ts +114 -0
  79. package/client/src/hooks/useWebSocket.ts +26 -0
  80. package/client/src/main.tsx +10 -0
  81. package/client/src/providers/WebSocketProvider.tsx +146 -0
  82. package/client/src/router.tsx +391 -0
  83. package/client/src/stores/mesh.ts +78 -0
  84. package/client/src/stores/session.ts +322 -0
  85. package/client/src/stores/sidebar.ts +336 -0
  86. package/client/src/stores/theme.ts +44 -0
  87. package/client/src/styles/global.css +167 -0
  88. package/client/src/styles/theme-vars.css +18 -0
  89. package/client/src/themes/index.ts +79 -0
  90. package/client/src/utils/findDuplicateKeys.ts +12 -0
  91. package/client/tsconfig.json +14 -0
  92. package/client/vite.config.ts +20 -0
  93. package/package.json +46 -0
  94. package/server/package.json +22 -0
  95. package/server/src/auth/passphrase.ts +48 -0
  96. package/server/src/config.ts +55 -0
  97. package/server/src/daemon.ts +338 -0
  98. package/server/src/features/ralph-loop.ts +173 -0
  99. package/server/src/features/scheduler.ts +281 -0
  100. package/server/src/features/sticky-notes.ts +102 -0
  101. package/server/src/handlers/chat.ts +194 -0
  102. package/server/src/handlers/fs.ts +84 -0
  103. package/server/src/handlers/loop.ts +37 -0
  104. package/server/src/handlers/mesh.ts +125 -0
  105. package/server/src/handlers/notes.ts +45 -0
  106. package/server/src/handlers/project-settings.ts +174 -0
  107. package/server/src/handlers/scheduler.ts +47 -0
  108. package/server/src/handlers/session.ts +159 -0
  109. package/server/src/handlers/settings.ts +109 -0
  110. package/server/src/handlers/skills.ts +380 -0
  111. package/server/src/handlers/terminal.ts +70 -0
  112. package/server/src/identity.ts +26 -0
  113. package/server/src/index.ts +190 -0
  114. package/server/src/mesh/connector.ts +209 -0
  115. package/server/src/mesh/discovery.ts +123 -0
  116. package/server/src/mesh/pairing.ts +94 -0
  117. package/server/src/mesh/peers.ts +52 -0
  118. package/server/src/mesh/proxy.ts +103 -0
  119. package/server/src/mesh/session-sync.ts +107 -0
  120. package/server/src/project/context-breakdown.ts +289 -0
  121. package/server/src/project/file-browser.ts +106 -0
  122. package/server/src/project/project-files.ts +267 -0
  123. package/server/src/project/registry.ts +57 -0
  124. package/server/src/project/sdk-bridge.ts +566 -0
  125. package/server/src/project/session.ts +432 -0
  126. package/server/src/project/terminal.ts +69 -0
  127. package/server/src/tls.ts +51 -0
  128. package/server/src/ws/broadcast.ts +31 -0
  129. package/server/src/ws/router.ts +104 -0
  130. package/server/src/ws/server.ts +2 -0
  131. package/server/tsconfig.json +16 -0
  132. package/shared/package.json +11 -0
  133. package/shared/src/constants.ts +7 -0
  134. package/shared/src/index.ts +4 -0
  135. package/shared/src/messages.ts +638 -0
  136. package/shared/src/models.ts +136 -0
  137. package/shared/src/project-settings.ts +45 -0
  138. package/shared/tsconfig.json +11 -0
  139. package/themes/amoled.json +20 -0
  140. package/themes/ayu-light.json +9 -0
  141. package/themes/catppuccin-latte.json +9 -0
  142. package/themes/catppuccin-mocha.json +9 -0
  143. package/themes/clay-light.json +10 -0
  144. package/themes/clay.json +10 -0
  145. package/themes/dracula.json +9 -0
  146. package/themes/everforest-light.json +9 -0
  147. package/themes/everforest.json +9 -0
  148. package/themes/github-light.json +9 -0
  149. package/themes/gruvbox-dark.json +9 -0
  150. package/themes/gruvbox-light.json +9 -0
  151. package/themes/monokai.json +9 -0
  152. package/themes/nord-light.json +9 -0
  153. package/themes/nord.json +9 -0
  154. package/themes/one-dark.json +9 -0
  155. package/themes/one-light.json +9 -0
  156. package/themes/rose-pine-dawn.json +9 -0
  157. package/themes/rose-pine.json +9 -0
  158. package/themes/solarized-dark.json +9 -0
  159. package/themes/solarized-light.json +9 -0
  160. package/themes/tokyo-night-light.json +9 -0
  161. package/themes/tokyo-night.json +9 -0
  162. package/tsconfig.json +26 -0
@@ -0,0 +1,16 @@
1
+ {
2
+ "extends": "../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "rootDir": "./src",
6
+ "types": [
7
+ "bun-types"
8
+ ]
9
+ },
10
+ "include": [
11
+ "src"
12
+ ],
13
+ "references": [
14
+ { "path": "../shared" }
15
+ ]
16
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@lattice/shared",
3
+ "private": true,
4
+ "version": "0.0.1",
5
+ "type": "module",
6
+ "main": "./src/index.ts",
7
+ "types": "./src/index.ts",
8
+ "exports": {
9
+ ".": "./src/index.ts"
10
+ }
11
+ }
@@ -0,0 +1,7 @@
1
+ export var DEFAULT_PORT = 7654;
2
+ export var PROTOCOL_VERSION = 1;
3
+ export var MDNS_SERVICE_TYPE = "_lattice._tcp";
4
+ export var LATTICE_HOME_DIR = ".lattice";
5
+ export var DAEMON_SOCKET_NAME = "daemon.sock";
6
+ export var DAEMON_PID_FILE = "daemon.pid";
7
+ export var DAEMON_LOG_FILE = "daemon.log";
@@ -0,0 +1,4 @@
1
+ export * from "./constants.js";
2
+ export * from "./messages.js";
3
+ export * from "./models.js";
4
+ export * from "./project-settings.js";
@@ -0,0 +1,638 @@
1
+ import type {
2
+ Attachment,
3
+ FileEntry,
4
+ HistoryMessage,
5
+ LatticeConfig,
6
+ LoopStatus,
7
+ MarketplaceSkill,
8
+ NodeInfo,
9
+ ProjectInfo,
10
+ ScheduledTask,
11
+ SessionSummary,
12
+ SkillInfo,
13
+ StickyNote,
14
+ } from "./models.js";
15
+ import type { McpServerConfig, ProjectSettings } from "./project-settings.js";
16
+
17
+ export interface SessionCreateMessage {
18
+ type: "session:create";
19
+ projectSlug: string;
20
+ }
21
+
22
+ export interface SessionActivateMessage {
23
+ type: "session:activate";
24
+ projectSlug: string;
25
+ sessionId: string;
26
+ }
27
+
28
+ export interface SessionRenameMessage {
29
+ type: "session:rename";
30
+ sessionId: string;
31
+ title: string;
32
+ }
33
+
34
+ export interface SessionDeleteMessage {
35
+ type: "session:delete";
36
+ sessionId: string;
37
+ }
38
+
39
+ export interface SessionListRequestMessage {
40
+ type: "session:list_request";
41
+ projectSlug: string;
42
+ }
43
+
44
+ export interface ChatSendMessage {
45
+ type: "chat:send";
46
+ text: string;
47
+ attachments?: Attachment[];
48
+ model?: string;
49
+ effort?: string;
50
+ }
51
+
52
+ export interface ChatPermissionResponseMessage {
53
+ type: "chat:permission_response";
54
+ requestId: string;
55
+ allow: boolean;
56
+ alwaysAllow?: boolean;
57
+ alwaysAllowScope?: "session" | "project";
58
+ }
59
+
60
+ export interface ChatRewindMessage {
61
+ type: "chat:rewind";
62
+ messageUuid: string;
63
+ }
64
+
65
+ export interface ChatCancelMessage {
66
+ type: "chat:cancel";
67
+ }
68
+
69
+ export interface ChatSetPermissionModeMessage {
70
+ type: "chat:set_permission_mode";
71
+ mode: "default" | "acceptEdits" | "plan" | "dontAsk";
72
+ }
73
+
74
+ export interface FsListMessage {
75
+ type: "fs:list";
76
+ path: string;
77
+ }
78
+
79
+ export interface FsReadMessage {
80
+ type: "fs:read";
81
+ path: string;
82
+ }
83
+
84
+ export interface FsWriteMessage {
85
+ type: "fs:write";
86
+ path: string;
87
+ content: string;
88
+ }
89
+
90
+ export interface TerminalCreateMessage {
91
+ type: "terminal:create";
92
+ }
93
+
94
+ export interface TerminalInputMessage {
95
+ type: "terminal:input";
96
+ termId: string;
97
+ data: string;
98
+ }
99
+
100
+ export interface TerminalResizeMessage {
101
+ type: "terminal:resize";
102
+ termId: string;
103
+ cols: number;
104
+ rows: number;
105
+ }
106
+
107
+ export interface SettingsGetMessage {
108
+ type: "settings:get";
109
+ }
110
+
111
+ export interface SettingsUpdateMessage {
112
+ type: "settings:update";
113
+ settings: Partial<LatticeConfig>;
114
+ }
115
+
116
+ export interface SettingsRestartMessage {
117
+ type: "settings:restart";
118
+ }
119
+
120
+ export interface MeshPairMessage {
121
+ type: "mesh:pair";
122
+ code: string;
123
+ }
124
+
125
+ export interface MeshGenerateInviteMessage {
126
+ type: "mesh:generate_invite";
127
+ }
128
+
129
+ export interface MeshUnpairMessage {
130
+ type: "mesh:unpair";
131
+ nodeId: string;
132
+ }
133
+
134
+ export interface LoopStartMessage {
135
+ type: "loop:start";
136
+ projectSlug: string;
137
+ }
138
+
139
+ export interface LoopStopMessage {
140
+ type: "loop:stop";
141
+ loopId: string;
142
+ }
143
+
144
+ export interface LoopStatusRequestMessage {
145
+ type: "loop:status";
146
+ loopId: string;
147
+ }
148
+
149
+ export interface SchedulerListMessage {
150
+ type: "scheduler:list";
151
+ }
152
+
153
+ export interface SchedulerCreateMessage {
154
+ type: "scheduler:create";
155
+ name: string;
156
+ prompt: string;
157
+ cron: string;
158
+ projectSlug: string;
159
+ }
160
+
161
+ export interface SchedulerDeleteMessage {
162
+ type: "scheduler:delete";
163
+ taskId: string;
164
+ }
165
+
166
+ export interface SchedulerToggleMessage {
167
+ type: "scheduler:toggle";
168
+ taskId: string;
169
+ }
170
+
171
+ export interface NotesListMessage {
172
+ type: "notes:list";
173
+ }
174
+
175
+ export interface NotesCreateMessage {
176
+ type: "notes:create";
177
+ content: string;
178
+ }
179
+
180
+ export interface NotesUpdateMessage {
181
+ type: "notes:update";
182
+ id: string;
183
+ content: string;
184
+ }
185
+
186
+ export interface NotesDeleteMessage {
187
+ type: "notes:delete";
188
+ id: string;
189
+ }
190
+
191
+ export interface SkillsListRequestMessage {
192
+ type: "skills:list_request";
193
+ }
194
+
195
+ export interface SessionListAllRequestMessage {
196
+ type: "session:list_all_request";
197
+ }
198
+
199
+ export interface SkillsSearchMessage {
200
+ type: "skills:search";
201
+ query: string;
202
+ }
203
+
204
+ export interface SkillsInstallMessage {
205
+ type: "skills:install";
206
+ source: string;
207
+ scope: "global" | "project";
208
+ projectSlug?: string;
209
+ }
210
+
211
+ export interface SkillsViewMessage {
212
+ type: "skills:view";
213
+ path: string;
214
+ }
215
+
216
+ export interface SkillsDeleteMessage {
217
+ type: "skills:delete";
218
+ path: string;
219
+ }
220
+
221
+ export interface SkillsUpdateMessage {
222
+ type: "skills:update";
223
+ source: string;
224
+ }
225
+
226
+ export interface ProjectSettingsGetMessage {
227
+ type: "project-settings:get";
228
+ projectSlug: string;
229
+ }
230
+
231
+ export interface ProjectSettingsUpdateMessage {
232
+ type: "project-settings:update";
233
+ projectSlug: string;
234
+ section: string;
235
+ settings: Record<string, unknown>;
236
+ }
237
+
238
+ export interface ProjectSettingsDataMessage {
239
+ type: "project-settings:data";
240
+ projectSlug: string;
241
+ settings: ProjectSettings;
242
+ }
243
+
244
+ export interface ProjectSettingsErrorMessage {
245
+ type: "project-settings:error";
246
+ projectSlug: string;
247
+ message: string;
248
+ }
249
+
250
+ export type ClientMessage =
251
+ | SessionCreateMessage
252
+ | SessionActivateMessage
253
+ | SessionRenameMessage
254
+ | SessionDeleteMessage
255
+ | SessionListRequestMessage
256
+ | ChatSendMessage
257
+ | ChatPermissionResponseMessage
258
+ | ChatRewindMessage
259
+ | ChatCancelMessage
260
+ | FsListMessage
261
+ | FsReadMessage
262
+ | FsWriteMessage
263
+ | TerminalCreateMessage
264
+ | TerminalInputMessage
265
+ | TerminalResizeMessage
266
+ | SettingsGetMessage
267
+ | SettingsUpdateMessage
268
+ | SettingsRestartMessage
269
+ | MeshPairMessage
270
+ | MeshGenerateInviteMessage
271
+ | MeshUnpairMessage
272
+ | LoopStartMessage
273
+ | LoopStopMessage
274
+ | LoopStatusRequestMessage
275
+ | SchedulerListMessage
276
+ | SchedulerCreateMessage
277
+ | SchedulerDeleteMessage
278
+ | SchedulerToggleMessage
279
+ | NotesListMessage
280
+ | NotesCreateMessage
281
+ | NotesUpdateMessage
282
+ | NotesDeleteMessage
283
+ | SkillsListRequestMessage
284
+ | ChatSetPermissionModeMessage
285
+ | ProjectSettingsGetMessage
286
+ | ProjectSettingsUpdateMessage
287
+ | SessionListAllRequestMessage
288
+ | SkillsSearchMessage
289
+ | SkillsInstallMessage
290
+ | SkillsViewMessage
291
+ | SkillsDeleteMessage
292
+ | SkillsUpdateMessage;
293
+
294
+ export interface SessionListMessage {
295
+ type: "session:list";
296
+ projectSlug: string;
297
+ sessions: SessionSummary[];
298
+ }
299
+
300
+ export interface SessionCreatedMessage {
301
+ type: "session:created";
302
+ session: SessionSummary;
303
+ }
304
+
305
+ export interface SessionHistoryMessage {
306
+ type: "session:history";
307
+ projectSlug: string;
308
+ sessionId: string;
309
+ messages: HistoryMessage[];
310
+ title?: string;
311
+ interrupted?: boolean;
312
+ }
313
+
314
+ export interface ChatUserMessage {
315
+ type: "chat:user_message";
316
+ text: string;
317
+ uuid: string;
318
+ }
319
+
320
+ export interface ChatDeltaMessage {
321
+ type: "chat:delta";
322
+ text: string;
323
+ }
324
+
325
+ export interface ChatToolStartMessage {
326
+ type: "chat:tool_start";
327
+ toolId: string;
328
+ name: string;
329
+ args: string;
330
+ }
331
+
332
+ export interface ChatToolResultMessage {
333
+ type: "chat:tool_result";
334
+ toolId: string;
335
+ content: string;
336
+ }
337
+
338
+ export interface ChatDoneMessage {
339
+ type: "chat:done";
340
+ cost: number;
341
+ duration: number;
342
+ }
343
+
344
+ export interface ChatErrorMessage {
345
+ type: "chat:error";
346
+ message: string;
347
+ }
348
+
349
+ export interface ChatPermissionRequestMessage {
350
+ type: "chat:permission_request";
351
+ requestId: string;
352
+ tool: string;
353
+ args: string;
354
+ title?: string;
355
+ decisionReason?: string;
356
+ permissionRule?: string;
357
+ }
358
+
359
+ export interface ChatPermissionResolvedMessage {
360
+ type: "chat:permission_resolved";
361
+ requestId: string;
362
+ status: "allowed" | "denied" | "always_allowed";
363
+ }
364
+
365
+ export interface ChatStatusMessage {
366
+ type: "chat:status";
367
+ phase: "thinking" | "tool_call" | "tool_result";
368
+ toolName?: string;
369
+ elapsed?: number;
370
+ summary?: string;
371
+ }
372
+
373
+ export interface ChatContextUsageMessage {
374
+ type: "chat:context_usage";
375
+ inputTokens: number;
376
+ outputTokens: number;
377
+ cacheReadTokens: number;
378
+ cacheCreationTokens: number;
379
+ contextWindow: number;
380
+ }
381
+
382
+ export interface ContextBreakdownSegment {
383
+ label: string;
384
+ tokens: number;
385
+ id: string;
386
+ estimated: boolean;
387
+ }
388
+
389
+ export interface ChatContextBreakdownMessage {
390
+ type: "chat:context_breakdown";
391
+ segments: ContextBreakdownSegment[];
392
+ contextWindow: number;
393
+ autocompactAt: number;
394
+ }
395
+
396
+ export interface FsListResultMessage {
397
+ type: "fs:list_result";
398
+ path: string;
399
+ entries: FileEntry[];
400
+ }
401
+
402
+ export interface FsReadResultMessage {
403
+ type: "fs:read_result";
404
+ path: string;
405
+ content: string;
406
+ }
407
+
408
+ export interface FsChangedMessage {
409
+ type: "fs:changed";
410
+ path: string;
411
+ }
412
+
413
+ export interface TerminalCreatedMessage {
414
+ type: "terminal:created";
415
+ termId: string;
416
+ }
417
+
418
+ export interface TerminalOutputMessage {
419
+ type: "terminal:output";
420
+ termId: string;
421
+ data: string;
422
+ }
423
+
424
+ export interface TerminalExitedMessage {
425
+ type: "terminal:exited";
426
+ termId: string;
427
+ code: number;
428
+ }
429
+
430
+ export interface MeshNodesMessage {
431
+ type: "mesh:nodes";
432
+ nodes: NodeInfo[];
433
+ }
434
+
435
+ export interface MeshInviteCodeMessage {
436
+ type: "mesh:invite_code";
437
+ code: string;
438
+ qrDataUrl: string;
439
+ }
440
+
441
+ export interface MeshPairedMessage {
442
+ type: "mesh:paired";
443
+ node: NodeInfo;
444
+ }
445
+
446
+ export interface MeshNodeOnlineMessage {
447
+ type: "mesh:node_online";
448
+ nodeId: string;
449
+ }
450
+
451
+ export interface MeshNodeOfflineMessage {
452
+ type: "mesh:node_offline";
453
+ nodeId: string;
454
+ }
455
+
456
+ export interface ProjectsListMessage {
457
+ type: "projects:list";
458
+ projects: ProjectInfo[];
459
+ }
460
+
461
+ export interface SettingsDataMessage {
462
+ type: "settings:data";
463
+ config: LatticeConfig;
464
+ mcpServers?: Record<string, McpServerConfig>;
465
+ globalSkills?: SkillInfo[];
466
+ }
467
+
468
+ export interface LoopStatusMessage {
469
+ type: "loop:status_update";
470
+ loop: LoopStatus;
471
+ }
472
+
473
+ export interface LoopStartedMessage {
474
+ type: "loop:started";
475
+ loop: LoopStatus;
476
+ }
477
+
478
+ export interface LoopDeltaMessage {
479
+ type: "loop:delta";
480
+ loopId: string;
481
+ iteration: number;
482
+ text: string;
483
+ }
484
+
485
+ export interface SchedulerTasksMessage {
486
+ type: "scheduler:tasks";
487
+ tasks: ScheduledTask[];
488
+ }
489
+
490
+ export interface SchedulerTaskCreatedMessage {
491
+ type: "scheduler:task_created";
492
+ task: ScheduledTask;
493
+ }
494
+
495
+ export interface NotesListResultMessage {
496
+ type: "notes:list_result";
497
+ notes: StickyNote[];
498
+ }
499
+
500
+ export interface NoteCreatedMessage {
501
+ type: "notes:created";
502
+ note: StickyNote;
503
+ }
504
+
505
+ export interface NoteUpdatedMessage {
506
+ type: "notes:updated";
507
+ note: StickyNote;
508
+ }
509
+
510
+ export interface NoteDeletedMessage {
511
+ type: "notes:deleted";
512
+ id: string;
513
+ }
514
+
515
+ export interface SkillsListMessage {
516
+ type: "skills:list";
517
+ skills: SkillInfo[];
518
+ }
519
+
520
+ export interface SessionListAllMessage {
521
+ type: "session:list_all";
522
+ sessions: SessionSummary[];
523
+ }
524
+
525
+ export interface SkillsSearchResultsMessage {
526
+ type: "skills:search_results";
527
+ query: string;
528
+ skills: MarketplaceSkill[];
529
+ count: number;
530
+ error?: string;
531
+ }
532
+
533
+ export interface SkillsInstallResultMessage {
534
+ type: "skills:install_result";
535
+ success: boolean;
536
+ message?: string;
537
+ }
538
+
539
+ export interface SkillsViewResultMessage {
540
+ type: "skills:view_result";
541
+ path: string;
542
+ content: string;
543
+ }
544
+
545
+ export interface SkillsDeleteResultMessage {
546
+ type: "skills:delete_result";
547
+ success: boolean;
548
+ message?: string;
549
+ }
550
+
551
+ export type ServerMessage =
552
+ | SessionListMessage
553
+ | SessionCreatedMessage
554
+ | SessionHistoryMessage
555
+ | ChatUserMessage
556
+ | ChatDeltaMessage
557
+ | ChatToolStartMessage
558
+ | ChatToolResultMessage
559
+ | ChatDoneMessage
560
+ | ChatErrorMessage
561
+ | ChatPermissionRequestMessage
562
+ | ChatStatusMessage
563
+ | ChatContextUsageMessage
564
+ | ChatContextBreakdownMessage
565
+ | FsListResultMessage
566
+ | FsReadResultMessage
567
+ | FsChangedMessage
568
+ | TerminalCreatedMessage
569
+ | TerminalOutputMessage
570
+ | TerminalExitedMessage
571
+ | MeshNodesMessage
572
+ | MeshInviteCodeMessage
573
+ | MeshPairedMessage
574
+ | MeshNodeOnlineMessage
575
+ | MeshNodeOfflineMessage
576
+ | ProjectsListMessage
577
+ | SettingsDataMessage
578
+ | LoopStatusMessage
579
+ | LoopStartedMessage
580
+ | LoopDeltaMessage
581
+ | SchedulerTasksMessage
582
+ | SchedulerTaskCreatedMessage
583
+ | NotesListResultMessage
584
+ | NoteCreatedMessage
585
+ | NoteUpdatedMessage
586
+ | NoteDeletedMessage
587
+ | SkillsListMessage
588
+ | ChatPermissionResolvedMessage
589
+ | ProjectSettingsDataMessage
590
+ | ProjectSettingsErrorMessage
591
+ | SessionListAllMessage
592
+ | SkillsSearchResultsMessage
593
+ | SkillsInstallResultMessage
594
+ | SkillsViewResultMessage
595
+ | SkillsDeleteResultMessage;
596
+
597
+ export interface MeshHelloMessage {
598
+ type: "mesh:hello";
599
+ nodeId: string;
600
+ name: string;
601
+ projects: Array<{ slug: string; title: string }>;
602
+ }
603
+
604
+ export interface MeshProxyRequestMessage {
605
+ type: "mesh:proxy_request";
606
+ projectSlug: string;
607
+ requestId: string;
608
+ payload: ClientMessage;
609
+ }
610
+
611
+ export interface MeshProxyResponseMessage {
612
+ type: "mesh:proxy_response";
613
+ projectSlug: string;
614
+ requestId: string;
615
+ payload: ServerMessage;
616
+ }
617
+
618
+ export interface MeshSessionSyncMessage {
619
+ type: "mesh:session_sync";
620
+ projectSlug: string;
621
+ sessionId: string;
622
+ lines: string[];
623
+ offset: number;
624
+ }
625
+
626
+ export interface MeshSessionRequestMessage {
627
+ type: "mesh:session_request";
628
+ projectSlug: string;
629
+ sessionId: string;
630
+ fromOffset: number;
631
+ }
632
+
633
+ export type MeshMessage =
634
+ | MeshHelloMessage
635
+ | MeshProxyRequestMessage
636
+ | MeshProxyResponseMessage
637
+ | MeshSessionSyncMessage
638
+ | MeshSessionRequestMessage;