@robono/server 0.5.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,13 @@
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
+
3
11
  ## 0.5.0
4
12
 
5
13
  - Added typed message and standalone speech transform contracts, operation-level billing details, generated-media URL expiration, and typed webhook event unions.
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.5.0";
23
+ } from "npm:@robono/server@0.6.0";
20
24
  ```
21
25
 
22
26
  ## Discover endpoints
@@ -69,6 +73,41 @@ The normalized `connection.connection_id` is valid for SDK state and subsequent
69
73
 
70
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.
71
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
+
72
111
  ## Protect client operations
73
112
 
74
113
  Keep the API key on your server. Mount the adapter at `/robono/*` behind your existing authentication:
@@ -124,7 +163,7 @@ const verified = await verifyRobonoWebhook(
124
163
  rawBody,
125
164
  request.headers,
126
165
  process.env.ROBONO_WEBHOOK_SECRET!,
127
- { hasProcessedEvent: eventId => events.has(eventId) },
166
+ { claimEvent: eventId => eventStore.insertIfAbsent(eventId) },
128
167
  );
129
168
 
130
169
  if (!verified.duplicate) {
@@ -145,7 +184,7 @@ if (!verified.duplicate) {
145
184
  }
146
185
  ```
147
186
 
148
- `verified.event` is a discriminated `RobonoWebhookEvent` union covering connection, message, receipt, guardian, transform, failure, and diagnostic events. 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.
149
188
 
150
189
  ## Run the sandbox lifecycle
151
190
 
@@ -158,4 +197,13 @@ npx --package @robono/server robono-sandbox-test
158
197
 
159
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.
160
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
+
161
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":";AAEA,MAAM,OAAO,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC9E,MAAM,WAAW,GAAG,mBAAmB,CAAC,6BAA6B,CAAC,CAAC;AACvE,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,IAAI,EAAE,CAAC;AAC1E,MAAM,KAAK,GAAG,GAAG,OAAO,kBAAkB,CAAC;AAE3C,MAAM,KAAK,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;IAC9D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,MAAM,KAAK,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;IACjE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,EAAE;QACpC,aAAa,EAAE,UAAU,WAAW,EAAE;KACvC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAGrD,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,iBAAiB,QAAQ,CAAC,MAAM,EAAE,CAC7D,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,cAAc,EAAE,CAAC;IACnB,MAAM,KAAK,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE;YAC7C,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE;gBACP,MAAM,EAAE,cAAc;gBACtB,+BAA+B,EAAE,MAAM;gBACvC,gCAAgC,EAAE,4BAA4B;aAC/D;SACF,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACpE,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CACb,wCAAwC,cAAc,cACpD,OAAO,IAAI,WACb,EAAE,CACH,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;AAEjD,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,OAA+B;IACjE,OAAO,gBAAgB,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO,EAAE;QAC3D,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,GAAW,EAAE,IAAiB;IAC5D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,KAAa,EAAE,SAA8B;IAChE,IAAI,CAAC;QACH,MAAM,SAAS,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,QAAQ,KAAK,KACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAC3C,EAAE,CACH,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,eAAe,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
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" | "robono_messages.mark" | "message_transforms.create" | "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,sBAAsB,GACtB,2BAA2B,GAC3B,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;AAuBD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,2BAA2B,IAIP,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CA2TlE"}
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
@@ -18,6 +18,7 @@ const authorizationActions = {
18
18
  "/message-events": "robono_messages.mark",
19
19
  "/transforms/message": "message_transforms.create",
20
20
  "/transforms/speech": "speech_transforms.create",
21
+ "/push-diagnostics/events": "push_diagnostics.report",
21
22
  };
22
23
  export function createRobonoBackendAdapter(options) {
23
24
  const maxRequestBytes = positiveInteger(options.maxRequestBytes, 1_000_000);
@@ -48,7 +49,11 @@ export function createRobonoBackendAdapter(options) {
48
49
  if (!authorized) {
49
50
  return responseError(403, "operation_not_authorized", "The child app did not authorize this operation for the signed-in user.", requestId);
50
51
  }
51
- const requestOptions = { requestId };
52
+ const idempotencyKey = optionalIdempotencyKey(request.headers.get("idempotency-key"));
53
+ const requestOptions = {
54
+ requestId,
55
+ ...(idempotencyKey ? { idempotencyKey } : {}),
56
+ };
52
57
  if (path === "/networks") {
53
58
  return responseJson(await options.robono.directory.list({}, requestOptions));
54
59
  }
@@ -72,11 +77,15 @@ export function createRobonoBackendAdapter(options) {
72
77
  const status = optionalString(body.status);
73
78
  const limit = optionalNumber(body.limit);
74
79
  const before = optionalString(body.before);
80
+ const bridgeConnectionId = optionalString(body.bridge_connection_id);
75
81
  return responseJson(await options.robono.networkConnections.list({
76
82
  external_user_id: externalUserId,
77
83
  ...(status ? { status } : {}),
78
84
  ...(limit ? { limit } : {}),
79
85
  ...(before ? { before } : {}),
86
+ ...(bridgeConnectionId
87
+ ? { bridge_connection_id: bridgeConnectionId }
88
+ : {}),
80
89
  }, requestOptions));
81
90
  }
82
91
  if (path === "/network-connections/disconnect") {
@@ -106,11 +115,13 @@ export function createRobonoBackendAdapter(options) {
106
115
  const status = optionalString(body.status);
107
116
  const limit = optionalNumber(body.limit);
108
117
  const before = optionalString(body.before);
118
+ const connectionId = optionalString(body.connection_id);
109
119
  return responseJson(await options.robono.connections.list({
110
120
  external_user_id: externalUserId,
111
121
  ...(status ? { status } : {}),
112
122
  ...(limit ? { limit } : {}),
113
123
  ...(before ? { before } : {}),
124
+ ...(connectionId ? { connection_id: connectionId } : {}),
114
125
  }, requestOptions));
115
126
  }
116
127
  if (path === "/connections/profile") {
@@ -139,21 +150,25 @@ export function createRobonoBackendAdapter(options) {
139
150
  if (path === "/messages/list") {
140
151
  const limit = optionalNumber(body.limit);
141
152
  const before = optionalString(body.before);
153
+ const after = optionalString(body.after);
142
154
  return responseJson(await options.robono.messages.listFromRobono({
143
155
  connection_id: requiredString(body.connection_id, "connection_id"),
144
156
  external_user_id: externalUserId,
145
157
  ...(limit ? { limit } : {}),
146
158
  ...(before ? { before } : {}),
159
+ ...(after ? { after } : {}),
147
160
  }, requestOptions));
148
161
  }
149
162
  if (path === "/network-messages/list") {
150
163
  const limit = optionalNumber(body.limit);
151
164
  const before = optionalString(body.before);
165
+ const after = optionalString(body.after);
152
166
  return responseJson(await options.robono.messages.list({
153
167
  bridge_connection_id: requiredString(body.bridge_connection_id, "bridge_connection_id"),
154
168
  external_user_id: externalUserId,
155
169
  ...(limit ? { limit } : {}),
156
170
  ...(before ? { before } : {}),
171
+ ...(after ? { after } : {}),
157
172
  }, requestOptions));
158
173
  }
159
174
  if (path === "/network-messages/events") {
@@ -191,19 +206,45 @@ export function createRobonoBackendAdapter(options) {
191
206
  if (path === "/transforms/message") {
192
207
  return responseJson(await options.robono.transforms.message(body, requestOptions));
193
208
  }
194
- throw new Error("Authorized adapter route has no handler.");
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.");
195
229
  }
196
230
  catch (error) {
231
+ if (error instanceof AdapterRequestError) {
232
+ return responseError(error.status, error.code, error.message, requestId);
233
+ }
197
234
  if (error instanceof RobonoError) {
235
+ const status = error.status ??
236
+ (error.code === "request_timeout" ? 504 : 502);
198
237
  return responseJson({
199
238
  error: { code: error.code, message: error.message },
200
239
  request_id: error.requestId ?? requestId,
201
240
  ...(error.fields ? { fields: error.fields } : {}),
202
- }, error.status ?? 400);
241
+ }, status);
203
242
  }
204
- return responseError(400, "adapter_request_failed", error instanceof Error
205
- ? error.message
206
- : "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);
207
248
  }
208
249
  };
209
250
  }
@@ -227,38 +268,52 @@ function inputWithAuthenticatedUser(action, input, userId) {
227
268
  action === "robono_messages.send"
228
269
  || action === "robono_messages.list"
229
270
  || action === "robono_messages.mark"
230
- || action === "message_transforms.create") {
271
+ || action === "message_transforms.create"
272
+ || action === "push_diagnostics.report") {
231
273
  return { ...input, external_user_id: userId };
232
274
  }
233
275
  return { ...input };
234
276
  }
235
277
  async function assertConnectionBelongsToUser(robono, connectionId, externalUserId, requestId) {
236
- const result = await robono.networkConnections.list({
237
- external_user_id: externalUserId,
238
- limit: 100,
239
- }, { requestId });
240
- if (!result.connections.some((item) => item.bridge_connection_id === connectionId)) {
241
- throw new RobonoError("Connection was not found for this child app user.", {
242
- code: "connection_not_found",
243
- status: 404,
244
- requestId,
245
- });
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;
246
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
+ });
247
296
  }
248
297
  async function readBody(request, maxRequestBytes) {
249
298
  const length = Number(request.headers.get("content-length") ?? "0");
250
299
  if (Number.isFinite(length) && length > maxRequestBytes) {
251
- throw new Error("Request body is too large.");
300
+ throw new AdapterRequestError(413, "request_body_too_large", "Request body is too large.");
252
301
  }
253
302
  const text = await request.text();
254
303
  if (new TextEncoder().encode(text).byteLength > maxRequestBytes) {
255
- throw new Error("Request body is too large.");
304
+ throw new AdapterRequestError(413, "request_body_too_large", "Request body is too large.");
256
305
  }
257
306
  if (!text.trim())
258
307
  return {};
259
- 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
+ }
260
315
  if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
261
- 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.");
262
317
  }
263
318
  return parsed;
264
319
  }
@@ -270,13 +325,23 @@ function normalizedAdapterPath(pathname) {
270
325
  }
271
326
  function requiredString(value, field) {
272
327
  const normalized = optionalString(value);
273
- if (!normalized)
274
- throw new Error(`${field} is required.`);
328
+ if (!normalized) {
329
+ throw new AdapterRequestError(422, "required_field_missing", `${field} is required.`);
330
+ }
275
331
  return normalized;
276
332
  }
277
333
  function optionalString(value) {
278
334
  return typeof value === "string" && value.trim() ? value.trim() : undefined;
279
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
+ }
280
345
  function optionalNumber(value) {
281
346
  return typeof value === "number" && Number.isFinite(value)
282
347
  ? value
@@ -286,13 +351,30 @@ function requiredEvent(value) {
286
351
  if (value === "delivered" || value === "read" || value === "heard") {
287
352
  return value;
288
353
  }
289
- throw new Error("event must be delivered, read, or heard.");
354
+ throw new AdapterRequestError(422, "event_invalid", "event must be delivered, read, or heard.");
290
355
  }
291
356
  function requiredConnectionResponseStatus(value) {
292
357
  if (value === "accepted" || value === "rejected" || value === "not_found") {
293
358
  return value;
294
359
  }
295
- 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
+ }
296
378
  }
297
379
  function positiveInteger(value, fallback) {
298
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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"}
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type BridgeDirection, restrictionsFor } from "./restrictions.js";
2
- import type { BridgeConnection, BridgeConnectionListResponse, BridgeConnectionResponse, BridgeMessageEventResponse, BridgeMessageListResponse, ConnectEndpointInput, CreateRobonoConnectionInput, DirectoryResponse, EndpointConnection, EndpointMessageResponse, GuardianMessageListResponse, JsonObject, LanguageResponse, MessageTransformInput, PushDiagnosticResponse, ReportPushDiagnosticInput, RequestBridgeConnectionInput, RespondBridgeConnectionInput, RobonoConnectionResponse, RobonoConnectionListResponse, RobonoMessageListResponse, RobonoRequestOptions, RobonoServerOptions, SendBridgeMessageInput, SendBridgeMessageResponse, SendEndpointMessageInput, SendGuardianMessageInput, SendGuardianMessageResponse, SendRobonoMessageInput, SendRobonoMessageResponse, SpeechTransformInput, TransformResponse, UpdateBridgeConnectionInput } from "./types.js";
2
+ import type { BridgeConnection, BridgeConnectionListResponse, BridgeConnectionResponse, BridgeMessageEventResponse, BridgeMessageListResponse, ConnectEndpointInput, CreateRobonoConnectionInput, DirectoryResponse, DisconnectEndpointConnectionInput, EndpointConnection, EndpointConnectionCursor, EndpointConnectionListResponse, EndpointMessageListResponse, EndpointMessageResponse, GuardianMessageListResponse, JsonObject, LanguageResponse, MessageTransformInput, PushDiagnosticResponse, ReportPushDiagnosticInput, RequestBridgeConnectionInput, RespondBridgeConnectionInput, RobonoConnectionResponse, RobonoConnectionListResponse, RobonoMessageListResponse, RobonoRequestOptions, RobonoServerOptions, SendBridgeMessageInput, SendBridgeMessageResponse, SendEndpointMessageInput, SendGuardianMessageInput, SendGuardianMessageResponse, SendRobonoMessageInput, SendRobonoMessageResponse, SpeechTransformInput, TransformResponse, UpdateBridgeConnectionInput, UpdateEndpointConnectionInput, MarkEndpointMessageInput } from "./types.js";
3
3
  export declare class RobonoServer {
4
4
  readonly directory: {
5
5
  list: (input?: {
@@ -15,6 +15,7 @@ export declare class RobonoServer {
15
15
  status?: string;
16
16
  limit?: number;
17
17
  before?: string;
18
+ connection_id?: string;
18
19
  }, options?: RobonoRequestOptions) => Promise<RobonoConnectionListResponse>;
19
20
  updateProfile: (input: JsonObject, options?: RobonoRequestOptions) => Promise<RobonoConnectionResponse>;
20
21
  disconnect: (input: {
@@ -24,6 +25,20 @@ export declare class RobonoServer {
24
25
  disconnected_at?: string;
25
26
  }, options?: RobonoRequestOptions) => Promise<JsonObject>;
26
27
  };
28
+ /**
29
+ * Fully normalized connection operations for every directory endpoint.
30
+ * Prefer this namespace in new server-only integrations.
31
+ */
32
+ readonly endpointConnections: {
33
+ connect: (input: ConnectEndpointInput, options?: RobonoRequestOptions) => Promise<EndpointConnection>;
34
+ list: (input: {
35
+ external_user_id: string;
36
+ limit?: number;
37
+ cursor?: EndpointConnectionCursor;
38
+ }, options?: RobonoRequestOptions) => Promise<EndpointConnectionListResponse>;
39
+ update: (input: UpdateEndpointConnectionInput, options?: RobonoRequestOptions) => Promise<EndpointConnection>;
40
+ disconnect: (input: DisconnectEndpointConnectionInput, options?: RobonoRequestOptions) => Promise<EndpointConnection>;
41
+ };
27
42
  readonly networkConnections: {
28
43
  request: (input: RequestBridgeConnectionInput, options?: RobonoRequestOptions) => Promise<BridgeConnectionResponse>;
29
44
  update: (input: UpdateBridgeConnectionInput, options?: RobonoRequestOptions) => Promise<BridgeConnectionResponse>;
@@ -33,6 +48,7 @@ export declare class RobonoServer {
33
48
  status?: string;
34
49
  limit?: number;
35
50
  before?: string;
51
+ bridge_connection_id?: string;
36
52
  }, options?: RobonoRequestOptions) => Promise<BridgeConnectionListResponse>;
