@rool-dev/sdk 0.3.1-dev.fa375c5 → 0.3.2

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
@@ -10,7 +10,8 @@ Use Rool to programmatically instruct agents to generate content, research topic
10
10
 
11
11
  **Core primitives:**
12
12
  - **Spaces** — Containers for objects, schema, metadata, and channels
13
- - **Channels** — Named contexts within a space, each with independent interaction history. All object and AI operations go through a channel.
13
+ - **Channels** — Named contexts within a space. All object and AI operations go through a channel.
14
+ - **Conversations** — Independent interaction histories within a channel. Most apps use a single `'default'` conversation; multi-conversation apps (e.g., chat with multiple threads) can open additional ones.
14
15
  - **Objects** — Key-value records with any fields you define. References between objects are data fields whose values are object IDs.
15
16
  - **AI operations** — Create, update, or query objects using natural language and `{{placeholders}}`
16
17
 
@@ -84,7 +85,7 @@ channel.close();
84
85
 
85
86
  ### Spaces and Channels
86
87
 
87
- A **space** is a container that holds objects, schema, metadata, and channels. A **channel** is a named context within a space — it's the handle you use for all object and AI operations. Each channel has its own interaction history.
88
+ A **space** is a container that holds objects, schema, metadata, and channels. A **channel** is a named context within a space — it's the handle you use for all object and AI operations. Each channel contains one or more **conversations**, each with independent interaction history.
88
89
 
89
90
  There are two main handles:
90
91
  - **`RoolSpace`** — Lightweight admin handle for user management, link access, channel management, and export. No real-time subscription.
@@ -111,6 +112,40 @@ The `channelId` is fixed when you open a channel and cannot be changed. To use a
111
112
  - 1–32 characters
112
113
  - Only alphanumeric characters, hyphens (`-`), and underscores (`_`)
113
114
 
115
+ ### Conversations
116
+
117
+ A **conversation** is a named interaction history within a channel. By default, all operations use the `'default'` conversation — most apps never need to think about conversations at all.
118
+
119
+ For apps that need multiple independent interaction threads (e.g., a chat sidebar with multiple threads), use `channel.conversation()` to get a handle scoped to a specific conversation:
120
+
121
+ ```typescript
122
+ // Default conversation — most apps use this
123
+ const channel = await client.openChannel('space-id', 'main');
124
+ await channel.prompt('Hello'); // Uses 'default' conversation
125
+
126
+ // Conversation handle — for multi-thread UIs
127
+ const thread = channel.conversation('thread-42');
128
+ await thread.prompt('Hello'); // Uses 'thread-42' conversation
129
+ thread.getInteractions(); // Interactions for thread-42 only
130
+ ```
131
+
132
+ Each conversation has its own interaction history and optional system instruction. Conversations are auto-created on first interaction — no explicit create step needed. The 50-message cap applies per conversation. All conversations share one SSE connection per channel.
133
+
134
+ ```typescript
135
+ // System instructions are per-conversation
136
+ const thread = channel.conversation('research');
137
+ await thread.setSystemInstruction('Respond in haiku');
138
+
139
+ // List all conversations in this channel
140
+ const conversations = channel.getConversations();
141
+
142
+ // Delete a conversation (cannot delete 'default')
143
+ await channel.deleteConversation('old-thread');
144
+
145
+ // Rename a conversation
146
+ await thread.rename('Research Thread');
147
+ ```
148
+
114
149
  ### Objects & References
115
150
 
116
151
  **Objects** are plain key-value records. The `id` field is reserved; everything else is application-defined.
@@ -557,6 +592,19 @@ client.on('userStorageChanged', ({ key, value, source }) => {
557
592
  });
