@rool-dev/svelte 0.10.2-dev.9df035a → 0.10.2-dev.a0fe230

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/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Svelte 5 bindings for Rool Spaces. Adds reactive state to the SDK using `$state` runes.
4
4
 
5
- **Requires Svelte 5.** For core concepts (objects, references, AI placeholders, undo/redo), see the [SDK documentation](../sdk/README.md).
5
+ **Requires Svelte 5.** For core concepts (objects, references, AI, WebDAV files, undo/redo), see the [SDK documentation](../sdk/README.md).
6
6
 
7
7
  ## Installation
8
8
 
@@ -13,16 +13,18 @@ npm install @rool-dev/svelte
13
13
  ## Quick Start
14
14
 
15
15
  ```svelte
16
- <script>
17
- import { createRool } from '@rool-dev/svelte';
16
+ <script lang="ts">
17
+ import { createRool, type ReactiveChannel } from '@rool-dev/svelte';
18
18
 
19
19
  const rool = createRool();
20
- rool.init();
20
+ void rool.init();
21
21
 
22
- let channel = $state(null);
22
+ let channel = $state<ReactiveChannel | null>(null);
23
23
  </script>
24
24
 
25
- {#if !rool.authenticated}
25
+ {#if rool.authenticated === null}
26
+ <p>Checking session...</p>
27
+ {:else if !rool.authenticated}
26
28
  <button onclick={() => rool.login('My App')}>Login</button>
27
29
  {:else}
28
30
  <h1>My Spaces</h1>
@@ -48,14 +50,15 @@ The Svelte wrapper adds reactive state on top of the SDK:
48
50
  | Reactive Property | Description |
49
51
  |-------------------|-------------|
50
52
  | `rool.authenticated` | Auth state (`null` = checking, `true`/`false` = known) |
53
+ | `rool.currentUser` | Current user profile after authentication |
51
54
  | `rool.spaces` | List of available spaces |
52
55
  | `rool.spacesLoading` | Whether spaces are loading |
53
56
  | `rool.spacesError` | Error from loading spaces |
54
- | `rool.connectionState` | SSE connection state |
57
+ | `rool.connectionState` | Client SSE connection state |
55
58
  | `rool.userStorage` | User storage (cross-device preferences) |
56
59
  | `space.fileTree` | Canonical reactive WebDAV tree for `/`, including `/space` objects and `/rool-drive` user files |
57
- | `channel.interactions` | Channel interactions (auto-updates) |
58
- | `channel.objectLocations` | All object locations derived from `space.fileTree` |
60
+ | `channel.interactions` | Current conversation interactions |
61
+ | `channel.objectPaths` | Object paths derived from `space.fileTree` |
59
62
  | `channel.collections` | Collection directories derived from `space.fileTree` |
60
63
  | `channel.conversations` | Conversations in this channel (auto-updates on create/delete/rename) |
61
64
  | `thread.interactions` | Interactions for a specific conversation (auto-updates) |
@@ -75,10 +78,10 @@ space.fileTree.nodes; // ReactiveFileNode[]
75
78
  space.fileTree.byPath['/space']; // lookup by machine/WebDAV path
76
79
  space.fileTree.childrenOf('/'); // /space and /rool-drive
77
80
  space.fileTree.childrenOf('/rool-drive');
78
- space.fileTree.objectLocations(); // object locations from /space/**/*.json
81
+ space.fileTree.objectPaths(); // object paths from /space/**/*.json
79
82
  ```
80
83
 
81
- Use this tree when UI needs to react to both files and objects. Object helpers like `channel.object()`, `channel.watch()`, `channel.objectLocations`, and `channel.collections` are backed by this tree.
84
+ Use this tree when UI needs to react to both files and objects. Object helpers like `channel.object()`, `channel.watch()`, `channel.objectPaths`, and `channel.collections` are backed by this tree.
82
85
 
83
86
  ## API
84
87
 
@@ -87,7 +90,7 @@ Use this tree when UI needs to react to both files and objects. Object helpers l
87
90
  ```typescript
88
91
  const rool = createRool();
89
92
 
90
- rool.init(); // Process auth callbacks (call on app startup)
93
+ void rool.init(); // Process auth callbacks (call on app startup)
91
94
  rool.login('My App'); // Redirect to login page
92
95
  rool.signup('My App'); // Redirect to signup page
93
96
  rool.verify(token); // Sign in from an email verification link (used by the official Rool app)
@@ -106,6 +109,7 @@ rool.destroy(); // Clean up all resources
106
109
  // rool.spacesError → Error | null
107
110
  // rool.connectionState → 'connected' | 'disconnected' | 'reconnecting'
108
111
  // rool.userStorage → Record<string, unknown>
112
+ // rool.currentUser → CurrentUser | null
109
113
  </script>
110
114
 
111
115
  {#if rool.spacesLoading}
@@ -124,9 +128,10 @@ rool.destroy(); // Clean up all resources
124
128
  Reactive cross-device storage for user preferences. Synced from server on `init()`, then kept up-to-date via SSE.
125
129
 
126
130
  ```svelte
127
- <script>
131
+ <script lang="ts">
132
+ import { createRool } from '@rool-dev/svelte';
128
133
  const rool = createRool();
129
- rool.init();
134
+ void rool.init();
130
135
  </script>
131
136
 
132
137
  <!-- Reactive binding to storage values -->
@@ -137,9 +142,7 @@ Reactive cross-device storage for user preferences. Synced from server on `init(
137
142
  {/if}
138
143
 
139
144
  <!-- Theme toggle -->
140
- <button onclick={() => rool.setUserStorage('theme',
141
- rool.userStorage.theme === 'dark' ? 'light' : 'dark'
142
- )}>
145
+ <button onclick={() => rool.setUserStorage('theme', rool.userStorage.theme === 'dark' ? 'light' : 'dark')}>
143
146
  Toggle theme
144
147
  </button>
145
148
  ```
@@ -176,47 +179,55 @@ space.close();
176
179
 
177
180
  ### ReactiveChannel
178
181
 
179
- `space.openChannel()` returns a `ReactiveChannel` — the SDK's `RoolChannel` with reactive `interactions` and file-tree-backed object helpers:
182
+ `space.openChannel()` returns a `ReactiveChannel` — the SDK's `RoolChannel` with reactive `interactions`, `objectPaths`, `collections`, `conversations`, and file-tree-backed object helpers:
180
183
 
