@rool-dev/client 0.3.1 → 0.4.0-dev.22f8ef0

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
@@ -1,6 +1,10 @@
1
1
  # Rool Client
2
2
 
3
- TypeScript client library for the Rool server API. Provides authentication, real-time sync, and graph operations.
3
+ The TypeScript client for Rool Spaces, a persistent and collaborative environment for organizing objects and their relationships.
4
+
5
+ Rool Spaces enables you to build applications where AI operates on a structured world model rather than a text conversation. The context for all AI operations is the full object graph, allowing the system to reason about, update, and expand the state of your application directly.
6
+
7
+ Use Rool to programmatically instruct agents to generate content, research topics, or reorganize data. The client manages authentication, real-time synchronization, and media storage, supporting both single-user and multi-user workflows.
4
8
 
5
9
  ## Installation
6
10
 
@@ -13,33 +17,47 @@ npm install @rool-dev/client
13
17
  ```typescript
14
18
  import { RoolClient } from '@rool-dev/client';
15
19
 
16
- const client = new RoolClient({ baseUrl: 'https://use.rool.dev' });
17
- client.initialize(); // Process auth callback if returning from login
20
+ // Initialize client
21
+ const client = new RoolClient({
22
+ baseUrl: 'https://api.rool.dev',
23
+ });
18
24
 
19
25
  if (!client.isAuthenticated()) {
20
26
  client.login(); // Redirects to auth page
21
27
  }
22
28
 
23
- // Subscribe to real-time events
24
- await client.subscribe();
29
+ // Open an existing space
30
+ const space = await client.openSpace('abc1234');
31
+
32
+ // Create a new space
33
+ const newSpace = await client.createSpace('My New Space');
25
34
 
26
- // Open a graph and work with it
27
- const graph = await client.openGraph('my-graph-id');
28
- graph.subscribe(); // Listen for real-time updates
35
+ // Subscribe to real-time updates
36
+ space.subscribe();
29
37
 
30
- // Add a node
31
- graph.checkpoint('Add node');
32
- graph.addNode('node1', { type: 'text', content: 'Hello' });
38
+ // Listen for space changes
39
+ space.on('objectCreated', ({ object }) => {
40
+ console.log('New object:', object);
41
+ });
42
+
43
+ space.on('linked', ({ sourceId, targetId }) => {
44
+ console.log('New link:', sourceId, '->', targetId);
45
+ });
33
46
 
34
- // Link nodes
35
- graph.linkNodes('node1', 'node2', 'connection');
47
+ // Make changes (automatically synced)
48
+ await space.createObject({
49
+ data: { type: 'note', text: 'Hello World' }
50
+ });
51
+
52
+ // Create a link between objects
53
+ await space.link('id', 'object2', 'connection');
36
54
 
37
55
  // Undo/redo support
38
- graph.undo();
39
- graph.redo();
56
+ await space.undo();
57
+ await space.redo();
40
58
 
41
59
  // Clean up
42
- graph.close();
60
+ space.close();
43
61
  ```
44
62
 
45
63
  ## Configuration
