@rool-dev/sdk 0.10.2-dev.47747e3 → 0.10.2-dev.491e451
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 +34 -122
- package/dist/channel.d.ts +23 -67
- package/dist/channel.d.ts.map +1 -1
- package/dist/channel.js +175 -291
- package/dist/channel.js.map +1 -1
- package/dist/client.d.ts +2 -21
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -34
- package/dist/client.js.map +1 -1
- package/dist/graphql.d.ts +3 -39
- package/dist/graphql.d.ts.map +1 -1
- package/dist/graphql.js +5 -157
- package/dist/graphql.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/locations.d.ts +0 -5
- package/dist/locations.d.ts.map +1 -1
- package/dist/locations.js +1 -13
- package/dist/locations.js.map +1 -1
- package/dist/rest.d.ts +2 -0
- package/dist/rest.d.ts.map +1 -1
- package/dist/rest.js +12 -0
- package/dist/rest.js.map +1 -1
- package/dist/space.d.ts +2 -4
- package/dist/space.d.ts.map +1 -1
- package/dist/space.js +19 -16
- package/dist/space.js.map +1 -1
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +20 -21
- package/dist/subscription.js.map +1 -1
- package/dist/types.d.ts +22 -77
- package/dist/types.d.ts.map +1 -1
- package/dist/webdav.d.ts +14 -4
- package/dist/webdav.d.ts.map +1 -1
- package/dist/webdav.js +92 -27
- package/dist/webdav.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
The TypeScript SDK for Rool, a persistent and collaborative environment for organizing objects.
|
|
4
4
|
|
|
5
|
-
> **Building a new Rool extension?** Start with [`@rool-dev/extension`](/extension/) — it handles hosting, dev server, and gives you a reactive Svelte channel out of the box. This SDK is for advanced use cases: integrating Rool into an existing application, building Node.js scripts, or working outside the extension sandbox.
|
|
6
|
-
|
|
7
5
|
The SDK manages authentication, real-time synchronization, and per-space file storage. Core primitives:
|
|
8
6
|
|
|
9
7
|
- **Spaces** — Containers for objects, schema, metadata, channels, and files
|
|
@@ -65,10 +63,9 @@ const { message, objects } = await channel.prompt(
|
|
|
65
63
|
console.log(message); // AI explains what it did
|
|
66
64
|
console.log(`Modified ${objects.length} objects`);
|
|
67
65
|
|
|
68
|
-
//
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
});
|
|
66
|
+
// Read an object by location
|
|
67
|
+
const loadedEarth = await channel.getObject(earth.location);
|
|
68
|
+
console.log(loadedEarth?.body.name);
|
|
72
69
|
|
|
73
70
|
// Clean up
|
|
74
71
|
channel.close();
|
|
@@ -229,7 +226,7 @@ References are just data — no special API is needed to create or remove them.
|
|
|
229
226
|
#### Location helpers
|
|
230
227
|
|
|
231
228
|
```typescript
|
|
232
|
-
import { loc, parseLocation, normalizeLocation
|
|
229
|
+
import { loc, parseLocation, normalizeLocation } from '@rool-dev/sdk';
|
|
233
230
|
|
|
234
231
|
loc('article', 'welcome'); // '/space/article/welcome.json'
|
|
235
232
|
parseLocation('/space/article/welcome.json'); // { collection: 'article', basename: 'welcome' }
|
|
@@ -237,9 +234,6 @@ parseLocation('/space/article/welcome.json'); // { collection: 'article', basena
|
|
|
237
234
|
// normalizeLocation accepts canonical or short form and returns canonical
|
|
238
235
|
normalizeLocation('article/welcome'); // '/space/article/welcome.json'
|
|
239
236
|
normalizeLocation('/space/article/welcome.json'); // unchanged
|
|
240
|
-
|
|
241
|
-
// 6-char random basename — same generator the SDK uses by default
|
|
242
|
-
generateBasename(); // e.g., 'X7kQ9p'
|
|
243
237
|
```
|
|
244
238
|
|
|
245
239
|
SDK methods that accept a location (`getObject`, `updateObject`, `deleteObjects`, `moveObject`, etc.) accept either form and normalize internally. SDK return values always use the canonical full form.
|
|
@@ -320,24 +314,24 @@ await channel.createObject('article', {
|
|
|
320
314
|
|
|
321
315
|
### Real-time Sync
|
|
322
316
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
- `local_user` — This client made the change
|
|
326
|
-
- `remote_user` — Another user/client made the change
|
|
327
|
-
- `remote_agent` — AI agent made the change
|
|
328
|
-
- `system` — Resync after error
|
|
317
|
+
Object and file reactivity is WebDAV-based. Listen for space-level file change notifications, then reconcile with `webdav.syncCollection()` using your sync token. This covers both object files under `/space` and user files under `/rool-drive`.
|
|
329
318
|
|
|
330
319
|
```typescript
|
|
331
|
-
|
|
332
|
-
channel.on('objectUpdated', ({ location, object, source }) => {
|
|
333
|
-
renderObject(location, object);
|
|
334
|
-
if (source === 'remote_agent') {
|
|
335
|
-
doLayout(); // AI might have added content
|
|
336
|
-
}
|
|
337
|
-
});
|
|
320
|
+
let token: string | null = null;
|
|
338
321
|
|
|
339
|
-
|
|
340
|
-
|
|
322
|
+
async function syncFiles() {
|
|
323
|
+
const result = await space.webdav.syncCollection('/', {
|
|
324
|
+
token,
|
|
325
|
+
level: 'infinite',
|
|
326
|
+
props: ['displayname', 'getetag', 'getlastmodified', 'resourcetype'],
|
|
327
|
+
});
|
|
328
|
+
token = result.token;
|
|
329
|
+
updateFileTree(result.responses);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
space.on('filesChanged', syncFiles);
|
|
333
|
+
space.on('filesReset', () => { token = null; syncFiles(); });
|
|
334
|
+
await syncFiles();
|
|
341
335
|
```
|
|
342
336
|
|
|
343
337
|
### Locations & Basenames
|
|
@@ -358,7 +352,7 @@ await channel.createObject('article',
|
|
|
358
352
|
|
|
359
353
|
```typescript
|
|
360
354
|
// Fire-and-forget: create and reference without waiting
|
|
361
|
-
const basename =
|
|
355
|
+
const basename = 'idea-seed';
|
|
362
356
|
const location = loc('note', basename);
|
|
363
357
|
|
|
364
358
|
channel.createObject('note', { text: '{{expand this idea}}' }, { basename });
|
|
@@ -574,7 +568,7 @@ await space.addUser(user.id, 'editor');
|
|
|
574
568
|
| `owner` | Full control, can delete space and manage all users |
|
|
575
569
|
| `admin` | All editor capabilities, plus can manage users (except other admins/owners) |
|
|
576
570
|
| `editor` | Can create, modify, move, and delete objects |
|
|
577
|
-
| `viewer` | Read-only access (can query with `prompt` and
|
|
571
|
+
| `viewer` | Read-only access (can query with `prompt` and read objects/files) |
|
|
578
572
|
|
|
579
573
|
### Space Collaboration Methods
|
|
580
574
|
|
|
@@ -621,18 +615,9 @@ When a user accesses a space via URL, they're granted the corresponding role (`v
|
|
|
621
615
|
|
|
622
616
|
### Real-time Collaboration
|
|
623
617
|
|
|
624
|
-
When multiple users have a space open, changes
|
|
618
|
+
When multiple users have a space open, object and file changes are announced by `space.on('filesChanged')` and reconciled through WebDAV `syncCollection()`. Channel/conversation state still emits channel events; filesystem state does not use channel object events.
|
|
625
619
|
|
|
626
|
-
|
|
627
|
-
channel.on('objectUpdated', ({ location, object, source }) => {
|
|
628
|
-
if (source === 'remote_user') {
|
|
629
|
-
// Another user made this change
|
|
630
|
-
showCollaboratorActivity(object);
|
|
631
|
-
}
|
|
632
|
-
});
|
|
633
|
-
```
|
|
634
|
-
|
|
635
|
-
See [Real-time Sync](#real-time-sync) for more on event sources.
|
|
620
|
+
See [Real-time Sync](#real-time-sync) for a WebDAV sync-token example.
|
|
636
621
|
|
|
637
622
|
## RoolClient API
|
|
638
623
|
|
|
@@ -663,8 +648,6 @@ const client = new RoolClient({
|
|
|
663
648
|
| `duplicateSpace(sourceSpaceId, name): Promise<RoolSpace>` | Duplicate an existing space. Returns a handle to the new space. |
|
|
664
649
|
| `deleteSpace(id): Promise<void>` | Permanently delete a space (cannot be undone) |
|
|
665
650
|
| `importArchive(name, archive): Promise<RoolSpace>` | Import from a zip archive, creating a new space |
|
|
666
|
-
| `webdav(spaceId): RoolWebDAV` | Open a WebDAV client for a space's file storage |
|
|
667
|
-
| `getSpaceStorageUsage(spaceId): Promise<SpaceFileStorageUsage>` | Get WebDAV quota usage for a space |
|
|
668
651
|
|
|
669
652
|
### Channel Management
|
|
670
653
|
|
|
@@ -719,7 +702,7 @@ client.on('userStorageChanged', ({ key, value, source }) => {
|
|
|
719
702
|
|
|
720
703
|
### Extensions
|
|
721
704
|
|
|
722
|
-
Manage and publish extensions.
|
|
705
|
+
Manage and publish extensions.
|
|
723
706
|
|
|
724
707
|
There are two distinct domains: your **personal library** (extensions you've created or installed) and the **published extensions** (extensions discoverable by all users). Each has its own return type.
|
|
725
708
|
|
|
@@ -748,8 +731,7 @@ Discover and install extensions published by other users.
|
|
|
748
731
|
|
|
749
732
|
| Method | Description |
|
|
750
733
|
|--------|-------------|
|
|
751
|
-
| `RoolClient.
|
|
752
|
-
| `RoolClient.generateId(): string` | Same as `generateBasename()`; retained for callers minting non-object IDs (interactions, conversations, channels). |
|
|
734
|
+
| `RoolClient.generateId(): string` | Generate a unique 6-character alphanumeric ID. |
|
|
753
735
|
| `destroy(): void` | Clean up resources |
|
|
754
736
|
|
|
755
737
|
### Client Events
|
|
@@ -867,8 +849,6 @@ All methods that accept a location accept either the canonical form or the short
|
|
|
867
849
|
|--------|-------------|
|
|
868
850
|
| `getObject(location): Promise<RoolObject \| undefined>` | Get an object, or undefined if not found. |
|
|
869
851
|
| `stat(location): RoolObjectStat \| undefined` | Get audit info for an object: when it was last modified, by whom, and where (channel/conversation/interaction). Sync read from local cache. |
|
|
870
|
-
| `findObjects(options): Promise<{ objects, message }>` | Find objects using structured filters and/or natural language. Results sorted by modifiedAt (desc by default). |
|
|
871
|
-
| `getObjectLocations(options?): string[]` | Get all object locations. Sorted by modifiedAt (desc by default). Options: `{ limit?, order? }`. |
|
|
872
852
|
| `createObject(collection, body, options?): Promise<{ object, message }>` | Create a new object in `collection`. The SDK mints a random basename unless you pass `options.basename`. |
|
|
873
853
|
| `updateObject(location, options): Promise<{ object, message }>` | Update an existing object's body. |
|
|
874
854
|
| `moveObject(from, to, options?): Promise<{ object, message }>` | Rename or relocate an object. See [Moving and Renaming](#moving-and-renaming). |
|
|
@@ -961,59 +941,6 @@ await channel.moveObject(from, to, {
|
|
|
961
941
|
| `ephemeral` | If true, the operation won't be recorded in interaction history. |
|
|
962
942
|
| `parentInteractionId` | Conversation tree parent. Omit to auto-continue; pass `null` for a new root. |
|
|
963
943
|
|
|
964
|
-
#### findObjects
|
|
965
|
-
|
|
966
|
-
Find objects using structured filters and/or natural language.
|
|
967
|
-
|
|
968
|
-
- **`where` only** — exact-match filtering, no AI, no credits.
|
|
969
|
-
- **`collection` only** — filter by collection name, no AI, no credits.
|
|
970
|
-
- **`prompt` only** — AI-powered semantic query over all objects.
|
|
971
|
-
- **`where` + `prompt`** — `where` (and `locations`) narrow the data set first, then the AI queries within the constrained set.
|
|
972
|
-
|
|
973
|
-
| Option | Description |
|
|
974
|
-
|--------|-------------|
|
|
975
|
-
| `where` | Exact-match body-field filter (e.g. `{ status: 'published' }`). Values must match literally — no operators or `{{placeholders}}`. When combined with `prompt`, constrains which objects the AI can see. |
|
|
976
|
-
| `collection` | Filter by collection name. |
|
|
977
|
-
| `prompt` | Natural language query. Triggers AI evaluation (uses credits). |
|
|
978
|
-
| `limit` | Maximum number of results. |
|
|
979
|
-
| `locations` | Scope to specific object locations. Constrains the candidate set in both structured and AI queries. |
|
|
980
|
-
| `order` | Sort order by modifiedAt: `'asc'` or `'desc'` (default: `'desc'`). |
|
|
981
|
-
| `ephemeral` | If true, the query won't be recorded in interaction history. Useful for responsive search. |
|
|
982
|
-
|
|
983
|
-
**Examples:**
|
|
984
|
-
|
|
985
|
-
```typescript
|
|
986
|
-
// Filter by collection (no AI, no credits)
|
|
987
|
-
const { objects } = await channel.findObjects({
|
|
988
|
-
collection: 'article'
|
|
989
|
-
});
|
|
990
|
-
|
|
991
|
-
// Exact field matching (no AI, no credits)
|
|
992
|
-
const { objects } = await channel.findObjects({
|
|
993
|
-
where: { status: 'published' }
|
|
994
|
-
});
|
|
995
|
-
|
|
996
|
-
// Combine collection and field filters
|
|
997
|
-
const { objects } = await channel.findObjects({
|
|
998
|
-
collection: 'article',
|
|
999
|
-
where: { status: 'published' }
|
|
1000
|
-
});
|
|
1001
|
-
|
|
1002
|
-
// Pure natural language query (AI interprets)
|
|
1003
|
-
const { objects, message } = await channel.findObjects({
|
|
1004
|
-
prompt: 'articles about space exploration published this year'
|
|
1005
|
-
});
|
|
1006
|
-
|
|
1007
|
-
// Combined: collection + where narrow the data, prompt queries within it
|
|
1008
|
-
const { objects } = await channel.findObjects({
|
|
1009
|
-
collection: 'article',
|
|
1010
|
-
prompt: 'that discuss climate solutions positively',
|
|
1011
|
-
limit: 10
|
|
1012
|
-
});
|
|
1013
|
-
```
|
|
1014
|
-
|
|
1015
|
-
When `where` or `locations` are provided with a `prompt`, the AI only sees the filtered subset — not the full space. The returned `message` explains the query result.
|
|
1016
|
-
|
|
1017
944
|
### Undo/Redo
|
|
1018
945
|
|
|
1019
946
|
| Method | Description |
|
|
@@ -1041,12 +968,13 @@ Store arbitrary data alongside the space without it being part of an object's bo
|
|
|
1041
968
|
|
|
1042
969
|
Every space has authenticated file storage. WebDAV is the SDK surface for that storage: paths are relative to the space root and collection operations use WebDAV collection semantics. Human/AI file links use `rool-machine:/rool-drive/...`; resolve those links with `resolveMachineResource()` and fetch file resources with `space.fetchMachineResource(resource)`.
|
|
1043
970
|
|
|
1044
|
-
|
|
971
|
+
Open a space, then use `space.webdav`.
|
|
1045
972
|
|
|
1046
973
|
```typescript
|
|
1047
974
|
import { resolveMachineResource } from '@rool-dev/sdk';
|
|
1048
975
|
|
|
1049
|
-
const
|
|
976
|
+
const space = await client.openSpace('space-id');
|
|
977
|
+
const webdav = space.webdav;
|
|
1050
978
|
|
|
1051
979
|
await webdav.mkcol('docs');
|
|
1052
980
|
await webdav.put('docs/readme.md', '# Hello', {
|
|
@@ -1091,8 +1019,6 @@ Paths are space-relative (`docs/readme.md`, not `/docs/readme.md`). WebDAV metho
|
|
|
1091
1019
|
|
|
1092
1020
|
| Method | Description |
|
|
1093
1021
|
|--------|-------------|
|
|
1094
|
-
| `client.webdav(spaceId)` | Create a WebDAV client for a space |
|
|
1095
|
-
| `client.getSpaceStorageUsage(spaceId)` | Get WebDAV quota usage for a space |
|
|
1096
1022
|
| `space.webdav` | WebDAV client for an open space |
|
|
1097
1023
|
| `space.getStorageUsage()` | Get WebDAV quota usage for an open space |
|
|
1098
1024
|
| `webdav.getStorageUsage()` | Get WebDAV quota usage through the WebDAV client |
|
|
@@ -1225,37 +1151,23 @@ The archive bundles `data.json` (objects, metadata, and channels) together with
|
|
|
1225
1151
|
|
|
1226
1152
|
### Channel Events
|
|
1227
1153
|
|
|
1228
|
-
|
|
1154
|
+
Channel events are for channel/conversation state. Object and file reactivity goes through `space.on('filesChanged' | 'filesReset')` plus WebDAV `syncCollection()`.
|
|
1229
1155
|
|
|
1230
1156
|
```typescript
|
|
1231
|
-
// source indicates origin:
|
|
1232
|
-
// - 'local_user': This client made the change
|
|
1233
|
-
// - 'remote_user': Another user/client made the change
|
|
1234
|
-
// - 'remote_agent': AI agent made the change
|
|
1235
|
-
// - 'system': Resync after error
|
|
1236
|
-
|
|
1237
|
-
// Object events — payload includes the full RoolObject
|
|
1238
|
-
channel.on('objectCreated', ({ location, object, source }) => void)
|
|
1239
|
-
channel.on('objectUpdated', ({ location, object, source }) => void)
|
|
1240
|
-
channel.on('objectDeleted', ({ location, source }) => void)
|
|
1241
|
-
channel.on('objectMoved', ({ from, to, object, source }) => void)
|
|
1242
|
-
|
|
1243
|
-
// Space metadata
|
|
1244
|
-
channel.on('metadataUpdated', ({ metadata, source }) => void)
|
|
1245
|
-
|
|
1246
|
-
// Collection schema changed
|
|
1247
|
-
channel.on('schemaUpdated', ({ schema, source }) => void)
|
|
1248
|
-
|
|
1249
1157
|
// Channel metadata updated (name, extensionUrl)
|
|
1250
1158
|
channel.on('channelUpdated', ({ channelId, source }) => void)
|
|
1251
1159
|
|
|
1252
1160
|
// Conversation interaction history updated
|
|
1253
1161
|
channel.on('conversationUpdated', ({ conversationId, channelId, source }) => void)
|
|
1254
1162
|
|
|
1163
|
+
// Space metadata / schema compatibility events
|
|
1164
|
+
channel.on('metadataUpdated', ({ metadata, source }) => void)
|
|
1165
|
+
channel.on('schemaUpdated', ({ schema, source }) => void)
|
|
1166
|
+
|
|
1255
1167
|
// Full state replacement (undo/redo, resync after error)
|
|
1256
1168
|
channel.on('reset', ({ source }) => void)
|
|
1257
1169
|
|
|
1258
|
-
// Sync error occurred
|
|
1170
|
+
// Sync error occurred
|
|
1259
1171
|
channel.on('syncError', (error: Error) => void)
|
|
1260
1172
|
```
|
|
1261
1173
|
|
package/dist/channel.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { EventEmitter } from './event-emitter.js';
|
|
2
2
|
import type { GraphQLClient } from './graphql.js';
|
|
3
3
|
import type { RestClient } from './rest.js';
|
|
4
|
-
import type
|
|
4
|
+
import { type RoolWebDAV } from './webdav.js';
|
|
5
5
|
import type { Logger } from './logger.js';
|
|
6
|
-
import type { RoolObject, RoolObjectStat, ChannelEvents, RoolUserRole, PromptOptions,
|
|
6
|
+
import type { RoolObject, GetObjectsResult, RoolObjectStat, ChannelEvents, RoolUserRole, PromptOptions, CreateObjectOptions, UpdateObjectOptions, MoveObjectOptions, ChannelEvent, Interaction, Channel, ConversationInfo, LinkAccess, SpaceSchema, CollectionDef, FieldDef, CollectionOptions, ExtensionManifest } from './types.js';
|
|
7
7
|
export declare function generateEntityId(): string;
|
|
8
8
|
export interface ChannelConfig {
|
|
9
9
|
id: string;
|
|
@@ -12,8 +12,6 @@ export interface ChannelConfig {
|
|
|
12
12
|
linkAccess: LinkAccess;
|
|
13
13
|
/** Current user's ID (for identifying own interactions) */
|
|
14
14
|
userId: string;
|
|
15
|
-
/** Object locations in the space (sorted by modifiedAt desc) */
|
|
16
|
-
objectLocations: string[];
|
|
17
15
|
/** Object stats keyed by location */
|
|
18
16
|
objectStats: Record<string, RoolObjectStat>;
|
|
19
17
|
/** Collection schema */
|
|
@@ -38,9 +36,9 @@ export interface ChannelConfig {
|
|
|
38
36
|
* open a second one.
|
|
39
37
|
*
|
|
40
38
|
* Objects are addressed by location (`/space/<collection>/<basename>.json`).
|
|
41
|
-
* Only schema, metadata,
|
|
42
|
-
*
|
|
43
|
-
*
|
|
39
|
+
* Only schema, metadata, object stats, and the channel's own history are cached
|
|
40
|
+
* locally. Object bodies are fetched on demand. Object/file reactivity is
|
|
41
|
+
* exposed at the space level via WebDAV sync notifications.
|
|
44
42
|
*/
|
|
45
43
|
export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
46
44
|
private _id;
|
|
@@ -59,12 +57,8 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
59
57
|
private _meta;
|
|
60
58
|
private _schema;
|
|
61
59
|
private _channel;
|
|
62
|
-
private _objectLocations;
|
|
63
60
|
private _objectStats;
|
|
64
61
|
private _activeLeaves;
|
|
65
|
-
private _pendingMutations;
|
|
66
|
-
private _objectResolvers;
|
|
67
|
-
private _objectBuffer;
|
|
68
62
|
constructor(config: ChannelConfig);
|
|
69
63
|
/**
|
|
70
64
|
* Handle an event from the shared space subscription.
|
|
@@ -80,7 +74,6 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
80
74
|
_applyResyncData(data: {
|
|
81
75
|
meta: Record<string, unknown>;
|
|
82
76
|
schema: SpaceSchema;
|
|
83
|
-
objectLocations: string[];
|
|
84
77
|
objectStats: Record<string, RoolObjectStat>;
|
|
85
78
|
channel: Channel | undefined;
|
|
86
79
|
}): void;
|
|
@@ -178,6 +171,8 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
178
171
|
redo(): Promise<boolean>;
|
|
179
172
|
/** Clear the space's checkpoint history. */
|
|
180
173
|
clearHistory(): Promise<void>;
|
|
174
|
+
private davHeaders;
|
|
175
|
+
private readObject;
|
|
181
176
|
/**
|
|
182
177
|
* Get an object by location. Fetches from the server on each call.
|
|
183
178
|
*
|
|
@@ -185,39 +180,25 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
185
180
|
* or the short form (`<collection>/<basename>`).
|
|
186
181
|
*/
|
|
187
182
|
getObject(location: string): Promise<RoolObject | undefined>;
|
|
183
|
+
/**
|
|
184
|
+
* Get objects by location in bulk.
|
|
185
|
+
*
|
|
186
|
+
* Accepts either canonical locations (`/space/<collection>/<basename>.json`)
|
|
187
|
+
* or short locations (`<collection>/<basename>`). Duplicate locations are
|
|
188
|
+
* fetched once, preserving their first requested order.
|
|
189
|
+
*/
|
|
190
|
+
getObjects(locations: string[]): Promise<GetObjectsResult>;
|
|
188
191
|
/**
|
|
189
192
|
* Get an object's stat (audit information).
|
|
190
193
|
* Returns the cached stat or undefined if not known.
|
|
191
194
|
*/
|
|
192
195
|
stat(location: string): RoolObjectStat | undefined;
|
|
193
|
-
/**
|
|
194
|
-
* Find objects using structured filters and/or natural language.
|
|
195
|
-
*/
|
|
196
|
-
findObjects(options: FindObjectsOptions): Promise<{
|
|
197
|
-
objects: RoolObject[];
|
|
198
|
-
message: string;
|
|
199
|
-
}>;
|
|
200
|
-
/** @internal */
|
|
201
|
-
_findObjectsImpl(options: FindObjectsOptions, conversationId: string): Promise<{
|
|
202
|
-
objects: RoolObject[];
|
|
203
|
-
message: string;
|
|
204
|
-
}>;
|
|
205
|
-
/**
|
|
206
|
-
* Get all object locations (sync, from local cache).
|
|
207
|
-
* The list is loaded on open and kept current via SSE events.
|
|
208
|
-
*/
|
|
209
|
-
getObjectLocations(options?: {
|
|
210
|
-
limit?: number;
|
|
211
|
-
order?: 'asc' | 'desc';
|
|
212
|
-
}): string[];
|
|
213
196
|
/**
|
|
214
197
|
* Create a new object in the given collection.
|
|
215
198
|
*
|
|
216
199
|
* @param collection - The collection (must exist in the schema)
|
|
217
|
-
* @param body - Object body fields.
|
|
218
|
-
* Fields prefixed with `_` are hidden from AI.
|
|
200
|
+
* @param body - Object body fields. Fields prefixed with `_` are hidden from AI.
|
|
219
201
|
* @param options.basename - Specific basename to use. If omitted, the SDK generates a random one.
|
|
220
|
-
* @param options.ephemeral - If true, the operation won't be recorded in interaction history.
|
|
221
202
|
* @returns The created object and a status message.
|
|
222
203
|
*/
|
|
223
204
|
createObject(collection: string, body: Record<string, unknown>, options?: CreateObjectOptions): Promise<{
|
|
@@ -233,9 +214,7 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
233
214
|
* Update an existing object.
|
|
234
215
|
*
|
|
235
216
|
* @param location - The object's location (canonical or short form)
|
|
236
|
-
* @param options.data - Fields to add or update. Pass `null` to delete a field.
|
|
237
|
-
* @param options.prompt - AI prompt to drive the update.
|
|
238
|
-
* @param options.ephemeral - If true, the operation won't be recorded in interaction history.
|
|
217
|
+
* @param options.data - Fields to add or update. Pass `null` to delete a field.
|
|
239
218
|
*/
|
|
240
219
|
updateObject(location: string, options: UpdateObjectOptions): Promise<{
|
|
241
220
|
object: RoolObject;
|
|
@@ -253,7 +232,6 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
253
232
|
* @param from - Current location
|
|
254
233
|
* @param to - New location
|
|
255
234
|
* @param options.body - Replace the body atomically as part of the move.
|
|
256
|
-
* @param options.ephemeral - If true, the operation won't be recorded in interaction history.
|
|
257
235
|
*/
|
|
258
236
|
moveObject(from: string, to: string, options?: MoveObjectOptions): Promise<{
|
|
259
237
|
object: RoolObject;
|
|
@@ -274,13 +252,13 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
274
252
|
/** Get the current schema for this space. */
|
|
275
253
|
getSchema(): SpaceSchema;
|
|
276
254
|
/** Create a new collection schema. */
|
|
277
|
-
createCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
|
|
255
|
+
createCollection(name: string, fields: FieldDef[] | CollectionDef, options?: CollectionOptions): Promise<CollectionDef>;
|
|
278
256
|
/** @internal */
|
|
279
|
-
_createCollectionImpl(name: string, fields: FieldDef[], conversationId: string): Promise<CollectionDef>;
|
|
257
|
+
_createCollectionImpl(name: string, fields: FieldDef[] | CollectionDef, options: CollectionOptions | undefined, conversationId: string): Promise<CollectionDef>;
|
|
280
258
|
/** Alter an existing collection schema, replacing its field definitions. */
|
|
281
|
-
alterCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
|
|
259
|
+
alterCollection(name: string, fields: FieldDef[] | CollectionDef, options?: CollectionOptions): Promise<CollectionDef>;
|
|
282
260
|
/** @internal */
|
|
283
|
-
_alterCollectionImpl(name: string, fields: FieldDef[], conversationId: string): Promise<CollectionDef>;
|
|
261
|
+
_alterCollectionImpl(name: string, fields: FieldDef[] | CollectionDef, options: CollectionOptions | undefined, conversationId: string): Promise<CollectionDef>;
|
|
284
262
|
/** Drop a collection schema. */
|
|
285
263
|
dropCollection(name: string): Promise<void>;
|
|
286
264
|
/** @internal */
|
|
@@ -334,28 +312,11 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
334
312
|
}): Promise<Response>;
|
|
335
313
|
private uploadAttachment;
|
|
336
314
|
private ensureCollection;
|
|
337
|
-
/**
|
|
338
|
-
* Register a collector that resolves when the object arrives via SSE.
|
|
339
|
-
* @internal
|
|
340
|
-
*/
|
|
341
|
-
private _collectObject;
|
|
342
|
-
/** @internal */
|
|
343
|
-
private _cancelCollector;
|
|
344
|
-
/** @internal */
|
|
345
|
-
private _deliverObject;
|
|
346
315
|
/**
|
|
347
316
|
* Handle a channel event from the subscription.
|
|
348
317
|
* @internal
|
|
349
318
|
*/
|
|
350
319
|
private handleChannelEvent;
|
|
351
|
-
/** @internal */
|
|
352
|
-
private _handleObjectCreated;
|
|
353
|
-
/** @internal */
|
|
354
|
-
private _handleObjectUpdated;
|
|
355
|
-
/** @internal */
|
|
356
|
-
private _handleObjectDeleted;
|
|
357
|
-
/** @internal */
|
|
358
|
-
private _handleObjectMoved;
|
|
359
320
|
}
|
|
360
321
|
/**
|
|
361
322
|
* A lightweight handle for a specific conversation within a channel.
|
|
@@ -382,11 +343,6 @@ export declare class ConversationHandle {
|
|
|
382
343
|
setSystemInstruction(instruction: string | null): Promise<void>;
|
|
383
344
|
/** Rename this conversation. */
|
|
384
345
|
rename(name: string): Promise<void>;
|
|
385
|
-
/** Find objects using structured filters and/or natural language. */
|
|
386
|
-
findObjects(options: FindObjectsOptions): Promise<{
|
|
387
|
-
objects: RoolObject[];
|
|
388
|
-
message: string;
|
|
389
|
-
}>;
|
|
390
346
|
/** Create a new object. */
|
|
391
347
|
createObject(collection: string, body: Record<string, unknown>, options?: CreateObjectOptions): Promise<{
|
|
392
348
|
object: RoolObject;
|
|
@@ -410,9 +366,9 @@ export declare class ConversationHandle {
|
|
|
410
366
|
objects: RoolObject[];
|
|
411
367
|
}>;
|
|
412
368
|
/** Create a new collection schema. */
|
|
413
|
-
createCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
|
|
369
|
+
createCollection(name: string, fields: FieldDef[] | CollectionDef, options?: CollectionOptions): Promise<CollectionDef>;
|
|
414
370
|
/** Alter an existing collection schema. */
|
|
415
|
-
alterCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
|
|
371
|
+
alterCollection(name: string, fields: FieldDef[] | CollectionDef, options?: CollectionOptions): Promise<CollectionDef>;
|
|
416
372
|
/** Drop a collection schema. */
|
|
417
373
|
dropCollection(name: string): Promise<void>;
|
|
418
374
|
setMetadata(key: string, value: unknown): void;
|
package/dist/channel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
|