181
184
  ```svelte
182
- <script>
183
- let space = $state(null);
184
- let channel = $state(null);
185
+ <script lang="ts">
186
+ import { createRool, type ReactiveChannel, type ReactiveSpace } from '@rool-dev/svelte';
187
+
188
+ const rool = createRool();
189
+ void rool.init();
185
190
 
186
- async function open(spaceId) {
191
+ let space = $state<ReactiveSpace | null>(null);
192
+ let channel = $state<ReactiveChannel | null>(null);
193
+
194
+ async function open(spaceId: string) {
187
195
  space = await rool.openSpace(spaceId);
188
196
  channel = await space.openChannel('main');
189
197
  }
190
198
  </script>
191
199
 
192
200
  {#if channel}
193
- <!-- Reactive: updates as AI makes tool calls -->
201
+ <!-- Reactive: updates when the current conversation changes -->
194
202
  {#each channel.interactions as interaction}
195
203
  <div>
196
- <strong>{interaction.operation}</strong>: {interaction.output}
204
+ <strong>{interaction.operation}</strong>: {interaction.output ?? ''}
197
205
  </div>
198
206
  {/each}
199
207
 
200
208
  <!-- All SDK methods work directly -->
201
- <button onclick={() => channel.prompt('Hello')}>Send</button>
209
+ <button onclick={() => void channel.prompt('Hello')}>Send</button>
202
210
  {/if}
203
211
  ```
204
212
 
205
213
  ### Reactive Object
206
214
 
207
- Track a single object by location with auto-updates:
215
+ Track a single object by machine path with auto-updates:
208
216
 
209
217
  ```svelte
210
- <script>
211
- let channel = $state(null);
212
- let item = $state(null);
218
+ <script lang="ts">
219
+ import { createRool, type ReactiveChannel, type ReactiveObject } from '@rool-dev/svelte';
220
+
221
+ const rool = createRool();
222
+ void rool.init();
213
223
 
214
- let space = $state(null);
224
+ let channel = $state<ReactiveChannel | null>(null);
225
+ let item = $state<ReactiveObject | null>(null);
215
226
 
216
- async function open(spaceId, location) {
217
- space = await rool.openSpace(spaceId);
227
+ async function open(spaceId: string, path: string) {
228
+ const space = await rool.openSpace(spaceId);
218
229
  channel = await space.openChannel('main');
219
- item = channel.object(location); // e.g. '/space/article/welcome.json'
230
+ item = channel.object(path); // e.g. '/space/article/welcome.json'
220
231
  }
221
232
  </script>
222
233
 
@@ -224,7 +235,7 @@ Track a single object by location with auto-updates:
224
235
  {#if item.loading}
225
236
  <p>Loading...</p>
226
237
  {:else if item.data}
227
- <div>{item.data.body.title}</div>
238
+ <div>{String(item.data.body.title ?? '')}</div>
228
239
  {:else}
229
240
  <p>Object not found</p>
230
241
  {/if}
@@ -248,13 +259,16 @@ item.close() // Stop listening for updates
248
259
  Create auto-updating watches of objects filtered by field values:
249
260
 
250
261
  ```svelte
251
- <script>
252
- let channel = $state(null);
253
- let articles = $state(null);
262
+ <script lang="ts">
263
+ import { createRool, type ReactiveChannel, type ReactiveSpace, type ReactiveWatch } from '@rool-dev/svelte';
254
264
 
255
- let space = $state(null);
265
+ const rool = createRool();
266
+ void rool.init();
256
267
 