@@ -118,24 +136,24 @@ const client = new RoolClient({
118
136
  | `login(): void` | Redirect to login page |
119
137
  | `logout(): void` | Clear tokens and state |
120
138
  | `isAuthenticated(): boolean` | Check auth status |
121
- | `getToken(): Promise<string \| undefined>` | Get current access token |
139
+ | `getToken(): Promise<string | undefined>` | Get current access token |
122
140
  | `getUser(): UserInfo` | Get user info from JWT (`{ email, name }`) |
123
141
 
124
- ### Graph Lifecycle
142
+ ### Space Lifecycle
125
143
 
126
144
  | Method | Description |
127
145
  |--------|-------------|
128
- | `listGraphs(): Promise<RoolGraphInfo[]>` | List accessible graphs |
129
- | `openGraph(graphId): Promise<RoolGraph>` | Open existing graph. Call `graph.subscribe()` after to receive updates. |
130
- | `createGraph(name?): Promise<RoolGraph>` | Create new graph |
131
- | `deleteGraph(graphId): Promise<void>` | Delete a graph |
146
+ | `listSpaces(): Promise<RoolSpaceInfo[]>` | List available spaces |
147
+ | `openSpace(id): Promise<RoolSpace>` | Open a space for editing |
148
+ | `createSpace(name?): Promise<RoolSpace>` | Create a new space |
149
+ | `deleteSpace(id): Promise<void>` | Delete a space |
132
150
 
133
151
  ### Account & Users
134
152
 
135
153
  | Method | Description |
136
154
  |--------|-------------|
137
155
  | `getAccount(): Promise<Account>` | Get account info (plan, credits) |
138
- | `searchUser(email): Promise<UserResult \| null>` | Search user by email |
156
+ | `searchUser(email): Promise<UserResult | null>` | Search user by email |
139
157
 
140
158
  ### Subscriptions
141
159
 
@@ -158,26 +176,26 @@ const client = new RoolClient({
158
176
 
159
177
  ```typescript
160
178
  client.on('authStateChanged', (authenticated: boolean) => void)
161
- client.on('graphCreated', (graphId: string) => void)
162
- client.on('graphDeleted', (graphId: string) => void)
163
- client.on('graphRenamed', (graphId: string, newName: string) => void)
179
+ client.on('spaceCreated', (spaceId: string) => void)
180
+ client.on('spaceDeleted', (spaceId: string) => void)
181
+ client.on('spaceRenamed', (spaceId: string, newName: string) => void)
164
182
  client.on('connectionStateChanged', (state: 'connected' | 'disconnected' | 'reconnecting') => void)
165
183
  client.on('error', (error: Error, context?: string) => void)
166
184
  ```
167
185
 
168
186
  ---
169
187
 
170
- ## RoolGraph API
188
+ ## RoolSpace API
171
189
 
172
- Graphs are first-class objects with built-in undo/redo, event emission, and real-time sync.
190
+ Spaces are first-class objects with built-in undo/redo, event emission, and real-time sync.
173
191
 
174
192
  ### Properties
175
193
 
176
194
  | Property | Description |
177
195
  |----------|-------------|
178
- | `id: string` | Graph ID |
179
- | `name: string` | Graph name |
180
- | `role: RoolGraphRole` | User's role (`'owner' \| 'editor' \| 'viewer'`) |
196
+ | `id: string` | Space ID |
197
+ | `name: string` | Space name |
198
+ | `role: RoolUserRole` | User's role (`'owner' | 'editor' | 'viewer'`) |
181
199
  | `isReadOnly(): boolean` | True if viewer role |
182
200
  | `isSubscribed(): boolean` | True if receiving real-time updates |
183
201
 
@@ -188,7 +206,7 @@ Graphs are first-class objects with built-in undo/redo, event emission, and real
188
206
  | `subscribe(): void` | Call after opening. Start receiving real-time updates from other clients. |
189
207
  | `unsubscribe(): void` | Stop real-time updates |
190
208
  | `close(): void` | Clean up and unsubscribe |
191
- | `rename(newName): Promise<void>` | Rename the graph |
209
+ | `rename(newName): Promise<void>` | Rename the space |
192
210
 
193
211
  ### Undo/Redo
194
212
 
@@ -201,34 +219,71 @@ Graphs are first-class objects with built-in undo/redo, event emission, and real
201
219
  | `redo(): Promise<boolean>` | Redo undone action |
202
220
  | `clearHistory(): void` | Clear undo/redo stack |
203
221
 
204
- ### Node Operations
222
+ ### Object Operations
205
223
 
206
224
  | Method | Description |
207
225
  |--------|-------------|
208
- | `getNode(nodeId): RoolNode` | Get node (throws if not found) |
209
- | `getNodeOrUndefined(nodeId): RoolNode \| undefined` | Get node or undefined |
210
- | `getNodesByType(type): RoolNode[]` | Get all nodes of type |
211
- | `getNodeIds(): string[]` | Get all node IDs |
212
- | `addNode(nodeId, node): void` | Add a node |
213
- | `updateNode(nodeId, updates): void` | Update node fields |
214
- | `deleteNodes(nodeIds): void` | Delete nodes (and connected edges) |
226
+ | `getObject(objectId): RoolObject` | Get object data. Throws if not found. |
227
+ | `getObjectOrUndefined(objectId): RoolObject | undefined` | Get object data, or undefined if not found. |
228
+ | `queryObjects(where): RoolObject[]` | Query objects by field values (e.g., `{type: 'article', status: 'draft'}`). |
229
+ | `getObjectIds(): string[]` | Get all object IDs in the space. |
230
+ | `getObjectMeta(objectId): Record<string, unknown>` | Get object metadata (position, UI state, etc.) Hidden from AI. |
231
+ | `createObject(options): Promise<{ id, message }>` | Create a new object. Returns the generated ID and AI message. |
232
+ | `updateObject(objectId, options): Promise<string>` | Update an existing object. Returns AI message. |
233
+ | `deleteObjects(objectIds): Promise<void>` | Delete objects. Outbound links are removed automatically. |
234
+
235
+ #### createObject / updateObject Options
236
+
237
+ Both methods accept an options object:
238
+
239
+ | Option | Description |
240
+ |--------|-------------|
241
+ | `data` | Object data fields (any key-value pairs). Use `{{placeholder}}` for AI-generated content. Required for `createObject`, optional for `updateObject`. |
242
+ | `meta` | Client-private metadata (e.g., position). Hidden from AI operations. |
243
+ | `prompt` | Natural language instruction for AI to generate or modify content. |
244
+
245
+ **Note**: Objects are free-form JSON. While `type` is a common convention (e.g., `{type: 'article'}`), it's not required by the framework.
246
+
247
+ **AI Placeholder Pattern**: Use `{{description}}` in field values to have AI generate content:
248
+
249
+ ```typescript
250
+ // Create with AI-generated content
251
+ await space.createObject({
252
+ data: {
253
+ type: 'article',
254
+ headline: '{{catchy headline about coffee}}',
255
+ body: '{{informative paragraph}}'
256
+ },
257
+ prompt: 'Write about specialty coffee brewing'
258
+ });
259
+
260
+ // Update existing content with AI
261
+ await space.updateObject('abc123', {
262
+ prompt: 'Make the body shorter and more casual'
263
+ });
215
264
 
216
- ### Edge Operations
265
+ // Add new AI-generated field to existing object
266
+ await space.updateObject('abc123', {
267
+ data: { summary: '{{one-sentence summary}}' }
268
+ });
269
+ ```
270
+
271
+ ### Link Operations
272
+
273
+ Links connect objects directionally. They are stored on the source object and identified by `sourceId + linkType + targetId`.
217
274
 
218
275
  | Method | Description |
219
276
  |--------|-------------|
220
- | `linkNodes(sourceId, targetId, edgeType): string` | Create edge, returns edge ID |
221
- | `unlinkNodes(sourceId, targetId): boolean` | Remove edges between nodes |
222
- | `getParents(nodeId, edgeType?): string[]` | Get nodes pointing to this node |
223
- | `getChildren(nodeId, edgeType?): string[]` | Get nodes this node points to |
224
- | `getEdge(edgeId): RoolEdge \| undefined` | Get edge by ID |
225
- | `getEdgeIds(): string[]` | Get all edge IDs |
277
+ | `link(sourceId, targetId, linkType): Promise<void>` | Create a link from source to target with the given type. |
278
+ | `unlink(sourceId, targetId, linkType?): Promise<boolean>` | Remove link(s). If `linkType` provided, removes only that type; otherwise removes all links between the objects. |
279
+ | `getParents(objectId, linkType?): string[]` | Get IDs of objects that link TO this object. |
280
+ | `getChildren(objectId, linkType?): string[]` | Get IDs of objects this object links TO. |
226
281
 
227
282
  ### Metadata
228
283
 
229
284
  | Method | Description |
230
285
  |--------|-------------|
231
- | `setMetadata(key, value): void` | Set metadata (hidden from AI) |
286
+ | `setMetadata(key, value): void` | Set space-level metadata (hidden from AI) |
232
287
  | `getMetadata(key): unknown` | Get metadata value |
233
288
  | `getAllMetadata(): Record<string, unknown>` | Get all metadata |
234
289
 
@@ -236,17 +291,41 @@ Graphs are first-class objects with built-in undo/redo, event emission, and real
236
291
 
237
292
  | Method | Description |
238
293
  |--------|-------------|
239
- | `prompt(prompt, options?): Promise<string \| null>` | AI graph manipulation |
240
- | `generateImage(prompt, aspectRatio?): Promise<ImageResult>` | Generate AI image |
241
- | `editImage(prompt, url): Promise<ImageResult>` | Edit image with AI |
294
+ | `prompt(prompt, options?): Promise<string | null>` | AI space manipulation |
295
+
296
+ The `prompt` method lets you invoke the AI agent to manipulate the space, perform research, or query information.
297
+
298
+ **Capabilities:**
299
+ - **Creation**: "Create 3 markdown nodes with haikus about nature"
300
+ - **Modification**: "Make the selected node's text more formal"
301
+ - **Research**: "Create a knowledge graph about the exoplanets orbiting PSR B1257+12" (Agent will search Wikipedia)
302
+ - **Structure**: "Connect the topic node to all created child nodes"
303
+
304
+ **Options:**
305
+ - `objectIds`: Limit context to specific objects ("Update *these* objects")
306
+ - `responseSchema`: Request a structured JSON response instead of a text summary
307
+
308
+ ```typescript
309
+ // Example: Research and expansion
310
+ await space.prompt(
311
+ "Create a topic node for the solar system, then child nodes for each planet.",
312
+ { responseSchema: null } // Returns a text summary
313
+ );
314
+
315
+ // Example: Focused update
316
+ await space.prompt(
317
+ "Summarize this article in the 'summary' field",
318
+ { objectIds: ['article-node-id'] }
319
+ );
320
+ ```
242
321
 
243
322
  ### Collaboration
244
323
 
245
324
  | Method | Description |
246
325
  |--------|-------------|
247
- | `listUsers(): Promise<RoolGraphUser[]>` | List users with access |
248
- | `addUser(userId, role): Promise<void>` | Add user to graph |
249
- | `removeUser(userId): Promise<void>` | Remove user from graph |
326
+ | `listUsers(): Promise<RoolUser[]>` | List users with access |
327
+ | `addUser(userId, role): Promise<void>` | Add user to space |
328
+ | `removeUser(userId): Promise<void>` | Remove user from space |
250
329
 
251
330
  ### Media
252
331
 
@@ -262,77 +341,97 @@ Graphs are first-class objects with built-in undo/redo, event emission, and real
262
341
 
263
342
  | Method | Description |
264
343
  |--------|-------------|
265
- | `getData(): RoolGraphData` | Get full graph data |
266
- | `patch(operations): void` | Apply JSON patch |
344
+ | `getData(): RoolSpaceData` | Get full space data (internal format) |
345
+
346
+ ### Space Events
267
347
 
268
- ### Graph Events
348
+ Semantic events describe what changed. Events fire for both local changes and remote changes.
269
349
 
270
350
  ```typescript
271
- // Incremental change - ops is the raw JSON patch
272
- // source indicates origin: 'local' | 'remote_user' | 'remote_agent' | 'system'
273
- graph.on('patch', ({ ops, source }) => void)
351
+ // source indicates origin:
352
+ // - 'local_user': This client made the change
353
+ // - 'remote_user': Another user/client made the change
354
+ // - 'remote_agent': AI agent made the change
355
+ // - 'system': Resync after error
356
+
357
+ // Object events
358
+ space.on('objectCreated', ({ objectId, object, source }) => void)
359
+ space.on('objectUpdated', ({ objectId, object, source }) => void)
360
+ space.on('objectDeleted', ({ objectId, source }) => void)
361
+
362
+ // Link events
363
+ space.on('linked', ({ sourceId, targetId, linkType, source }) => void)
364
+ space.on('unlinked', ({ sourceId, targetId, linkType, source }) => void)
365
+
366
+ // Space metadata
367
+ space.on('metaUpdated', ({ meta, source }) => void)
274
368
 
275
369
  // Full state replacement (undo/redo, resync after error)
276
- graph.on('reset', ({ source }) => void)
370
+ space.on('reset', ({ source }) => void)
277
371
 
278
- // Sync error occurred, graph resynced from server
279
- graph.on('syncError', (error: Error) => void)
372
+ // Sync error occurred, space resynced from server
373
+ space.on('syncError', (error: Error) => void)
280
374
  ```
281
375
 
282
- **Usage patterns:**
283
- - **Simple (full re-render)**: Listen to both `patch` and `reset`, call `graph.getData()` and re-render
284
- - **Power user (incremental)**: Parse `ops` in `patch` for granular updates, full re-render on `reset`
376
+ **Usage pattern:**
377
+ ```typescript
378
+ // All UI updates happen in one place, regardless of change source
379
+ space.on('objectUpdated', ({ objectId, object, source }) => {
380
+ renderObject(objectId, object);
381
+ if (source === 'remote_agent') {
382
+ doLayout(); // AI might have added content
383
+ }
384
+ });
385
+
386
+ // Caller just makes the change - event handler does the UI work
387
+ space.updateObject(objectId, { prompt: 'expand this' });
388
+ ```
285
389
 
286
390
  ---
287
391
 
288
392
  ## Types
289
393
 
290
- ### Graph Data
394
+ ### Space Data
291
395
 
292
396
  ```typescript
293
- interface RoolGraphData {
294
- nodes: Record<string, RoolNode>;
295
- edges: Record<string, RoolEdge>;
296
- _meta: Record<string, unknown>; // Hidden from AI
297
- }
298
-
299
- interface RoolNode {
397
+ // RoolObject represents the object data you work with
398
+ interface RoolObject {
300
399
  type: string;
301
- _meta: Record<string, unknown>;
302
400
  [key: string]: unknown;
303
401
  }
304
402
 
305
- interface RoolEdge {
306
- sources: string[];
307
- targets: string[];
308
- type: string;
309
- _meta: Record<string, unknown>;
310
- [key: string]: unknown;
403
+ // Internal space data structure
404
+ interface RoolSpaceData {
405
+ objects: Record<string, ObjectEntry>;
406
+ meta: Record<string, unknown>; // Space-level metadata, hidden from AI
407
+ }
408
+
409
+ // Internal: Full stored object structure (you typically don't use this directly)
410
+ interface ObjectEntry {
411
+ meta: Record<string, unknown>; // Object-level metadata
412
+ links: Record<string, Record<string, Record<string, unknown>>>; // linkType -> targetId -> linkData
413
+ data: RoolObject; // The actual object data
311
414
  }
312
415
  ```
313
416
 
314
417
  ### Info Types
315
418
 
316
419
  ```typescript
317
- type RoolGraphRole = 'owner' | 'editor' | 'viewer';
420
+ type RoolUserRole = 'owner' | 'editor' | 'viewer';
318
421
 
319
- interface RoolGraphInfo { id: string; name: string; role: RoolGraphRole; }
320
- interface RoolGraphUser { id: string; email: string; role: RoolGraphRole; }
422
+ interface RoolSpaceInfo { id: string; name: string; role: RoolUserRole; }
423
+ interface RoolUser { id: string; email: string; role: RoolUserRole; }
321
424
  interface UserResult { id: string; email: string; }
322
425
  interface Account { id: string; email: string; plan: string; creditsBalance: number; }
323
426
  interface MediaItem { uuid: string; url: string; contentType: string; size: number; }
324
- interface ImageResult { url: string; }
325
- type ImageAspectRatio = '1:1' | '3:4' | '4:3' | '9:16' | '16:9';
326
- type GraphPatchSource = 'local' | 'remote_user' | 'remote_agent' | 'system';
427
+ type ChangeSource = 'local_user' | 'remote_user' | 'remote_agent' | 'system';
327
428
  ```
328
429
 
329
430
  ### Prompt Options
330
431
 
331
432
  ```typescript
332
433
  interface PromptOptions {
333
- nodeIds?: string[]; // Scope to specific nodes
334
- edgeIds?: string[]; // Scope to specific edges
335
- metadata?: Record<string, unknown>;
434
+ objectIds?: string[]; // Scope to specific objects
336
435
  responseSchema?: Record<string, unknown>;
337
436
  }
338
437
  ```
@@ -1 +1 @@
1
- {"version":3,"file":"auth-browser.d.ts","sourceRoot":"","sources":["../src/auth-browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOzD,MAAM,WAAW,iBAAiB;IAC9B,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;CACxD;AAED,qBAAa,mBAAoB,YAAW,YAAY;IACpD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,gBAAgB,CAA8C;IAEtE,OAAO,KAAK,WAAW,GAQtB;IAED,sCAAsC;IACtC,OAAO,KAAK,WAAW,GAEtB;gBAEW,MAAM,EAAE,iBAAiB;IAIrC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAMrB;;OAEG;IACH,eAAe,IAAI,OAAO;IAO1B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB7C;;OAEG;IACH,OAAO,IAAI,QAAQ;IAMnB;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,MAAM,IAAI,IAAI;IAOd;;;;OAIG;IACH,eAAe,IAAI,OAAO;IAyC1B;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;YACW,SAAS;YAgCT,eAAe;IAyD7B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,cAAc;CAYzB"}
1
+ {"version":3,"file":"auth-browser.d.ts","sourceRoot":"","sources":["../src/auth-browser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOzD,MAAM,WAAW,iBAAiB;IAC9B,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,CAAC,aAAa,EAAE,OAAO,KAAK,IAAI,CAAC;CACxD;AAED,qBAAa,mBAAoB,YAAW,YAAY;IACpD,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,cAAc,CAAiC;IACvD,OAAO,CAAC,gBAAgB,CAA8C;IAEtE,OAAO,KAAK,WAAW,GAQtB;IAED,sCAAsC;IACtC,OAAO,KAAK,WAAW,GAEtB;gBAEW,MAAM,EAAE,iBAAiB;IAIrC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAMrB;;OAEG;IACH,eAAe,IAAI,OAAO;IAO1B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAgB7C;;OAEG;IACH,OAAO,IAAI,QAAQ;IAMnB;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,MAAM,IAAI,IAAI;IAOd;;;;OAIG;IACH,eAAe,IAAI,OAAO;IAyC1B;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;YACW,SAAS;YAgCT,eAAe;IA4E7B,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,WAAW;IAwBnB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,cAAc;CAYzB"}
@@ -187,36 +187,54 @@ export class BrowserAuthProvider {
187
187
  }
188
188
  const refreshUrl = new URL(GCIP_REFRESH_ENDPOINT);
189
189
  refreshUrl.searchParams.set('key', apiKey);
190
- this.refreshPromise = fetch(refreshUrl.toString(), {
191
- method: 'POST',
192
- headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
193
- body: new URLSearchParams({
194
- grant_type: 'refresh_token',
195
- refresh_token: refreshToken,
196
- }),
197
- })
198
- .then(async (response) => {
190
+ this.refreshPromise = (async () => {
191
+ let response;
192
+ try {
193
+ response = await fetch(refreshUrl.toString(), {
194
+ method: 'POST',
195
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
196
+ body: new URLSearchParams({
197
+ grant_type: 'refresh_token',
198
+ refresh_token: refreshToken,
199
+ }),
200
+ });
201
+ }
202
+ catch (error) {
203
+ // Network error - don't clear tokens, might work next time
204
+ console.warn('[RoolClient] Token refresh network error:', error);
205
+ return false;
206
+ }
207
+ // 400/401 = refresh token is invalid, clear everything
208
+ if (response.status === 400 || response.status === 401) {
209
+ console.warn('[RoolClient] Refresh token invalid, clearing credentials');
210
+ this.clearTokens();
211
+ this.config.onAuthStateChanged(false);
212
+ return false;
213
+ }
214
+ // Other HTTP errors - don't clear tokens, might be transient
199
215
  if (!response.ok) {
200
- throw new Error(`Refresh failed: ${response.status} ${response.statusText}`);
216
+ console.warn(`[RoolClient] Token refresh failed: ${response.status} ${response.statusText}`);
217
+ return false;
201
218
  }
202
- const data = await response.json();
203
- const accessToken = data.id_token ?? data.access_token ?? null;
204
- const nextRefreshToken = data.refresh_token ?? refreshToken;
205
- const expiresAt = data.expires_in ? Date.now() + data.expires_in * 1000 : NaN;
206
- if (!accessToken || !Number.isFinite(expiresAt)) {
207
- throw new Error('Refresh response missing access token or expires_in');
219
+ // Success - parse and store new tokens
220
+ try {
221
+ const data = await response.json();
222
+ const accessToken = data.id_token ?? data.access_token ?? null;
223
+ const nextRefreshToken = data.refresh_token ?? refreshToken;
224
+ const expiresAt = data.expires_in ? Date.now() + data.expires_in * 1000 : NaN;
225
+ if (!accessToken || !Number.isFinite(expiresAt)) {
226
+ console.error('[RoolClient] Refresh response missing access token or expires_in');
227
+ return false;
228
+ }
229
+ this.writeTokens(accessToken, nextRefreshToken, expiresAt);
230
+ this.scheduleTokenRefresh();
231
+ return true;
208
232
  }
209
- this.writeTokens(accessToken, nextRefreshToken, expiresAt);
210
- this.scheduleTokenRefresh();
211
- return true;
212
- })
213
- .catch((error) => {
214
- console.error('[RoolClient] Token refresh failed:', error);
215
- this.clearTokens();
216
- this.config.onAuthStateChanged(false);
217
- return false;
218
- })
219
- .finally(() => {
233
+ catch (error) {
234
+ console.error('[RoolClient] Failed to parse refresh response:', error);
235
+ return false;
236
+ }
237
+ })().finally(() => {
220
238
  this.refreshPromise = null;
221
239
  });
222
240
  return this.refreshPromise;
@@ -1 +1 @@
1
- {"version":3,"file":"auth-browser.js","sourceRoot":"","sources":["../src/auth-browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth-browser.js","sourceRoot":"","sources":["../src/auth-browser.ts"],"names":[],"mappings":"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"}