558
593
  ```
559
594
 
595
+ ### Apps
596
+
597
+ Publish, manage, and discover apps. See [`@rool-dev/app`](/app/) for building apps.
598
+
599
+ | Method | Description |
600
+ |--------|-------------|
601
+ | `publishApp(appId, options): Promise<PublishedAppInfo>` | Publish or update an app (`options.bundle`: zip with `index.html` and `rool-app.json`) |
602
+ | `unpublishApp(appId): Promise<void>` | Unpublish an app |
603
+ | `listApps(): Promise<PublishedAppInfo[]>` | List your own published apps |
604
+ | `getAppInfo(appId): Promise<PublishedAppInfo \| null>` | Get info for a specific app |
605
+ | `findApps(options?): Promise<PublishedAppInfo[]>` | Search public apps. Options: `query` (semantic search string), `limit` (default 20, max 100). Omit `query` to browse all. |
606
+ | `installApp(spaceId, appId, channelId?): Promise<string>` | Install an app into a space. Creates/updates a channel with the app's manifest settings (name, system instruction, collections). Returns the channel ID. Defaults `channelId` to `appId`. |
607
+
560
608
  ### Utilities
561
609
 
562
610
  | Method | Description |
@@ -637,6 +685,7 @@ A channel is a named context within a space. All object operations, AI prompts,
637
685
  | `userId: string` | Current user's ID |
638
686
  | `channelId: string` | Channel ID (read-only, fixed at open time) |
639
687
  | `isReadOnly: boolean` | True if viewer role |
688
+ | `appUrl: string \| null` | URL of the installed app, or null if this is a plain channel |
640
689
 
641
690
  ### Lifecycle
642
691
 
@@ -644,6 +693,7 @@ A channel is a named context within a space. All object operations, AI prompts,
644
693
  |--------|-------------|
645
694
  | `close(): void` | Clean up resources and stop receiving updates |
646
695
  | `rename(name): Promise<void>` | Rename this channel |
696
+ | `conversation(conversationId): ConversationHandle` | Get a handle scoped to a specific conversation (see [Conversations](#conversations)) |
647
697
 
648
698
  ### Object Operations
649
699
 
@@ -877,9 +927,12 @@ channel.on('metadataUpdated', ({ metadata, source }) => void)
877
927
  // Collection schema changed
878
928
  channel.on('schemaUpdated', ({ schema, source }) => void)
879
929
 
880
- // Channel updated (fetch with getInteractions())
930
+ // Channel metadata updated (name, appUrl)
881
931
  channel.on('channelUpdated', ({ channelId, source }) => void)
882
932
 
933
+ // Conversation interaction history updated
934
+ channel.on('conversationUpdated', ({ conversationId, channelId, source }) => void)
935
+
883
936
  // Full state replacement (undo/redo, resync after error)
884
937
  channel.on('reset', ({ source }) => void)
885
938
 
@@ -905,13 +958,13 @@ try {
905
958
 
906
959
  ## Interaction History
907
960
 
908
- Each channel has a `channelId` that identifies it. The history records all meaningful interactions (prompts, object mutations) as self-contained entries, each capturing the request and its result. History is stored in the space data itself and syncs in real-time to all clients.
961
+ Each channel contains one or more conversations, each with its own interaction history. The history records all meaningful interactions (prompts, object mutations) as self-contained entries, each capturing the request and its result. History is stored in the space data itself and syncs in real-time to all clients.
909
962
 
910
963
  ### What the AI Receives
911
964
 
912
965
  AI operations (`prompt`, `createObject`, `updateObject`, `findObjects`) automatically receive:
913
966
 
914
- - **Interaction history** — Previous interactions and their results from this channel
967
+ - **Interaction history** — Previous interactions and their results from the current conversation
915
968
  - **Recently modified objects** — Objects in the space recently created or changed
916
969
  - **Selected objects** — Objects passed via `objectIds` are given primary focus
917
970
 
@@ -920,24 +973,27 @@ This context flows automatically — no configuration needed. The AI sees enough
920
973
  ### Accessing History
921
974
 
922
975
  ```typescript
923
- // Get interactions for this channel
976
+ // Get interactions for the current conversation
924
977
  const interactions = channel.getInteractions();
925
978
  // Returns: Interaction[]
