@ai-ecoverse/slicc-spectrum 1.1.0 → 1.2.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 (122) hide show
  1. package/README.md +29 -6
  2. package/dist/{chunk-4RGMMAR4.js → chunk-4GQ6THC2.js} +3 -3
  3. package/dist/{chunk-H5WU2XYY.js → chunk-5XWUZJTT.js} +2 -2
  4. package/dist/chunk-64K5VONJ.js +11 -0
  5. package/dist/chunk-64K5VONJ.js.map +7 -0
  6. package/dist/{chunk-J45KH7MF.js → chunk-6JNYNXUQ.js} +2 -2
  7. package/dist/chunk-6JYCQXDO.js +8 -0
  8. package/dist/chunk-6JYCQXDO.js.map +7 -0
  9. package/dist/{chunk-ZTPYBVZL.js → chunk-6N3GZNXH.js} +3 -3
  10. package/dist/chunk-6ODADG7T.js +8 -0
  11. package/dist/chunk-6ODADG7T.js.map +7 -0
  12. package/dist/chunk-6T3O5K6R.js +8 -0
  13. package/dist/{chunk-MR7SU4GJ.js → chunk-7PY7B3ZW.js} +2 -2
  14. package/dist/{chunk-Q4AC2O6Z.js → chunk-AXQFWXYZ.js} +8 -2
  15. package/dist/chunk-BDOI3WEE.js +8 -0
  16. package/dist/chunk-BDOI3WEE.js.map +7 -0
  17. package/dist/chunk-BHAGWMDD.js +8 -0
  18. package/dist/chunk-BHAGWMDD.js.map +7 -0
  19. package/dist/chunk-C7X653JJ.js +8 -0
  20. package/dist/chunk-CGS66GRP.js +11 -0
  21. package/dist/chunk-CGS66GRP.js.map +7 -0
  22. package/dist/chunk-CONYKGKV.js +11 -0
  23. package/dist/chunk-CONYKGKV.js.map +7 -0
  24. package/dist/chunk-CU7BC2RI.js +11 -0
  25. package/dist/chunk-CU7BC2RI.js.map +7 -0
  26. package/dist/chunk-EX57SDII.js +8 -0
  27. package/dist/chunk-EX57SDII.js.map +7 -0
  28. package/dist/chunk-GKXQPI4G.js +8 -0
  29. package/dist/chunk-GKXQPI4G.js.map +7 -0
  30. package/dist/{chunk-FN3Y2AYJ.js → chunk-I2NMYJ25.js} +3 -3
  31. package/dist/chunk-I2NMYJ25.js.map +7 -0
  32. package/dist/chunk-I4OYHPAU.js +11 -0
  33. package/dist/chunk-I4OYHPAU.js.map +7 -0
  34. package/dist/{chunk-MTF6JFSL.js → chunk-J3QOBXZJ.js} +2 -2
  35. package/dist/chunk-JBYBW627.js +8 -0
  36. package/dist/chunk-JBYBW627.js.map +7 -0
  37. package/dist/chunk-JWTAKXQS.js +8 -0
  38. package/dist/chunk-JWTAKXQS.js.map +7 -0
  39. package/dist/chunk-KMP5HO3E.js +11 -0
  40. package/dist/chunk-KMP5HO3E.js.map +7 -0
  41. package/dist/chunk-KWPU2PY3.js +14 -0
  42. package/dist/chunk-KWPU2PY3.js.map +7 -0
  43. package/dist/chunk-KYBD6ZRT.js +8 -0
  44. package/dist/chunk-KYBD6ZRT.js.map +7 -0
  45. package/dist/chunk-LBXW6XNL.js +18 -0
  46. package/dist/chunk-LBXW6XNL.js.map +7 -0
  47. package/dist/chunk-LDR4U5KX.js +8 -0
  48. package/dist/chunk-LDR4U5KX.js.map +7 -0
  49. package/dist/chunk-LII3WY6Y.js +11 -0
  50. package/dist/chunk-LII3WY6Y.js.map +7 -0
  51. package/dist/chunk-LY7WVBCB.js +10 -0
  52. package/dist/chunk-LY7WVBCB.js.map +7 -0
  53. package/dist/chunk-MJVAL555.js +8 -0
  54. package/dist/chunk-MJVAL555.js.map +7 -0
  55. package/dist/chunk-NLDFGCIL.js +11 -0
  56. package/dist/chunk-NLDFGCIL.js.map +7 -0
  57. package/dist/{chunk-SZ33GAVH.js → chunk-OFQ56DAN.js} +5 -5
  58. package/dist/chunk-S5EGO4NA.js +11 -0
  59. package/dist/chunk-S5EGO4NA.js.map +7 -0
  60. package/dist/{chunk-24WRGUXG.js → chunk-T2LAT2D6.js} +2 -2
  61. package/dist/chunk-TAZBKRHT.js +10 -0
  62. package/dist/chunk-TAZBKRHT.js.map +7 -0
  63. package/dist/chunk-TK4ZJ7LA.js +5346 -0
  64. package/dist/chunk-TK4ZJ7LA.js.map +7 -0
  65. package/dist/chunk-UCIBH53C.js +11 -0
  66. package/dist/chunk-UCIBH53C.js.map +7 -0
  67. package/dist/chunk-XZM23TK4.js +11 -0
  68. package/dist/chunk-XZM23TK4.js.map +7 -0
  69. package/dist/chunk-YPQKCWWG.js +19 -0
  70. package/dist/chunk-YPQKCWWG.js.map +7 -0
  71. package/dist/chunk-YX6SI5VA.js +11 -0
  72. package/dist/chunk-YX6SI5VA.js.map +7 -0
  73. package/dist/slicc-dummy.js +1475 -57
  74. package/dist/slicc-dummy.js.map +4 -4
  75. package/dist/slicc-terminal.js +7 -5344
  76. package/dist/slicc-terminal.js.map +4 -4
  77. package/dist/slicc-ui.js +56839 -17869
  78. package/dist/slicc-ui.js.map +4 -4
  79. package/dist/types/app/app.d.ts +5 -11
  80. package/dist/types/app/base.d.ts +9 -1
  81. package/dist/types/app/browser.d.ts +25 -0
  82. package/dist/types/app/changes.d.ts +24 -0
  83. package/dist/types/app/chat.d.ts +2 -14
  84. package/dist/types/app/composer.d.ts +69 -0
  85. package/dist/types/app/files.d.ts +56 -0
  86. package/dist/types/app/freezer.d.ts +11 -0
  87. package/dist/types/app/markdown.d.ts +12 -3
  88. package/dist/types/app/memory.d.ts +39 -0
  89. package/dist/types/app/messages.d.ts +21 -0
  90. package/dist/types/app/monitor.d.ts +11 -0
  91. package/dist/types/app/panels.d.ts +11 -3
  92. package/dist/types/app/settings.d.ts +21 -0
  93. package/dist/types/app/spectrum.d.ts +18 -0
  94. package/dist/types/app/sprinkle.d.ts +18 -0
  95. package/dist/types/app/terminals.d.ts +25 -0
  96. package/dist/types/app/tray.d.ts +25 -0
  97. package/dist/types/components/code-view.d.ts +47 -0
  98. package/dist/types/components/file-tree.d.ts +18 -0
  99. package/dist/types/dummy/agent.d.ts +21 -3
  100. package/dist/types/dummy/extras.d.ts +8 -0
  101. package/dist/types/dummy/fixtures.d.ts +2 -1
  102. package/dist/types/dummy/memory.d.ts +9 -0
  103. package/dist/types/dummy/monitor.d.ts +9 -0
  104. package/dist/types/dummy/script.d.ts +8 -2
  105. package/dist/types/dummy/showcase.d.ts +6 -0
  106. package/dist/types/dummy/sprinkles.d.ts +9 -0
  107. package/dist/types/dummy/tray.d.ts +10 -0
  108. package/dist/types/model/types.d.ts +280 -8
  109. package/dist/types/ui.d.ts +11 -3
  110. package/package.json +6 -1
  111. package/dist/chunk-T5QFSUYQ.js +0 -8
  112. /package/dist/{chunk-4RGMMAR4.js.map → chunk-4GQ6THC2.js.map} +0 -0
  113. /package/dist/{chunk-FN3Y2AYJ.js.map → chunk-5XWUZJTT.js.map} +0 -0
  114. /package/dist/{chunk-J45KH7MF.js.map → chunk-6JNYNXUQ.js.map} +0 -0
  115. /package/dist/{chunk-ZTPYBVZL.js.map → chunk-6N3GZNXH.js.map} +0 -0
  116. /package/dist/{chunk-H5WU2XYY.js.map → chunk-6T3O5K6R.js.map} +0 -0
  117. /package/dist/{chunk-MR7SU4GJ.js.map → chunk-7PY7B3ZW.js.map} +0 -0
  118. /package/dist/{chunk-Q4AC2O6Z.js.map → chunk-AXQFWXYZ.js.map} +0 -0
  119. /package/dist/{chunk-T5QFSUYQ.js.map → chunk-C7X653JJ.js.map} +0 -0
  120. /package/dist/{chunk-MTF6JFSL.js.map → chunk-J3QOBXZJ.js.map} +0 -0
  121. /package/dist/{chunk-SZ33GAVH.js.map → chunk-OFQ56DAN.js.map} +0 -0
  122. /package/dist/{chunk-24WRGUXG.js.map → chunk-T2LAT2D6.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import type { Account, Agent, BrowserTab, Change, Message, ModelOption, Settings, TerminalInfo } from '../model/types.js';
1
+ import type { Account, Agent, BrowserTab, Change, Message, ModelOption, Settings, TerminalInfo, UserMessage } from '../model/types.js';
2
2
  export declare const files: Record<string, string>;
3
3
  export declare const directories: string[];
4
4
  export declare const pending: Change[];
@@ -6,6 +6,7 @@ export declare const models: ModelOption[];
6
6
  export declare const defaults: Settings;
7
7
  export declare const accounts: Account[];
8
8
  export declare const agents: Agent[];
9
+ export declare const queues: Record<string, UserMessage[]>;
9
10
  export declare const conversations: Record<string, Message[]>;
10
11
  export declare const tabs: BrowserTab[];
11
12
  export declare const terminals: TerminalInfo[];
@@ -0,0 +1,9 @@
1
+ import { Emitter } from '../model/emitter.js';
2
+ import type { Memory, MemoryDraft, MemoryEvents, MemoryPort } from '../model/types.js';
3
+ export declare class DummyMemory extends Emitter<MemoryEvents> implements MemoryPort {
4
+ #private;
5
+ constructor(memories: readonly Memory[]);
6
+ list(): readonly Memory[];
7
+ save(draft: MemoryDraft): Memory;
8
+ remove(id: string): void;
9
+ }
@@ -0,0 +1,9 @@
1
+ import { Emitter } from '../model/emitter.js';
2
+ import type { MonitorEvents, MonitorPort, MonitorSnapshot, SliccModel } from '../model/types.js';
3
+ export declare function wave(seed: number, length?: number): number[];
4
+ export declare class DummyMonitor extends Emitter<MonitorEvents> implements MonitorPort {
5
+ #private;
6
+ constructor(model: Omit<SliccModel, 'monitor'>);
7
+ snapshot(): MonitorSnapshot;
8
+ resync(): void;
9
+ }
@@ -1,10 +1,13 @@
1
- import type { BrowserPort, FilePort } from '../model/types.js';
1
+ import type { Attachment, BrowserPort, FilePort, MessagePart } from '../model/types.js';
2
2
  export interface Effects {
3
3
  files: FilePort;
4
4
  browser: BrowserPort;
5
5
  agentId: string;
6
6
  }
7
7
  export type Step = {
8
+ type: 'part';
9
+ part: MessagePart;
10
+ } | {
8
11
  type: 'thinking';
9
12
  text: string;
10
13
  } | {
@@ -20,4 +23,7 @@ export type Step = {
20
23
  ticks: number;
21
24
  effect?: (effects: Effects) => Promise<unknown> | unknown;
22
25
  };
23
- export declare function script(prompt: string): Step[];
26
+ export declare function script(prompt: string, attachments?: readonly Attachment[]): {
27
+ steps: Step[];
28
+ suggestion: string;
29
+ };
@@ -0,0 +1,6 @@
1
+ import type { Agent, Message, UserMessage } from '../model/types.js';
2
+ export declare function picture(label: string, from: string, to: string, width?: number, height?: number): string;
3
+ export declare function tone(seconds?: number, frequency?: number, rate?: number): string;
4
+ export declare const showcaseAgent: Agent;
5
+ export declare function showcase(): Message[];
6
+ export declare function showcaseQueue(): UserMessage[];
@@ -0,0 +1,9 @@
1
+ import { Emitter } from '../model/emitter.js';
2
+ import type { Sprinkle, SprinkleEvents, SprinklePort } from '../model/types.js';
3
+ import type { DummyAgent } from './agent.js';
4
+ export declare class DummySprinkles extends Emitter<SprinkleEvents> implements SprinklePort {
5
+ #private;
6
+ constructor(sprinkles: readonly Sprinkle[], agent: DummyAgent);
7
+ list(): readonly Sprinkle[];
8
+ send(id: string, payload: unknown): void;
9
+ }
@@ -0,0 +1,10 @@
1
+ import { Emitter } from '../model/emitter.js';
2
+ import type { TrayEvents, TrayPort, TrayStatus } from '../model/types.js';
3
+ import type { Clock } from './clock.js';
4
+ export declare class DummyTray extends Emitter<TrayEvents> implements TrayPort {
5
+ #private;
6
+ constructor(status: TrayStatus, clock: Clock);
7
+ status(): TrayStatus;
8
+ reconnect(): void;
9
+ disconnect(): void;
10
+ }
@@ -12,7 +12,7 @@ export interface Agent {
12
12
  contextFill: number;
13
13
  unread: number;
14
14
  }
15
- export type ToolStatus = 'running' | 'done' | 'error';
15
+ export type ToolStatus = 'running' | 'done' | 'error' | 'cancelled';
16
16
  export interface ToolCall {
17
17
  id: string;
18
18
  name: string;
@@ -21,6 +21,68 @@ export interface ToolCall {
21
21
  output: string;
22
22
  status: ToolStatus;
23
23
  paths: string[];
24
+ image?: string;
25
+ }
26
+ export type AttachmentKind = 'image' | 'text' | 'file' | 'secret';
27
+ export interface Attachment {
28
+ id: string;
29
+ name: string;
30
+ kind: AttachmentKind;
31
+ mimeType: string;
32
+ size: number;
33
+ url?: string;
34
+ text?: string;
35
+ path?: string;
36
+ error?: string;
37
+ }
38
+ export type MediaKind = 'image' | 'video' | 'audio';
39
+ export interface Media {
40
+ kind: MediaKind;
41
+ src: string;
42
+ alt: string;
43
+ poster?: string;
44
+ width?: number;
45
+ height?: number;
46
+ }
47
+ export type CardTone = 'neutral' | 'informative' | 'positive' | 'notice' | 'negative';
48
+ export type ActionCard = {
49
+ variant: 'tool';
50
+ title: string;
51
+ badge: string;
52
+ status: string;
53
+ files: string[];
54
+ tone: CardTone;
55
+ } | {
56
+ variant: 'pr';
57
+ number: number;
58
+ title: string;
59
+ branch: string;
60
+ checks: string;
61
+ additions: number;
62
+ deletions: number;
63
+ files: number;
64
+ tone: CardTone;
65
+ } | {
66
+ variant: 'light';
67
+ title: string;
68
+ detail: string;
69
+ tone: CardTone;
70
+ };
71
+ export type QuestionKind = 'yes-no' | 'choice' | 'text' | 'number' | 'date' | 'email';
72
+ export type QuestionState = 'open' | 'answered' | 'inert';
73
+ export interface Question {
74
+ id: string;
75
+ kind: QuestionKind;
76
+ question: string;
77
+ options: string[];
78
+ state: QuestionState;
79
+ answer?: string;
80
+ }
81
+ export type DelegationKind = 'feed' | 'scoop' | 'drop' | 'sprinkle';
82
+ export type ErrorAction = 'retry' | 'settings' | 'change-model' | 'login';
83
+ export interface CheckItem {
84
+ text: string;
85
+ tone?: CardTone;
24
86
  }
25
87
  export type MessagePart = {
26
88
  type: 'text';
@@ -31,31 +93,105 @@ export type MessagePart = {
31
93
  } | {
32
94
  type: 'tool';
33
95
  tool: ToolCall;
96
+ } | {
97
+ type: 'media';
98
+ items: Media[];
99
+ } | {
100
+ type: 'card';
101
+ card: ActionCard;
102
+ } | {
103
+ type: 'plan';
104
+ items: string[];
105
+ } | {
106
+ type: 'check';
107
+ items: CheckItem[];
108
+ } | {
109
+ type: 'diff';
110
+ path: string;
111
+ before: string | null;
112
+ after: string | null;
113
+ } | {
114
+ type: 'question';
115
+ question: Question;
116
+ } | {
117
+ type: 'delegation';
118
+ kind: DelegationKind;
119
+ scoop: string;
120
+ text: string;
121
+ } | {
122
+ type: 'link';
123
+ url: string;
124
+ title: string;
125
+ description: string;
126
+ } | {
127
+ type: 'error';
128
+ message: string;
129
+ action?: ErrorAction;
34
130
  };
131
+ export type SendMode = 'send' | 'steer' | 'queue';
35
132
  export interface UserMessage {
36
133
  id: string;
37
134
  role: 'user';
38
135
  text: string;
39
136
  createdAt: number;
137
+ attachments?: Attachment[];
138
+ mode?: SendMode;
139
+ queued?: boolean;
140
+ from?: string;
141
+ }
142
+ export type AssistantStatus = 'streaming' | 'done' | 'stopped' | 'error';
143
+ export interface Usage {
144
+ input: number;
145
+ output: number;
146
+ cost: number;
40
147
  }
41
- export type AssistantStatus = 'streaming' | 'done' | 'stopped';
42
148
  export interface AssistantMessage {
43
149
  id: string;
44
150
  role: 'assistant';
45
151
  parts: MessagePart[];
46
152
  status: AssistantStatus;
47
153
  createdAt: number;
154
+ model?: string;
155
+ usage?: Usage;
156
+ }
157
+ export type SystemKind = 'compaction' | 'error' | 'notice';
158
+ export type CompactionState = 'summarizing' | 'summarized' | 'fallback' | 'discarded';
159
+ export interface SystemMessage {
160
+ id: string;
161
+ role: 'system';
162
+ kind: SystemKind;
163
+ text: string;
164
+ createdAt: number;
165
+ title?: string;
166
+ trigger?: 'threshold' | 'overflow' | 'idle' | 'manual';
167
+ state?: CompactionState;
168
+ action?: ErrorAction;
48
169
  }
49
- export type EventKind = 'webhook' | 'cron' | 'scoop' | 'compaction' | 'error';
50
- export interface EventMessage {
170
+ export interface ToolMessage {
51
171
  id: string;
52
- role: 'event';
53
- kind: EventKind;
172
+ role: 'tool';
173
+ tool: ToolCall;
174
+ createdAt: number;
175
+ }
176
+ export type LickChannel = 'webhook' | 'cron' | 'sprinkle' | 'fswatch' | 'session-reload' | 'navigate' | 'discovery' | 'upgrade' | 'workflow' | 'bash' | 'jshd' | 'preview' | 'cherry' | 'scoop-notify' | 'scoop-idle' | 'scoop-wait' | 'sudo-request';
177
+ export type LickState = 'pending' | 'confirmed' | 'dismissed';
178
+ export interface LickMessage {
179
+ id: string;
180
+ role: 'lick';
181
+ channel: LickChannel;
54
182
  title: string;
55
183
  text: string;
56
184
  createdAt: number;
185
+ body?: string;
186
+ count?: number;
187
+ state?: LickState;
188
+ }
189
+ export type Message = UserMessage | AssistantMessage | SystemMessage | ToolMessage | LickMessage;
190
+ export interface Outgoing {
191
+ text: string;
192
+ attachments?: Attachment[];
193
+ mode?: SendMode;
57
194
  }
58
- export type Message = UserMessage | AssistantMessage | EventMessage;
59
195
  export interface AgentEvents {
60
196
  agents: readonly Agent[];
61
197
  active: string;
@@ -63,14 +199,38 @@ export interface AgentEvents {
63
199
  agentId: string;
64
200
  message: Message;
65
201
  };
202
+ messages: string;
203
+ frozen: readonly FrozenCone[];
66
204
  }
67
205
  export interface AgentPort extends Subscribable<AgentEvents> {
68
206
  list(): readonly Agent[];
69
207
  active(): string;
70
208
  select(id: string): void;
71
209
  messages(agentId: string): readonly Message[];
72
- send(agentId: string, text: string): Promise<void>;
210
+ send(agentId: string, input: string | Outgoing): Promise<void>;
73
211
  stop(agentId: string): void;
212
+ busy(agentId: string): boolean;
213
+ queue(agentId: string): readonly UserMessage[];
214
+ unqueue(agentId: string, messageId: string): void;
215
+ suggestion(agentId: string): string | null;
216
+ answer(agentId: string, questionId: string, answer: string): void;
217
+ resolveLick(agentId: string, messageId: string, state: Exclude<LickState, 'pending'>): void;
218
+ compact(agentId: string): void;
219
+ clear(agentId: string): void;
220
+ setModel(agentId: string, model: string): void;
221
+ createScoop(parentId: string, name: string): Agent;
222
+ frozen(): readonly FrozenCone[];
223
+ freeze(agentId: string): void;
224
+ thaw(id: string): Agent | null;
225
+ discard(id: string): void;
226
+ }
227
+ export interface FrozenCone {
228
+ id: string;
229
+ name: string;
230
+ title: string;
231
+ model: string;
232
+ messages: number;
233
+ frozenAt: number;
74
234
  }
75
235
  export type FileKind = 'file' | 'directory';
76
236
  export interface FileEntry {
@@ -174,10 +334,122 @@ export interface SettingsPort extends Subscribable<SettingsEvents> {
174
334
  connect(id: string): Promise<void>;
175
335
  disconnect(id: string): void;
176
336
  }
337
+ export type MemoryTag = 'user' | 'feedback' | 'project';
338
+ export interface Memory {
339
+ id: string;
340
+ scope: string;
341
+ section: string;
342
+ title: string;
343
+ body: string;
344
+ tag: MemoryTag | null;
345
+ updatedAt: number;
346
+ }
347
+ export type MemoryDraft = Omit<Memory, 'id' | 'updatedAt'> & {
348
+ id?: string;
349
+ };
350
+ export interface MemoryEvents {
351
+ memories: readonly Memory[];
352
+ }
353
+ export interface MemoryPort extends Subscribable<MemoryEvents> {
354
+ list(): readonly Memory[];
355
+ save(memory: MemoryDraft): Memory;
356
+ remove(id: string): void;
357
+ }
358
+ export type MonitorStatus = 'active' | 'idle' | 'warn' | 'error';
359
+ export interface MonitorVital {
360
+ id: string;
361
+ label: string;
362
+ value: string;
363
+ unit?: string;
364
+ delta?: string;
365
+ series?: number[];
366
+ ratio?: number;
367
+ }
368
+ export interface MonitorRow {
369
+ name: string;
370
+ meta: string;
371
+ status: MonitorStatus;
372
+ badges?: string[];
373
+ }
374
+ export interface MonitorSection {
375
+ id: string;
376
+ label: string;
377
+ rows: MonitorRow[];
378
+ }
379
+ export interface MonitorAlert {
380
+ id: string;
381
+ title: string;
382
+ detail: string;
383
+ severity: 'warn' | 'error';
384
+ }
385
+ export interface MonitorSnapshot {
386
+ vitals: MonitorVital[];
387
+ alerts: MonitorAlert[];
388
+ sections: MonitorSection[];
389
+ updatedAt: number;
390
+ }
391
+ export interface MonitorEvents {
392
+ snapshot: MonitorSnapshot;
393
+ }
394
+ export interface MonitorPort extends Subscribable<MonitorEvents> {
395
+ snapshot(): MonitorSnapshot;
396
+ resync(): void;
397
+ }
398
+ export interface Sprinkle {
399
+ id: string;
400
+ name: string;
401
+ title: string;
402
+ icon: string;
403
+ agentId: string;
404
+ html: string;
405
+ }
406
+ export interface SprinkleEvents {
407
+ sprinkles: readonly Sprinkle[];
408
+ }
409
+ export interface SprinklePort extends Subscribable<SprinkleEvents> {
410
+ list(): readonly Sprinkle[];
411
+ send(id: string, payload: unknown): void;
412
+ }
413
+ export type TrayConnection = 'offline' | 'connecting' | 'live' | 'stalled' | 'reconnecting' | 'error';
414
+ export type FloatKind = 'npx' | 'sliccstart' | 'extension' | 'standalone' | 'cherry' | 'electron' | 'hosted';
415
+ export type TrayRole = 'none' | 'leader' | 'follower';
416
+ export interface Follower {
417
+ id: string;
418
+ name: string;
419
+ device: 'browser' | 'phone' | 'extension';
420
+ since: number;
421
+ }
422
+ export interface TrayStatus {
423
+ name: string;
424
+ kind: FloatKind;
425
+ connection: TrayConnection;
426
+ role: TrayRole;
427
+ followers: Follower[];
428
+ spent: number;
429
+ rate: number;
430
+ budget: {
431
+ percent: number;
432
+ window: 'daily' | 'weekly' | 'monthly';
433
+ resets: string;
434
+ };
435
+ joinUrl: string;
436
+ }
437
+ export interface TrayEvents {
438
+ status: TrayStatus;
439
+ }
440
+ export interface TrayPort extends Subscribable<TrayEvents> {
441
+ status(): TrayStatus;
442
+ reconnect(): void;
443
+ disconnect(): void;
444
+ }
177
445
  export interface SliccModel {
178
446
  agent: AgentPort;
179
447
  files: FilePort;
180
448
  terminals: TerminalPort;
181
449
  browser: BrowserPort;
182
450
  settings: SettingsPort;
451
+ memory: MemoryPort;
452
+ monitor: MonitorPort;
453
+ sprinkles: SprinklePort;
454
+ tray: TrayPort;
183
455
  }
@@ -1,15 +1,23 @@
1
1
  import './app/spectrum.ts';
2
2
  import { SliccAgents } from './app/agents.js';
3
3
  import { SliccApp } from './app/app.js';
4
+ import { SliccBrowser } from './app/browser.js';
5
+ import { SliccChanges, SliccDiffPanel } from './app/changes.js';
4
6
  import { SliccChat } from './app/chat.js';
7
+ import { SliccComposer } from './app/composer.js';
8
+ import { SliccFiles, SliccFileView } from './app/files.js';
9
+ import { SliccCodeView, SliccDiffView } from './components/code-view.js';
5
10
  import { SliccDock } from './components/dock.js';
6
- export type { Color } from './app/app.js';
7
- export { resolveColor } from './app/app.js';
11
+ import { SliccFileTree } from './components/file-tree.js';
12
+ export type { Color } from './app/base.js';
13
+ export { resolveColor } from './app/base.js';
8
14
  export type { Placement, Surface } from './app/panels.js';
9
15
  export { surfaces } from './app/panels.js';
16
+ export type { CodeColor, DiffStyle } from './components/code-view.js';
10
17
  export type { PanelFactory, PanelParams } from './components/dock.js';
18
+ export type { GitStatusEntry } from './components/file-tree.js';
11
19
  export type { Listener, Subscribable } from './model/emitter.js';
12
20
  export { Emitter } from './model/emitter.js';
13
21
  export type * from './model/types.js';
14
- export { SliccAgents, SliccApp, SliccChat, SliccDock };
22
+ export { SliccAgents, SliccApp, SliccBrowser, SliccChanges, SliccChat, SliccCodeView, SliccComposer, SliccDiffPanel, SliccDiffView, SliccDock, SliccFiles, SliccFileTree, SliccFileView, };
15
23
  export declare function define(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-spectrum",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Web components for SLICC on Spectrum Web Components: the terminal, the app shell and its surfaces",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -61,7 +61,10 @@
61
61
  "@biomejs/biome": "2.5.15",
62
62
  "@fontsource/source-code-pro": "5.3.0",
63
63
  "@happy-dom/global-registrator": "20.14.5",
64
+ "@pierre/diffs": "1.5.1",
65
+ "@pierre/trees": "1.0.0-beta.6",
64
66
  "@spectrum-web-components/action-button": "1.12.4",
67
+ "@spectrum-web-components/action-group": "1.12.4",
65
68
  "@spectrum-web-components/action-menu": "1.12.4",
66
69
  "@spectrum-web-components/badge": "1.12.4",
67
70
  "@spectrum-web-components/button": "1.12.4",
@@ -69,6 +72,8 @@
69
72
  "@spectrum-web-components/menu": "1.12.4",
70
73
  "@spectrum-web-components/picker": "1.12.4",
71
74
  "@spectrum-web-components/progress-circle": "1.12.4",
75
+ "@spectrum-web-components/search": "1.12.4",
76
+ "@spectrum-web-components/switch": "1.12.4",
72
77
  "@spectrum-web-components/textfield": "1.12.4",
73
78
  "@spectrum-web-components/theme": "1.12.4",
74
79
  "@types/node": "26.6.4",
@@ -1,8 +0,0 @@
1
- import "./chunk-Q4AC2O6Z.js";
2
-
3
- // stub:wasm-inline
4
- var WASM_BASE64 = "";
5
- export {
6
- WASM_BASE64
7
- };
8
- //# sourceMappingURL=chunk-T5QFSUYQ.js.map