@rool-dev/client 0.4.6 → 0.4.7

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/dist/graphql.js CHANGED
@@ -34,69 +34,77 @@ export class GraphQLClient {
34
34
  const response = await this.request(query, { id: spaceId });
35
35
  return JSON.parse(response.getSpace);
36
36
  }
37
- async createSpace(spaceId, name) {
37
+ // ===========================================================================
38
+ // Space Lifecycle Operations (called from RoolClient)
39
+ // These use a placeholder sessionId since client events aren't filtered
40
+ // ===========================================================================
41
+ async createSpace(spaceId, name, sessionId) {
38
42
  const mutation = `
39
- mutation CreateSpace($id: String!, $name: String!, $connectionId: String!) {
40
- createSpace(id: $id, name: $name, connectionId: $connectionId)
43
+ mutation CreateSpace($id: String!, $name: String!, $sessionId: String!) {
44
+ createSpace(id: $id, name: $name, sessionId: $sessionId)
41
45
  }
42
46
  `;
43
47
  await this.request(mutation, {
44
48
  id: spaceId,
45
49
  name,
46
- connectionId: this.config.getConnectionId(),
50
+ sessionId,
47
51
  });
48
52
  }
49
- async setSpace(spaceId, space) {
53
+ async deleteSpace(spaceId, sessionId) {
50
54
  const mutation = `
51
- mutation SetSpace($id: String!, $spaceData: String!, $connectionId: String!) {
52
- setSpace(id: $id, spaceData: $spaceData, connectionId: $connectionId)
55
+ mutation DeleteSpace($id: String!, $sessionId: String!) {
56
+ deleteSpace(id: $id, sessionId: $sessionId)
53
57
  }
54
58
  `;
55
59
  await this.request(mutation, {
56
60
  id: spaceId,
57
- spaceData: JSON.stringify(space),
58
- connectionId: this.config.getConnectionId(),
61
+ sessionId,
59
62
  });
60
63
  }
61
- async deleteSpace(spaceId) {
64
+ async renameSpace(spaceId, name, sessionId) {
62
65
  const mutation = `
63
- mutation DeleteSpace($id: String!, $connectionId: String!) {
64
- deleteSpace(id: $id, connectionId: $connectionId)
66
+ mutation RenameSpace($id: String!, $name: String!, $sessionId: String!) {
67
+ renameSpace(id: $id, name: $name, sessionId: $sessionId)
65
68
  }
66
69
  `;
67
70
  await this.request(mutation, {
68
71
  id: spaceId,
69
- connectionId: this.config.getConnectionId(),
72
+ name,
73
+ sessionId,
70
74
  });
71
75
  }
72
- async renameSpace(spaceId, name) {
76
+ // ===========================================================================
77
+ // Space Content Operations (called from RoolSpace)
78
+ // These require sessionId for echo suppression
79
+ // ===========================================================================
80
+ async setSpace(spaceId, space, sessionId) {
73
81
  const mutation = `
74
- mutation RenameSpace($id: String!, $name: String!, $connectionId: String!) {
75
- renameSpace(id: $id, name: $name, connectionId: $connectionId)
82
+ mutation SetSpace($id: String!, $spaceData: String!, $sessionId: String!) {
83
+ setSpace(id: $id, spaceData: $spaceData, sessionId: $sessionId)
76
84
  }
77
85
  `;
78
86
  await this.request(mutation, {
79
87
  id: spaceId,
80
- name,
81
- connectionId: this.config.getConnectionId(),
88
+ spaceData: JSON.stringify(space),
89
+ sessionId,
82
90
  });
83
91
  }
84
- async setSpaceMeta(spaceId, meta) {
92
+ async setSpaceMeta(spaceId, meta, sessionId) {
85
93
  const mutation = `
86
- mutation SetSpaceMeta($id: String!, $meta: String!, $connectionId: String!) {
87
- setSpaceMeta(id: $id, meta: $meta, connectionId: $connectionId)
94
+ mutation SetSpaceMeta($id: String!, $meta: String!, $sessionId: String!) {
95
+ setSpaceMeta(id: $id, meta: $meta, sessionId: $sessionId)
88
96
  }
89
97
  `;
90
98
  await this.request(mutation, {
91
99
  id: spaceId,
92
100
  meta: JSON.stringify(meta),
93
- connectionId: this.config.getConnectionId(),
101
+ sessionId,
94
102
  });
95
103
  }
96
- async link(spaceId, source, target, type) {
104
+ async link(spaceId, source, target, type, sessionId) {
97
105
  const mutation = `
98
- mutation Link($spaceId: String!, $source: String!, $target: String!, $type: String!, $connectionId: String!) {
99
- link(spaceId: $spaceId, source: $source, target: $target, type: $type, connectionId: $connectionId)
106
+ mutation Link($spaceId: String!, $source: String!, $target: String!, $type: String!, $sessionId: String!) {
107
+ link(spaceId: $spaceId, source: $source, target: $target, type: $type, sessionId: $sessionId)
100
108
  }
101
109
  `;
102
110
  await this.request(mutation, {
@@ -104,52 +112,52 @@ export class GraphQLClient {
104
112
  source,
105
113
  target,
106
114
  type,
107
- connectionId: this.config.getConnectionId(),
115
+ sessionId,
108
116
  });
109
117
  }
110
- async unlink(spaceId, source, target) {
118
+ async unlink(spaceId, source, target, sessionId) {
111
119
  const mutation = `
112
- mutation Unlink($spaceId: String!, $source: String!, $target: String!, $connectionId: String!) {
113
- unlink(spaceId: $spaceId, source: $source, target: $target, connectionId: $connectionId)
120
+ mutation Unlink($spaceId: String!, $source: String!, $target: String!, $sessionId: String!) {
121
+ unlink(spaceId: $spaceId, source: $source, target: $target, sessionId: $sessionId)
114
122
  }
115
123
  `;
116
124
  await this.request(mutation, {
117
125
  spaceId,
118
126
  source,
119
127
  target,
120
- connectionId: this.config.getConnectionId(),
128
+ sessionId,
121
129
  });
122
130
  }
123
- async deleteObjects(spaceId, ids) {
131
+ async deleteObjects(spaceId, ids, sessionId) {
124
132
  const mutation = `
125
- mutation DeleteObjects($spaceId: String!, $ids: [String!]!, $connectionId: String!) {
126
- deleteObjects(spaceId: $spaceId, ids: $ids, connectionId: $connectionId)
133
+ mutation DeleteObjects($spaceId: String!, $ids: [String!]!, $sessionId: String!) {
134
+ deleteObjects(spaceId: $spaceId, ids: $ids, sessionId: $sessionId)
127
135
  }
128
136
  `;
129
137
  await this.request(mutation, {
130
138
  spaceId,
131
139
  ids,
132
- connectionId: this.config.getConnectionId(),
140
+ sessionId,
133
141
  });
134
142
  }
135
- async createObject(spaceId, data, prompt) {
143
+ async createObject(spaceId, data, sessionId, prompt) {
136
144
  const mutation = `
137
- mutation CreateObject($spaceId: String!, $data: String!, $prompt: String, $connectionId: String!) {
138
- createObject(spaceId: $spaceId, data: $data, prompt: $prompt, connectionId: $connectionId)
145
+ mutation CreateObject($spaceId: String!, $data: String!, $prompt: String, $sessionId: String!) {
146
+ createObject(spaceId: $spaceId, data: $data, prompt: $prompt, sessionId: $sessionId)
139
147
  }
140
148
  `;
141
149
  const result = await this.request(mutation, {
142
150
  spaceId,
143
151
  data: JSON.stringify(data),
144
152
  prompt,
145
- connectionId: this.config.getConnectionId(),
153
+ sessionId,
146
154
  });
147
155
  return result.createObject;
148
156
  }
149
- async updateObject(spaceId, id, data, prompt) {
157
+ async updateObject(spaceId, id, sessionId, data, prompt) {
150
158
  const mutation = `
151
- mutation UpdateObject($spaceId: String!, $id: String!, $data: String, $prompt: String, $connectionId: String!) {
152
- updateObject(spaceId: $spaceId, id: $id, data: $data, prompt: $prompt, connectionId: $connectionId)
159
+ mutation UpdateObject($spaceId: String!, $id: String!, $data: String, $prompt: String, $sessionId: String!) {
160
+ updateObject(spaceId: $spaceId, id: $id, data: $data, prompt: $prompt, sessionId: $sessionId)
153
161
  }
154
162
  `;
155
163
  const result = await this.request(mutation, {
@@ -157,14 +165,14 @@ export class GraphQLClient {
157
165
  id,
158
166
  data: data ? JSON.stringify(data) : undefined,
159
167
  prompt,
160
- connectionId: this.config.getConnectionId(),
168
+ sessionId,
161
169
  });
162
170
  return result.updateObject;
163
171
  }
164
- async findObjects(spaceId, options) {
172
+ async findObjects(spaceId, options, sessionId) {
165
173
  const query = `
166
- query FindObjects($spaceId: String!, $where: String, $prompt: String, $limit: Int, $objectIds: [String!], $connectionId: String!) {
167
- findObjects(spaceId: $spaceId, where: $where, prompt: $prompt, limit: $limit, objectIds: $objectIds, connectionId: $connectionId) {
174
+ query FindObjects($spaceId: String!, $where: String, $prompt: String, $limit: Int, $objectIds: [String!], $sessionId: String!) {
175
+ findObjects(spaceId: $spaceId, where: $where, prompt: $prompt, limit: $limit, objectIds: $objectIds, sessionId: $sessionId) {
168
176
  objects
169
177
  message
170
178
  }
@@ -176,7 +184,7 @@ export class GraphQLClient {
176
184
  prompt: options.prompt,
177
185
  limit: options.limit,
178
186
  objectIds: options.objectIds ?? [],
179
- connectionId: this.config.getConnectionId(),
187
+ sessionId,
180
188
  });
181
189
  return {
182
190
  objects: JSON.parse(result.findObjects.objects),
@@ -186,10 +194,10 @@ export class GraphQLClient {
186
194
  // ===========================================================================
187
195
  // AI Operations
188
196
  // ===========================================================================
189
- async prompt(spaceId, prompt, options = {}) {
197
+ async prompt(spaceId, prompt, sessionId, options = {}) {
190
198
  const mutation = `
191
- mutation Prompt($spaceId: String!, $prompt: String!, $objectIds: [String!], $responseSchema: JSON, $connectionId: String!) {
192
- prompt(spaceId: $spaceId, prompt: $prompt, objectIds: $objectIds, responseSchema: $responseSchema, connectionId: $connectionId)
199
+ mutation Prompt($spaceId: String!, $prompt: String!, $objectIds: [String!], $responseSchema: JSON, $sessionId: String!) {
200
+ prompt(spaceId: $spaceId, prompt: $prompt, objectIds: $objectIds, responseSchema: $responseSchema, sessionId: $sessionId)
193
201
  }
194
202
  `;
195
203
  const response = await this.request(mutation, {
@@ -197,7 +205,7 @@ export class GraphQLClient {
197
205
  prompt,
198
206
  objectIds: options.objectIds ?? [],
199
207
  responseSchema: options.responseSchema,
200
- connectionId: this.config.getConnectionId(),
208
+ sessionId,
201
209
  });
202
210
  return response.prompt ?? null;
203
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { RoolClient } from './client.js';
2
2
  export { RoolSpace, generateEntityId } from './space.js';
3
3
  export { EventEmitter } from './event-emitter.js';
4
- export type { RoolObject, RoolObjectEntry, RoolSpaceData, RoolSpaceInfo, RoolEvent, RoolEventSource, RoolEventType, JSONPatchOp, RoolUser, RoolUserRole, UserResult, MediaInfo, PromptOptions, FindObjectsOptions, ConnectionState, SpaceEvents, ObjectCreatedEvent, ObjectUpdatedEvent, ObjectDeletedEvent, LinkedEvent, UnlinkedEvent, MetadataUpdatedEvent, SpaceResetEvent, RoolClientConfig, RoolClientEvents, AuthTokens, AuthProvider, } from './types.js';
4
+ export type { RoolObject, RoolObjectEntry, RoolSpaceData, RoolSpaceInfo, JSONPatchOp, ClientEvent, ClientEventType, SpaceEvent, SpaceEventType, RoolEventSource, RoolUser, RoolUserRole, UserResult, MediaInfo, PromptOptions, FindObjectsOptions, ConnectionState, SpaceEvents, ObjectCreatedEvent, ObjectUpdatedEvent, ObjectDeletedEvent, LinkedEvent, UnlinkedEvent, MetadataUpdatedEvent, SpaceResetEvent, RoolClientConfig, RoolClientEvents, AuthTokens, AuthProvider, } from './types.js';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,YAAY,EAEV,UAAU,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,SAAS,EACT,eAAe,EACf,aAAa,EACb,WAAW,EAGX,QAAQ,EACR,YAAY,EACZ,UAAU,EAGV,SAAS,EAGT,aAAa,EACb,kBAAkB,EAGlB,eAAe,EAGf,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,eAAe,EAGf,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,YAAY,EAEV,UAAU,EACV,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EAGX,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,eAAe,EAGf,QAAQ,EACR,YAAY,EACZ,UAAU,EAGV,SAAS,EAGT,aAAa,EACb,kBAAkB,EAGlB,eAAe,EAGf,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,eAAe,EAGf,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC"}
package/dist/space.d.ts CHANGED
@@ -1,15 +1,20 @@
1
1
  import { EventEmitter } from './event-emitter.js';
2
2
  import type { GraphQLClient } from './graphql.js';
3
3
  import type { MediaClient } from './media.js';
4
- import type { RoolSpaceData, RoolObject, JSONPatchOp, SpaceEvents, RoolUserRole, RoolUser, PromptOptions, FindObjectsOptions, MediaInfo } from './types.js';
4
+ import type { AuthManager } from './auth.js';
5
+ import type { RoolSpaceData, RoolObject, SpaceEvents, RoolUserRole, RoolUser, PromptOptions, FindObjectsOptions, MediaInfo } from './types.js';
5
6
  export declare function generateEntityId(): string;
6
- interface SpaceConfig {
7
+ export interface SpaceConfig {
7
8
  id: string;
8
9
  name: string;
9
10
  role: RoolUserRole;
10
11
  initialData: RoolSpaceData;
12
+ /** Optional session ID for AI context continuity. If not provided, a new session is created. */
13
+ sessionId?: string;
11
14
  graphqlClient: GraphQLClient;
12
15
  mediaClient: MediaClient;
16
+ graphqlUrl: string;
17
+ authManager: AuthManager;
13
18
  onClose: (spaceId: string) => void;
14
19
  }
15
20
  /**
@@ -20,22 +25,29 @@ interface SpaceConfig {
20
25
  * - Built-in undo/redo with checkpoints
21
26
  * - Metadata management
22
27
  * - Event emission for state changes
23
- * - Real-time updates (automatic when opened via RoolClient)
28
+ * - Real-time updates via space-specific subscription
24
29
  */
25
30
  export declare class RoolSpace extends EventEmitter<SpaceEvents> {
26
31
  private _id;
27
32
  private _name;
28
33
  private _role;
34
+ private _sessionId;
29
35
  private _data;
30
36
  private graphqlClient;
31
37
  private mediaClient;
32
- private onClose;
38
+ private subscriptionManager;
39
+ private onCloseCallback;
33
40
  private undoStack;
34
41
  private redoStack;
35
42
  constructor(config: SpaceConfig);
36
43
  get id(): string;
37
44
  get name(): string;
38
45
  get role(): RoolUserRole;
46
+ /**
47
+ * Get the connection ID for this space instance.
48
+ * Used for AI context tracking and echo suppression.
49
+ */
50
+ get sessionId(): string;
39
51
  get isReadOnly(): boolean;
40
52
  /**
41
53
  * Rename this space.
@@ -43,7 +55,7 @@ export declare class RoolSpace extends EventEmitter<SpaceEvents> {
43
55
  rename(newName: string): Promise<void>;
44
56
  /**
45
57
  * Close this space and clean up resources.
46
- * Unregisters from real-time updates.
58
+ * Stops real-time subscription and unregisters from client.
47
59
  */
48
60
  close(): void;
49
61
  /**
@@ -233,26 +245,20 @@ export declare class RoolSpace extends EventEmitter<SpaceEvents> {
233
245
  */
234
246
  getData(): RoolSpaceData;
235
247
  /**
236
- * Handle a patch event from another client.
248
+ * Handle a space event from the subscription.
237
249
  * @internal
238
250
  */
239
- handleRemotePatch(patch: JSONPatchOp[], source?: 'user' | 'agent'): void;
251
+ private handleSpaceEvent;
240
252
  /**
241
- * Parse JSON patch operations and emit semantic events.
242
- * @internal
243
- */
244
- private emitSemanticEventsFromPatch;
245
- /**
246
- * Handle a full reload from server.
253
+ * Handle a patch event from another client.
247
254
  * @internal
248
255
  */
249
- handleRemoteChange(newData: RoolSpaceData): void;
256
+ private handleRemotePatch;
250
257
  /**
251
- * Update the name from external source.
258
+ * Parse JSON patch operations and emit semantic events.
252
259
  * @internal
253
260
  */
254
- handleRemoteRename(newName: string): void;
261
+ private emitSemanticEventsFromPatch;
255
262
  private resyncFromServer;
256
263
  }
257
- export {};
258
264
  //# sourceMappingURL=space.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"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"}
package/dist/space.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { immutableJSONPatch } from 'immutable-json-patch';
2
2
  import { EventEmitter } from './event-emitter.js';
3
+ import { SpaceSubscriptionManager } from './subscription.js';
3
4
  const MAX_UNDO_STACK_SIZE = 50;
4
5
  // 6-character alphanumeric ID (62^6 = 56.8 billion possible values)
5
6
  const ID_CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
@@ -18,16 +19,18 @@ export function generateEntityId() {
18
19
  * - Built-in undo/redo with checkpoints
19
20
  * - Metadata management
20
21
  * - Event emission for state changes
21
- * - Real-time updates (automatic when opened via RoolClient)
22
+ * - Real-time updates via space-specific subscription
22
23
  */
23
24
  export class RoolSpace extends EventEmitter {
24
25
  _id;
25
26
  _name;
26
27
  _role;
28
+ _sessionId;
27
29
  _data;
28
30
  graphqlClient;
29
31
  mediaClient;
30
- onClose;
32
+ subscriptionManager;
33
+ onCloseCallback;
31
34
  // Undo/redo stacks
32
35
  undoStack = [];
33
36
  redoStack = [];
@@ -36,10 +39,27 @@ export class RoolSpace extends EventEmitter {
36
39
  this._id = config.id;
37
40
  this._name = config.name;
38
41
  this._role = config.role;
42
+ this._sessionId = config.sessionId ?? generateEntityId();
39
43
  this._data = config.initialData;
40
44
  this.graphqlClient = config.graphqlClient;
41
45
  this.mediaClient = config.mediaClient;
42
- this.onClose = config.onClose;
46
+ this.onCloseCallback = config.onClose;
47
+ // Create space-level subscription
48
+ this.subscriptionManager = new SpaceSubscriptionManager({
49
+ graphqlUrl: config.graphqlUrl,
50
+ authManager: config.authManager,
51
+ spaceId: this._id,
52
+ sessionId: this._sessionId,
53
+ onEvent: (event) => this.handleSpaceEvent(event),
54
+ onConnectionStateChanged: () => {
55
+ // Space-level connection state (could emit events if needed)
56
+ },
57
+ onError: (error) => {
58
+ console.error(`[RoolSpace ${this._id}] Subscription error:`, error);
59
+ },
60
+ });
61
+ // Start subscription
62
+ void this.subscriptionManager.subscribe();
43
63
  }
44
64
  // ===========================================================================
45
65
  // Properties
@@ -53,6 +73,13 @@ export class RoolSpace extends EventEmitter {
53
73
  get role() {
54
74
  return this._role;
55
75
  }
76
+ /**
77
+ * Get the connection ID for this space instance.
78
+ * Used for AI context tracking and echo suppression.
79
+ */
80
+ get sessionId() {
81
+ return this._sessionId;
82
+ }
56
83
  get isReadOnly() {
57
84
  return this._role === 'viewer';
58
85
  }
@@ -66,7 +93,7 @@ export class RoolSpace extends EventEmitter {
66
93
  const oldName = this._name;
67
94
  this._name = newName;
68
95
  try {
69
- await this.graphqlClient.renameSpace(this._id, newName);
96
+ await this.graphqlClient.renameSpace(this._id, newName, this._sessionId);
70
97
  }
71
98
  catch (error) {
72
99
  this._name = oldName;
@@ -75,10 +102,11 @@ export class RoolSpace extends EventEmitter {
75
102
  }
76
103
  /**
77
104
  * Close this space and clean up resources.
78
- * Unregisters from real-time updates.
105
+ * Stops real-time subscription and unregisters from client.
79
106
  */
80
107
  close() {
81
- this.onClose(this._id);
108
+ this.subscriptionManager.destroy();
109
+ this.onCloseCallback(this._id);
82
110
  this.undoStack = [];
83
111
  this.redoStack = [];
84
112
  this.removeAllListeners();
@@ -135,7 +163,7 @@ export class RoolSpace extends EventEmitter {
135
163
  this._data = previousEntry.data;
136
164
  // Sync to server - resync on failure
137
165
  try {
138
- await this.graphqlClient.setSpace(this._id, this._data);
166
+ await this.graphqlClient.setSpace(this._id, this._data, this._sessionId);
139
167
  this.emit('reset', { source: 'local_user' });
140
168
  }
141
169
  catch (error) {
@@ -163,7 +191,7 @@ export class RoolSpace extends EventEmitter {
163
191
  this._data = nextEntry.data;
164
192
  // Sync to server - resync on failure
165
193
  try {
166
- await this.graphqlClient.setSpace(this._id, this._data);
194
+ await this.graphqlClient.setSpace(this._id, this._data, this._sessionId);
167
195
  this.emit('reset', { source: 'local_user' });
168
196
  }
169
197
  catch (error) {
@@ -253,7 +281,7 @@ export class RoolSpace extends EventEmitter {
253
281
  };
254
282
  }
255
283
  // Otherwise, use server (with AI)
256
- return this.graphqlClient.findObjects(this._id, options);
284
+ return this.graphqlClient.findObjects(this._id, options, this._sessionId);
257
285
  }
258
286
  /**
259
287
  * Get all object IDs.
@@ -290,7 +318,7 @@ export class RoolSpace extends EventEmitter {
290
318
  this.emit('objectCreated', { objectId, object: entry.data, source: 'local_user' });
291
319
  // Await server call (may trigger AI processing that updates local state via patches)
292
320
  try {
293
- const message = await this.graphqlClient.createObject(this.id, dataWithId, prompt);
321
+ const message = await this.graphqlClient.createObject(this.id, dataWithId, this._sessionId, prompt);
294
322
  // Return current state (may have been updated by AI patches)
295
323
  return { object: this._data.objects[objectId].data, message };
296
324
  }
@@ -327,7 +355,7 @@ export class RoolSpace extends EventEmitter {
327
355
  }
328
356
  // Await server call (may trigger AI processing that updates local state via patches)
329
357
  try {
330
- const message = await this.graphqlClient.updateObject(this.id, objectId, data, options.prompt);
358
+ const message = await this.graphqlClient.updateObject(this.id, objectId, this._sessionId, data, options.prompt);
331
359
  // Return current state (may have been updated by AI patches)
332
360
  return { object: this._data.objects[objectId].data, message };
333
361
  }
@@ -375,7 +403,7 @@ export class RoolSpace extends EventEmitter {
375
403
  }
376
404
  // Await server call
377
405
  try {
378
- await this.graphqlClient.deleteObjects(this.id, objectIds);
406
+ await this.graphqlClient.deleteObjects(this.id, objectIds, this._sessionId);
379
407
  }
380
408
  catch (error) {
381
409
  console.error('[Space] Failed to delete objects:', error);
@@ -404,7 +432,7 @@ export class RoolSpace extends EventEmitter {
404
432
  this.emit('linked', { sourceId, targetId, linkType, linkData, source: 'local_user' });
405
433
  // Await server call
406
434
  try {
407
- await this.graphqlClient.link(this.id, sourceId, targetId, linkType);
435
+ await this.graphqlClient.link(this.id, sourceId, targetId, linkType, this._sessionId);
408
436
  }
409
437
  catch (error) {
410
438
  console.error('[Space] Failed to create link:', error);
@@ -446,7 +474,7 @@ export class RoolSpace extends EventEmitter {
446
474
  }
447
475
  // Await server call
448
476
  try {
449
- await this.graphqlClient.unlink(this.id, sourceId, targetId);
477
+ await this.graphqlClient.unlink(this.id, sourceId, targetId, this._sessionId);
450
478
  }
451
479
  catch (error) {
452
480
  console.error('[Space] Failed to remove link:', error);
@@ -524,7 +552,7 @@ export class RoolSpace extends EventEmitter {
524
552
  this._data.meta[key] = value;
525
553
  this.emit('metadataUpdated', { metadata: this._data.meta, source: 'local_user' });
526
554
  // Fire-and-forget server call - errors trigger resync
527
- this.graphqlClient.setSpaceMeta(this.id, this._data.meta)
555
+ this.graphqlClient.setSpaceMeta(this.id, this._data.meta, this._sessionId)
528
556
  .catch((error) => {
529
557
  console.error('[Space] Failed to set meta:', error);
530
558
  this.resyncFromServer(error instanceof Error ? error : new Error(String(error)));
@@ -549,7 +577,7 @@ export class RoolSpace extends EventEmitter {
549
577
  * Send a prompt to the AI agent for space manipulation.
550
578
  */
551
579
  async prompt(prompt, options) {
552
- return this.graphqlClient.prompt(this._id, prompt, options);
580
+ return this.graphqlClient.prompt(this._id, prompt, this._sessionId, options);
553
581
  }
554
582
  // ===========================================================================
555
583
  // Collaboration
@@ -611,13 +639,33 @@ export class RoolSpace extends EventEmitter {
611
639
  return this._data;
612
640
  }
613
641
  // ===========================================================================
614
- // Event Handlers (called by RoolClient for routing)
642
+ // Event Handlers (internal - handles space subscription events)
615
643
  // ===========================================================================
644
+ /**
645
+ * Handle a space event from the subscription.
646
+ * @internal
647
+ */
648
+ handleSpaceEvent(event) {
649
+ switch (event.type) {
650
+ case 'space_patched':
651
+ if (event.patch) {
652
+ this.handleRemotePatch(event.patch, event.source);
653
+ }
654
+ break;
655
+ case 'space_changed':
656
+ // Full reload needed
657
+ void this.graphqlClient.getSpace(this._id).then((data) => {
658
+ this._data = data;
659
+ this.emit('reset', { source: 'remote_user' });
660
+ });
661
+ break;
662
+ }
663
+ }
616
664
  /**
617
665
  * Handle a patch event from another client.
618
666
  * @internal
619
667
  */
620
- handleRemotePatch(patch, source = 'user') {
668
+ handleRemotePatch(patch, source) {
621
669
  try {
622
670
  this._data = immutableJSONPatch(this._data, patch);
623
671
  }
@@ -694,21 +742,6 @@ export class RoolSpace extends EventEmitter {
694
742
  }
695
743
  }
696
744
  }
697
- /**
698
- * Handle a full reload from server.
699
- * @internal
700
- */
701
- handleRemoteChange(newData) {
702
- this._data = newData;
703
- this.emit('reset', { source: 'remote_user' });
704
- }
705
- /**
706
- * Update the name from external source.
707
- * @internal
708
- */
709
- handleRemoteRename(newName) {
710
- this._name = newName;
711
- }
712
745
  // ===========================================================================
713
746
  // Private Methods
714
747
  // ===========================================================================