926
979
  ```
927
980
 
928
- ### Channel History Methods
981
+ ### Conversation History Methods
929
982
 
930
983
  | Method | Description |
931
984
  |--------|-------------|
932
- | `getInteractions(): Interaction[]` | Get interactions for this channel |
933
- | `getSystemInstruction(): string \| undefined` | Get system instruction for this channel |
934
- | `setSystemInstruction(instruction): Promise<void>` | Set system instruction for this channel. Pass `null` to clear. |
985
+ | `getInteractions(): Interaction[]` | Get interactions for the default conversation |
986
+ | `getSystemInstruction(): string \| undefined` | Get system instruction for the default conversation |
987
+ | `setSystemInstruction(instruction): Promise<void>` | Set system instruction for the default conversation. Pass `null` to clear. |
988
+ | `getConversations(): ConversationInfo[]` | List all conversations in this channel |
989
+ | `deleteConversation(conversationId): Promise<void>` | Delete a conversation (cannot delete `'default'`) |
990
+ | `renameConversation(name): Promise<void>` | Rename the default conversation |
935
991
 
936
992
  Channel management (listing, renaming, deleting channels) is done via the client — see [Channel Management](#channel-management).
937
993
 
938
994
  ### System Instructions
939
995
 
940
- System instructions customize how the AI behaves within a channel. The instruction persists across all prompts in that channel.
996
+ System instructions customize how the AI behaves within a conversation. The instruction persists across all prompts in that conversation.
941
997
 
942
998
  ```typescript
943
999
  // Make the AI behave like an SQL interpreter
@@ -964,19 +1020,25 @@ System instructions are useful for:
964
1020
  ### Listening for Updates
965
1021
 
966
1022
  ```typescript
1023
+ // Listen for conversation updates (interaction history changes)
1024
+ channel.on('conversationUpdated', ({ conversationId, channelId, source }) => {
1025
+ const interactions = channel.getInteractions();
1026
+ renderInteractions(interactions);
1027
+ });
1028
+
1029
+ // channelUpdated also fires for the active conversation (backward compat)
967
1030
  channel.on('channelUpdated', ({ channelId, source }) => {
968
- // Channel updated - refresh if needed
969
1031
  const interactions = channel.getInteractions();
970
1032
  renderInteractions(interactions);
971
1033
  });
972
1034
  ```
973
1035
 
974
- ### Multiple Channels
1036
+ ### Multiple Channels and Conversations
975
1037
 
976
- Each channel has its own interaction history. To work with multiple independent histories on the same space, open multiple channels:
1038
+ Each channel contains conversations with independent interaction history. For most apps, a single channel with the default conversation is sufficient. For multi-thread UIs, use conversation handles within one channel:
977
1039
 
978
1040
  ```typescript
979
- // Open two channels on the same space
1041
+ // Multiple channels on the same space
980
1042
  const research = await client.openChannel('space-id', 'research');
981
1043
  const main = await client.openChannel('space-id', 'main');
982
1044
 
@@ -984,19 +1046,27 @@ const main = await client.openChannel('space-id', 'main');
984
1046
  await research.prompt("Analyze this data");
985
1047
  await main.prompt("Summarize findings");
986
1048
 
1049
+ // Multiple conversations within one channel (shared SSE connection)
1050
+ const channel = await client.openChannel('space-id', 'main');
1051
+ const thread1 = channel.conversation('thread-1');
1052
+ const thread2 = channel.conversation('thread-2');
1053
+
1054
+ await thread1.prompt("Research topic A");
1055
+ await thread2.prompt("Research topic B");
1056
+
987
1057
  // Close when done
988
1058
  research.close();
989
1059
  main.close();
990
1060
  ```
991
1061
 
992
1062
  **Use cases:**
993
- - **Chat app with sidebar** — Each sidebar entry is a channel with a different channelId
994
- - **Page refresh** — Store the channelId in localStorage to resume the same channel
1063
+ - **Chat app with sidebar** — Each sidebar entry is a conversation handle within the same channel
1064
+ - **Page refresh** — Store the channelId and conversationId in localStorage to resume
995
1065
  - **Collaborative channels** — Share a channelId between users to enable shared AI interaction history
996
1066
 
997
- **Tip:** Use the user's id as channelId to share context across tabs/devices, or a fixed string like `'shared'` to share context across all users.
1067
+ **Tip:** Use the user's id as conversationId to give each user their own interaction history within a shared channel.
998
1068
 
999
- Note: Interaction history is truncated to the most recent 50 entries to manage space size.
1069
+ Note: Interaction history is truncated to the most recent 50 entries per conversation.
1000
1070
 
