@rool-dev/sdk 0.10.2-dev.47747e3 → 0.10.2-dev.a9e71cd
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 +31 -115
- package/dist/channel.d.ts +15 -67
- package/dist/channel.d.ts.map +1 -1
- package/dist/channel.js +145 -288
- package/dist/channel.js.map +1 -1
- package/dist/client.d.ts +1 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -19
- 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 +1 -1
- package/dist/index.d.ts.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 +17 -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();
|
|
@@ -320,24 +317,24 @@ await channel.createObject('article', {
|
|
|
320
317
|
|
|
321
318
|
### Real-time Sync
|
|
322
319
|
|
|
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
|
|
320
|
+
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
321
|
|
|
330
322
|
```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
|
-
});
|
|
323
|
+
let token: string | null = null;
|
|
338
324
|
|
|
339
|
-
|
|
340
|
-
|
|
325
|
+
async function syncFiles() {
|
|
326
|
+
const result = await space.webdav.syncCollection('/', {
|
|
327
|
+
token,
|
|
328
|
+
level: 'infinite',
|
|
329
|
+
props: ['displayname', 'getetag', 'getlastmodified', 'resourcetype'],
|
|
330
|
+
});
|
|
331
|
+
token = result.token;
|
|
332
|
+
updateFileTree(result.responses);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
space.on('filesChanged', syncFiles);
|
|
336
|
+
space.on('filesReset', () => { token = null; syncFiles(); });
|
|
337
|
+
await syncFiles();
|
|
341
338
|
```
|
|
342
339
|
|
|
343
340
|
### Locations & Basenames
|
|
@@ -574,7 +571,7 @@ await space.addUser(user.id, 'editor');
|
|
|
574
571
|
| `owner` | Full control, can delete space and manage all users |
|
|
575
572
|
| `admin` | All editor capabilities, plus can manage users (except other admins/owners) |
|
|
576
573
|
| `editor` | Can create, modify, move, and delete objects |
|
|
577
|
-
| `viewer` | Read-only access (can query with `prompt` and
|
|
574
|
+
| `viewer` | Read-only access (can query with `prompt` and read objects/files) |
|
|
578
575
|
|
|
579
576
|
### Space Collaboration Methods
|
|
580
577
|
|
|
@@ -621,18 +618,9 @@ When a user accesses a space via URL, they're granted the corresponding role (`v
|
|
|
621
618
|
|
|
622
619
|
### Real-time Collaboration
|
|
623
620
|
|
|
624
|
-
When multiple users have a space open, changes
|
|
625
|
-
|
|
626
|
-
```typescript
|
|
627
|
-
channel.on('objectUpdated', ({ location, object, source }) => {
|
|
628
|
-
if (source === 'remote_user') {
|
|
629
|
-
// Another user made this change
|
|
630
|
-
showCollaboratorActivity(object);
|
|
631
|
-
}
|
|
632
|
-
});
|
|
633
|
-
```
|
|
621
|
+
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.
|
|
634
622
|
|
|
635
|
-
See [Real-time Sync](#real-time-sync) for
|
|
623
|
+
See [Real-time Sync](#real-time-sync) for a WebDAV sync-token example.
|
|
636
624
|
|
|
637
625
|
## RoolClient API
|
|
638
626
|
|
|
@@ -663,8 +651,6 @@ const client = new RoolClient({
|
|
|
663
651
|
| `duplicateSpace(sourceSpaceId, name): Promise<RoolSpace>` | Duplicate an existing space. Returns a handle to the new space. |
|
|
664
652
|
| `deleteSpace(id): Promise<void>` | Permanently delete a space (cannot be undone) |
|
|
665
653
|
| `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
654
|
|
|
669
655
|
### Channel Management
|
|
670
656
|
|
|
@@ -719,7 +705,7 @@ client.on('userStorageChanged', ({ key, value, source }) => {
|
|
|
719
705
|
|
|
720
706
|
### Extensions
|
|
721
707
|
|
|
722
|
-
Manage and publish extensions.
|
|
708
|
+
Manage and publish extensions.
|
|
723
709
|
|
|
724
710
|
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
711
|
|
|
@@ -867,8 +853,6 @@ All methods that accept a location accept either the canonical form or the short
|
|
|
867
853
|
|--------|-------------|
|
|
868
854
|
| `getObject(location): Promise<RoolObject \| undefined>` | Get an object, or undefined if not found. |
|
|
869
855
|
| `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
856
|
| `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
857
|
| `updateObject(location, options): Promise<{ object, message }>` | Update an existing object's body. |
|
|
874
858
|
| `moveObject(from, to, options?): Promise<{ object, message }>` | Rename or relocate an object. See [Moving and Renaming](#moving-and-renaming). |
|
|
@@ -961,59 +945,6 @@ await channel.moveObject(from, to, {
|
|
|
961
945
|
| `ephemeral` | If true, the operation won't be recorded in interaction history. |
|
|
962
946
|
| `parentInteractionId` | Conversation tree parent. Omit to auto-continue; pass `null` for a new root. |
|
|
963
947
|
|
|
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
948
|
### Undo/Redo
|
|
1018
949
|
|
|
1019
950
|
| Method | Description |
|
|
@@ -1041,12 +972,13 @@ Store arbitrary data alongside the space without it being part of an object's bo
|
|
|
1041
972
|
|
|
1042
973
|
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
974
|
|
|
1044
|
-
|
|
975
|
+
Open a space, then use `space.webdav`.
|
|
1045
976
|
|
|
1046
977
|
```typescript
|
|
1047
978
|
import { resolveMachineResource } from '@rool-dev/sdk';
|
|
1048
979
|
|
|
1049
|
-
const
|
|
980
|
+
const space = await client.openSpace('space-id');
|
|
981
|
+
const webdav = space.webdav;
|
|
1050
982
|
|
|
1051
983
|
await webdav.mkcol('docs');
|
|
1052
984
|
await webdav.put('docs/readme.md', '# Hello', {
|
|
@@ -1091,8 +1023,6 @@ Paths are space-relative (`docs/readme.md`, not `/docs/readme.md`). WebDAV metho
|
|
|
1091
1023
|
|
|
1092
1024
|
| Method | Description |
|
|
1093
1025
|
|--------|-------------|
|
|
1094
|
-
| `client.webdav(spaceId)` | Create a WebDAV client for a space |
|
|
1095
|
-
| `client.getSpaceStorageUsage(spaceId)` | Get WebDAV quota usage for a space |
|
|
1096
1026
|
| `space.webdav` | WebDAV client for an open space |
|
|
1097
1027
|
| `space.getStorageUsage()` | Get WebDAV quota usage for an open space |
|
|
1098
1028
|
| `webdav.getStorageUsage()` | Get WebDAV quota usage through the WebDAV client |
|
|
@@ -1225,37 +1155,23 @@ The archive bundles `data.json` (objects, metadata, and channels) together with
|
|
|
1225
1155
|
|
|
1226
1156
|
### Channel Events
|
|
1227
1157
|
|
|
1228
|
-
|
|
1158
|
+
Channel events are for channel/conversation state. Object and file reactivity goes through `space.on('filesChanged' | 'filesReset')` plus WebDAV `syncCollection()`.
|
|
1229
1159
|
|
|
1230
1160
|
```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
1161
|
// Channel metadata updated (name, extensionUrl)
|
|
1250
1162
|
channel.on('channelUpdated', ({ channelId, source }) => void)
|
|
1251
1163
|
|
|
1252
1164
|
// Conversation interaction history updated
|
|
1253
1165
|
channel.on('conversationUpdated', ({ conversationId, channelId, source }) => void)
|
|
1254
1166
|
|
|
1167
|
+
// Space metadata / schema compatibility events
|
|
1168
|
+
channel.on('metadataUpdated', ({ metadata, source }) => void)
|
|
1169
|
+
channel.on('schemaUpdated', ({ schema, source }) => void)
|
|
1170
|
+
|
|
1255
1171
|
// Full state replacement (undo/redo, resync after error)
|
|
1256
1172
|
channel.on('reset', ({ source }) => void)
|
|
1257
1173
|
|
|
1258
|
-
// Sync error occurred
|
|
1174
|
+
// Sync error occurred
|
|
1259
1175
|
channel.on('syncError', (error: Error) => void)
|
|
1260
1176
|
```
|
|
1261
1177
|
|
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, 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
|
*
|
|
@@ -190,34 +185,12 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
190
185
|
* Returns the cached stat or undefined if not known.
|
|
191
186
|
*/
|
|
192
187
|
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
188
|
/**
|
|
214
189
|
* Create a new object in the given collection.
|
|
215
190
|
*
|
|
216
191
|
* @param collection - The collection (must exist in the schema)
|
|
217
|
-
* @param body - Object body fields.
|
|
218
|
-
* Fields prefixed with `_` are hidden from AI.
|
|
192
|
+
* @param body - Object body fields. Fields prefixed with `_` are hidden from AI.
|
|
219
193
|
* @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
194
|
* @returns The created object and a status message.
|
|
222
195
|
*/
|
|
223
196
|
createObject(collection: string, body: Record<string, unknown>, options?: CreateObjectOptions): Promise<{
|
|
@@ -233,9 +206,7 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
233
206
|
* Update an existing object.
|
|
234
207
|
*
|
|
235
208
|
* @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.
|
|
209
|
+
* @param options.data - Fields to add or update. Pass `null` to delete a field.
|
|
239
210
|
*/
|
|
240
211
|
updateObject(location: string, options: UpdateObjectOptions): Promise<{
|
|
241
212
|
object: RoolObject;
|
|
@@ -253,7 +224,6 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
253
224
|
* @param from - Current location
|
|
254
225
|
* @param to - New location
|
|
255
226
|
* @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
227
|
*/
|
|
258
228
|
moveObject(from: string, to: string, options?: MoveObjectOptions): Promise<{
|
|
259
229
|
object: RoolObject;
|
|
@@ -274,13 +244,13 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
274
244
|
/** Get the current schema for this space. */
|
|
275
245
|
getSchema(): SpaceSchema;
|
|
276
246
|
/** Create a new collection schema. */
|
|
277
|
-
createCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
|
|
247
|
+
createCollection(name: string, fields: FieldDef[] | CollectionDef, options?: CollectionOptions): Promise<CollectionDef>;
|
|
278
248
|
/** @internal */
|
|
279
|
-
_createCollectionImpl(name: string, fields: FieldDef[], conversationId: string): Promise<CollectionDef>;
|
|
249
|
+
_createCollectionImpl(name: string, fields: FieldDef[] | CollectionDef, options: CollectionOptions | undefined, conversationId: string): Promise<CollectionDef>;
|
|
280
250
|
/** Alter an existing collection schema, replacing its field definitions. */
|
|
281
|
-
alterCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
|
|
251
|
+
alterCollection(name: string, fields: FieldDef[] | CollectionDef, options?: CollectionOptions): Promise<CollectionDef>;
|
|
282
252
|
/** @internal */
|
|
283
|
-
_alterCollectionImpl(name: string, fields: FieldDef[], conversationId: string): Promise<CollectionDef>;
|
|
253
|
+
_alterCollectionImpl(name: string, fields: FieldDef[] | CollectionDef, options: CollectionOptions | undefined, conversationId: string): Promise<CollectionDef>;
|
|
284
254
|
/** Drop a collection schema. */
|
|
285
255
|
dropCollection(name: string): Promise<void>;
|
|
286
256
|
/** @internal */
|
|
@@ -334,28 +304,11 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
|
|
|
334
304
|
}): Promise<Response>;
|
|
335
305
|
private uploadAttachment;
|
|
336
306
|
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
307
|
/**
|
|
347
308
|
* Handle a channel event from the subscription.
|
|
348
309
|
* @internal
|
|
349
310
|
*/
|
|
350
311
|
private handleChannelEvent;
|
|
351
|
-
/** @internal */
|
|
352
|
-
private _handleObjectCreated;
|
|
353
|
-
/** @internal */
|
|
354
|
-
private _handleObjectUpdated;
|
|
355
|
-
/** @internal */
|
|
356
|
-
private _handleObjectDeleted;
|
|
357
|
-
/** @internal */
|
|
358
|
-
private _handleObjectMoved;
|
|
359
312
|
}
|
|
360
313
|
/**
|
|
361
314
|
* A lightweight handle for a specific conversation within a channel.
|
|
@@ -382,11 +335,6 @@ export declare class ConversationHandle {
|
|
|
382
335
|
setSystemInstruction(instruction: string | null): Promise<void>;
|
|
383
336
|
/** Rename this conversation. */
|
|
384
337
|
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
338
|
/** Create a new object. */
|
|
391
339
|
createObject(collection: string, body: Record<string, unknown>, options?: CreateObjectOptions): Promise<{
|
|
392
340
|
object: RoolObject;
|
|
@@ -410,9 +358,9 @@ export declare class ConversationHandle {
|
|
|
410
358
|
objects: RoolObject[];
|
|
411
359
|
}>;
|
|
412
360
|
/** Create a new collection schema. */
|
|
413
|
-
createCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
|
|
361
|
+
createCollection(name: string, fields: FieldDef[] | CollectionDef, options?: CollectionOptions): Promise<CollectionDef>;
|
|
414
362
|
/** Alter an existing collection schema. */
|
|
415
|
-
alterCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
|
|
363
|
+
alterCollection(name: string, fields: FieldDef[] | CollectionDef, options?: CollectionOptions): Promise<CollectionDef>;
|
|
416
364
|
/** Drop a collection schema. */
|
|
417
365
|
dropCollection(name: string): Promise<void>;
|
|
418
366
|
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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"}
|