@robono/server 0.4.0 → 0.6.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/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.0
4
+
5
+ - Fixed `health()` to use the production `GET /health` contract.
6
+ - Added normalized connection peers and complete endpoint-neutral connection and message namespaces.
7
+ - Added app-to-app profile propagation, delta message cursors, push diagnostics through the adapter, and an adapter smoke-test command.
8
+ - Added atomic webhook event claims, stronger webhook validation, paginated receipt authorization, and sanitized server errors.
9
+ - Corrected the generated OpenAPI contract and removed misleading package source links.
10
+
11
+ ## 0.5.0
12
+
13
+ - Added typed message and standalone speech transform contracts, operation-level billing details, generated-media URL expiration, and typed webhook event unions.
14
+ - Added protected adapter routes for message transforms and direct-endpoint delivered, read, and heard receipts.
15
+ - Added transform completion and failure webhook contracts and API version `2026-07-25`.
16
+ - Added transform-aware request timeouts so synchronous language work is not cut off by the ordinary API timeout.
17
+
3
18
  ## 0.4.0
4
19
 
5
20
  - Added one directory-driven `connections.connect()` method and one endpoint-neutral `messages.send()` method.
package/README.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  Headless Node/TypeScript SDK for connecting an existing app or closed ecosystem to Robono Bridge. It provides typed API calls, bounded retries, idempotency, restriction checks, speech tools, webhook verification, and the protected client adapter.
4
4
 
5
+ ## License in plain English
6
+
7
+ You may use this SDK to build, test, and operate an authorized application that connects to Robono. You may not redistribute it as a standalone SDK, use it to bypass Robono, or use it to build a competing bridge service. Service access, pricing, maintenance, and support are separate. If you and Robono sign a written agreement that expressly replaces this SDK license, that agreement controls to the extent it says so. The included `LICENSE` is the complete, controlling text.
8
+
5
9
  Robono's own app and third-party connected apps appear as endpoints in the same directory. Your product keeps its existing accounts, screens, storage, safety rules, and notifications.
6
10
 
7
11
  ## Install