1001
1071
  ### The ai Field
1002
1072
 
@@ -1006,7 +1076,7 @@ The `ai` field in interactions distinguishes AI-generated responses from synthet
1006
1076
 
1007
1077
  ### Tool Calls
1008
1078
 
1009
- The `toolCalls` array captures what the AI agent did during execution. Use it to build responsive UIs that show progress while the agent works — the `channelUpdated` event fires as each tool completes, letting you display status updates or hints in real-time.
1079
+ The `toolCalls` array captures what the AI agent did during execution. Use it to build responsive UIs that show progress while the agent works — the `conversationUpdated` event fires when each tool starts and completes. A tool call without a `result` is still running; once `result` is present, the tool has finished.
1010
1080
 
1011
1081
  ## Data Types
1012
1082
 
@@ -1057,17 +1127,36 @@ interface RoolObjectStat {
1057
1127
  }
1058
1128
  ```
1059
1129
 
1060
- ### Channels
1130
+ ### Channels and Conversations
1061
1131
 
1062
1132
  ```typescript
1063
- // Channel container with metadata
1133
+ // Conversation holds interaction history and optional system instruction
1134
+ interface Conversation {
1135
+ name?: string; // Conversation name (optional)
1136
+ systemInstruction?: string; // Custom system instruction for AI
1137
+ createdAt: number; // Timestamp when conversation was created
1138
+ createdBy: string; // User ID who created the conversation
1139
+ interactions: Interaction[]; // Interaction history
1140
+ }
1141
+
1142
+ // Conversation summary info (returned by channel.getConversations())
1143
+ interface ConversationInfo {
1144
+ id: string;
1145
+ name: string | null;
1146
+ systemInstruction: string | null;
1147
+ createdAt: number;
1148
+ createdBy: string;
1149
+ interactionCount: number;
1150
+ }
1151
+
1152
+ // Channel container with metadata and conversations
1064
1153
  interface Channel {
1065
1154
  name?: string; // Channel name (optional)
1066
1155
  createdAt: number; // Timestamp when channel was created
1067
1156
  createdBy: string; // User ID who created the channel
1068
1157
  createdByName?: string; // Display name at time of creation
1069
- systemInstruction?: string; // Custom system instruction for AI
1070
- interactions: Interaction[]; // Interaction history
1158
+ appUrl?: string; // URL of installed app (set by installApp)
1159
+ conversations: Record<string, Conversation>; // Keyed by conversation ID
1071
1160
  }
1072
1161
 
1073
1162
  // Channel summary info (returned by client.getChannels)
@@ -1078,6 +1167,7 @@ interface ChannelInfo {
1078
1167
  createdBy: string;
1079
1168
  createdByName: string | null;
1080
1169
  interactionCount: number;
1170
+ appUrl: string | null; // URL of installed app, or null
1081
1171
  }
