@rool-dev/sdk 0.12.4 → 2.0.0-dev.4adc2c2

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.
Files changed (108) hide show
  1. package/README.md +436 -761
  2. package/dist/agents.d.ts +130 -0
  3. package/dist/agents.d.ts.map +1 -0
  4. package/dist/agents.js +348 -0
  5. package/dist/agents.js.map +1 -0
  6. package/dist/auth-base.d.ts +43 -88
  7. package/dist/auth-base.d.ts.map +1 -1
  8. package/dist/auth-base.js +178 -298
  9. package/dist/auth-base.js.map +1 -1
  10. package/dist/auth-browser.d.ts +7 -25
  11. package/dist/auth-browser.d.ts.map +1 -1
  12. package/dist/auth-browser.js +45 -82
  13. package/dist/auth-browser.js.map +1 -1
  14. package/dist/auth-native.d.ts +9 -56
  15. package/dist/auth-native.d.ts.map +1 -1
  16. package/dist/auth-native.js +88 -177
  17. package/dist/auth-native.js.map +1 -1
  18. package/dist/auth-node.d.ts +32 -32
  19. package/dist/auth-node.d.ts.map +1 -1
  20. package/dist/auth-node.js +339 -255
  21. package/dist/auth-node.js.map +1 -1
  22. package/dist/auth-url.d.ts +6 -0
  23. package/dist/auth-url.d.ts.map +1 -0
  24. package/dist/auth-url.js +30 -0
  25. package/dist/auth-url.js.map +1 -0
  26. package/dist/client.d.ts +35 -277
  27. package/dist/client.d.ts.map +1 -1
  28. package/dist/client.js +275 -620
  29. package/dist/client.js.map +1 -1
  30. package/dist/events.d.ts +40 -0
  31. package/dist/events.d.ts.map +1 -0
  32. package/dist/events.js +175 -0
  33. package/dist/events.js.map +1 -0
  34. package/dist/files.d.ts +170 -0
  35. package/dist/files.d.ts.map +1 -0
  36. package/dist/files.js +846 -0
  37. package/dist/files.js.map +1 -0
  38. package/dist/index.d.ts +16 -17
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +7 -19
  41. package/dist/index.js.map +1 -1
  42. package/dist/machine.d.ts +49 -0
  43. package/dist/machine.d.ts.map +1 -0
  44. package/dist/machine.js +142 -0
  45. package/dist/machine.js.map +1 -0
  46. package/dist/problem.d.ts +11 -0
  47. package/dist/problem.d.ts.map +1 -0
  48. package/dist/problem.js +20 -0
  49. package/dist/problem.js.map +1 -0
  50. package/dist/structured.d.ts +84 -0
  51. package/dist/structured.d.ts.map +1 -0
  52. package/dist/structured.js +405 -0
  53. package/dist/structured.js.map +1 -0
  54. package/dist/types.d.ts +119 -520
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +11 -16
  57. package/dist/auth.d.ts +0 -85
  58. package/dist/auth.d.ts.map +0 -1
  59. package/dist/auth.js +0 -181
  60. package/dist/auth.js.map +0 -1
  61. package/dist/client-info.d.ts +0 -18
  62. package/dist/client-info.d.ts.map +0 -1
  63. package/dist/client-info.js +0 -25
  64. package/dist/client-info.js.map +0 -1
  65. package/dist/event-emitter.d.ts +0 -45
  66. package/dist/event-emitter.d.ts.map +0 -1
  67. package/dist/event-emitter.js +0 -86
  68. package/dist/event-emitter.js.map +0 -1
  69. package/dist/graphql.d.ts +0 -90
  70. package/dist/graphql.d.ts.map +0 -1
  71. package/dist/graphql.js +0 -463
  72. package/dist/graphql.js.map +0 -1
  73. package/dist/logger.d.ts +0 -13
  74. package/dist/logger.d.ts.map +0 -1
  75. package/dist/logger.js +0 -17
  76. package/dist/logger.js.map +0 -1
  77. package/dist/path.d.ts +0 -6
  78. package/dist/path.d.ts.map +0 -1
  79. package/dist/path.js +0 -47
  80. package/dist/path.js.map +0 -1
  81. package/dist/reroute.d.ts +0 -22
  82. package/dist/reroute.d.ts.map +0 -1
  83. package/dist/reroute.js +0 -70
  84. package/dist/reroute.js.map +0 -1
  85. package/dist/rest.d.ts +0 -54
  86. package/dist/rest.d.ts.map +0 -1
  87. package/dist/rest.js +0 -171
  88. package/dist/rest.js.map +0 -1
  89. package/dist/router.d.ts +0 -20
  90. package/dist/router.d.ts.map +0 -1
  91. package/dist/router.js +0 -54
  92. package/dist/router.js.map +0 -1
  93. package/dist/space-session.d.ts +0 -30
  94. package/dist/space-session.d.ts.map +0 -1
  95. package/dist/space-session.js +0 -83
  96. package/dist/space-session.js.map +0 -1
  97. package/dist/space.d.ts +0 -161
  98. package/dist/space.d.ts.map +0 -1
  99. package/dist/space.js +0 -618
  100. package/dist/space.js.map +0 -1
  101. package/dist/subscription.d.ts +0 -36
  102. package/dist/subscription.d.ts.map +0 -1
  103. package/dist/subscription.js +0 -419
  104. package/dist/subscription.js.map +0 -1
  105. package/dist/webdav.d.ts +0 -171
  106. package/dist/webdav.d.ts.map +0 -1
  107. package/dist/webdav.js +0 -481
  108. package/dist/webdav.js.map +0 -1