@@ -16,7 +20,7 @@ The package is ESM-only and supports Node.js 18+ and Deno 2.x through npm compat
16
20
  import {
17
21
  createRobonoBackendAdapter,
18
22
  RobonoServer,
19
- } from "npm:@robono/server@0.4.0";
23
+ } from "npm:@robono/server@0.6.0";
20
24
  ```
21
25
 
22
26
  ## Discover endpoints
@@ -67,6 +71,43 @@ const result = await robono.messages.send({
67
71
 
68
72
  The normalized `connection.connection_id` is valid for SDK state and subsequent unified calls. Endpoint-specific methods remain available for integrations that need lower-level control.
69
73
 
74
+ The unified send validates negotiated message type, text length, media size, duration, and MIME type before making the API request. Validate capabilities before uploading media so unsupported work fails early.
75
+
76
+ New server-only integrations can use the normalized namespaces for the rest of the lifecycle without branching on endpoint type:
77
+
78
+ ```ts
79
+ const page = await robono.endpointConnections.list({
80
+ external_user_id: user.id,
81
+ limit: 50,
82
+ });
83
+
84
+ const history = await robono.endpointMessages.list({
85
+ connection,
86
+ external_user_id: user.id,
87
+ limit: 50,
88
+ });
89
+
90
+ await robono.endpointMessages.mark({
91
+ connection,
92
+ external_user_id: user.id,
93
+ message_id: history.messages[0].message_id,
94
+ event: "read",
95
+ });
96
+
97
+ await robono.endpointConnections.update({
98
+ connection,
99
+ external_user_id: user.id,
100
+ external_profile: currentProfile,
101
+ });
102
+
103
+ await robono.endpointConnections.disconnect({
104
+ connection,
105
+ external_user_id: user.id,
106
+ });
107
+ ```
108
+
109
+ Use `page.next_cursor` and `history.next_before` for older pages. Use `history.sync_cursor` as the next `after` value when checking only for newer messages.
110
+
70
111
  ## Protect client operations
71
112
 
72
113
  Keep the API key on your server. Mount the adapter at `/robono/*` behind your existing authentication:
@@ -86,7 +127,30 @@ const handleRobono = createRobonoBackendAdapter({
86
127
 
87
128
  `authenticate` proves the user's identity. The required `authorize` callback decides whether that user may perform the exact operation. Enforce relationship state, account rules, guardian approval when applicable, messaging restrictions, and processing allowances. Missing or false decisions are denied.
88
129
 
89
- The adapter uses standard Web `Request` and `Response` objects, so it can be mounted in Express, Fastify, Next.js, serverless functions, Supabase Edge Functions, or another compatible backend.
130
+ The adapter uses standard Web `Request` and `Response` objects, so it can be mounted in Express, Fastify, Next.js, serverless functions, Supabase Edge Functions, or another compatible backend. Exact Express, Next.js, Supabase Edge, and Deno mounts are available in the website documentation.
131
+
132
+ ## Language and speech tools
133
+
134
+ The typed transform methods cover transcription, translation, TTS, translated voice, and existing-message transforms:
135
+
136
+ ```ts
137
+ const result = await robono.transforms.speech({
138
+ input: {
139
+ type: "audio",
140
+ source_url: audioUrl,
141
+ mime_type: "audio/m4a",
142
+ language: "en",
143
+ },
144
+ outputs: ["transcript", "translated_voice"],
145
+ target_language: "es",
146
+ }, { idempotencyKey: requestId });
147
+
148
+ console.log(result.status); // "completed"
149
+ console.log(result.artifacts); // Typed transcript and generated voice
150
+ console.log(result.billing.operations); // Exact transcription/translation/TTS steps
151
+ ```
152
+
153
+ Transforms complete synchronously. SDK errors report request failures, while signed `transform.completed` and `transform.failed` webhooks provide an auditable server event. Generated media URLs include `source_url_expires_at` and currently expire after ten minutes. Reuse the same idempotency key when retrying the same operation; cached message artifacts are not charged again.
90
154
 
91
155
  ## Verify webhooks
92
156
 
@@ -99,15 +163,28 @@ const verified = await verifyRobonoWebhook(
99
163
  rawBody,
100
164
  request.headers,
101
165
  process.env.ROBONO_WEBHOOK_SECRET!,
102
- { hasProcessedEvent: eventId => events.has(eventId) },
166
+ { claimEvent: eventId => eventStore.insertIfAbsent(eventId) },
103
167
  );
104
168
 
105
169
  if (!verified.duplicate) {
106
- await existingMessagingSystem.handle(verified.event);
170
+ switch (verified.event.event) {
171
+ case "connection.status_changed":
172
+ case "bridge.connection_status_changed":
173
+ await existingMessagingSystem.updateConnection(verified.event);
174
+ break;
175
+ case "message.created":
176
+ case "bridge.message_created":
177
+ await existingMessagingSystem.storeMessage(verified.event);
178
+ break;
179
+ case "transform.completed":
180
+ case "transform.failed":
181
+ await existingMessagingSystem.updateTransform(verified.event);
182
+ break;
183
+ }
107
184
  }
108
185
  ```
109
186
 
110
- Store processed event IDs so repeated delivery is harmless.
187
+ `verified.event` is a discriminated `RobonoWebhookEvent` union covering connection, message, receipt, guardian, transform, failure, and diagnostic events. `claimEvent` must atomically return `true` only for the first delivery so concurrent retries cannot process the same event twice.
111
188
 
112
189
  ## Run the sandbox lifecycle
113
190
 
@@ -120,4 +197,13 @@ npx --package @robono/server robono-sandbox-test
120
197
 
121
198
  The test runs the stateful network-to-network lifecycle, then validates the same unified connection and send methods against the test-only Robono endpoint. The Robono endpoint check cannot reach real users, SMS, billing, or production delivery.
122
199
 
200
+ The lifecycle runner tests Robono's sandbox API, not your authentication, CORS, or deployed adapter. Test those separately:
201
+
202
+ ```bash
203
+ ROBONO_ADAPTER_URL=https://your-backend.example \
204
+ ROBONO_ADAPTER_ACCESS_TOKEN=your_test_user_token \
205
+ ROBONO_ADAPTER_EXPECTED_ORIGIN=https://your-app.example \
206
+ npx --package @robono/server robono-adapter-test
207
+ ```
208
+
123
209
  See the complete build flow, REST reference, platform support, capabilities, delivery behavior, and testing guide at [robono.com/docs](https://robono.com/docs).
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=adapter-smoke-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-smoke-test.d.ts","sourceRoot":"","sources":["../src/adapter-smoke-test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env node
2
+ const baseUrl = requiredEnvironment("ROBONO_ADAPTER_URL").replace(/\/+$/, "");
3
+ const accessToken = requiredEnvironment("ROBONO_ADAPTER_ACCESS_TOKEN");
4
+ const expectedOrigin = process.env.ROBONO_ADAPTER_EXPECTED_ORIGIN?.trim();
5
+ const route = `${baseUrl}/robono/networks`;
6
+ await check("Unauthenticated requests are rejected", async () => {
7
+ const response = await request(route, {});
8
+ if (response.status !== 401) {
9
+ throw new Error(`expected HTTP 401, received ${response.status}`);
10
+ }
11
+ });
12
+ await check("Authenticated directory request succeeds", async () => {
13
+ const response = await request(route, {
14
+ authorization: `Bearer ${accessToken}`,
15
+ });
16
+ const payload = await response.json().catch(() => ({}));
17
+ if (!response.ok) {
18
+ throw new Error(payload.error?.message ?? `received HTTP ${response.status}`);
19
+ }
20
+ if (!Array.isArray(payload.directory)) {
21
+ throw new Error("response does not contain a directory");
22
+ }
23
+ });
24
+ if (expectedOrigin) {
25
+ await check("Configured browser origin is allowed", async () => {
26
+ const response = await fetchWithTimeout(route, {
27
+ method: "OPTIONS",
28
+ headers: {
29
+ origin: expectedOrigin,
30
+ "access-control-request-method": "POST",
31
+ "access-control-request-headers": "authorization,content-type",
32
+ },
33
+ });
34
+ const allowed = response.headers.get("access-control-allow-origin");
35
+ if (allowed !== expectedOrigin) {
36
+ throw new Error(`expected Access-Control-Allow-Origin ${expectedOrigin}, received ${allowed ?? "no header"}`);
37
+ }
38
+ });
39
+ }
40
+ console.log("Robono adapter smoke test passed.");
41
+ async function request(url, headers) {
42
+ return fetchWithTimeout(url, {
43
+ method: "POST",
44
+ headers: { "content-type": "application/json", ...headers },
45
+ body: "{}",
46
+ });
47
+ }
48
+ async function fetchWithTimeout(url, init) {
49
+ const controller = new AbortController();
50
+ const timeout = setTimeout(() => controller.abort(), 15_000);
51
+ try {
52
+ return await fetch(url, { ...init, signal: controller.signal });
53
+ }
54
+ finally {
55
+ clearTimeout(timeout);
56
+ }
57
+ }
58
+ async function check(label, operation) {
59
+ try {
60
+ await operation();
61
+ console.log(`PASS ${label}`);
62
+ }
63
+ catch (error) {
64
+ console.error(`FAIL ${label}: ${error instanceof Error ? error.message : "unknown error"}`);
65
+ process.exitCode = 1;
66
+ throw error;
67
+ }
68
+ }
69
+ function requiredEnvironment(name) {
70
+ const value = process.env[name]?.trim();
71
+ if (!value) {
72
+ console.error(`${name} is required.`);
73
+ process.exit(1);
74
+ }
75
+ return value;
76
+ }
77
+ export {};
78
+ //# sourceMappingURL=adapter-smoke-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter-smoke-test.js","sourceRoot":"","sources":["../src/adapter-smoke-test.ts"],"names":[],"mappings":"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"}
package/dist/adapter.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { RobonoServer } from "./client.js";
2
2
  import type { JsonObject } from "./types.js";
3
- export type RobonoAuthorizationAction = "networks.list" | "network_connections.request" | "network_connections.respond" | "network_connections.list" | "network_connections.disconnect" | "network_connections.update" | "robono_connections.create" | "robono_connections.list" | "robono_connections.update_profile" | "robono_connections.disconnect" | "network_messages.send" | "network_messages.list" | "network_messages.mark" | "robono_messages.send" | "robono_messages.list" | "speech_transforms.create";
3
+ export type RobonoAuthorizationAction = "networks.list" | "network_connections.request" | "network_connections.respond" | "network_connections.list" | "network_connections.disconnect" | "network_connections.update" | "robono_connections.create" | "robono_connections.list" | "robono_connections.update_profile" | "robono_connections.disconnect" | "network_messages.send" | "network_messages.list" | "network_messages.mark" | "robono_messages.send" | "robono_messages.list" | "robono_messages.mark" | "message_transforms.create" | "speech_transforms.create" | "push_diagnostics.report";
4
4
  export interface RobonoAuthorizationContext {
5
5
  action: RobonoAuthorizationAction;
6
6
  userId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf,6BAA6B,GAC7B,6BAA6B,GAC7B,0BAA0B,GAC1B,gCAAgC,GAChC,4BAA4B,GAC5B,2BAA2B,GAC3B,yBAAyB,GACzB,mCAAmC,GACnC,+BAA+B,GAC/B,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,0BAA0B,CAAC;AAE/B,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,SAAS,EAAE,CACT,OAAO,EAAE,0BAA0B,KAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAqBD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,IAIP,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CA4RlE"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,yBAAyB,GACjC,eAAe,GACf,6BAA6B,GAC7B,6BAA6B,GAC7B,0BAA0B,GAC1B,gCAAgC,GAChC,4BAA4B,GAC5B,2BAA2B,GAC3B,yBAAyB,GACzB,mCAAmC,GACnC,+BAA+B,GAC/B,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,GACtB,2BAA2B,GAC3B,0BAA0B,GAC1B,yBAAyB,CAAC;AAE9B,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,yBAAyB,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7D,SAAS,EAAE,CACT,OAAO,EAAE,0BAA0B,KAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAwBD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,IAIP,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CAsXlE"}
package/dist/adapter.js CHANGED
@@ -15,7 +15,10 @@ const authorizationActions = {
15
15
  "/network-messages/events": "network_messages.mark",
16
16
  "/messages": "robono_messages.send",
17
17
  "/messages/list": "robono_messages.list",
18
+ "/message-events": "robono_messages.mark",
19
+ "/transforms/message": "message_transforms.create",
18
20
  "/transforms/speech": "speech_transforms.create",
21
+ "/push-diagnostics/events": "push_diagnostics.report",
19
22
  };
20
23
  export function createRobonoBackendAdapter(options) {
21
24
  const maxRequestBytes = positiveInteger(options.maxRequestBytes, 1_000_000);
@@ -46,7 +49,11 @@ export function createRobonoBackendAdapter(options) {
46
49
  if (!authorized) {
47
50
  return responseError(403, "operation_not_authorized", "The child app did not authorize this operation for the signed-in user.", requestId);
48
51
  }
49
- const requestOptions = { requestId };
52
+ const idempotencyKey = optionalIdempotencyKey(request.headers.get("idempotency-key"));
53
+ const requestOptions = {
54
+ requestId,
55
+ ...(idempotencyKey ? { idempotencyKey } : {}),
56
+ };
50
57
  if (path === "/networks") {
51
58
  return responseJson(await options.robono.directory.list({}, requestOptions));
52
59
  }
@@ -70,11 +77,15 @@ export function createRobonoBackendAdapter(options) {
70
77
  const status = optionalString(body.status);
71
78
  const limit = optionalNumber(body.limit);
72
79
  const before = optionalString(body.before);
80
+ const bridgeConnectionId = optionalString(body.bridge_connection_id);
73
81
  return responseJson(await options.robono.networkConnections.list({
74
82
  external_user_id: externalUserId,
75
83
  ...(status ? { status } : {}),
76
84
  ...(limit ? { limit } : {}),
77
85
  ...(before ? { before } : {}),
86
+ ...(bridgeConnectionId
87
+ ? { bridge_connection_id: bridgeConnectionId }
88
+ : {}),
78
89
  }, requestOptions));
79
90
  }
80
91
  if (path === "/network-connections/disconnect") {
@@ -104,11 +115,13 @@ export function createRobonoBackendAdapter(options) {
104
115
  const status = optionalString(body.status);
105
116
  const limit = optionalNumber(body.limit);
106
117
  const before = optionalString(body.before);
118
+ const connectionId = optionalString(body.connection_id);
107
119
  return responseJson(await options.robono.connections.list({
108
120
  external_user_id: externalUserId,
109
121
  ...(status ? { status } : {}),
110
122
  ...(limit ? { limit } : {}),
111
123
  ...(before ? { before } : {}),
124
+ ...(connectionId ? { connection_id: connectionId } : {}),
112
125
  }, requestOptions));
113
126
  }
114
127
  if (path === "/connections/profile") {
@@ -137,21 +150,25 @@ export function createRobonoBackendAdapter(options) {
137
150
  if (path === "/messages/list") {
138
151
  const limit = optionalNumber(body.limit);
139
152
  const before = optionalString(body.before);
153
+ const after = optionalString(body.after);
140
154
  return responseJson(await options.robono.messages.listFromRobono({
141
155
  connection_id: requiredString(body.connection_id, "connection_id"),
142
156
  external_user_id: externalUserId,
143
157
  ...(limit ? { limit } : {}),
144
158
  ...(before ? { before } : {}),
159
+ ...(after ? { after } : {}),
145
160
  }, requestOptions));
146
161
  }
147
162
  if (path === "/network-messages/list") {
148
163
  const limit = optionalNumber(body.limit);
149
164
  const before = optionalString(body.before);
165
+ const after = optionalString(body.after);
150
166
  return responseJson(await options.robono.messages.list({
151
167
  bridge_connection_id: requiredString(body.bridge_connection_id, "bridge_connection_id"),
152
168
  external_user_id: externalUserId,
153
169
  ...(limit ? { limit } : {}),
154
170
  ...(before ? { before } : {}),
171
+ ...(after ? { after } : {}),
155
172
  }, requestOptions));
156
173
  }
157
174
  if (path === "/network-messages/events") {
@@ -173,22 +190,61 @@ export function createRobonoBackendAdapter(options) {
173
190
  external_message_id: requiredString(body.external_message_id, "external_message_id"),
174
191
  }, requestOptions));
175
192
  }
193
+ if (path === "/message-events") {
194
+ const occurredAt = optionalString(body.occurred_at);
195
+ return responseJson(await options.robono.messages.markFromRobono({
196
+ connection_id: requiredString(body.connection_id, "connection_id"),
197
+ robono_message_id: requiredString(body.robono_message_id, "robono_message_id"),
198
+ external_user_id: externalUserId,
199
+ event: requiredEvent(body.event),
200
+ ...(occurredAt ? { occurred_at: occurredAt } : {}),
201
+ }, requestOptions));
202
+ }
176
203
  if (path === "/transforms/speech") {
177
204
  return responseJson(await options.robono.transforms.speech(body, requestOptions));
178
205
  }
179
- throw new Error("Authorized adapter route has no handler.");
206
+ if (path === "/transforms/message") {
207
+ return responseJson(await options.robono.transforms.message(body, requestOptions));
208
+ }
209
+ if (path === "/push-diagnostics/events") {
210
+ const failureStage = optionalString(body.failure_stage);
211
+ const failureReason = optionalString(body.failure_reason);
212
+ const platform = optionalString(body.platform);
213
+ const provider = optionalString(body.provider);
214
+ const appVersion = optionalString(body.app_version);
215
+ const detail = optionalString(body.detail);
216
+ return responseJson(await options.robono.diagnostics.reportPush({
217
+ diagnostic_id: requiredString(body.diagnostic_id, "diagnostic_id"),
218
+ diagnostic_token: requiredString(body.diagnostic_token, "diagnostic_token"),
219
+ stage: requiredPushDiagnosticStage(body.stage),
220
+ ...(failureStage ? { failure_stage: failureStage } : {}),
221
+ ...(failureReason ? { failure_reason: failureReason } : {}),
222
+ ...(platform ? { platform } : {}),
223
+ ...(provider ? { provider } : {}),
224
+ ...(appVersion ? { app_version: appVersion } : {}),
225
+ ...(detail ? { detail } : {}),
226
+ }, requestOptions));
227
+ }
228
+ throw new AdapterRequestError(500, "adapter_handler_missing", "Authorized adapter route has no handler.");
180
229
  }
181
230
  catch (error) {
231
+ if (error instanceof AdapterRequestError) {
232
+ return responseError(error.status, error.code, error.message, requestId);
233
+ }
182
234
  if (error instanceof RobonoError) {
235
+ const status = error.status ??
236
+ (error.code === "request_timeout" ? 504 : 502);
183
237
  return responseJson({
184
238
  error: { code: error.code, message: error.message },
185
239
  request_id: error.requestId ?? requestId,
186
240
  ...(error.fields ? { fields: error.fields } : {}),
187
- }, error.status ?? 400);
241
+ }, status);
188
242
  }
189
- return responseError(400, "adapter_request_failed", error instanceof Error
190
- ? error.message
191
- : "Robono adapter request failed.", requestId);
243
+ console.error("Unexpected Robono adapter failure", {
244
+ request_id: requestId,
245
+ error,
246
+ });
247
+ return responseError(500, "adapter_internal_error", "The Robono adapter could not complete the request.", requestId);
192
248
  }
193
249
  };
194
250
  }
@@ -210,38 +266,54 @@ function inputWithAuthenticatedUser(action, input, userId) {
210
266
  action === "network_messages.list" ||
211
267
  action === "network_messages.mark" ||
212
268
  action === "robono_messages.send"
213
- || action === "robono_messages.list") {
269
+ || action === "robono_messages.list"
270
+ || action === "robono_messages.mark"
271
+ || action === "message_transforms.create"
272
+ || action === "push_diagnostics.report") {
214
273
  return { ...input, external_user_id: userId };
215
274
  }
216
275
  return { ...input };
217
276
  }
218
277
  async function assertConnectionBelongsToUser(robono, connectionId, externalUserId, requestId) {
219
- const result = await robono.networkConnections.list({
220
- external_user_id: externalUserId,
221
- limit: 100,
222
- }, { requestId });
223
- if (!result.connections.some((item) => item.bridge_connection_id === connectionId)) {
224
- throw new RobonoError("Connection was not found for this child app user.", {
225
- code: "connection_not_found",
226
- status: 404,
227
- requestId,
228
- });
278
+ let before;
279
+ for (let page = 0; page < 1_000; page += 1) {
280
+ const result = await robono.networkConnections.list({
281
+ external_user_id: externalUserId,
282
+ limit: 100,
283
+ ...(before ? { before } : {}),
284
+ }, { requestId });
285
+ if (result.connections.some((item) => item.bridge_connection_id === connectionId))
286
+ return;
287
+ if (!result.has_more || !result.next_before)
288
+ break;
289
+ before = result.next_before;
229
290
  }
291
+ throw new RobonoError("Connection was not found for this child app user.", {
292
+ code: "connection_not_found",
293
+ status: 404,
294
+ requestId,
295
+ });
230
296
  }
231
297
  async function readBody(request, maxRequestBytes) {
232
298
  const length = Number(request.headers.get("content-length") ?? "0");
233
299
  if (Number.isFinite(length) && length > maxRequestBytes) {
234
- throw new Error("Request body is too large.");
300
+ throw new AdapterRequestError(413, "request_body_too_large", "Request body is too large.");
235
301
  }
236
302
  const text = await request.text();
237
303
  if (new TextEncoder().encode(text).byteLength > maxRequestBytes) {
238
- throw new Error("Request body is too large.");
304
+ throw new AdapterRequestError(413, "request_body_too_large", "Request body is too large.");
239
305
  }
240
306
  if (!text.trim())
241
307
  return {};
242
- const parsed = JSON.parse(text);
308
+ let parsed;
309
+ try {
310
+ parsed = JSON.parse(text);
311
+ }
312
+ catch {
313
+ throw new AdapterRequestError(400, "invalid_json", "Request body must contain valid JSON.");
314
+ }
243
315
  if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
244
- throw new Error("Request body must be a JSON object.");
316
+ throw new AdapterRequestError(400, "invalid_request_body", "Request body must be a JSON object.");
245
317
  }
246
318
  return parsed;
247
319
  }
@@ -253,13 +325,23 @@ function normalizedAdapterPath(pathname) {
253
325
  }
254
326
  function requiredString(value, field) {
255
327
  const normalized = optionalString(value);
256
- if (!normalized)
257
- throw new Error(`${field} is required.`);
328
+ if (!normalized) {
329
+ throw new AdapterRequestError(422, "required_field_missing", `${field} is required.`);
330
+ }
258
331
  return normalized;
259
332
  }
260
333
  function optionalString(value) {
261
334
  return typeof value === "string" && value.trim() ? value.trim() : undefined;
262
335
  }
336
+ function optionalIdempotencyKey(value) {
337
+ if (!value)
338
+ return undefined;
339
+ const key = value.trim();
340
+ if (key.length < 8 || key.length > 200) {
341
+ throw new AdapterRequestError(422, "idempotency_key_invalid", "Idempotency-Key must contain 8 to 200 characters.");
342
+ }
343
+ return key;
344
+ }
263
345
  function optionalNumber(value) {
264
346
  return typeof value === "number" && Number.isFinite(value)
265
347
  ? value
@@ -269,13 +351,30 @@ function requiredEvent(value) {
269
351
  if (value === "delivered" || value === "read" || value === "heard") {
270
352
  return value;
271
353
  }
272
- throw new Error("event must be delivered, read, or heard.");
354
+ throw new AdapterRequestError(422, "event_invalid", "event must be delivered, read, or heard.");
273
355
  }
274
356
  function requiredConnectionResponseStatus(value) {
275
357
  if (value === "accepted" || value === "rejected" || value === "not_found") {
276
358
  return value;
277
359
  }
278
- throw new Error("status must be accepted, rejected, or not_found.");
360
+ throw new AdapterRequestError(422, "connection_status_invalid", "status must be accepted, rejected, or not_found.");
361
+ }
362
+ function requiredPushDiagnosticStage(value) {
363
+ if (value === "provider_accepted" || value === "device_received" ||
364
+ value === "content_fetched" || value === "rendered" ||
365
+ value === "polling_recovered" || value === "failed")
366
+ return value;
367
+ throw new AdapterRequestError(422, "push_diagnostic_stage_invalid", "stage is not a supported push diagnostic stage.");
368
+ }
369
+ class AdapterRequestError extends Error {
370
+ status;
371
+ code;
372
+ constructor(status, code, message) {
373
+ super(message);
374
+ this.status = status;
375
+ this.code = code;
376
+ this.name = "AdapterRequestError";
377
+ }
279
378
  }
280
379
  function positiveInteger(value, fallback) {
281
380
  return typeof value === "number" && Number.isFinite(value) && value > 0
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}