@rool-dev/client 0.4.10 → 0.5.0
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 +103 -31
- package/dist/client.d.ts +6 -4
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +23 -6
- package/dist/client.js.map +1 -1
- package/dist/graphql.d.ts +12 -12
- package/dist/graphql.d.ts.map +1 -1
- package/dist/graphql.js +58 -50
- 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 +28 -5
- package/dist/space.d.ts.map +1 -1
- package/dist/space.js +78 -16
- package/dist/space.js.map +1 -1
- package/dist/subscription.d.ts +2 -1
- package/dist/subscription.d.ts.map +1 -1
- package/dist/subscription.js +4 -3
- package/dist/subscription.js.map +1 -1
- package/dist/types.d.ts +30 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/graphql.js
CHANGED
|
@@ -45,75 +45,76 @@ export class GraphQLClient {
|
|
|
45
45
|
}
|
|
46
46
|
// ===========================================================================
|
|
47
47
|
// Space Lifecycle Operations (called from RoolClient)
|
|
48
|
-
// These use a placeholder
|
|
48
|
+
// These use a placeholder conversationId since client events aren't filtered
|
|
49
49
|
// ===========================================================================
|
|
50
|
-
async createSpace(spaceId, name,
|
|
50
|
+
async createSpace(spaceId, name, conversationId) {
|
|
51
51
|
const mutation = `
|
|
52
|
-
mutation CreateSpace($id: String!, $name: String!, $
|
|
53
|
-
createSpace(id: $id, name: $name,
|
|
52
|
+
mutation CreateSpace($id: String!, $name: String!, $conversationId: String!) {
|
|
53
|
+
createSpace(id: $id, name: $name, conversationId: $conversationId)
|
|
54
54
|
}
|
|
55
55
|
`;
|
|
56
56
|
await this.request(mutation, {
|
|
57
57
|
id: spaceId,
|
|
58
58
|
name,
|
|
59
|
-
|
|
59
|
+
conversationId,
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
-
async deleteSpace(spaceId,
|
|
62
|
+
async deleteSpace(spaceId, conversationId) {
|
|
63
63
|
const mutation = `
|
|
64
|
-
mutation DeleteSpace($id: String!, $
|
|
65
|
-
deleteSpace(id: $id,
|
|
64
|
+
mutation DeleteSpace($id: String!, $conversationId: String!) {
|
|
65
|
+
deleteSpace(id: $id, conversationId: $conversationId)
|
|
66
66
|
}
|
|
67
67
|
`;
|
|
68
68
|
await this.request(mutation, {
|
|
69
69
|
id: spaceId,
|
|
70
|
-
|
|
70
|
+
conversationId,
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
-
async renameSpace(spaceId, name,
|
|
73
|
+
async renameSpace(spaceId, name, conversationId) {
|
|
74
74
|
const mutation = `
|
|
75
|
-
mutation RenameSpace($id: String!, $name: String!, $
|
|
76
|
-
renameSpace(id: $id, name: $name,
|
|
75
|
+
mutation RenameSpace($id: String!, $name: String!, $conversationId: String!) {
|
|
76
|
+
renameSpace(id: $id, name: $name, conversationId: $conversationId)
|
|
77
77
|
}
|
|
78
78
|
`;
|
|
79
79
|
await this.request(mutation, {
|
|
80
80
|
id: spaceId,
|
|
81
81
|
name,
|
|
82
|
-
|
|
82
|
+
conversationId,
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
85
|
// ===========================================================================
|
|
86
86
|
// Space Content Operations (called from RoolSpace)
|
|
87
|
-
// These require
|
|
87
|
+
// These require conversationId for AI context and echoId for echo suppression
|
|
88
88
|
// ===========================================================================
|
|
89
|
-
async setSpace(spaceId, space,
|
|
89
|
+
async setSpace(spaceId, space, conversationId, echoId) {
|
|
90
90
|
const mutation = `
|
|
91
|
-
mutation SetSpace($id: String!, $spaceData: String!, $
|
|
92
|
-
setSpace(id: $id, spaceData: $spaceData,
|
|
91
|
+
mutation SetSpace($id: String!, $spaceData: String!, $conversationId: String!, $echoId: String!) {
|
|
92
|
+
setSpace(id: $id, spaceData: $spaceData, conversationId: $conversationId, echoId: $echoId)
|
|
93
93
|
}
|
|
94
94
|
`;
|
|
95
95
|
await this.request(mutation, {
|
|
96
96
|
id: spaceId,
|
|
97
97
|
spaceData: JSON.stringify(space),
|
|
98
|
-
|
|
98
|
+
conversationId,
|
|
99
|
+
echoId,
|
|
99
100
|
});
|
|
100
101
|
}
|
|
101
|
-
async setSpaceMeta(spaceId, meta,
|
|
102
|
+
async setSpaceMeta(spaceId, meta, conversationId) {
|
|
102
103
|
const mutation = `
|
|
103
|
-
mutation SetSpaceMeta($id: String!, $meta: String!, $
|
|
104
|
-
setSpaceMeta(id: $id, meta: $meta,
|
|
104
|
+
mutation SetSpaceMeta($id: String!, $meta: String!, $conversationId: String!) {
|
|
105
|
+
setSpaceMeta(id: $id, meta: $meta, conversationId: $conversationId)
|
|
105
106
|
}
|
|
106
107
|
`;
|
|
107
108
|
await this.request(mutation, {
|
|
108
109
|
id: spaceId,
|
|
109
110
|
meta: JSON.stringify(meta),
|
|
110
|
-
|
|
111
|
+
conversationId,
|
|
111
112
|
});
|
|
112
113
|
}
|
|
113
|
-
async link(spaceId, source, relation, target,
|
|
114
|
+
async link(spaceId, source, relation, target, conversationId, echoId) {
|
|
114
115
|
const mutation = `
|
|
115
|
-
mutation Link($spaceId: String!, $source: String!, $relation: String!, $target: String!, $
|
|
116
|
-
link(spaceId: $spaceId, source: $source, relation: $relation, target: $target,
|
|
116
|
+
mutation Link($spaceId: String!, $source: String!, $relation: String!, $target: String!, $conversationId: String!, $echoId: String!) {
|
|
117
|
+
link(spaceId: $spaceId, source: $source, relation: $relation, target: $target, conversationId: $conversationId, echoId: $echoId)
|
|
117
118
|
}
|
|
118
119
|
`;
|
|
119
120
|
await this.request(mutation, {
|
|
@@ -121,13 +122,14 @@ export class GraphQLClient {
|
|
|
121
122
|
source,
|
|
122
123
|
relation,
|
|
123
124
|
target,
|
|
124
|
-
|
|
125
|
+
conversationId,
|
|
126
|
+
echoId,
|
|
125
127
|
});
|
|
126
128
|
}
|
|
127
|
-
async unlink(spaceId, source, relation, target,
|
|
129
|
+
async unlink(spaceId, source, relation, target, conversationId, echoId) {
|
|
128
130
|
const mutation = `
|
|
129
|
-
mutation Unlink($spaceId: String!, $source: String!, $relation: String, $target: String, $
|
|
130
|
-
unlink(spaceId: $spaceId, source: $source, relation: $relation, target: $target,
|
|
131
|
+
mutation Unlink($spaceId: String!, $source: String!, $relation: String, $target: String, $conversationId: String!, $echoId: String!) {
|
|
132
|
+
unlink(spaceId: $spaceId, source: $source, relation: $relation, target: $target, conversationId: $conversationId, echoId: $echoId)
|
|
131
133
|
}
|
|
132
134
|
`;
|
|
133
135
|
await this.request(mutation, {
|
|
@@ -135,39 +137,42 @@ export class GraphQLClient {
|
|
|
135
137
|
source,
|
|
136
138
|
relation: relation ?? null,
|
|
137
139
|
target: target ?? null,
|
|
138
|
-
|
|
140
|
+
conversationId,
|
|
141
|
+
echoId,
|
|
139
142
|
});
|
|
140
143
|
}
|
|
141
|
-
async deleteObjects(spaceId, ids,
|
|
144
|
+
async deleteObjects(spaceId, ids, conversationId, echoId) {
|
|
142
145
|
const mutation = `
|
|
143
|
-
mutation DeleteObjects($spaceId: String!, $ids: [String!]!, $
|
|
144
|
-
deleteObjects(spaceId: $spaceId, ids: $ids,
|
|
146
|
+
mutation DeleteObjects($spaceId: String!, $ids: [String!]!, $conversationId: String!, $echoId: String!) {
|
|
147
|
+
deleteObjects(spaceId: $spaceId, ids: $ids, conversationId: $conversationId, echoId: $echoId)
|
|
145
148
|
}
|
|
146
149
|
`;
|
|
147
150
|
await this.request(mutation, {
|
|
148
151
|
spaceId,
|
|
149
152
|
ids,
|
|
150
|
-
|
|
153
|
+
conversationId,
|
|
154
|
+
echoId,
|
|
151
155
|
});
|
|
152
156
|
}
|
|
153
|
-
async createObject(spaceId, data,
|
|
157
|
+
async createObject(spaceId, data, conversationId, echoId, prompt) {
|
|
154
158
|
const mutation = `
|
|
155
|
-
mutation CreateObject($spaceId: String!, $data: String!, $prompt: String, $
|
|
156
|
-
createObject(spaceId: $spaceId, data: $data, prompt: $prompt,
|
|
159
|
+
mutation CreateObject($spaceId: String!, $data: String!, $prompt: String, $conversationId: String!, $echoId: String!) {
|
|
160
|
+
createObject(spaceId: $spaceId, data: $data, prompt: $prompt, conversationId: $conversationId, echoId: $echoId)
|
|
157
161
|
}
|
|
158
162
|
`;
|
|
159
163
|
const result = await this.request(mutation, {
|
|
160
164
|
spaceId,
|
|
161
165
|
data: JSON.stringify(data),
|
|
162
166
|
prompt,
|
|
163
|
-
|
|
167
|
+
conversationId,
|
|
168
|
+
echoId,
|
|
164
169
|
});
|
|
165
170
|
return result.createObject;
|
|
166
171
|
}
|
|
167
|
-
async updateObject(spaceId, id,
|
|
172
|
+
async updateObject(spaceId, id, conversationId, echoId, data, prompt) {
|
|
168
173
|
const mutation = `
|
|
169
|
-
mutation UpdateObject($spaceId: String!, $id: String!, $data: String, $prompt: String, $
|
|
170
|
-
updateObject(spaceId: $spaceId, id: $id, data: $data, prompt: $prompt,
|
|
174
|
+
mutation UpdateObject($spaceId: String!, $id: String!, $data: String, $prompt: String, $conversationId: String!, $echoId: String!) {
|
|
175
|
+
updateObject(spaceId: $spaceId, id: $id, data: $data, prompt: $prompt, conversationId: $conversationId, echoId: $echoId)
|
|
171
176
|
}
|
|
172
177
|
`;
|
|
173
178
|
const result = await this.request(mutation, {
|
|
@@ -175,14 +180,15 @@ export class GraphQLClient {
|
|
|
175
180
|
id,
|
|
176
181
|
data: data ? JSON.stringify(data) : undefined,
|
|
177
182
|
prompt,
|
|
178
|
-
|
|
183
|
+
conversationId,
|
|
184
|
+
echoId,
|
|
179
185
|
});
|
|
180
186
|
return result.updateObject;
|
|
181
187
|
}
|
|
182
|
-
async findObjects(spaceId, options,
|
|
188
|
+
async findObjects(spaceId, options, conversationId, echoId) {
|
|
183
189
|
const query = `
|
|
184
|
-
query FindObjects($spaceId: String!, $where: String, $prompt: String, $limit: Int, $objectIds: [String!], $
|
|
185
|
-
findObjects(spaceId: $spaceId, where: $where, prompt: $prompt, limit: $limit, objectIds: $objectIds,
|
|
190
|
+
query FindObjects($spaceId: String!, $where: String, $prompt: String, $limit: Int, $objectIds: [String!], $conversationId: String!, $echoId: String!) {
|
|
191
|
+
findObjects(spaceId: $spaceId, where: $where, prompt: $prompt, limit: $limit, objectIds: $objectIds, conversationId: $conversationId, echoId: $echoId) {
|
|
186
192
|
objects
|
|
187
193
|
message
|
|
188
194
|
}
|
|
@@ -194,7 +200,8 @@ export class GraphQLClient {
|
|
|
194
200
|
prompt: options.prompt,
|
|
195
201
|
limit: options.limit,
|
|
196
202
|
objectIds: options.objectIds ?? [],
|
|
197
|
-
|
|
203
|
+
conversationId,
|
|
204
|
+
echoId,
|
|
198
205
|
});
|
|
199
206
|
return {
|
|
200
207
|
objects: JSON.parse(result.findObjects.objects),
|
|
@@ -204,10 +211,10 @@ export class GraphQLClient {
|
|
|
204
211
|
// ===========================================================================
|
|
205
212
|
// AI Operations
|
|
206
213
|
// ===========================================================================
|
|
207
|
-
async prompt(spaceId, prompt,
|
|
214
|
+
async prompt(spaceId, prompt, conversationId, echoId, options = {}) {
|
|
208
215
|
const mutation = `
|
|
209
|
-
mutation Prompt($spaceId: String!, $prompt: String!, $objectIds: [String!], $responseSchema: JSON, $
|
|
210
|
-
prompt(spaceId: $spaceId, prompt: $prompt, objectIds: $objectIds, responseSchema: $responseSchema,
|
|
216
|
+
mutation Prompt($spaceId: String!, $prompt: String!, $objectIds: [String!], $responseSchema: JSON, $conversationId: String!, $echoId: String!) {
|
|
217
|
+
prompt(spaceId: $spaceId, prompt: $prompt, objectIds: $objectIds, responseSchema: $responseSchema, conversationId: $conversationId, echoId: $echoId) {
|
|
211
218
|
message
|
|
212
219
|
modifiedObjectIds
|
|
213
220
|
}
|
|
@@ -218,7 +225,8 @@ export class GraphQLClient {
|
|
|
218
225
|
prompt,
|
|
219
226
|
objectIds: options.objectIds ?? [],
|
|
220
227
|
responseSchema: options.responseSchema,
|
|
221
|
-
|
|
228
|
+
conversationId,
|
|
229
|
+
echoId,
|
|
222
230
|
});
|
|
223
231
|
return response.prompt;
|
|
224
232
|
}
|
package/dist/graphql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphql.js","sourceRoot":"","sources":["../src/graphql.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,iBAAiB;AACjB,6DAA6D;AAC7D,gFAAgF;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAalC,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,0BAA0B;AAE9D,gEAAgE;AAChE,SAAS,WAAW;IAClB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC1D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAYD,MAAM,OAAO,aAAa;IAChB,MAAM,CAAsB;IAEpC,YAAY,MAA2B;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,KAAK,GAAG;;;;;;;;KAQb,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAkC,KAAK,CAAC,CAAC;QAC5E,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAC5B,MAAM,KAAK,GAAG;;;;KAIb,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAuB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAClF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,8EAA8E;IAC9E,sDAAsD;IACtD,
|
|
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, JSONPatchOp, ClientEvent, ClientEventType, SpaceEvent, SpaceEventType, RoolEventSource, SpaceMember, RoolUserRole, UserResult, CurrentUser, AuthUser, 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, SpaceMember, RoolUserRole, UserResult, CurrentUser, AuthUser, MediaInfo, PromptOptions, FindObjectsOptions, ConnectionState, SpaceEvents, ObjectCreatedEvent, ObjectUpdatedEvent, ObjectDeletedEvent, LinkedEvent, UnlinkedEvent, MetadataUpdatedEvent, ConversationUpdatedEvent, SpaceResetEvent, Conversation, ConversationMessage, RoolClientConfig, RoolClientEvents, AuthTokens, AuthProvider, } from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,WAAW,EAGX,WAAW,EACX,eAAe,EACf,UAAU,EACV,cAAc,EACd,eAAe,EAGf,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,QAAQ,EAGR,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,WAAW,EACX,YAAY,EACZ,UAAU,EACV,WAAW,EACX,QAAQ,EAGR,SAAS,EAGT,aAAa,EACb,kBAAkB,EAGlB,eAAe,EAGf,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EAGf,YAAY,EACZ,mBAAmB,EAGnB,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,EACV,YAAY,GACb,MAAM,YAAY,CAAC"}
|
package/dist/space.d.ts
CHANGED
|
@@ -2,15 +2,17 @@ import { EventEmitter } from './event-emitter.js';
|
|
|
2
2
|
import type { GraphQLClient } from './graphql.js';
|
|
3
3
|
import type { MediaClient } from './media.js';
|
|
4
4
|
import type { AuthManager } from './auth.js';
|
|
5
|
-
import type { RoolSpaceData, RoolObject, SpaceEvents, RoolUserRole, SpaceMember, PromptOptions, FindObjectsOptions, MediaInfo } from './types.js';
|
|
5
|
+
import type { RoolSpaceData, RoolObject, SpaceEvents, RoolUserRole, SpaceMember, PromptOptions, FindObjectsOptions, MediaInfo, Conversation, ConversationMessage } from './types.js';
|
|
6
6
|
export declare function generateEntityId(): string;
|
|
7
7
|
export interface SpaceConfig {
|
|
8
8
|
id: string;
|
|
9
9
|
name: string;
|
|
10
10
|
role: RoolUserRole;
|
|
11
11
|
initialData: RoolSpaceData;
|
|
12
|
-
/**
|
|
13
|
-
|
|
12
|
+
/** Current user's ID (for optimistic updates). May be undefined if not fetched yet. */
|
|
13
|
+
userId?: string;
|
|
14
|
+
/** Optional conversation ID for AI context continuity. If not provided, a new conversation is created. */
|
|
15
|
+
conversationId?: string;
|
|
14
16
|
graphqlClient: GraphQLClient;
|
|
15
17
|
mediaClient: MediaClient;
|
|
16
18
|
graphqlUrl: string;
|
|
@@ -31,7 +33,9 @@ export declare class RoolSpace extends EventEmitter<SpaceEvents> {
|
|
|
31
33
|
private _id;
|
|
32
34
|
private _name;
|
|
33
35
|
private _role;
|
|
34
|
-
private
|
|
36
|
+
private _userId;
|
|
37
|
+
private _conversationId;
|
|
38
|
+
private _echoId;
|
|
35
39
|
private _data;
|
|
36
40
|
private graphqlClient;
|
|
37
41
|
private mediaClient;
|
|
@@ -47,8 +51,22 @@ export declare class RoolSpace extends EventEmitter<SpaceEvents> {
|
|
|
47
51
|
* Get the connection ID for this space instance.
|
|
48
52
|
* Used for AI context tracking and echo suppression.
|
|
49
53
|
*/
|
|
50
|
-
get
|
|
54
|
+
get conversationId(): string;
|
|
51
55
|
get isReadOnly(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Get conversation messages for this space's conversation.
|
|
58
|
+
* Returns the messages array for the current conversationId.
|
|
59
|
+
*/
|
|
60
|
+
getConversation(): ConversationMessage[];
|
|
61
|
+
/**
|
|
62
|
+
* Get conversation messages for a specific conversation ID.
|
|
63
|
+
* Useful for viewing other conversations in the space.
|
|
64
|
+
*/
|
|
65
|
+
getConversationById(conversationId: string): Conversation | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Get all conversation IDs in this space.
|
|
68
|
+
*/
|
|
69
|
+
getConversationIds(): string[];
|
|
52
70
|
/**
|
|
53
71
|
* Rename this space.
|
|
54
72
|
*/
|
|
@@ -214,6 +232,11 @@ export declare class RoolSpace extends EventEmitter<SpaceEvents> {
|
|
|
214
232
|
message: string;
|
|
215
233
|
objects: RoolObject[];
|
|
216
234
|
}>;
|
|
235
|
+
/**
|
|
236
|
+
* Append a message to the current conversation (for optimistic updates).
|
|
237
|
+
* @internal
|
|
238
|
+
*/
|
|
239
|
+
private appendConversationMessage;
|
|
217
240
|
/**
|
|
218
241
|
* List users with access to this space.
|
|
219
242
|
*/
|
package/dist/space.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EAGV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,SAAS,
|
|
1
|
+
{"version":3,"file":"space.d.ts","sourceRoot":"","sources":["../src/space.ts"],"names":[],"mappings":"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"}
|
package/dist/space.js
CHANGED
|
@@ -25,7 +25,9 @@ export class RoolSpace extends EventEmitter {
|
|
|
25
25
|
_id;
|
|
26
26
|
_name;
|
|
27
27
|
_role;
|
|
28
|
-
|
|
28
|
+
_userId;
|
|
29
|
+
_conversationId;
|
|
30
|
+
_echoId;
|
|
29
31
|
_data;
|
|
30
32
|
graphqlClient;
|
|
31
33
|
mediaClient;
|
|
@@ -39,7 +41,9 @@ export class RoolSpace extends EventEmitter {
|
|
|
39
41
|
this._id = config.id;
|
|
40
42
|
this._name = config.name;
|
|
41
43
|
this._role = config.role;
|
|
42
|
-
this.
|
|
44
|
+
this._userId = config.userId;
|
|
45
|
+
this._conversationId = config.conversationId ?? generateEntityId();
|
|
46
|
+
this._echoId = generateEntityId(); // Unique per tab for echo suppression
|
|
43
47
|
this._data = config.initialData;
|
|
44
48
|
this.graphqlClient = config.graphqlClient;
|
|
45
49
|
this.mediaClient = config.mediaClient;
|
|
@@ -49,7 +53,8 @@ export class RoolSpace extends EventEmitter {
|
|
|
49
53
|
graphqlUrl: config.graphqlUrl,
|
|
50
54
|
authManager: config.authManager,
|
|
51
55
|
spaceId: this._id,
|
|
52
|
-
|
|
56
|
+
conversationId: this._conversationId,
|
|
57
|
+
echoId: this._echoId,
|
|
53
58
|
onEvent: (event) => this.handleSpaceEvent(event),
|
|
54
59
|
onConnectionStateChanged: () => {
|
|
55
60
|
// Space-level connection state (could emit events if needed)
|
|
@@ -77,13 +82,36 @@ export class RoolSpace extends EventEmitter {
|
|
|
77
82
|
* Get the connection ID for this space instance.
|
|
78
83
|
* Used for AI context tracking and echo suppression.
|
|
79
84
|
*/
|
|
80
|
-
get
|
|
81
|
-
return this.
|
|
85
|
+
get conversationId() {
|
|
86
|
+
return this._conversationId;
|
|
82
87
|
}
|
|
83
88
|
get isReadOnly() {
|
|
84
89
|
return this._role === 'viewer';
|
|
85
90
|
}
|
|
86
91
|
// ===========================================================================
|
|
92
|
+
// Conversation Access
|
|
93
|
+
// ===========================================================================
|
|
94
|
+
/**
|
|
95
|
+
* Get conversation messages for this space's conversation.
|
|
96
|
+
* Returns the messages array for the current conversationId.
|
|
97
|
+
*/
|
|
98
|
+
getConversation() {
|
|
99
|
+
return this._data.conversations?.[this._conversationId]?.messages ?? [];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get conversation messages for a specific conversation ID.
|
|
103
|
+
* Useful for viewing other conversations in the space.
|
|
104
|
+
*/
|
|
105
|
+
getConversationById(conversationId) {
|
|
106
|
+
return this._data.conversations?.[conversationId];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get all conversation IDs in this space.
|
|
110
|
+
*/
|
|
111
|
+
getConversationIds() {
|
|
112
|
+
return Object.keys(this._data.conversations ?? {});
|
|
113
|
+
}
|
|
114
|
+
// ===========================================================================
|
|
87
115
|
// Space Lifecycle
|
|
88
116
|
// ===========================================================================
|
|
89
117
|
/**
|
|
@@ -93,7 +121,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
93
121
|
const oldName = this._name;
|
|
94
122
|
this._name = newName;
|
|
95
123
|
try {
|
|
96
|
-
await this.graphqlClient.renameSpace(this._id, newName, this.
|
|
124
|
+
await this.graphqlClient.renameSpace(this._id, newName, this._conversationId);
|
|
97
125
|
}
|
|
98
126
|
catch (error) {
|
|
99
127
|
this._name = oldName;
|
|
@@ -163,7 +191,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
163
191
|
this._data = previousEntry.data;
|
|
164
192
|
// Sync to server - resync on failure
|
|
165
193
|
try {
|
|
166
|
-
await this.graphqlClient.setSpace(this._id, this._data, this.
|
|
194
|
+
await this.graphqlClient.setSpace(this._id, this._data, this._conversationId, this._echoId);
|
|
167
195
|
this.emit('reset', { source: 'local_user' });
|
|
168
196
|
}
|
|
169
197
|
catch (error) {
|
|
@@ -191,7 +219,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
191
219
|
this._data = nextEntry.data;
|
|
192
220
|
// Sync to server - resync on failure
|
|
193
221
|
try {
|
|
194
|
-
await this.graphqlClient.setSpace(this._id, this._data, this.
|
|
222
|
+
await this.graphqlClient.setSpace(this._id, this._data, this._conversationId, this._echoId);
|
|
195
223
|
this.emit('reset', { source: 'local_user' });
|
|
196
224
|
}
|
|
197
225
|
catch (error) {
|
|
@@ -281,7 +309,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
281
309
|
};
|
|
282
310
|
}
|
|
283
311
|
// Otherwise, use server (with AI)
|
|
284
|
-
return this.graphqlClient.findObjects(this._id, options, this.
|
|
312
|
+
return this.graphqlClient.findObjects(this._id, options, this._conversationId, this._echoId);
|
|
285
313
|
}
|
|
286
314
|
/**
|
|
287
315
|
* Get all object IDs.
|
|
@@ -318,7 +346,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
318
346
|
this.emit('objectCreated', { objectId, object: entry.data, source: 'local_user' });
|
|
319
347
|
// Await server call (may trigger AI processing that updates local state via patches)
|
|
320
348
|
try {
|
|
321
|
-
const message = await this.graphqlClient.createObject(this.id, dataWithId, this.
|
|
349
|
+
const message = await this.graphqlClient.createObject(this.id, dataWithId, this._conversationId, this._echoId, prompt);
|
|
322
350
|
// Return current state (may have been updated by AI patches)
|
|
323
351
|
return { object: this._data.objects[objectId].data, message };
|
|
324
352
|
}
|
|
@@ -355,7 +383,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
355
383
|
}
|
|
356
384
|
// Await server call (may trigger AI processing that updates local state via patches)
|
|
357
385
|
try {
|
|
358
|
-
const message = await this.graphqlClient.updateObject(this.id, objectId, this.
|
|
386
|
+
const message = await this.graphqlClient.updateObject(this.id, objectId, this._conversationId, this._echoId, data, options.prompt);
|
|
359
387
|
// Return current state (may have been updated by AI patches)
|
|
360
388
|
return { object: this._data.objects[objectId].data, message };
|
|
361
389
|
}
|
|
@@ -403,7 +431,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
403
431
|
}
|
|
404
432
|
// Await server call
|
|
405
433
|
try {
|
|
406
|
-
await this.graphqlClient.deleteObjects(this.id, objectIds, this.
|
|
434
|
+
await this.graphqlClient.deleteObjects(this.id, objectIds, this._conversationId, this._echoId);
|
|
407
435
|
}
|
|
408
436
|
catch (error) {
|
|
409
437
|
console.error('[Space] Failed to delete objects:', error);
|
|
@@ -432,7 +460,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
432
460
|
this.emit('linked', { sourceId, relation, targetId, linkData, source: 'local_user' });
|
|
433
461
|
// Await server call
|
|
434
462
|
try {
|
|
435
|
-
await this.graphqlClient.link(this.id, sourceId, relation, targetId, this.
|
|
463
|
+
await this.graphqlClient.link(this.id, sourceId, relation, targetId, this._conversationId, this._echoId);
|
|
436
464
|
}
|
|
437
465
|
catch (error) {
|
|
438
466
|
console.error('[Space] Failed to create link:', error);
|
|
@@ -486,7 +514,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
486
514
|
}
|
|
487
515
|
// Await server call
|
|
488
516
|
try {
|
|
489
|
-
await this.graphqlClient.unlink(this.id, sourceId, relation, targetId, this.
|
|
517
|
+
await this.graphqlClient.unlink(this.id, sourceId, relation, targetId, this._conversationId, this._echoId);
|
|
490
518
|
}
|
|
491
519
|
catch (error) {
|
|
492
520
|
console.error('[Space] Failed to remove link:', error);
|
|
@@ -564,7 +592,7 @@ export class RoolSpace extends EventEmitter {
|
|
|
564
592
|
this._data.meta[key] = value;
|
|
565
593
|
this.emit('metadataUpdated', { metadata: this._data.meta, source: 'local_user' });
|
|
566
594
|
// Fire-and-forget server call - errors trigger resync
|
|
567
|
-
this.graphqlClient.setSpaceMeta(this.id, this._data.meta, this.
|
|
595
|
+
this.graphqlClient.setSpaceMeta(this.id, this._data.meta, this._conversationId)
|
|
568
596
|
.catch((error) => {
|
|
569
597
|
console.error('[Space] Failed to set meta:', error);
|
|
570
598
|
this.resyncFromServer(error instanceof Error ? error : new Error(String(error)));
|
|
@@ -590,7 +618,20 @@ export class RoolSpace extends EventEmitter {
|
|
|
590
618
|
* @returns The message from the AI and the list of objects that were created or modified
|
|
591
619
|
*/
|
|
592
620
|
async prompt(prompt, options) {
|
|
593
|
-
|
|
621
|
+
// Optimistic update: add user message immediately (if we have userId)
|
|
622
|
+
if (this._userId) {
|
|
623
|
+
const userMessage = {
|
|
624
|
+
timestamp: Date.now(),
|
|
625
|
+
role: 'user',
|
|
626
|
+
userId: this._userId,
|
|
627
|
+
content: prompt,
|
|
628
|
+
modifiedObjectIds: [],
|
|
629
|
+
source: 'prompt',
|
|
630
|
+
};
|
|
631
|
+
this.appendConversationMessage(userMessage);
|
|
632
|
+
this.emit('conversationUpdated', { conversationId: this._conversationId, source: 'local_user' });
|
|
633
|
+
}
|
|
634
|
+
const result = await this.graphqlClient.prompt(this._id, prompt, this._conversationId, this._echoId, options);
|
|
594
635
|
// Hydrate modified object IDs to actual objects (filter out deleted ones)
|
|
595
636
|
const objects = result.modifiedObjectIds
|
|
596
637
|
.map(id => this._data.objects[id]?.data)
|
|
@@ -600,6 +641,19 @@ export class RoolSpace extends EventEmitter {
|
|
|
600
641
|
objects,
|
|
601
642
|
};
|
|
602
643
|
}
|
|
644
|
+
/**
|
|
645
|
+
* Append a message to the current conversation (for optimistic updates).
|
|
646
|
+
* @internal
|
|
647
|
+
*/
|
|
648
|
+
appendConversationMessage(message) {
|
|
649
|
+
if (!this._data.conversations) {
|
|
650
|
+
this._data.conversations = {};
|
|
651
|
+
}
|
|
652
|
+
if (!this._data.conversations[this._conversationId]) {
|
|
653
|
+
this._data.conversations[this._conversationId] = { messages: [] };
|
|
654
|
+
}
|
|
655
|
+
this._data.conversations[this._conversationId].messages.push(message);
|
|
656
|
+
}
|
|
603
657
|
// ===========================================================================
|
|
604
658
|
// Collaboration
|
|
605
659
|
// ===========================================================================
|
|
@@ -761,6 +815,14 @@ export class RoolSpace extends EventEmitter {
|
|
|
761
815
|
else if (path === '/meta' || path.startsWith('/meta/')) {
|
|
762
816
|
this.emit('metadataUpdated', { metadata: this._data.meta, source });
|
|
763
817
|
}
|
|
818
|
+
// Conversation operations: /conversations/{conversationId}/...
|
|
819
|
+
else if (path.startsWith('/conversations/')) {
|
|
820
|
+
const parts = path.split('/');
|
|
821
|
+
const conversationId = parts[2];
|
|
822
|
+
if (conversationId) {
|
|
823
|
+
this.emit('conversationUpdated', { conversationId, source });
|
|
824
|
+
}
|
|
825
|
+
}
|
|
764
826
|
}
|
|
765
827
|
}
|
|
766
828
|
// ===========================================================================
|