37
53
  disconnect: (input: {
38
54
  bridge_connection_id: string;
@@ -49,6 +65,7 @@ export declare class RobonoServer {
49
65
  external_user_id?: string;
50
66
  limit?: number;
51
67
  before?: string;
68
+ after?: string;
52
69
  }, options?: RobonoRequestOptions) => Promise<RobonoMessageListResponse>;
53
70
  send: {
54
71
  (input: SendEndpointMessageInput, options?: RobonoRequestOptions): Promise<EndpointMessageResponse>;
@@ -74,6 +91,7 @@ export declare class RobonoServer {
74
91
  external_user_id?: string;
75
92
  limit?: number;
76
93
  before?: string;
94
+ after?: string;
77
95
  }, options?: RobonoRequestOptions) => Promise<BridgeMessageListResponse>;
78
96
  mark: (input: {
79
97
  bridge_connection_id: string;
@@ -97,6 +115,21 @@ export declare class RobonoServer {
97
115
  dry_run?: boolean;
98
116
  }, options?: RobonoRequestOptions) => Promise<JsonObject>;
99
117
  };
118
+ /**
119
+ * Fully normalized message operations for every directory endpoint.
120
+ * Prefer this namespace in new server-only integrations.
121
+ */
122
+ readonly endpointMessages: {
123
+ send: (input: SendEndpointMessageInput, options?: RobonoRequestOptions) => Promise<EndpointMessageResponse>;
124
+ list: (input: {
125
+ connection: EndpointConnection;
126
+ external_user_id: string;
127
+ limit?: number;
128
+ before?: string;
129
+ after?: string;
130
+ }, options?: RobonoRequestOptions) => Promise<EndpointMessageListResponse>;
131
+ mark: (input: MarkEndpointMessageInput, options?: RobonoRequestOptions) => Promise<EndpointMessageResponse>;
132
+ };
100
133
  readonly transforms: {
101
134
  message: (input: MessageTransformInput, options?: RobonoRequestOptions) => Promise<TransformResponse>;
102
135
  speech: (input: SpeechTransformInput, options?: RobonoRequestOptions) => Promise<TransformResponse>;