@@ -0,0 +1,130 @@
1
+ import type { MachineFilePath } from "./files.js";
2
+ export type MachinePromptEffort = "quick" | "standard" | "reasoning" | "research";
3
+ export type MachineAssistantFinish = "stop" | "tool_calls" | "length" | "safety" | "error" | "credits" | "cancelled";
4
+ export type MachineConversationTurnRole = "system" | "user" | "tool" | "assistant";
5
+ export type MachineConversationVisibility = "private" | "shared";
6
+ export type MachineConversationContentPart = {
7
+ type: "text";
8
+ text: string;
9
+ } | {
10
+ type: "attachment";
11
+ path: MachineFilePath;
12
+ mime?: string;
13
+ } | {
14
+ type: "tool_call";
15
+ id: string;
16
+ name: string;
17
+ arguments: Record<string, unknown>;
18
+ } | {
19
+ type: "tool_result";
20
+ id: string;
21
+ content: MachineConversationContentPart[];
22
+ error?: boolean;
23
+ } | {
24
+ type: "json";
25
+ value: unknown;
26
+ };
27
+ export interface MachineConversationTurnBody {
28
+ role: MachineConversationTurnRole;
29
+ content: MachineConversationContentPart[];
30
+ request?: Record<string, unknown>;
31
+ finish?: MachineAssistantFinish;
32
+ error?: string;
33
+ usage?: {
34
+ inputTokens: number;
35
+ outputTokens: number;
36
+ };
37
+ aside?: boolean;
38
+ }
39
+ export interface MachineConversationTurn {
40
+ id: string;
41
+ userId?: string;
42
+ createdAt: string;
43
+ body: MachineConversationTurnBody;
44
+ }
45
+ export interface MachineAgentDefinition {
46
+ system: string;
47
+ }
48
+ export type MachineAgentCreateInput = MachineAgentDefinition;
49
+ export interface MachineConversationMetadataInput {
50
+ name?: string;
51
+ visibility: MachineConversationVisibility;
52
+ }
53
+ export interface MachineConversationMetadata extends MachineConversationMetadataInput {
54
+ readonly createdAt: string;
55
+ readonly updatedAt: string;
56
+ readonly isRunning: boolean;
57
+ }
58
+ export interface MachineConversationState extends MachineConversationMetadata {
59
+ turns: MachineConversationTurn[];
60
+ }
61
+ export interface MachineConversationSummary extends MachineConversationMetadata {
62
+ id: string;
63
+ }
64
+ export type MachineRunEvent = {
65
+ type: "keepalive";
66
+ } | {
67
+ type: "output.delta";
68
+ content: MachineConversationContentPart;
69
+ } | {
70
+ type: "completed";
71
+ finish?: MachineAssistantFinish;
72
+ } | {
73
+ type: "cancelled";
74
+ } | {
75
+ type: "error";
76
+ code: string;
77
+ detail: string;
78
+ };
79
+ export interface AgentRequestOptions {
80
+ signal?: AbortSignal;
81
+ }
82
+ export interface MachineConversationCreateOptions extends AgentRequestOptions {
83
+ id?: string;
84
+ name?: string;
85
+ visibility?: MachineConversationVisibility;
86
+ }
87
+ export interface MachineConversationPromptOptions extends AgentRequestOptions {
88
+ effort?: MachinePromptEffort;
89
+ readOnly?: boolean;
90
+ attachments?: readonly MachineFilePath[];
91
+ responseSchema?: Record<string, unknown>;
92
+ replaceTurnId?: string;
93
+ }
94
+ export interface MachineConversationFollowOptions extends AgentRequestOptions {
95
+ onEvent?: (event: MachineRunEvent) => void;
96
+ }
97
+ export type MachineConversationCancelOptions = AgentRequestOptions;
98
+ export interface MachineConversation {
99
+ readonly id: string;
100
+ readonly agent: MachineAgent;
101
+ get(options?: AgentRequestOptions): Promise<MachineConversationState | undefined>;
102
+ listTurns(options?: AgentRequestOptions): Promise<MachineConversationTurn[]>;
103
+ replace(metadata: MachineConversationMetadataInput, options?: AgentRequestOptions): Promise<MachineConversationMetadata>;
104
+ prompt(text: string, options?: MachineConversationPromptOptions): Promise<void>;
105
+ follow(options?: MachineConversationFollowOptions): Promise<boolean>;
106
+ cancel(options?: MachineConversationCancelOptions): Promise<boolean>;
107
+ rename(name: string | null, options?: AgentRequestOptions): Promise<void>;
108
+ delete(options?: AgentRequestOptions): Promise<void>;
109
+ }
110
+ export interface MachineAgent {
111
+ readonly id: string;
112
+ readonly definition: MachineAgentDefinition;
113
+ conversation(id: string): MachineConversation;
114
+ createConversation(options?: MachineConversationCreateOptions): Promise<MachineConversation>;
115
+ listConversations(options?: AgentRequestOptions): Promise<MachineConversationSummary[]>;
116
+ replace(definition: MachineAgentDefinition, options?: AgentRequestOptions): Promise<MachineAgent>;
117
+ delete(options?: AgentRequestOptions): Promise<void>;
118
+ }
119
+ export interface MachineAgents {
120
+ list(options?: AgentRequestOptions): Promise<MachineAgent[]>;
121
+ get(id: string, options?: AgentRequestOptions): Promise<MachineAgent | undefined>;
122
+ create(id: string, definition: MachineAgentDefinition, options?: AgentRequestOptions): Promise<MachineAgent>;
123
+ }
124
+ interface AgentTransport {
125
+ request(path: string, init?: RequestInit, allowHttpErrors?: boolean): Promise<Response>;
126
+ requestJson<T>(path: string, init?: RequestInit): Promise<T>;
127
+ }
128
+ export declare function createMachineAgents(machinePath: string, transport: AgentTransport): MachineAgents;
129
+ export {};
130
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
package/dist/agents.js ADDED
@@ -0,0 +1,348 @@
1
+ import { throwProblemResponse } from "./problem.js";
2
+ const VALID_ID = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
3
+ const MAX_EVENT_BYTES = 1024 * 1024;
4
+ class MachineAgentState {
5
+ machinePath;
6
+ transport;
7
+ agents = new Map();
8
+ constructor(machinePath, transport) {
9
+ this.machinePath = machinePath;
10
+ this.transport = transport;
11
+ }
12
+ async list(options = {}) {
13
+ const { agents } = await this.transport.requestJson(`${this.machinePath}/agents`, { signal: options.signal });
14
+ return Promise.all(agents.map(async (id) => {
15
+ const agent = await this.get(id, options);
16
+ if (!agent)
17
+ throw new Error(`Listed agent ${id} is unavailable`);
18
+ return agent;
19
+ }));
20
+ }
21
+ async get(id, options = {}) {
22
+ validateId(id, "agentId");
23
+ const response = await this.transport.request(this.agentPath(id), { signal: options.signal }, true);
24
+ if (response.status === 404)
25
+ return undefined;
26
+ if (!response.ok)
27
+ await throwProblemResponse(response);
28
+ return this.agent(id, (await response.json()));
29
+ }
30
+ async create(id, definition, options = {}) {
31
+ validateId(id, "agentId");
32
+ validateDefinition(definition);
33
+ const written = await this.transport.requestJson(this.agentPath(id), jsonRequest("PUT", definition, options.signal));
34
+ return this.agent(id, written);
35
+ }
36
+ conversation(agent, id) {
37
+ validateId(id, "conversationId");
38
+ return agent.cachedConversation(id, () => new ConversationClient(agent, id, this));
39
+ }
40
+ async createConversation(agent, options = {}) {
41
+ const id = options.id ?? randomId();
42
+ const conversation = this.conversation(agent, id);
43
+ await conversation.replace({
44
+ ...(options.name ? { name: options.name } : {}),
45
+ visibility: options.visibility ?? "private",
46
+ }, options);
47
+ return conversation;
48
+ }
49
+ async listConversations(agent, options = {}) {
50
+ const collection = await this.transport.requestJson(`${this.agentPath(agent.id)}/conversations`, { signal: options.signal });
51
+ return Object.entries(collection.conversations).map(([id, metadata]) => ({
52
+ id,
53
+ ...metadata,
54
+ }));
55
+ }
56
+ async replaceAgent(agent, definition, options = {}) {
57
+ validateDefinition(definition);
58
+ const written = await this.transport.requestJson(this.agentPath(agent.id), jsonRequest("PUT", definition, options.signal));
59
+ agent.updateDefinition(written);
60
+ return agent;
61
+ }
62
+ async deleteAgent(agent, options = {}) {
63
+ await this.transport.request(this.agentPath(agent.id), {
64
+ method: "DELETE",
65
+ signal: options.signal,
66
+ });
67
+ this.agents.delete(agent.id);
68
+ }
69
+ async getConversation(agentId, conversationId, options) {
70
+ const response = await this.transport.request(this.conversationPath(agentId, conversationId), { signal: options.signal }, true);
71
+ if (response.status === 404)
72
+ return undefined;
73
+ if (!response.ok)
74
+ await throwProblemResponse(response);
75
+ const metadata = (await response.json());
76
+ const turns = await this.listTurns(agentId, conversationId, options);
77
+ return { ...metadata, turns };
78
+ }
79
+ async listTurns(agentId, conversationId, options = {}) {
80
+ const { turns } = await this.transport.requestJson(`${this.conversationPath(agentId, conversationId)}/turns`, { signal: options.signal });
81
+ return turns.map(turnFromWire);
82
+ }
83
+ replaceConversation(agentId, conversationId, metadata, options = {}) {
84
+ validateMetadata(metadata);
85
+ return this.transport.requestJson(this.conversationPath(agentId, conversationId), jsonRequest("PUT", metadata, options.signal));
86
+ }
87
+ async deleteConversation(agent, conversationId, options = {}) {
88
+ await this.transport.request(this.conversationPath(agent.id, conversationId), { method: "DELETE", signal: options.signal });
89
+ agent.forgetConversation(conversationId);
90
+ }
91
+ async prompt(agentId, conversationId, text, options) {
92
+ if (!text)
93
+ throw new Error("Prompt text is required");
94
+ const attachments = options.attachments ?? [];
95
+ for (const path of attachments)
96
+ validateAttachment(path);
97
+ const input = {
98
+ content: [
99
+ { type: "text", text },
100
+ ...attachments.map((path) => ({ type: "attachment", path })),
101
+ ],
102
+ ...(options.effort ? { effort: options.effort } : {}),
103
+ ...(options.readOnly !== undefined ? { readOnly: options.readOnly } : {}),
104
+ ...(options.responseSchema !== undefined
105
+ ? { responseSchema: options.responseSchema }
106
+ : {}),
107
+ ...(options.replaceTurnId
108
+ ? { replaceTurnId: options.replaceTurnId }
109
+ : {}),
110
+ };
111
+ const runPath = `${this.conversationPath(agentId, conversationId)}/run`;
112
+ await this.transport.request(runPath, jsonRequest("POST", input, options.signal));
113
+ }
114
+ async follow(agentId, conversationId, options = {}) {
115
+ const runPath = `${this.conversationPath(agentId, conversationId)}/run`;
116
+ const response = await this.transport.request(runPath, {
117
+ headers: { Accept: "application/x-ndjson" },
118
+ signal: options.signal,
119
+ }, true);
120
+ if (response.status === 404)
121
+ return false;
122
+ if (!response.ok)
123
+ await throwProblemResponse(response);
124
+ if (!response.body)
125
+ throw new Error("Current run response has no body");
126
+ await this.consumeRunEvents(response.body, options);
127
+ return true;
128
+ }
129
+ async cancel(agentId, conversationId, options = {}) {
130
+ const response = await this.transport.request(`${this.conversationPath(agentId, conversationId)}/run`, { method: "DELETE", signal: options.signal }, true);
131
+ if (response.status === 404)
132
+ return false;
133
+ if (!response.ok)
134
+ await throwProblemResponse(response);
135
+ return true;
136
+ }
137
+ async consumeRunEvents(body, options) {
138
+ const reader = body.getReader();
139
+ const decoder = new TextDecoder("utf-8", { fatal: true });
140
+ let buffered = "";
141
+ try {
142
+ while (true) {
143
+ const result = await reader.read();
144
+ buffered += decoder.decode(result.value, { stream: !result.done });
145
+ if (new TextEncoder().encode(buffered).byteLength > MAX_EVENT_BYTES) {
146
+ throw new Error("Current run event is too large");
147
+ }
148
+ const lines = buffered.split("\n");
149
+ buffered = lines.pop() ?? "";
150
+ for (const line of lines) {
151
+ const event = line ? parseRunEvent(line) : undefined;
152
+ if (event)
153
+ options.onEvent?.(event);
154
+ }
155
+ if (result.done)
156
+ break;
157
+ }
158
+ if (buffered.trim()) {
159
+ const event = parseRunEvent(buffered);
160
+ if (event)
161
+ options.onEvent?.(event);
162
+ }
163
+ }
164
+ finally {
165
+ reader.releaseLock();
166
+ }
167
+ }
168
+ agent(id, definition) {
169
+ let agent = this.agents.get(id);
170
+ if (!agent) {
171
+ agent = new AgentClient(id, definition, this);
172
+ this.agents.set(id, agent);
173
+ }
174
+ else {
175
+ agent.updateDefinition(definition);
176
+ }
177
+ return agent;
178
+ }
179
+ agentPath(agentId) {
180
+ return `${this.machinePath}/agents/${encodeURIComponent(agentId)}`;
181
+ }
182
+ conversationPath(agentId, conversationId) {
183
+ return `${this.agentPath(agentId)}/conversations/${encodeURIComponent(conversationId)}`;
184
+ }
185
+ }
186
+ class AgentClient {
187
+ id;
188
+ state;
189
+ currentDefinition;
190
+ conversations = new Map();
191
+ constructor(id, definition, state) {
192
+ this.id = id;
193
+ this.state = state;
194
+ this.currentDefinition = definition;
195
+ }
196
+ get definition() {
197
+ return { ...this.currentDefinition };
198
+ }
199
+ conversation(id) {
200
+ return this.state.conversation(this, id);
201
+ }
202
+ createConversation(options) {
203
+ return this.state.createConversation(this, options);
204
+ }
205
+ listConversations(options) {
206
+ return this.state.listConversations(this, options);
207
+ }
208
+ replace(definition, options) {
209
+ return this.state.replaceAgent(this, definition, options);
210
+ }
211
+ delete(options) {
212
+ return this.state.deleteAgent(this, options);
213
+ }
214
+ updateDefinition(definition) {
215
+ this.currentDefinition = definition;
216
+ }
217
+ cachedConversation(id, create) {
218
+ let conversation = this.conversations.get(id);
219
+ if (!conversation) {
220
+ conversation = create();
221
+ this.conversations.set(id, conversation);
222
+ }
223
+ return conversation;
224
+ }
225
+ forgetConversation(id) {
226
+ this.conversations.delete(id);
227
+ }
228
+ }
229
+ class ConversationClient {
230
+ agent;
231
+ id;
232
+ state;
233
+ constructor(agent, id, state) {
234
+ this.agent = agent;
235
+ this.id = id;
236
+ this.state = state;
237
+ }
238
+ get(options = {}) {
239
+ return this.state.getConversation(this.agent.id, this.id, options);
240
+ }
241
+ listTurns(options = {}) {
242
+ return this.state.listTurns(this.agent.id, this.id, options);
243
+ }
244
+ replace(metadata, options) {
245
+ return this.state.replaceConversation(this.agent.id, this.id, metadata, options);
246
+ }
247
+ prompt(text, options = {}) {
248
+ return this.state.prompt(this.agent.id, this.id, text, options);
249
+ }
250
+ follow(options) {
251
+ return this.state.follow(this.agent.id, this.id, options);
252
+ }
253
+ cancel(options) {
254
+ return this.state.cancel(this.agent.id, this.id, options);
255
+ }
256
+ async rename(name, options = {}) {
257
+ const current = await this.get(options);
258
+ if (!current)
259
+ throw new Error(`Conversation ${this.id} is unavailable`);
260
+ await this.replace({
261
+ ...(name ? { name } : {}),
262
+ visibility: current.visibility,
263
+ }, options);
264
+ }
265
+ delete(options) {
266
+ return this.state.deleteConversation(this.agent, this.id, options);
267
+ }
268
+ }
269
+ export function createMachineAgents(machinePath, transport) {
270
+ return new MachineAgentState(machinePath, transport);
271
+ }
272
+ function turnFromWire(turn) {
273
+ return {
274
+ id: turn.id,
275
+ ...(turn.userId ? { userId: turn.userId } : {}),
276
+ createdAt: turn.createdAt,
277
+ body: {
278
+ role: turn.role,
279
+ content: turn.content,
280
+ ...(turn.request ? { request: turn.request } : {}),
281
+ ...(turn.finish ? { finish: turn.finish } : {}),
282
+ ...(turn.error ? { error: turn.error } : {}),
283
+ ...(turn.usage ? { usage: turn.usage } : {}),
284
+ ...(turn.aside !== undefined ? { aside: turn.aside } : {}),
285
+ },
286
+ };
287
+ }
288
+ function parseRunEvent(line) {
289
+ const value = JSON.parse(line);
290
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
291
+ throw new Error("Current run event must be a JSON object");
292
+ }
293
+ const event = value;
294
+ if (event.type === "keepalive")
295
+ return { type: "keepalive" };
296
+ if (event.type === "output.delta" &&
297
+ event.content &&
298
+ typeof event.content === "object" &&
299
+ !Array.isArray(event.content)) {
300
+ return event;
301
+ }
302
+ if (event.type === "completed")
303
+ return event;
304
+ if (event.type === "cancelled")
305
+ return { type: "cancelled" };
306
+ if (event.type === "error" &&
307
+ typeof event.code === "string" &&
308
+ typeof event.detail === "string") {
309
+ return event;
310
+ }
311
+ return undefined;
312
+ }
313
+ function validateDefinition(definition) {
314
+ if (!definition || typeof definition.system !== "string") {
315
+ throw new Error("Agent system prompt must be a string");
316
+ }
317
+ }
318
+ function validateMetadata(metadata) {
319
+ if (metadata.visibility !== "private" && metadata.visibility !== "shared") {
320
+ throw new Error("Conversation visibility must be private or shared");
321
+ }
322
+ if (metadata.name !== undefined && typeof metadata.name !== "string") {
323
+ throw new Error("Conversation name must be a string");
324
+ }
325
+ }
326
+ function validateAttachment(path) {
327
+ const supported = path.startsWith("/space/") || path.startsWith("/rool-drive/");
328
+ if (!supported) {
329
+ throw new Error(`Prompt attachments must be under /space or /rool-drive: ${path}`);
330
+ }
331
+ }
332
+ function validateId(value, label) {
333
+ if (VALID_ID.test(value))
334
+ return;
335
+ throw new Error(`${label} must start with an alphanumeric character and contain at most 128 letters, digits, dots, hyphens, or underscores`);
336
+ }
337
+ function jsonRequest(method, body, signal) {
338
+ return {
339
+ method,
340
+ headers: { "Content-Type": "application/json" },
341
+ body: JSON.stringify(body),
342
+ signal,
343
+ };
344
+ }
345
+ function randomId() {
346
+ return globalThis.crypto.randomUUID();
347
+ }
348
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
@@ -1,101 +1,56 @@
1
- import type { AuthProvider, AuthTokens, AuthUser } from './types.js';
2
- import { type Logger } from './logger.js';
3
- export interface BaseTokenAuthConfig {
4
- /** Auth URL (e.g. https://rool.dev/auth). Injected by RoolClient if omitted. */
5
- authUrl?: string;
6
- /** Injected by RoolClient if omitted. */
7
- logger?: Logger;
8
- /** Injected by RoolClient if omitted, so auth-state reaches client events. */
9
- onAuthStateChanged?: (authenticated: boolean) => void;
1
+ import { type AuthEndpointConfig } from "./auth-url.js";
2
+ import type { RoolAuth, RoolRequestTokens } from "./types.js";
3
+ export interface TokenAuthConfig extends AuthEndpointConfig {
4
+ fetch?: typeof globalThis.fetch;
10
5
  }
11
- export declare abstract class BaseTokenAuthProvider implements AuthProvider {
12
- protected logger: Logger;
13
- private _authUrl;
14
- private _onAuthStateChanged;
6
+ export interface AuthTokenResponse {
7
+ id_token?: unknown;
8
+ refresh_token?: unknown;
9
+ rool_token?: unknown;
10
+ expires_in?: unknown;
11
+ }
12
+ export type EmailChangeErrorCode = "missing_token" | "invalid_token" | "missing_email" | "invalid_email" | "account_not_found" | "account_suspended" | "same_email" | "email_in_use" | "send_failed" | "internal_error";
13
+ export declare class EmailChangeError extends Error {
14
+ readonly code: EmailChangeErrorCode;
15
+ constructor(code: EmailChangeErrorCode, message: string);
16
+ }
17
+ export declare abstract class TokenAuth implements RoolAuth {
18
+ private readonly authUrl;
19
+ private readonly fetchRequest;
20
+ private readonly listeners;
15
21
  private refreshPromise;
16
- private refreshTimeoutId;
17
- private boundVisibilityHandler;
18
- constructor(config?: BaseTokenAuthConfig);
19
- setAuthUrl(url: string): void;
20
- setLogger(logger: Logger): void;
21
- setAuthStateChangedHandler(handler: (authenticated: boolean) => void): void;
22
- abstract initialize(): boolean;
23
- abstract login(appName: string, params?: Record<string, string>): Promise<void> | void;
24
- abstract signup(appName: string, params?: Record<string, string>): Promise<void> | void;
25
- /**
26
- * Check if user is currently authenticated.
27
- *
28
- * This reports identity (do we hold credentials), NOT server reachability.
29
- * It deliberately does not perform a network refresh: a backend outage must
30
- * not read as "logged out". A genuinely invalid/expired refresh token
31
- * surfaces later as a 401 on first real use, which clears tokens and fires
32
- * onAuthStateChanged(false) — the only path that ends the session.
33
- */
22
+ constructor(config?: TokenAuthConfig);
23
+ abstract initialize(): Promise<boolean>;
24
+ abstract login(appName: string, params?: Record<string, string>): Promise<void>;
25
+ abstract signup(appName: string, params?: Record<string, string>): Promise<void>;
34
26
  isAuthenticated(): Promise<boolean>;
35
- /**
36
- * Get current access token and rool token, refreshing if expired.
37
- * Returns undefined if not authenticated.
38
- */
39
- getTokens(): Promise<{
40
- accessToken: string;
41
- roolToken: string;
42
- } | undefined>;
43
- /**
44
- * Get auth identity decoded from JWT token.
45
- */
46
- getAuthUser(): AuthUser;
47
- /**
48
- * Complete an email verification flow. Exchanges a verify JWT (from the
49
- * verification email link) for a fresh token set and signs the user in.
50
- */
27
+ readonly getTokens: () => Promise<RoolRequestTokens | undefined>;
28
+ readonly logout: () => Promise<void>;
29
+ onAuthStateChanged(listener: (authenticated: boolean) => void): () => void;
51
30
  verify(token: string): Promise<boolean>;
52
- replaceTokens(tokens: AuthTokens): void;
53
- /**
54
- * Logout - clear all tokens and state.
55
- */
56
- logout(): void;
57
- /**
58
- * Destroy auth manager - clear refresh timers and listeners.
59
- */
60
- destroy(): void;
61
- /** Auth URL without trailing slash */
31
+ setPassword(password: string): Promise<void>;
32
+ requestEmailChange(newEmail: string): Promise<void>;
62
33
  protected get authBaseUrl(): string;
63
- protected notifyAuthState(authenticated: boolean): void;
64
- /** Persist a fresh token set and (re)arm the background refresh timer. */
65
- protected acceptTokens(accessToken: string, refreshToken: string | null, roolToken: string | null, expiresAt: number): void;
66
- /** Arm auto-refresh + visibility re-scheduling. Call from initialize(). */
67
- protected initBase(): void;
68
- /**
69
- * Overridable hook: clear subclass-owned transient state on logout/cancel
70
- * (e.g. an in-flight OAuth `state` or PKCE verifier). No-op by default.
71
- */
34
+ protected fetchAuth(path: string, init: RequestInit): Promise<Response>;
35
+ protected acceptTokenResponse(data: AuthTokenResponse, fallback?: {
36
+ refreshToken?: string | null;
37
+ roolToken?: string | null;
38
+ }): boolean;
39
+ protected emitAuthState(authenticated: boolean): void;
72
40
  protected clearTransientState(): void;
73
- protected get storagePrefix(): string;
74
- /** Build a storage key scoped to this auth endpoint. */
75
41
  protected keyFor(name: string): string;
76
- protected get storageKeys(): {
77
- readonly access: `${string}access_token`;
78
- readonly refresh: `${string}refresh_token`;
79
- readonly rool: `${string}rool_token`;
80
- readonly expiresAt: `${string}token_expires_at`;
81
- };
82
42
  protected readString(key: string): string | null;
83
43
  protected writeString(key: string, value: string): void;
84
44
  protected removeString(key: string): void;
85
- protected scheduleTokenRefresh(): void;
86
- protected writeTokens(accessToken: string | null, refreshToken: string | null, expiresAt: number | null): void;
87
- protected writeRoolToken(token: string | null): void;
88
- protected clearTokens(): void;
89
- protected readAccessToken(): string | null;
90
- protected readRoolToken(): string;
91
- protected readExpiresAt(): number | null;
92
- /**
93
- * Get a short hash of the auth URL for scoping storage by endpoint.
94
- */
45
+ private get storageKeys();
95
46
  private get endpointHash();
96
- private tryRefreshToken;
97
- private listenForVisibility;
98
- private cancelScheduledRefresh;
99
- private decodeAuthUser;
47
+ private readAccessToken;
48
+ private readRoolToken;
49
+ private readExpiresAt;
50
+ private writeTokens;
51
+ private writeOrRemove;
52
+ private clearTokens;
53
+ private refresh;
54
+ private performRefresh;
100
55
  }
101
56
  //# sourceMappingURL=auth-base.d.ts.map