1082
1172
  ```
1083
1173
 
@@ -1089,9 +1179,11 @@ Note: `Channel` and `ChannelInfo` are data types describing the stored channel m
1089
1179
  interface ToolCall {
1090
1180
  name: string; // Tool name (e.g., "create_object", "update_object", "search_web")
1091
1181
  input: unknown; // Arguments passed to the tool
1092
- result: string; // Truncated result (max 500 chars)
1182
+ result?: string; // Truncated result (absent while tool is running)
1093
1183
  }
1094
1184
 
1185
+ type InteractionStatus = 'pending' | 'streaming' | 'done' | 'error';
1186
+
1095
1187
  interface Interaction {
1096
1188
  id: string; // Unique ID for this interaction
1097
1189
  timestamp: number;
@@ -1099,7 +1191,8 @@ interface Interaction {
1099
1191
  userName?: string | null; // Display name at time of interaction
1100
1192
  operation: 'prompt' | 'createObject' | 'updateObject' | 'deleteObjects';
1101
1193
  input: string; // What the user did: prompt text or action description
1102
- output: string | null; // Result: AI response or confirmation message (null while in-progress)
1194
+ output: string | null; // AI response or confirmation message (may be partial when streaming)
1195
+ status: InteractionStatus; // Lifecycle status (pending → streaming → done/error)
1103
1196
  ai: boolean; // Whether AI was invoked (vs synthetic confirmation)
1104
1197
  modifiedObjectIds: string[]; // Objects affected by this interaction
1105
1198
  toolCalls: ToolCall[]; // Tools called during this interaction (for AI prompts)
package/dist/apps.d.ts CHANGED
@@ -18,7 +18,7 @@ export declare class AppsClient {
18
18
  /**
19
19
  * Publish or update an app.
20
20
  * @param appId - URL-safe identifier for the app
21
- * @param options - App name, bundle (zip file), and optional SPA flag
21
+ * @param options - Bundle zip file (must include index.html and rool-app.json)
22
22
  */
23
23
  publish(appId: string, options: PublishAppOptions): Promise<PublishedAppInfo>;
24
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAIpC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAkBzC;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAsB1D;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA4BnF;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAe9C"}
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAIpC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAkBzC;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAsB1D;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwBnF;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAe9C"}
package/dist/apps.js CHANGED
@@ -47,7 +47,7 @@ export class AppsClient {
47
47
  /**
48
48
  * Publish or update an app.
49
49
  * @param appId - URL-safe identifier for the app
50
- * @param options - App name, bundle (zip file), and optional SPA flag
50
+ * @param options - Bundle zip file (must include index.html and rool-app.json)
51
51
  */
52
52
  async publish(appId, options) {
53
53
  const tokens = await this.config.authManager.getTokens();
@@ -56,10 +56,6 @@ export class AppsClient {
56
56
  const headers = { Authorization: `Bearer ${tokens.accessToken}`, 'X-Rool-Token': tokens.roolToken };
57
57
  const formData = new FormData();
58
58
  formData.append('bundle', options.bundle);
59
- formData.append('name', options.name);
60
- if (options.spa !== undefined) {
61
- formData.append('spa', String(options.spa));
62
- }
63
59
  const response = await fetch(`${this.config.appsUrl}/${encodeURIComponent(appId)}`, {
64
60
  method: 'POST',
65
61
  headers,
package/dist/apps.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"apps.js","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"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"}
package/dist/channel.d.ts CHANGED
@@ -3,7 +3,7 @@ import type { GraphQLClient } from './graphql.js';
3
3
  import type { MediaClient } from './media.js';
4
4
  import type { AuthManager } from './auth.js';
5
5
  import type { Logger } from './logger.js';
6
- import type { RoolObject, RoolObjectStat, ChannelEvents, RoolUserRole, PromptOptions, FindObjectsOptions, CreateObjectOptions, UpdateObjectOptions, MediaInfo, MediaResponse, Interaction, Channel, LinkAccess, SpaceSchema, CollectionDef, FieldDef } from './types.js';
6
+ import type { RoolObject, RoolObjectStat, ChannelEvents, RoolUserRole, PromptOptions, FindObjectsOptions, CreateObjectOptions, UpdateObjectOptions, MediaInfo, MediaResponse, Interaction, Channel, ConversationInfo, LinkAccess, SpaceSchema, CollectionDef, FieldDef } from './types.js';
7
7
  export declare function generateEntityId(): string;
8
8
  export interface ChannelConfig {
9
9
  id: string;
@@ -56,6 +56,7 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
56
56
  private _linkAccess;
57
57
  private _userId;
58
58
  private _channelId;
59
+ private _conversationId;
59
60
  private _closed;
60
61
  private graphqlClient;
61
62
  private mediaClient;
@@ -94,11 +95,40 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
94
95
  * Fixed at open time — cannot be changed.
95
96
  */
96
97
  get channelId(): string;
98
+ /**
99
+ * Get the conversation ID for this channel.
100
+ * Defaults to 'default' for most apps.
101
+ */
102
+ get conversationId(): string;
97
103
  get isReadOnly(): boolean;
98
104
  /**
99
- * Get interactions for this channel.
105
+ * Get the app URL if this channel was created via installApp, or null.
106
+ */
107
+ get appUrl(): string | null;
108
+ /**
109
+ * Get interactions for the current conversation.
100
110
  */
101
111
  getInteractions(): Interaction[];
112
+ /** @internal */
113
+ _getInteractionsImpl(conversationId: string): Interaction[];
114
+ /**
115
+ * Get all conversations in this channel.
116
+ * Returns summary info (no full interaction data) for each conversation.
117
+ */
118
+ getConversations(): ConversationInfo[];
119
+ /**
120
+ * Delete a conversation from this channel.
121
+ * Cannot delete the conversation you are currently using.
122
+ */
123
+ deleteConversation(conversationId: string): Promise<void>;
124
+ /**
125
+ * Get a handle for a specific conversation within this channel.
126
+ * The handle scopes AI and mutation operations to that conversation's
127
+ * interaction history, while sharing the channel's single SSE connection.
128
+ *
129
+ * Conversations are auto-created on first interaction — no explicit create needed.
130
+ */
131
+ conversation(conversationId: string): ConversationHandle;
102
132
  /**
103
133
  * Close this channel and clean up resources.
104
134
  * Stops real-time subscription and unregisters from client.
@@ -162,6 +192,11 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
162
192
  objects: RoolObject[];
163
193
  message: string;
164
194
  }>;
195
+ /** @internal */
196
+ _findObjectsImpl(options: FindObjectsOptions, conversationId: string): Promise<{
197
+ objects: RoolObject[];
198
+ message: string;
199
+ }>;
165
200
  /**
166
201
  * Get all object IDs (sync, from local cache).
167
202
  * The list is loaded on open and kept current via SSE events.
@@ -182,6 +217,11 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
182
217
  object: RoolObject;
183
218
  message: string;
184
219
  }>;
220
+ /** @internal */
221
+ _createObjectImpl(options: CreateObjectOptions, conversationId: string): Promise<{
222
+ object: RoolObject;
223
+ message: string;
224
+ }>;
185
225
  /**
186
226
  * Update an existing object.
187
227
  * @param objectId - The ID of the object to update
@@ -194,11 +234,18 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
194
234
  object: RoolObject;
195
235
  message: string;
196
236
  }>;
237
+ /** @internal */
238
+ _updateObjectImpl(objectId: string, options: UpdateObjectOptions, conversationId: string): Promise<{
239
+ object: RoolObject;
240
+ message: string;
241
+ }>;
197
242
  /**
198
243
  * Delete objects by IDs.
199
244
  * Other objects that reference deleted objects via data fields will retain stale ref values.
200
245
  */
201
246
  deleteObjects(objectIds: string[]): Promise<void>;
247
+ /** @internal */
248
+ _deleteObjectsImpl(objectIds: string[], conversationId: string): Promise<void>;
202
249
  /**
203
250
  * Get the current schema for this space.
204
251
  * Returns a map of collection names to their definitions.
@@ -211,6 +258,8 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
211
258
  * @returns The created CollectionDef
212
259
  */
213
260
  createCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
261
+ /** @internal */
262
+ _createCollectionImpl(name: string, fields: FieldDef[], conversationId: string): Promise<CollectionDef>;
214
263
  /**
215
264
  * Alter an existing collection schema, replacing its field definitions.
216
265
  * @param name - Name of the collection to alter
@@ -218,26 +267,47 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
218
267
  * @returns The updated CollectionDef
219
268
  */
220
269
  alterCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
270
+ /** @internal */
271
+ _alterCollectionImpl(name: string, fields: FieldDef[], conversationId: string): Promise<CollectionDef>;
221
272
  /**
222
273
  * Drop a collection schema.
223
274
  * @param name - Name of the collection to drop
224
275
  */
225
276
  dropCollection(name: string): Promise<void>;
277
+ /** @internal */
278
+ _dropCollectionImpl(name: string, conversationId: string): Promise<void>;
226
279
  /**
227
- * Get the system instruction for this channel.
280
+ * Get the system instruction for the current conversation.
228
281
  * Returns undefined if no system instruction is set.
229
282
  */
230
283
  getSystemInstruction(): string | undefined;
284
+ /** @internal */
285
+ _getSystemInstructionImpl(conversationId: string): string | undefined;
231
286
  /**
232
- * Set the system instruction for this channel.
287
+ * Set the system instruction for the current conversation.
233
288
  * Pass null to clear the instruction.
234
289
  */
235
290
  setSystemInstruction(instruction: string | null): Promise<void>;
291
+ /** @internal */
292
+ _setSystemInstructionImpl(instruction: string | null, conversationId: string): Promise<void>;
293
+ /**
294
+ * Rename the current conversation.
295
+ */
296
+ renameConversation(name: string): Promise<void>;
297
+ /** @internal */
298
+ _renameConversationImpl(name: string, conversationId: string): Promise<void>;
299
+ /**
300
+ * Ensure a conversation exists in the local channel cache.
301
+ * @internal
302
+ */
303
+ _ensureConversationImpl(conversationId: string): void;
236
304
  /**
237
305
  * Set a space-level metadata value.
238
306
  * Metadata is stored in meta and hidden from AI operations.
239
307
  */
240
308
  setMetadata(key: string, value: unknown): void;
309
+ /** @internal */
310
+ _setMetadataImpl(key: string, value: unknown, conversationId: string): void;
241
311
  /**
242
312
  * Get a space-level metadata value.
243
313
  */
@@ -254,6 +324,11 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
254
324
  message: string;
255
325
  objects: RoolObject[];
256
326
  }>;
327
+ /** @internal */
328
+ _promptImpl(prompt: string, options: PromptOptions | undefined, conversationId: string): Promise<{
329
+ message: string;
330
+ objects: RoolObject[];
331
+ }>;
257
332
  /**
258
333
  * Rename this channel.
259
334
  */
@@ -321,4 +396,60 @@ export declare class RoolChannel extends EventEmitter<ChannelEvents> {
321
396
  */
322
397
  private _handleObjectDeleted;
323
398
  }
399
+ /**
400
+ * A lightweight handle for a specific conversation within a channel.
401
+ *
402
+ * Scopes AI and mutation operations to a particular conversation's interaction
403
+ * history, while sharing the channel's single SSE connection and object state.
404
+ *
405
+ * Obtain via `channel.conversation('thread-id')`.
406
+ * Conversations are auto-created on first interaction.
407
+ */
408
+ export declare class ConversationHandle {
409
+ /** @internal */
410
+ private _channel;
411
+ private _conversationId;
412
+ /** @internal */
413
+ constructor(channel: RoolChannel, conversationId: string);
414
+ /** The conversation ID this handle is scoped to. */
415
+ get conversationId(): string;
416
+ /** Get interactions for this conversation. */
417
+ getInteractions(): Interaction[];
418
+ /** Get the system instruction for this conversation. */
419
+ getSystemInstruction(): string | undefined;
420
+ /** Set the system instruction for this conversation. Pass null to clear. */
421
+ setSystemInstruction(instruction: string | null): Promise<void>;
422
+ /** Rename this conversation. */
423
+ rename(name: string): Promise<void>;
424
+ /** Find objects using structured filters and/or natural language. */
425
+ findObjects(options: FindObjectsOptions): Promise<{
426
+ objects: RoolObject[];
427
+ message: string;
428
+ }>;
429
+ /** Create a new object. */
430
+ createObject(options: CreateObjectOptions): Promise<{
431
+ object: RoolObject;
432
+ message: string;
433
+ }>;
434
+ /** Update an existing object. */
435
+ updateObject(objectId: string, options: UpdateObjectOptions): Promise<{
436
+ object: RoolObject;
437
+ message: string;
438
+ }>;
439
+ /** Delete objects by IDs. */
440
+ deleteObjects(objectIds: string[]): Promise<void>;
441
+ /** Send a prompt to the AI agent, scoped to this conversation's history. */
442
+ prompt(text: string, options?: PromptOptions): Promise<{
443
+ message: string;
444
+ objects: RoolObject[];
445
+ }>;
446
+ /** Create a new collection schema. */
447
+ createCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
448
+ /** Alter an existing collection schema. */
449
+ alterCollection(name: string, fields: FieldDef[]): Promise<CollectionDef>;
450
+ /** Drop a collection schema. */
451
+ dropCollection(name: string): Promise<void>;
452
+ /** Set a space-level metadata value. */
453
+ setMetadata(key: string, value: unknown): void;
454
+ }
324
455
  //# sourceMappingURL=channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"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"}