257
- async function open(spaceId) {
268
+ let space = $state<ReactiveSpace | null>(null);
269
+ let channel = $state<ReactiveChannel | null>(null);
270
+ let articles = $state<ReactiveWatch | null>(null);
271
+ async function open(spaceId: string) {
258
272
  space = await rool.openSpace(spaceId);
259
273
  channel = await space.openChannel('main');
260
274
  // Create a reactive watch of all objects in the 'article' collection
@@ -267,7 +281,7 @@ Create auto-updating watches of objects filtered by field values:
267
281
  <p>Loading...</p>
268
282
  {:else}
269
283
  {#each articles.objects as article}
270
- <div>{article.body.title}</div>
284
+ <div>{String(article.body.title ?? '')}</div>
271
285
  {/each}
272
286
  {/if}
273
287
  {/if}
@@ -297,36 +311,51 @@ articles.close() // Stop listening for updates
297
311
 
298
312
  ### Reactive Channel List
299
313
 
300
- `space.channels` is a reactive `ChannelInfo[]` that auto-updates as channels are created, renamed, or deleted.
314
+ `space.channels` is a reactive `ChannelInfo[]` on an opened `ReactiveSpace`. If you only need a live channel list without managing a `ReactiveSpace`, use `rool.channels(spaceId)` and call `close()` when done.
301
315
 
302
316
  ```svelte
303
- <script>
304
- let space = $state(null);
317
+ <script lang="ts">
318
+ import { createRool, type ReactiveSpace } from '@rool-dev/svelte';
319
+
320
+ const rool = createRool();
321
+ void rool.init();
305
322
 
306
- async function open(spaceId) {
323
+ let space = $state<ReactiveSpace | null>(null);
324
+ async function open(spaceId: string) {
307
325
  space = await rool.openSpace(spaceId);
308
326
  }
309
327
  </script>
310
328
 
311
329
  {#if space}
312
330
  {#each space.channels as ch}
313
- <button onclick={() => space.openChannel(ch.id)}>{ch.name ?? ch.id}</button>
331
+ <button onclick={() => void space.openChannel(ch.id)}>{ch.name ?? ch.id}</button>
314
332
  {/each}
315
333
  {/if}
316
334
  ```
317
335
 
336
+ ```typescript
337
+ const channels = rool.channels(spaceId);
338
+ channels.list; // ChannelInfo[]
339
+ channels.loading; // boolean
340
+ await channels.refresh();
341
+ channels.close();
342
+ ```
343
+
318
344
  ### Reactive Conversation Handle
319
345
 
320
346
  For apps with multiple independent interaction threads (e.g., chat with threads), use `channel.conversation()` to get a handle with reactive interactions:
321
347
 
322
348
  ```svelte
323
- <script>
324
- let channel = $state(null);
325
- let thread = $state(null);
349
+ <script lang="ts">
350
+ import { createRool, type ReactiveChannel, type ReactiveConversationHandle, type ReactiveSpace } from '@rool-dev/svelte';
326
351
 
327
- let space = $state(null);
352
+ const rool = createRool();
353
+ void rool.init();
328
354
 
329
- async function openThread(spaceId, threadId) {
355
+ let space = $state<ReactiveSpace | null>(null);
356
+ let channel = $state<ReactiveChannel | null>(null);
357
+ let thread = $state<ReactiveConversationHandle | null>(null);
358
+ async function openThread(spaceId: string, threadId: string) {
330
359
  space = await rool.openSpace(spaceId);
331
360
  channel = await space.openChannel('main');
332
361
  thread = channel.conversation(threadId);
@@ -338,17 +367,18 @@ For apps with multiple independent interaction threads (e.g., chat with threads)
338
367
  <div>{interaction.output}</div>
339
368
  {/each}
340
369
 
341
- <button onclick={() => thread.prompt('Hello')}>Send</button>
370
+ <button onclick={() => void thread.prompt('Hello')}>Send</button>
342
371
  {/if}
343
372
  ```
344
373
 
345
374
  ```typescript
346
375
  // Reactive state
347
- thread.interactions // $state<Interaction[]> — auto-updates via SSE
376
+ thread.interactions // $state<Interaction[]> — updates from space/channel events
348
377
 
349
- // All conversation-scoped methods
378
+ // Conversation-scoped methods
350
379
  await thread.prompt('Hello')
351
- await thread.createObject('note', { text: 'Note' })
380
+ await thread.putObject('/space/note/welcome.json', { text: 'Note' })
381
+ await thread.patchObject('/space/note/welcome.json', { data: { text: 'Updated' } })
352
382
  await thread.setSystemInstruction('Respond in haiku')
353
383
  await thread.rename('Research Thread')
354
384
  thread.getInteractions() // Manual read
@@ -358,7 +388,7 @@ thread.getSystemInstruction()
358
388
  thread.close() // Stop listening for updates
359
389
  ```
360
390
 
361
- Conversations are auto-created on first interaction. All conversations share one SSE connection per channel.
391
+ Conversations are auto-created when you first write history or settings. Real-time events are owned by the space subscription; conversation handles subscribe to channel events locally.
362
392
 
363
393
  ### Channel Management
364
394
 
@@ -384,13 +414,13 @@ channel.name
384
414
  channel.role
385
415
  channel.channelId
386
416
 
387
- // Object operations — addressed by location (`/space/<collection>/<basename>.json`)
388
- await channel.getObject(location)
389
- await channel.createObject('note', { text: 'Hello' })
390
- await channel.createObject('note', { text: 'Hello' }, { basename: 'welcome' })
391
- await channel.updateObject(location, { data: { text: 'Updated' } })
392
- await channel.moveObject(from, to)
393
- await channel.deleteObjects([location])
417
+ // Object operations — addressed by exact machine paths
418
+ const path = '/space/note/welcome.json';
419
+ await channel.getObject(path)
420
+ await channel.putObject(path, { text: 'Hello' })
421
+ await channel.patchObject(path, { data: { text: 'Updated' } })
422
+ await channel.moveObject(path, '/space/note/renamed.json')
423
+ await channel.deleteObjects(['/space/note/renamed.json'])
394
424
 
395
425
  // AI
396
426
  await channel.prompt('Summarize everything')
@@ -401,7 +431,7 @@ await channel.createCollection('article', [
401
431
  { name: 'title', type: { kind: 'string' } },
402
432
  { name: 'status', type: { kind: 'enum', values: ['draft', 'published'] } },
403
433
  ])
404
- await channel.alterCollection('article', [...updatedProps])
434
+ await channel.alterCollection('article', updatedFields)
405
435
  await channel.dropCollection('article')
406
436
 
407
437
  // Undo/Redo
@@ -419,7 +449,7 @@ await channel.renameConversation('Research')
419
449
  // Conversation handles (reactive interactions for specific conversations)
420
450
  const thread = channel.conversation('thread-42');
421
451
  await thread.prompt('Hello'); // Uses thread-42's interaction history
422
- // thread.interactions is reactive $state — auto-updates via SSE
452
+ // thread.interactions is reactive $state — updates from space/channel events
423
453
  thread.close(); // Stop listening when done
424
454
 
425
455
  // Channel admin
@@ -431,19 +461,23 @@ See the [SDK documentation](../sdk/README.md) for complete API details.
431
461
  ### Utilities
432
462
 
433
463
  ```typescript
434
- import { loc, parseLocation, normalizeLocation } from '@rool-dev/svelte';
464
+ import { machinePath, machineUri, isObjectPath, generateId } from '@rool-dev/svelte';
465
+
466
+ machinePath('rool-machine:/rool-drive/docs/read%20me.md');
467
+ // '/rool-drive/docs/read me.md'
435
468
 
436
- // Build / parse location strings
437
- const location = loc('article', 'welcome'); // '/space/article/welcome.json'
438
- const parts = parseLocation(location); // { collection, basename }
439
- const canonical = normalizeLocation('article/welcome'); // '/space/article/welcome.json'
469
+ machineUri('/space/article/welcome.json');
470
+ // 'rool-machine:/space/article/welcome.json'
471
+
472
+ isObjectPath('/space/article/welcome.json'); // true
473
+ generateId(); // 6-character alphanumeric ID
440
474
  ```
441
475
 
442
476
  ## Exported Types
443
477
 
444
478
  ```typescript
445
479
  // Package types
446
- import type { Rool, ReactiveChannel, ReactiveConversationHandle, ReactiveObject, ReactiveWatch, WatchOptions, ReactiveChannelList } from '@rool-dev/svelte';
480
+ import type { Rool, ReactiveSpace, ReactiveChannel, ReactiveConversationHandle, ReactiveObject, ReactiveWatch, WatchOptions, ReactiveChannelList, ReactiveFileTree, ReactiveFileNode, ReactiveFileRoot, ReactiveFileTreeEvent, ReactiveFileTreeSyncResult } from '@rool-dev/svelte';
447
481
 
448
482
  // Re-exported from @rool-dev/sdk
449
483
  import type {
@@ -453,6 +487,7 @@ import type {
453
487
  RoolSpace,
454
488
  RoolSpaceInfo,
455
489
  RoolObject,
490
+ GetObjectsResult,
456
491
  RoolObjectStat,
457
492
  RoolUserRole,
458
493
  ConnectionState,
@@ -462,23 +497,26 @@ import type {
462
497
  CurrentUser,
463
498
  Interaction,
464
499
  PromptOptions,
465
- CreateObjectOptions,
500
+ PromptAttachment,
466
501
  UpdateObjectOptions,
467
502
  MoveObjectOptions,
503
+ CollectionOptions,
468
504
  FieldType,
469
505
  FieldDef,
470
506
  CollectionDef,
471
507
  SpaceSchema,
472
508
  SpaceMember,
473
509
  UserResult,
510
+ SpaceFileStorageUsage,
511
+ RoolSpaceEvents,
512
+ WebDAVDepth,
513
+ WebDAVSyncLevel,
514
+ WebDAVPropName,
515
+ WebDAVResponse,
516
+ WebDAVProps,
474
517
  } from '@rool-dev/svelte';
475
518
  ```
476
519
 
477
- ## Examples
478
-
479
- - [soft-sql](../../examples/soft-sql) — SQL-style natural language queries with live tool call progress
480
- - [flashcards](../../examples/flashcards) — Spaced repetition with AI-generated cards
481
-
482
520
  ## License
483
521
 
484
522
  MIT - see [LICENSE](../../LICENSE) for details.
@@ -22,7 +22,7 @@ declare class ReactiveWatchImpl {
22
22
  objects: RoolObject[];
23
23
  loading: boolean;
24
24
  constructor(channel: RoolChannel, fileTree: ReactiveFileTree, options: WatchOptions);
25
- /** Re-fetch matching objects using the canonical file tree for locations. */
25
+ /** Re-fetch matching objects using the canonical file tree for paths. */
26
26
  refresh(): Promise<void>;
27
27
  close(): void;
28
28
  }
@@ -34,7 +34,7 @@ declare class ReactiveObjectImpl {
34
34
  #private;
35
35
  data: RoolObject | undefined;
36
36
  loading: boolean;
37
- constructor(channel: RoolChannel, fileTree: ReactiveFileTree, location: string);
37
+ constructor(channel: RoolChannel, fileTree: ReactiveFileTree, path: string);
38
38
  refresh(): Promise<void>;
39
39
  close(): void;
40
40
  }
@@ -51,11 +51,11 @@ declare class ReactiveConversationHandleImpl {
51
51
  getSystemInstruction(): string | undefined;
52
52
  setSystemInstruction(...args: Parameters<ConversationHandle['setSystemInstruction']>): Promise<void>;
53
53
  rename(...args: Parameters<ConversationHandle['rename']>): Promise<void>;
54
- createObject(...args: Parameters<ConversationHandle['createObject']>): Promise<{
54
+ putObject(...args: Parameters<ConversationHandle['putObject']>): Promise<{
55
55
  object: RoolObject;
56
56
  message: string;
57
57
  }>;
58
- updateObject(...args: Parameters<ConversationHandle['updateObject']>): Promise<{
58
+ patchObject(...args: Parameters<ConversationHandle['patchObject']>): Promise<{
59
59
  object: RoolObject;
60
60
  message: string;
61
61
  }>;
@@ -64,6 +64,8 @@ declare class ReactiveConversationHandleImpl {
64
64
  message: string;
65
65
  }>;
66
66
  deleteObjects(...args: Parameters<ConversationHandle['deleteObjects']>): Promise<void>;
67
+ /** @deprecated Use deleteObjects instead. */
68
+ deletePaths(...args: Parameters<ConversationHandle['deletePaths']>): Promise<void>;
67
69
  prompt(...args: Parameters<ConversationHandle['prompt']>): Promise<{
68
70
  message: string;
69
71
  objects: RoolObject[];
@@ -82,7 +84,7 @@ export type ReactiveConversationHandle = ReactiveConversationHandleImpl;
82
84
  declare class ReactiveChannelImpl {
83
85
  #private;
84
86
  interactions: Interaction[];
85
- objectLocations: string[];
87
+ objectPaths: string[];
86
88
  collections: string[];
87
89
  conversations: ConversationInfo[];
88
90
  constructor(channel: RoolChannel, fileTree: ReactiveFileTree);
@@ -99,11 +101,11 @@ declare class ReactiveChannelImpl {
99
101
  getObject(...args: Parameters<RoolChannel['getObject']>): Promise<RoolObject | undefined>;
100
102
  getObjects(...args: Parameters<RoolChannel['getObjects']>): Promise<import("@rool-dev/sdk").GetObjectsResult>;
101
103
  stat(...args: Parameters<RoolChannel['stat']>): import("@rool-dev/sdk").RoolObjectStat | undefined;
102
- createObject(...args: Parameters<RoolChannel['createObject']>): Promise<{
104
+ putObject(...args: Parameters<RoolChannel['putObject']>): Promise<{
103
105
  object: RoolObject;
104
106
  message: string;
105
107
  }>;
106
- updateObject(...args: Parameters<RoolChannel['updateObject']>): Promise<{
108
+ patchObject(...args: Parameters<RoolChannel['patchObject']>): Promise<{
107
109
  object: RoolObject;
108
110
  message: string;
109
111
  }>;
@@ -112,6 +114,8 @@ declare class ReactiveChannelImpl {
112
114
  message: string;
113
115
  }>;
114
116
  deleteObjects(...args: Parameters<RoolChannel['deleteObjects']>): Promise<void>;
117
+ /** @deprecated Use deleteObjects instead. */
118
+ deletePaths(...args: Parameters<RoolChannel['deletePaths']>): Promise<void>;
115
119
  prompt(...args: Parameters<RoolChannel['prompt']>): Promise<{
116
120
  message: string;
117
121
  objects: RoolObject[];
@@ -144,9 +148,9 @@ declare class ReactiveChannelImpl {
144
148
  on(...args: Parameters<RoolChannel['on']>): () => void;
145
149
  off(...args: Parameters<RoolChannel['off']>): void;
146
150
  /**
147
- * Create a reactive object that auto-updates when the object at this location changes.
151
+ * Create a reactive object that auto-updates when the object at this path changes.
148
152
  */
149
- object(location: string): ReactiveObject;
153
+ object(path: string): ReactiveObject;
150
154
  /**
151
155
  * Create a reactive watch that auto-updates when matching objects change.
152
156
  */
@@ -1 +1 @@
1
- {"version":3,"file":"channel.svelte.d.ts","sourceRoot":"","sources":["../src/channel.svelte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.svelte.d.ts","sourceRoot":"","sources":["../src/channel.svelte.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAqD,MAAM,uBAAuB,CAAC;AAE5G;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CACxB;AA8CD;;GAEG;AACH,cAAM,iBAAiB;;IAOrB,OAAO,eAA4B;IACnC,OAAO,UAAgB;gBAEX,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY;IAgBnF,yEAAyE;IACnE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,KAAK,IAAI,IAAI;CAId;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC;AAE9C;;GAEG;AACH,cAAM,kBAAkB;;IAOtB,IAAI,yBAA6C;IACjD,OAAO,UAAgB;gBAEX,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM;IAoBpE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9B,KAAK,IAAI,IAAI;CAId;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAMhD,cAAM,8BAA8B;;IAMlC,YAAY,gBAA6B;gBAE7B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM;IAqBxD,IAAI,cAAc,IAAI,MAAM,CAAiC;IAG7D,eAAe;IACf,OAAO;IACP,IAAI,YAAY,uBAAwC;IACxD,aAAa,CAAC,aAAa,EAAE,MAAM;IACnC,oBAAoB;IACpB,oBAAoB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC;IACpF,MAAM,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAGxD,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;;;;IAC9D,WAAW,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;;;;IAClE,UAAU,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;;;;IAChE,aAAa,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACtE,6CAA6C;IAC7C,WAAW,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAGlE,MAAM,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;;;;IAGxD,gBAAgB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;IAC5E,eAAe,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;IAC1E,cAAc,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IAGxE,WAAW,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;IAElE,KAAK,IAAI,IAAI;CAId;AAED,MAAM,MAAM,0BAA0B,GAAG,8BAA8B,CAAC;AAExE;;;GAGG;AACH,cAAM,mBAAmB;;IAOvB,YAAY,gBAA6B;IACzC,WAAW,WAAwB;IACnC,WAAW,WAAwB;IACnC,aAAa,qBAAkC;gBAEnC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB;IAyC5D,IAAI,EAAE,WAA+B;IACrC,IAAI,IAAI,WAAiC;IACzC,IAAI,IAAI,yCAAiC;IACzC,IAAI,MAAM,WAAmC;IAC7C,IAAI,SAAS,WAAsC;IACnD,IAAI,WAAW,kBAAwC;IACvD,IAAI,UAAU,YAAuC;IACrD,IAAI,UAAU,uCAAuC;IAErD,IAAI,QAAQ,YAA2B;IAEvC,KAAK;IASL,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IACvD,UAAU,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;;;;IACvD,WAAW,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;;;;IAC3D,UAAU,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;;;;IACzD,aAAa,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAC/D,6CAA6C;IAC7C,WAAW,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAG3D,MAAM,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;;;;IAGjD,UAAU,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACzD,OAAO;IACP,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,YAAY;IAGZ,WAAW,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC3D,WAAW,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC3D,cAAc;IAGd,eAAe;IACf,OAAO;IACP,IAAI,YAAY,uBAAyC;IACzD,aAAa,CAAC,aAAa,EAAE,MAAM;IACnC,oBAAoB;IACpB,oBAAoB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC7E,gBAAgB;IAChB,kBAAkB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IACzE,kBAAkB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAGzE,SAAS;IACT,gBAAgB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACrE,eAAe,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IACnE,cAAc,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAGjE,KAAK,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAG/C,MAAM,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAGjD,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,0BAA0B;IAMhE,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzC,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAI3C;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc;IAKpC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa;CAK5C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,GAAG,eAAe,CAE7F;AAED,MAAM,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAElD;;GAEG;AACH,cAAM,uBAAuB;;IAK3B,IAAI,gBAA6B;IACjC,OAAO,UAAgB;gBAEX,cAAc,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IAoCpD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B,KAAK,IAAI,IAAI;CAId;AAED,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAErG;AAED,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,CAAC"}
@@ -1,12 +1,17 @@
1
- import { normalizeLocation } from '@rool-dev/sdk';
2
- function eventTouchesObject(event, location, collection) {
1
+ import { isObjectPath, machinePath } from '@rool-dev/sdk';
2
+ function objectCollection(path) {
3
+ if (!isObjectPath(path))
4
+ return undefined;
5
+ return path.split('/')[2];
6
+ }
7
+ function eventTouchesObject(event, objectPath, collection) {
3
8
  if (event.reset)
4
9
  return true;
5
10
  for (const path of [...event.changedPaths, ...event.deletedPaths]) {
6
- if (location && path === location)
11
+ if (objectPath && path === objectPath)
7
12
  return true;
8
- if (!location && path.startsWith('/space/') && path.endsWith('.json')) {
9
- if (!collection || path.startsWith(`/space/${collection}/`))
13
+ if (!objectPath && isObjectPath(path)) {
14
+ if (!collection || objectCollection(path) === collection)
10
15
  return true;
11
16
  }
12
17
  }
@@ -18,10 +23,10 @@ function sameJsonValue(a, b) {
18
23
  async function watchObjectsFromTree(channel, fileTree, options) {
19
24
  if (fileTree.loading)
20
25
  await fileTree.ready();
21
- const locations = fileTree.objectLocations({ collection: options.collection, order: options.order });
26
+ const paths = fileTree.objectPaths({ collection: options.collection, order: options.order });
22
27
  const objects = [];
23
- for (const location of locations) {
24
- const object = await channel.getObject(location);
28
+ for (const path of paths) {
29
+ const object = await channel.getObject(path);
25
30
  if (!object)
26
31
  continue;
27
32
  if (options.where) {
@@ -66,7 +71,7 @@ class ReactiveWatchImpl {
66
71
  });
67
72
  this.#unsubscribers.push(unsubscribe);
68
73
  }
69
- /** Re-fetch matching objects using the canonical file tree for locations. */
74
+ /** Re-fetch matching objects using the canonical file tree for paths. */
70
75
  async refresh() {
71
76
  this.loading = true;
72
77
  try {
@@ -88,25 +93,25 @@ class ReactiveWatchImpl {
88
93
  class ReactiveObjectImpl {
89
94
  #channel;
90
95
  #fileTree;
91
- #location;
96
+ #path;
92
97
  #unsubscribers = [];
93
98
  // Reactive state
94
99
  data = $state(undefined);
95
100
  loading = $state(true);
96
- constructor(channel, fileTree, location) {
101
+ constructor(channel, fileTree, path) {
97
102
  this.#channel = channel;
98
103
  this.#fileTree = fileTree;
99
- this.#location = normalizeLocation(location);
104
+ this.#path = machinePath(path);
100
105
  this.#setup();
101
106
  }
102
107
  #setup() {
103
108
  this.refresh();
104
109
  const unsubscribe = this.#fileTree.subscribe((event) => {
105
- if (event.deletedPaths.has(this.#location)) {
110
+ if (event.deletedPaths.has(this.#path)) {
106
111
  this.data = undefined;
107
112
  return;
108
113
  }
109
- if (eventTouchesObject(event, this.#location))
114
+ if (eventTouchesObject(event, this.#path))
110
115
  void this.refresh();
111
116
  });
112
117
  this.#unsubscribers.push(unsubscribe);
@@ -114,7 +119,7 @@ class ReactiveObjectImpl {
114
119
  async refresh() {
115
120
  this.loading = true;
116
121
  try {
117
- this.data = await this.#channel.getObject(this.#location);
122
+ this.data = await this.#channel.getObject(this.#path);
118
123
  }
119
124
  finally {
120
125
  this.loading = false;
@@ -162,10 +167,12 @@ class ReactiveConversationHandleImpl {
162
167
  setSystemInstruction(...args) { return this.#handle.setSystemInstruction(...args); }
163
168
  rename(...args) { return this.#handle.rename(...args); }
164
169
  // Object operations
165
- createObject(...args) { return this.#handle.createObject(...args); }
166
- updateObject(...args) { return this.#handle.updateObject(...args); }
170
+ putObject(...args) { return this.#handle.putObject(...args); }
171
+ patchObject(...args) { return this.#handle.patchObject(...args); }
167
172
  moveObject(...args) { return this.#handle.moveObject(...args); }
168
173
  deleteObjects(...args) { return this.#handle.deleteObjects(...args); }
174
+ /** @deprecated Use deleteObjects instead. */
175
+ deletePaths(...args) { return this.#handle.deletePaths(...args); }
169
176
  // AI
170
177
  prompt(...args) { return this.#handle.prompt(...args); }
171
178
  // Schema
@@ -191,14 +198,14 @@ class ReactiveChannelImpl {
191
198
  #closed = false;
192
199
  // Reactive state
193
200
  interactions = $state([]);
194
- objectLocations = $state([]);
201
+ objectPaths = $state([]);
195
202
  collections = $state([]);
196
203
  conversations = $state([]);
197
204
  constructor(channel, fileTree) {
198
205
  this.#channel = channel;
199
206
  this.#fileTree = fileTree;
200
207
  this.interactions = channel.getInteractions();
201
- this.objectLocations = fileTree.objectLocations();
208
+ this.objectPaths = fileTree.objectPaths();
202
209
  this.collections = fileTree.collections();
203
210
  this.conversations = channel.getConversations();
204
211
  const onChannelUpdated = () => {
@@ -213,7 +220,7 @@ class ReactiveChannelImpl {
213
220
  channel.on('conversationUpdated', onConversationUpdated);
214
221
  this.#unsubscribers.push(() => channel.off('conversationUpdated', onConversationUpdated));
215
222
  const refreshFromFileTree = () => {
216
- this.objectLocations = fileTree.objectLocations();
223
+ this.objectPaths = fileTree.objectPaths();
217
224
  this.collections = fileTree.collections();
218
225
  };
219
226
  this.#unsubscribers.push(fileTree.subscribe((event) => {
@@ -252,10 +259,12 @@ class ReactiveChannelImpl {
252
259
  getObject(...args) { return this.#channel.getObject(...args); }
253
260
  getObjects(...args) { return this.#channel.getObjects(...args); }
254
261
  stat(...args) { return this.#channel.stat(...args); }
255
- createObject(...args) { return this.#channel.createObject(...args); }
256
- updateObject(...args) { return this.#channel.updateObject(...args); }
262
+ putObject(...args) { return this.#channel.putObject(...args); }
263
+ patchObject(...args) { return this.#channel.patchObject(...args); }
257
264
  moveObject(...args) { return this.#channel.moveObject(...args); }
258
265
  deleteObjects(...args) { return this.#channel.deleteObjects(...args); }
266
+ /** @deprecated Use deleteObjects instead. */
267
+ deletePaths(...args) { return this.#channel.deletePaths(...args); }
259
268
  // AI
260
269
  prompt(...args) { return this.#channel.prompt(...args); }
261
270
  // Undo/redo
@@ -299,12 +308,12 @@ class ReactiveChannelImpl {
299
308
  off(...args) { return this.#channel.off(...args); }
300
309
  // Reactive primitives
301
310
  /**
302
- * Create a reactive object that auto-updates when the object at this location changes.
311
+ * Create a reactive object that auto-updates when the object at this path changes.
303
312
  */
304
- object(location) {
313
+ object(path) {
305
314
  if (this.#closed)
306
315
  throw new Error('Cannot create reactive object: channel is closed');
307
- return new ReactiveObjectImpl(this.#channel, this.#fileTree, location);
316
+ return new ReactiveObjectImpl(this.#channel, this.#fileTree, path);
308
317
  }
309
318
  /**
310
319
  * Create a reactive watch that auto-updates when matching objects change.
@@ -1,5 +1,5 @@
1
- import type { RoolSpace, WebDAVDepth, WebDAVPropName, WebDAVResponse, WebDAVSyncLevel } from '@rool-dev/sdk';
2
- export type ReactiveFilePath = '/' | `/space${string}` | `/rool-drive${string}`;
1
+ import { type RoolSpace, type WebDAVDepth, type WebDAVPropName, type WebDAVResponse, type WebDAVSyncLevel } from '@rool-dev/sdk';
2
+ export type ReactiveFilePath = string;
3
3
  export type ReactiveFileRoot = '' | 'space' | 'rool-drive';
4
4
  export interface ReactiveFileNode {
5
5
  /** Stable node id. Same as `path`. */
@@ -75,8 +75,8 @@ export declare class ReactiveFileTree {
75
75
  has(path: string): boolean;
76
76
  childrenOf(path: string): ReactiveFileNode[];
77
77
  descendantsOf(path: string): ReactiveFileNode[];
78
- /** Object file locations sorted by modified time descending. */
79
- objectLocations(options?: {
78
+ /** Object file paths sorted by modified time descending. */
79
+ objectPaths(options?: {
80
80
  collection?: string;
81
81
  order?: 'asc' | 'desc';
82
82
  limit?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"file-tree.svelte.d.ts","sourceRoot":"","sources":["../src/file-tree.svelte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-tree.svelte.d.ts","sourceRoot":"","sources":["../src/file-tree.svelte.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { parseLocation } from '@rool-dev/sdk';
1
+ import { isObjectPath, machinePath, } from '@rool-dev/sdk';
2
2
  const ROOT = '/';
3
3
  const DEFAULT_PROPS = [
4
4
  'displayname',
@@ -9,14 +9,7 @@ const DEFAULT_PROPS = [
9
9
  'resourcetype',
10
10
  ];
11
11
  function normalizePath(path) {
12
- if (!path || path === '/')
13
- return ROOT;
14
- const normalized = `/${path.replace(/^\/+|\/+$/g, '')}`;
15
- if (normalized === '/space' || normalized.startsWith('/space/'))
16
- return normalized;
17
- if (normalized === '/rool-drive' || normalized.startsWith('/rool-drive/'))
18
- return normalized;
19
- return ROOT;
12
+ return machinePath(path);
20
13
  }
21
14
  function parentPath(path) {
22
15
  if (path === ROOT)
@@ -25,7 +18,7 @@ function parentPath(path) {
25
18
  parts.pop();
26
19
  return parts.length === 0 ? ROOT : `/${parts.join('/')}`;
27
20
  }
28
- function basename(path) {
21
+ function leafName(path) {
29
22
  if (path === ROOT)
30
23
  return 'Space';
31
24
  const leaf = path.split('/').filter(Boolean).pop() ?? '';
@@ -60,7 +53,7 @@ function nodeFromResponse(response) {
60
53
  parent: parentPath(path),
61
54
  name: typeof response.props.displayname === 'string' && response.props.displayname
62
55
  ? response.props.displayname
63
- : basename(path),
56
+ : leafName(path),
64
57
  root: rootOf(path),
65
58
  isCollection: response.isCollection,
66
59
  size: typeof response.props.getcontentlength === 'number' ? response.props.getcontentlength : null,
@@ -150,16 +143,16 @@ export class ReactiveFileTree {
150
143
  const root = normalizePath(path);
151
144
  return this.nodes.filter((node) => node.path !== root && isDescendant(node.path, root));
152
145
  }
153
- /** Object file locations sorted by modified time descending. */
154
- objectLocations(options = {}) {
155
- const locations = this.nodes
156
- .filter((node) => !node.isCollection && isObjectLocation(node.path))
146
+ /** Object file paths sorted by modified time descending. */
147
+ objectPaths(options = {}) {
148
+ const paths = this.nodes
149
+ .filter((node) => !node.isCollection && isObjectPath(node.path))
157
150
  .filter((node) => !options.collection || safeCollection(node.path) === options.collection)
158
151
  .sort((a, b) => (b.modifiedAt ?? 0) - (a.modifiedAt ?? 0))
159
152
  .map((node) => node.path);
160
153
  if (options.order === 'asc')
161
- locations.reverse();
162
- return options.limit === undefined ? locations : locations.slice(0, options.limit);
154
+ paths.reverse();
155
+ return options.limit === undefined ? paths : paths.slice(0, options.limit);
163
156
  }
164
157
  collections() {
165
158
  return this.childrenOf('/space')
@@ -399,20 +392,8 @@ function isDescendant(path, ancestor) {
399
392
  return path !== ROOT;
400
393
  return path.startsWith(`${ancestor}/`);
401
394
  }
402
- function isObjectLocation(path) {
403
- try {
404
- parseLocation(path);
405
- return true;
406
- }
407
- catch {
408
- return false;
409
- }
410
- }
411
395
  function safeCollection(path) {
412
- try {
413
- return parseLocation(path).collection;
414
- }
415
- catch {
396
+ if (!isObjectPath(path))
416
397
  return undefined;
417
- }
398
+ return path.split('/')[2];
418
399
  }
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  export { createRool, generateId } from './rool.svelte.js';
2
- export { loc, parseLocation, normalizeLocation, isLocation, resolveMachineResource, } from '@rool-dev/sdk';
3
- export type { ParsedLocation, MachineResource } from '@rool-dev/sdk';
2
+ export { isObjectPath, machinePath, machineUri } from '@rool-dev/sdk';
4
3
  export { wrapChannel } from './channel.svelte.js';
5
4
  export { wrapSpace } from './space.svelte.js';
6
5
  export { ReactiveFileTree } from './file-tree.svelte.js';
@@ -8,5 +7,5 @@ export type { Rool } from './rool.svelte.js';
8
7
  export type { ReactiveChannel, ReactiveConversationHandle, ReactiveObject, ReactiveWatch, ReactiveChannelList, WatchOptions } from './channel.svelte.js';
9
8
  export type { ReactiveSpace } from './space.svelte.js';
10
9
  export type { ReactiveFileNode, ReactiveFilePath, ReactiveFileRoot, ReactiveFileTreeEvent, ReactiveFileTreeSyncResult } from './file-tree.svelte.js';
11
- export type { RoolClientConfig, RoolChannel, RoolSpace, RoolSpaceInfo, RoolObject, GetObjectsResult, RoolObjectStat, RoolUserRole, ConnectionState, ChannelInfo, Conversation, ConversationInfo, CurrentUser, Interaction, PromptOptions, PromptAttachment, CreateObjectOptions, UpdateObjectOptions, MoveObjectOptions, CollectionOptions, FieldType, FieldDef, CollectionDef, SpaceSchema, SpaceMember, UserResult, RoolClient, RoolSpaceEvents, ProbeRequestEvent, SpaceFileStorageUsage, WebDAVDepth, WebDAVSyncLevel, WebDAVPropName, WebDAVResponse, WebDAVProps, } from '@rool-dev/sdk';
10
+ export type { RoolClientConfig, RoolChannel, RoolSpace, RoolSpaceInfo, RoolObject, GetObjectsResult, RoolObjectStat, RoolUserRole, ConnectionState, ChannelInfo, Conversation, ConversationInfo, CurrentUser, Interaction, PromptOptions, PromptAttachment, UpdateObjectOptions, MoveObjectOptions, CollectionOptions, FieldType, FieldDef, CollectionDef, SpaceSchema, SpaceMember, UserResult, RoolClient, RoolSpaceEvents, SpaceFileStorageUsage, WebDAVDepth, WebDAVSyncLevel, WebDAVPropName, WebDAVResponse, WebDAVProps, } from '@rool-dev/sdk';
12
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EACL,GAAG,EACH,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzJ,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAGrJ,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGtE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,YAAY,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC7C,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACzJ,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAGrJ,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,cAAc,EACd,cAAc,EACd,WAAW,GACZ,MAAM,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // Main export
2
2
  export { createRool, generateId } from './rool.svelte.js';
3
- // Location and machine-resource helpers — re-exported from the SDK for convenience
4
- export { loc, parseLocation, normalizeLocation, isLocation, resolveMachineResource, } from '@rool-dev/sdk';
3
+ // Machine path helpers — re-exported from the SDK for convenience
4
+ export { isObjectPath, machinePath, machineUri } from '@rool-dev/sdk';
5
5
  // Reactive wrappers
6
6
  export { wrapChannel } from './channel.svelte.js';
7
7
  export { wrapSpace } from './space.svelte.js';
@@ -120,8 +120,6 @@ declare class RoolImpl {
120
120
  slug?: string;
121
121
  marketingOptIn?: boolean;
122
122
  }): Promise<CurrentUser>;
123
- /** Respond to a server-initiated probe with a method-specific result or error. */
124
- probeResponse(requestId: string, result?: unknown, error?: string): Promise<boolean>;
125
123
  /**
126
124
  * Create a reactive channel list for a space.
127
125
  * Auto-updates when channels are created, updated, or deleted.
@@ -1 +1 @@
1
- {"version":3,"file":"rool.svelte.d.ts","sourceRoot":"","sources":["../src/rool.svelte.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rool.svelte.d.ts","sourceRoot":"","sources":["../src/rool.svelte.ts"],"names":[],"mappings":"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"}
@@ -260,10 +260,6 @@ class RoolImpl {
260
260
  this.currentUser = user;
261
261
  return user;
262
262
  }
263
- /** Respond to a server-initiated probe with a method-specific result or error. */
264
- probeResponse(requestId, result, error) {
265
- return this.#client.probeResponse(requestId, result, error);
266
- }
267
263
  /**
268
264
  * Create a reactive channel list for a space.
269
265
  * Auto-updates when channels are created, updated, or deleted.
@@ -32,7 +32,7 @@ declare class ReactiveSpaceImpl {
32
32
  get webdav(): import("@rool-dev/sdk").RoolWebDAV;
33
33
  get fileTree(): ReactiveFileTree;
34
34
  getStorageUsage(...args: Parameters<RoolSpace['getStorageUsage']>): Promise<import("@rool-dev/sdk").SpaceFileStorageUsage>;
35
- fetchMachineResource(...args: Parameters<RoolSpace['fetchMachineResource']>): Promise<Response>;
35
+ fetchPath(...args: Parameters<RoolSpace['fetchPath']>): Promise<Response>;
36
36
  rename(newName: string): Promise<void>;
37
37
  delete(): Promise<void>;
38
38
  listUsers(): Promise<SpaceMember[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"space.svelte.d.ts","sourceRoot":"","sources":["../src/space.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpH,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,cAAM,iBAAiB;;IASrB,eAAe,kBAA2C;gBAE9C,KAAK,EAAE,SAAS;IAoB5B,IAAI,QAAQ,YAA2B;IAEvC;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAY9D;;;OAGG;IACH,KAAK,IAAI,IAAI;IAiBb,IAAI,QAAQ,IAAI,WAAW,EAAE,CAA8B;IAG3D,IAAI,EAAE,IAAI,MAAM,CAA2B;IAC3C,IAAI,IAAI,IAAI,MAAM,CAA6B;IAC/C,IAAI,IAAI,IAAI,YAAY,CAA6B;IACrD,IAAI,UAAU,IAAI,UAAU,CAAmC;IAC/D,IAAI,WAAW,IAAI,MAAM,CAAoC;IAC7D,IAAI,MAAM,uCAAiC;IAC3C,IAAI,QAAQ,IAAI,gBAAgB,CAA2B;IAG3D,eAAe,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACjE,oBAAoB,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAG3E,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IACvB,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACzC,aAAa,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAGxB,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;CAC1C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAEzD;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"space.svelte.d.ts","sourceRoot":"","sources":["../src/space.svelte.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpH,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;GAMG;AACH,cAAM,iBAAiB;;IASrB,eAAe,kBAA2C;gBAE9C,KAAK,EAAE,SAAS;IAoB5B,IAAI,QAAQ,YAA2B;IAEvC;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAY9D;;;OAGG;IACH,KAAK,IAAI,IAAI;IAiBb,IAAI,QAAQ,IAAI,WAAW,EAAE,CAA8B;IAG3D,IAAI,EAAE,IAAI,MAAM,CAA2B;IAC3C,IAAI,IAAI,IAAI,MAAM,CAA6B;IAC/C,IAAI,IAAI,IAAI,YAAY,CAA6B;IACrD,IAAI,UAAU,IAAI,UAAU,CAAmC;IAC/D,IAAI,WAAW,IAAI,MAAM,CAAoC;IAC7D,IAAI,MAAM,uCAAiC;IAC3C,IAAI,QAAQ,IAAI,gBAAgB,CAA2B;IAG3D,eAAe,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACjE,SAAS,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAGrD,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IACvB,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACjD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACzC,aAAa,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAGxB,EAAE,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;CAC1C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAEzD;AAED,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC"}
@@ -79,7 +79,7 @@ class ReactiveSpaceImpl {
79
79
  get fileTree() { return this.#fileTree; }
80
80
  // Proxy resource methods
81
81
  getStorageUsage(...args) { return this.#space.getStorageUsage(...args); }
82
- fetchMachineResource(...args) { return this.#space.fetchMachineResource(...args); }
82
+ fetchPath(...args) { return this.#space.fetchPath(...args); }
83
83
  // Proxy admin methods
84
84
  rename(newName) { return this.#space.rename(newName); }
85
85
  delete() { return this.#space.delete(); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rool-dev/svelte",
3
- "version": "0.10.2-dev.9df035a",
3
+ "version": "0.10.2-dev.a0fe230",
4
4
  "description": "Svelte 5 runes for Rool Spaces",
5
5
  "type": "module",
6
6
  "svelte": "./dist/index.js",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "license": "MIT",
43
43
  "dependencies": {
44
- "@rool-dev/sdk": "0.10.2-dev.9df035a"
44
+ "@rool-dev/sdk": "0.10.2-dev.a0fe230"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "svelte": "^5.0.0"