@omnixhq/ucp-client 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -0
- package/dist/adapters/anthropic.d.cts +1 -1
- package/dist/adapters/anthropic.d.ts +1 -1
- package/dist/adapters/langchain.d.cts +1 -1
- package/dist/adapters/langchain.d.ts +1 -1
- package/dist/adapters/mcp.d.cts +1 -1
- package/dist/adapters/mcp.d.ts +1 -1
- package/dist/adapters/openai.d.cts +1 -1
- package/dist/adapters/openai.d.ts +1 -1
- package/dist/adapters/vercel-ai.d.cts +1 -1
- package/dist/adapters/vercel-ai.d.ts +1 -1
- package/dist/{catch-errors-jyrE4r9F.d.cts → catch-errors-BoytVKBJ.d.cts} +16 -5
- package/dist/catch-errors-BoytVKBJ.d.cts.map +1 -0
- package/dist/{catch-errors-BW8p9Abt.d.ts → catch-errors-lijeGf45.d.ts} +16 -5
- package/dist/catch-errors-lijeGf45.d.ts.map +1 -0
- package/dist/index.cjs +182 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6918 -6138
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +6918 -6138
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +178 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/catch-errors-BW8p9Abt.d.ts.map +0 -1
- package/dist/catch-errors-jyrE4r9F.d.cts.map +0 -1
package/README.md
CHANGED
|
@@ -167,8 +167,41 @@ if (client.checkout) {
|
|
|
167
167
|
|
|
168
168
|
console.log(Object.keys(client.paymentHandlers));
|
|
169
169
|
// e.g., ['com.google.pay', 'dev.shopify.shop_pay']
|
|
170
|
+
|
|
171
|
+
client.signingKeys; // JWK[] — EC P-256 keys for webhook verification
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
## Webhook signature verification
|
|
175
|
+
|
|
176
|
+
UCP businesses sign webhook POST requests with a detached JWS in the `Request-Signature` header (RFC 7797). The JWT header MUST include a `kid` claim identifying the signing key.
|
|
177
|
+
|
|
178
|
+
Use `createWebhookVerifier` to get a stateful verifier that fetches and caches signing keys from the business's discovery profile. It automatically re-fetches on a `kid` cache miss to support zero-downtime key rotation.
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
import { createWebhookVerifier } from '@omnixhq/ucp-client';
|
|
182
|
+
|
|
183
|
+
const verifier = createWebhookVerifier('https://store.example.com');
|
|
184
|
+
|
|
185
|
+
// In your webhook handler — MUST respond quickly with 2xx, process async:
|
|
186
|
+
const valid = await verifier.verify(rawBody, req.headers['request-signature']);
|
|
187
|
+
if (!valid) return res.status(401).send('Invalid signature');
|
|
188
|
+
|
|
189
|
+
// Safe to process
|
|
170
190
|
```
|
|
171
191
|
|
|
192
|
+
Keys are loaded lazily on the first `verify()` call from `<gatewayUrl>/.well-known/ucp` and cached by `kid`. A `kid` not found in cache triggers one re-fetch (key rotation support).
|
|
193
|
+
|
|
194
|
+
If you already have signing keys loaded (e.g. from `client.signingKeys`), use `verifyRequestSignature` directly:
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
import { UCPClient, verifyRequestSignature } from '@omnixhq/ucp-client';
|
|
198
|
+
|
|
199
|
+
const client = await UCPClient.connect(config);
|
|
200
|
+
const valid = await verifyRequestSignature(rawBody, signature, client.signingKeys);
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
See [examples/webhook-verification.ts](./examples/webhook-verification.ts) for a complete HTTP server example.
|
|
204
|
+
|
|
172
205
|
## Framework adapters
|
|
173
206
|
|
|
174
207
|
Ready-made adapters convert `getAgentTools()` output to each framework's native format — no manual mapping.
|
package/dist/adapters/mcp.d.cts
CHANGED
package/dist/adapters/mcp.d.ts
CHANGED
|
@@ -48,7 +48,14 @@ interface LocalizationContext {
|
|
|
48
48
|
readonly address_region?: string;
|
|
49
49
|
readonly postal_code?: string;
|
|
50
50
|
}
|
|
51
|
-
|
|
51
|
+
/**
|
|
52
|
+
* A JSON Web Key (RFC 7517).
|
|
53
|
+
* Extends the TypeScript stdlib `JsonWebKey` with the `kid` claim required by UCP for webhook
|
|
54
|
+
* signature verification (the stdlib definition omits `kid`).
|
|
55
|
+
*/
|
|
56
|
+
type JWK = JsonWebKey & {
|
|
57
|
+
readonly kid?: string;
|
|
58
|
+
};
|
|
52
59
|
//#endregion
|
|
53
60
|
//#region src/types/payment.d.ts
|
|
54
61
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -157,9 +164,10 @@ interface CompleteCheckoutPayload {
|
|
|
157
164
|
readonly ap2?: {
|
|
158
165
|
readonly checkout_mandate?: string;
|
|
159
166
|
};
|
|
160
|
-
}
|
|
161
|
-
//#region src/capabilities/checkout.d.ts
|
|
167
|
+
}
|
|
162
168
|
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region src/capabilities/checkout.d.ts
|
|
163
171
|
//# sourceMappingURL=checkout.d.ts.map
|
|
164
172
|
type FulfillmentPatch = Omit<UpdateCheckoutPayload, 'fulfillment' | 'discounts'>;
|
|
165
173
|
/**
|
|
@@ -189,6 +197,7 @@ type UCPSpecOrder = Order;
|
|
|
189
197
|
interface WebhookEvent {
|
|
190
198
|
readonly event_id: string;
|
|
191
199
|
readonly created_time: string;
|
|
200
|
+
readonly order: UCPSpecOrder;
|
|
192
201
|
readonly [key: string]: unknown;
|
|
193
202
|
}
|
|
194
203
|
|
|
@@ -307,6 +316,8 @@ interface ToolDescriptor {
|
|
|
307
316
|
interface ConnectedClient {
|
|
308
317
|
/** The server's UCP discovery profile. */
|
|
309
318
|
readonly profile: UCPProfile;
|
|
319
|
+
/** JWK signing keys from the discovery profile. Used for verifying incoming webhook signatures. */
|
|
320
|
+
readonly signingKeys: readonly JWK[];
|
|
310
321
|
/** Checkout operations. Null if server does not support `dev.ucp.shopping.checkout`. */
|
|
311
322
|
readonly checkout: CheckoutCapability | null;
|
|
312
323
|
/** Order operations. Null if server does not support `dev.ucp.shopping.order`. */
|
|
@@ -431,5 +442,5 @@ type ToolErrorResult = {
|
|
|
431
442
|
};
|
|
432
443
|
|
|
433
444
|
//#endregion
|
|
434
|
-
export { AdapterOptions, AgentTool, AuthorizationParams, BuyerConsent, CardCredential$1 as CardCredential, CheckoutCapability, CheckoutExtensions, CheckoutSession, CheckoutSessionStatus, CompleteCheckoutPayload, ConnectedClient, CreateCheckoutPayload, DEFAULT_UCP_VERSION, IdentityLinkingCapability, JsonSchema, LocalizationContext, OAuthServerMetadata, OrderCapability, PaymentCredential, PaymentHandlerInstance, PaymentHandlerMap, PaymentInstrument, PostalAddress, TokenCredential$1 as TokenCredential, TokenExchangeParams, TokenRefreshParams, TokenResponse, TokenRevokeParams, ToolDescriptor, ToolErrorResult, UCPClient, UCPClientConfig, UCPProfile, UCPSpecOrder, UCP_CAPABILITIES, UpdateCheckoutPayload, WebhookEvent, connect, getAgentTools };
|
|
435
|
-
//# sourceMappingURL=catch-errors-
|
|
445
|
+
export { AdapterOptions, AgentTool, AuthorizationParams, BuyerConsent, CardCredential$1 as CardCredential, CheckoutCapability, CheckoutExtensions, CheckoutSession, CheckoutSessionStatus, CompleteCheckoutPayload, ConnectedClient, CreateCheckoutPayload, DEFAULT_UCP_VERSION, IdentityLinkingCapability, JWK, JsonSchema, LocalizationContext, OAuthServerMetadata, OrderCapability, PaymentCredential, PaymentHandlerInstance, PaymentHandlerMap, PaymentInstrument, PostalAddress, TokenCredential$1 as TokenCredential, TokenExchangeParams, TokenRefreshParams, TokenResponse, TokenRevokeParams, ToolDescriptor, ToolErrorResult, UCPClient, UCPClientConfig, UCPProfile, UCPSpecOrder, UCP_CAPABILITIES, UpdateCheckoutPayload, WebhookEvent, connect, getAgentTools };
|
|
446
|
+
//# sourceMappingURL=catch-errors-BoytVKBJ.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catch-errors-BoytVKBJ.d.cts","names":[],"sources":["../src/http.ts","../src/types/common.ts","../src/types/payment.ts","../src/types/checkout.ts","../src/capabilities/checkout.ts","../src/types/order.ts","../src/capabilities/order.ts","../src/types/identity-linking.ts","../src/capabilities/identity-linking.ts","../src/types/config.ts","../src/UCPClient.ts","../src/agent-tools.ts","../src/adapters/catch-errors.ts"],"sourcesContent":null,"mappings":";;;;KAMK,UAAA;KAEO,KAAA;UAEK,gBAAA;EAJZ,SAAA,UAAU,EAAA,MAAA;EAEH,SAAK,eAAA,EAAA,MAAA;EAEA,SAAA,UAAgB,EAAA,MAAA;EASpB,SAAA,gBAAU,CAAA,EAAA,MAAA;EAAA,SAAA,WAAA,CAAA,EAAA,MAAA;EAAA,SAQD,mBAAA,CAAA,EAXW,KAWX;;AAsBE,cA9BX,UAAA,CA8BW;EAAU,iBAAiC,UAAA;EAAO,iBAwC7B,eAAA;EAAC,iBAAT,UAAA;EAAO,iBAAM,gBAAA;EAAC,iBAAA,WAAA;;sBA9D7B;kCAWY;ECtCjB,OAAA,CAAA,MAAA,EDiDO,UCjDM,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,CAAA,EAAA,OAAA,CAAA,EDiDqC,OCjDrC,CAAA,OAAA,CAAA;EAYb,QAAA,CAAA,CAAA,CAAA,CAAA,IAAY,EAAA,OAAA,EAAA,MAAA,ED6EQ,OC7ER,CD6EgB,CC7EhB,CAAA,CAAA,ED6EqB,CC7ErB;EAOZ,QAAA,iBAAmB;;;UAnBnB,aAAA;;;;EDMZ,SAAA,gBAAU,CAAA,EAAA,MAAA;EAEH,SAAK,gBAAA,CAAA,EAAA,MAAA;EAEA,SAAA,cAAgB,CAAA,EAAA,MAMA;EAGpB,SAAA,eAAU,CAAA,EAAA,MAAA;EAAA,SAAA,WAAA,CAAA,EAAA,MAAA;EAAA,SAQD,YAAA,CAAA,EAAA,MAAA;;AAsBE,UCrCP,YAAA,CDqCO;EAAU,SAAiC,SAAA,CAAA,EAAA,OAAA;EAAO,SAwC7B,WAAA,CAAA,EAAA,OAAA;EAAC,SAAT,SAAA,CAAA,EAAA,OAAA;EAAO,SAAM,YAAA,CAAA,EAAA,OAAA;AAAC;UCtElC,mBAAA;;;EAnBA,SAAA,WAAa,CAAA,EAAA,MAAA;AAY9B;AAOA;;;;;KAWY,GAAA,GAAM;EAAN,SAAG,GAAA,CAAA,EAAA,MAAG;;;;;KCzBN,iBAAA,GAAkB;KAClB,gBAAA,GAAiB;KAEjB,iBAAA,GAAoB,oBAAkB;AFAtC,UEIK,iBAAA,CFJA;EAEA,SAAA,EAAA,EAAA,MAAgB;EASpB,SAAA,UAAU,EAAA,MAAA;EAAA,SAAA,IAAA,EAAA,MAAA;EAAA,SAQD,KAAA,CAAA,EAAA,MAAA;EAAgB,SAWJ,WAAA,CAAA,EAAA,MAAA;EAAU,SAWpB,YAAA,CAAA,EAAA,MAAA;EAAU,SAAiC,QAAA,CAAA,EAAA,OAAA;EAAO,SAwC7B,OAAA,CAAA,EErExB,QFqEwB,CErEf,MFqEe,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;EAAC,SAAT,UAAA,CAAA,EEpEb,iBFoEa;EAAO,SAAM,eAAA,CAAA,EEnErB,aFmEqB;AAAC;UEhElC,sBAAA;;;EDzBA,SAAA,IAAA,EAAA,MAAa;EAYb,SAAA,MAAY,EAAA,MAAA;EAOZ,SAAA,MAAA,CAAA,ECWG,QDXgB,CCWP,MDXO,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;;UCcnB,iBAAA;yCACwB;;;;;;KC9B7B,eAAA,GAAkB;AHEzB,KGDO,qBAAA,GAAwB,sBHCrB;AAEH,UGDK,kBAAA,CHCA;EAEA,SAAA,WAAgB,EAAA,OAAA;EASpB,SAAA,QAAU,EAAA,OAAA;EAAA,SAAA,YAAA,EAAA,OAAA;EAAA,SAQD,UAAA,EAAA,OAAA;;AAsBE,UGnCP,qBAAA,CHmCO;EAAU,SAAiC,UAAA,EGlC5C,aHkC4C,CAAA;IAwCtB,SAAA,IAAA,EAAA;MAAR,SAAA,EAAA,EAAA,MAAA;IAAa,CAAA;IAAC,SAAA,QAAA,EAAA,MAAA;;;;ICzFlC,SAAA,UAAa,CAAA,EAAA,MAAA;IAYb,SAAA,SAAY,CAAA,EAAA,MAAA;IAOZ,SAAA,KAAA,CAAA,EAAA,MAAmB;;uBEMb;;qBAEF;;IFGT,SAAG,WAAG,CAAA,EAAU,SAAA,OAAA,EAAA;;;;ACzBhB,UC6BK,qBAAA,CD7Ba;EAClB,SAAA,KAAA,CAAA,EAAA;IAEA,SAAA,UAAiB,CAAA,EAAA,MAAA;IAAA,SAAA,SAAA,CAAA,EAAA,MAAA;IAAG,SAAA,KAAA,CAAA,EAAA,MAAA;IAAkB,SAAA,YAAA,CAAA,EAAA,MAAA;IAAc,SAAA,OAAA,CAAA,ECgCzC,YDhCyC;EAI/C,CAAA;EAAiB,SAAA,WAAA,CAAA,EAAA;IAQJ,SAAA,YAAA,CAAA,ECuBF,aDvBE,CAAA;MAAT,SAAA,EAAA,EAAA,MAAA;MACG,SAAA,OAAA,EAAA;QACK,SAAA,cAAA,CAAA,EAAA,MAAA;QAAa,SAAA,gBAAA,CAAA,EAAA,MAAA;QAGzB,SAAA,cAAsB,CAAA,EAAA,MAAA;QAAA,SAAA,WAAA,CAAA,EAAA,MAAA;QAKV,SAAA,eAAA,CAAA,EAAA,MAAA;MAAT,CAAA;IAAQ,CAAA,CAAA;IAGX,SAAA,OAAiB,CAAA,ECoBX,aDnBkB,CAAA;;;;MC9B7B,SAAA,uBAAkB,CAAA,EAAA,MAAA;MAClB,SAAA,MAAA,CAAqB,EAqDT,aArDY,CAAA;QAEnB,SAAkB,EAAA,EAAA,MAAA;QAOlB,SAAA,kBAAqB,CAAA,EAAA,MAAA;MAAA,CAAA,CAAA;IACf,CAAA,CAAA;EAAa,CAAA;EAUD,SAEd,OAAA,CAAA,EAAA;IAAmB,SAAA,WAAA,CAAA,EAsCb,aAtCa,CAsCC,iBAtCD,CAAA;EAOvB,CAAA;EAAqB,SAAA,SAAA,CAAA,EAAA;IAMf,SAAA,KAAA,CAAA,EAAA,SAAA,MAAA,EAAA;EAAY,CAAA;EAGM,SAejB,OAAA,CAAA,EAYH,mBAZG;;AAOiB,UAQxB,uBAAA,CARwB;EAAiB,SAA/B,OAAA,CAAA,EAAA;IAKN,SAAA,WAAA,EAKK,aALL,CAKmB,iBALnB,CAAA;EAAmB,CAAA;EAGvB,SAAA,YAAA,CAAA,EAIS,iBAJc;EAAA,SAAA,YAAA,CAAA,EAKd,QALc,CAKL,MALK,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;EAAA,SAEA,GAAA,CAAA,EAAA;IAAd,SAAA,gBAAA,CAAA,EAAA,MAAA;EAAa,CAAA;;;;;;KC7DlC,gBAAA,GAAmB,KAAK;;AJbM;AAOnC;AAEA;AASa,cICA,kBAAA,CJDU;EAAA,iBAAA,IAAA;EAAA;EAQe,SAWJ,UAAA,EIhBX,kBJgBW;EAAU,WAWpB,CAAA,IAAA,EIxBG,UJwBH,EAAA,UAAA,EIvBR,kBJuBQ;EAAU,MAAiC,CAAA,OAAA,EIlB3C,qBJkB2C,CAAA,EIlBnB,OJkBmB,CIlBX,eJkBW,CAAA;EAAO,GAwC7B,CAAA,EAAA,EAAA,MAAA,CAAA,EIrDpB,OJqDoB,CIrDZ,eJqDY,CAAA;EAAC,MAAT,CAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EIhDH,qBJgDG,CAAA,EIhDqB,OJgDrB,CIhD6B,eJgD7B,CAAA;EAAO,QAAM,CAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EIvCZ,uBJuCY,CAAA,EIvCc,OJuCd,CIvCsB,eJuCtB,CAAA;EAAC,MAAA,CAAA,EAAA,EAAA,MAAA,CAAA,EI9BvB,OJ8BuB,CI9Bf,eJ8Be,CAAA;mDInBvC,mBACP,QAAQ;yFAWD,mBACP,QAAQ;kHAoBD,mBACP,QAAQ;EHxGI,kBAAa,CAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,SAAA,MAAA,EAAA,EAAA,KAAA,CAAA,EG2HlB,gBH3HkB,CAAA,EG4HzB,OH5HyB,CG4HjB,eH5HiB,CAAA;EAYb,QAAA,eAAY;AAO7B;;;;KIjBY,YAAA,GAAe;UAEV,YAAA;;ELEZ,SAAA,YAAU,EAAA,MAAA;EAEH,SAAK,KAAA,EKDC,YLCD;EAEA,UAAA,GAAA,EAAA,MAAgB,CAAA,EAAA,OAMA;AAGjC;;;;;;cMda,eAAA;ENCR,iBAAU,IAAA;EAEH,WAAK,CAAA,IAAA,EMFoB,UNEpB;EAEA;EASJ,GAAA,CAAA,EAAA,EAAA,MAAU,CAAA,EMVE,ONUF,CMVU,YNUV,CAAA;EAAA;EAAA,MAQD,CAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EMZc,MNYd,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA,EMZwC,ONYxC,CMZgD,YNYhD,CAAA;;;;;;UO3BL,mBAAA;;;;EPMZ,SAAA,mBAAU,EAAA,MAAA;EAEH,SAAK,gBAAA,EAAA,SAAA,MAAA,EAAA;EAEA,SAAA,wBAMgB,EAAK,SAAA,MAAA,EAAA;EAGzB,SAAA,qBAAU,EAAA,SAAA,MAAA,EAAA;EAAA,SAAA,qCAAA,EAAA,SAAA,MAAA,EAAA;EAAA,SAQD,qBAAA,CAAA,EAAA,MAAA;;AAsBE,UOrCP,mBAAA,CPqCO;EAAU,SAAiC,SAAA,EAAA,MAAA;EAAO,SAwC7B,YAAA,EAAA,MAAA;EAAC,SAAT,KAAA,CAAA,EAAA,MAAA;EAAO,SAAM,KAAA,CAAA,EAAA,MAAA;AAAC;UOtElC,aAAA;;;ENnBA,SAAA,UAAa,CAAA,EAAA,MAAA;EAYb,SAAA,aAAY,CAAA,EAAA,MAAA;EAOZ,SAAA,KAAA,CAAA,EAAA,MAAmB;;UMQnB,mBAAA;;;;ENGL,SAAG,YAAG,EAAA,MAAU;;UMIX,kBAAA;;EL7BL,SAAA,aAAe,EAAA,MAAA;EACf,SAAA,aAAc,EAAA,MAAG;AAE7B;AAA6B,UKgCZ,iBAAA,CLhCY;EAAA,SAAG,SAAA,EAAA,MAAA;EAAe,SAAG,aAAA,EAAA,MAAA;EAAc,SAAA,KAAA,EAAA,MAAA;EAI/C,SAAA,eAAiB,CAAA,EAAA,cAAA,GAAA,eAAA;;;;;;;;;AFXC;AAOvB,cQiBC,yBAAA,CRjBI;EAEA,iBAAA,QAAgB;EASpB,WAAA,CAAA,QAAU,EQOkB,mBRPlB;EAAA;EAAA,mBAQD,CAAA,MAAA,EQEQ,mBRFR,CAAA,EAAA,MAAA;EAAgB,YAWJ,CAAA,MAAA,EQGL,mBRHK,CAAA,EQGiB,ORHjB,CQGyB,aRHzB,CAAA;EAAU,YAWpB,CAAA,MAAA,EQEK,kBRFL,CAAA,EQE0B,ORF1B,CQEkC,aRFlC,CAAA;EAAU,WAAiC,CAAA,MAAA,EQWvC,iBRXuC,CAAA,EQWnB,ORXmB,CAAA,IAAA,CAAA;EAAO,WAwC7B,CAAA,CAAA,EQT5B,QRS4B,CQTnB,mBRSmB,CAAA;EAAC,QAAT,YAAA;;;;;AAAc;USzFlC,eAAA;;;;ETMZ,SAAA,gBAAU,CAAA,EAAA,MAAA;AAEf;AAEiB,cSHJ,mBAAA,GTSyB,YAAA;AAGzB,cSVA,gBTUU,EAAA;EAAA,SAAA,QAAA,EAAA,2BAAA;EAAA,SAQD,WAAA,EAAA,8BAAA;EAAgB,SAWJ,QAAA,EAAA,2BAAA;EAAU,SAWpB,aAAA,EAAA,gCAAA;EAAU,SAAiC,KAAA,EAAA,wBAAA;EAAO,SAwC7B,gBAAA,EAAA,iCAAA;EAAC,SAAT,WAAA,EAAA,8BAAA;CAAO;;;;AAAO;;AAnDjB,KUpBtB,UAAA,GAAa,mBVoBS;;AAWiC,UU5BlD,cAAA,CV4BkD;EAAO,SAwC7B,IAAA,EAAA,MAAA;EAAC,SAAT,UAAA,EAAA,MAAA;EAAO,SAAM,WAAA,EAAA,MAAA;AAAC;;;;ACzFnD;AAYiB,USmBA,eAAA,CTnBY;EAOZ;oBScG;;iCAEa;;qBAEZ;ETPT;kBSSM;;4BAEU;ERpChB;EACA,SAAA,eAAc,EQqCE,iBRrCC;EAEjB;EAAiB,aAAA,EAAA,EAAA,SQqCD,cRrCC,EAAA;EAAA;;AAAmC;AAIhE;EAAkC,aAAA,EAAA,EAAA,SQsCN,SRtCM,EAAA;;;;;AAUQ;AAG1C;;;;AAK4B;AAG5B;;;;AC7BA;AACA;AAEiB,iBO6DK,OAAA,CP7Da,MAAA,EO8DzB,eP9DyB,EAAA,OAOG,CAPH,EAAA;EAOlB,SAAA,mBAAqB,CAAA,EOwDO,KPxDP;CAAA,CAAA,EOyDnC,OPzDmC,COyD3B,ePzD2B,CAAA;;;;AAaE;AAOxC;;;;;;;;AAoCqB,cOkDR,SAAA,CPlDQ;EAAmB,QAAA,WAAA,CAAA;EAGvB,OAAA,OAAA,EAAA,OOoDD,OPpDwB;;;;;;;UQtEvB,UAAA;;EXGZ,SAAA,UAAU,CAAA,EWDS,QXCT,CWDkB,MXClB,CAAA,MAAA,EWDiC,UXCjC,CAAA,CAAA;EAEH,SAAK,QAAA,CAAA,EAAA,SAAA,MAAA,EAAA;EAEA,SAAA,KAAA,CAAA,EWHE,UXGc;EASpB,SAAA,IAAU,CAAA,EAAA,SAAA,MAAA,EAAA;EAAA,SAAA,WAAA,CAAA,EAAA,MAAA;EAAA,SAQD,OAAA,CAAA,EAAA,OAAA;;;;;;AA8D4B,UWxEjC,SAAA,CXwEiC;EAAC,SAAA,IAAA,EAAA,MAAA;;uBWrE5B;6BACM,4BAA4B;AVrBzD;AAYA;AAOA;;;;;;AAWA;;;;ACzBA;AACA;AAEA;;;;AAAgE;AAIhE;;;;;;AAU0C;AAG1C;;;;AAK4B;AAG5B;;;;AC7BY,iBQsDI,aAAA,CRtDc,MAAA,EQsDQ,eRtDgB,CAAA,EAAA,SQsDW,SRtDX,EAAA;;;;AACtD;USHiB,cAAA;;;KAIL,eAAA;EZAP,SAAA,KAAU,EAAA,MAAA;AAEf,CAAA,GAAY;EAEK,SAAA,mBAAgB,EAMA,IAAA;EAGpB,SAAA,YAAU,EAAA,MAAA;CAAA"}
|
|
@@ -48,7 +48,14 @@ interface LocalizationContext {
|
|
|
48
48
|
readonly address_region?: string;
|
|
49
49
|
readonly postal_code?: string;
|
|
50
50
|
}
|
|
51
|
-
|
|
51
|
+
/**
|
|
52
|
+
* A JSON Web Key (RFC 7517).
|
|
53
|
+
* Extends the TypeScript stdlib `JsonWebKey` with the `kid` claim required by UCP for webhook
|
|
54
|
+
* signature verification (the stdlib definition omits `kid`).
|
|
55
|
+
*/
|
|
56
|
+
type JWK = JsonWebKey & {
|
|
57
|
+
readonly kid?: string;
|
|
58
|
+
};
|
|
52
59
|
//#endregion
|
|
53
60
|
//#region src/types/payment.d.ts
|
|
54
61
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -157,9 +164,10 @@ interface CompleteCheckoutPayload {
|
|
|
157
164
|
readonly ap2?: {
|
|
158
165
|
readonly checkout_mandate?: string;
|
|
159
166
|
};
|
|
160
|
-
}
|
|
161
|
-
//#region src/capabilities/checkout.d.ts
|
|
167
|
+
}
|
|
162
168
|
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region src/capabilities/checkout.d.ts
|
|
163
171
|
//# sourceMappingURL=checkout.d.ts.map
|
|
164
172
|
type FulfillmentPatch = Omit<UpdateCheckoutPayload, 'fulfillment' | 'discounts'>;
|
|
165
173
|
/**
|
|
@@ -189,6 +197,7 @@ type UCPSpecOrder = Order;
|
|
|
189
197
|
interface WebhookEvent {
|
|
190
198
|
readonly event_id: string;
|
|
191
199
|
readonly created_time: string;
|
|
200
|
+
readonly order: UCPSpecOrder;
|
|
192
201
|
readonly [key: string]: unknown;
|
|
193
202
|
}
|
|
194
203
|
|
|
@@ -307,6 +316,8 @@ interface ToolDescriptor {
|
|
|
307
316
|
interface ConnectedClient {
|
|
308
317
|
/** The server's UCP discovery profile. */
|
|
309
318
|
readonly profile: UCPProfile;
|
|
319
|
+
/** JWK signing keys from the discovery profile. Used for verifying incoming webhook signatures. */
|
|
320
|
+
readonly signingKeys: readonly JWK[];
|
|
310
321
|
/** Checkout operations. Null if server does not support `dev.ucp.shopping.checkout`. */
|
|
311
322
|
readonly checkout: CheckoutCapability | null;
|
|
312
323
|
/** Order operations. Null if server does not support `dev.ucp.shopping.order`. */
|
|
@@ -431,5 +442,5 @@ type ToolErrorResult = {
|
|
|
431
442
|
};
|
|
432
443
|
|
|
433
444
|
//#endregion
|
|
434
|
-
export { AdapterOptions, AgentTool, AuthorizationParams, BuyerConsent, CardCredential$1 as CardCredential, CheckoutCapability, CheckoutExtensions, CheckoutSession, CheckoutSessionStatus, CompleteCheckoutPayload, ConnectedClient, CreateCheckoutPayload, DEFAULT_UCP_VERSION, IdentityLinkingCapability, JsonSchema, LocalizationContext, OAuthServerMetadata, OrderCapability, PaymentCredential, PaymentHandlerInstance, PaymentHandlerMap, PaymentInstrument, PostalAddress, TokenCredential$1 as TokenCredential, TokenExchangeParams, TokenRefreshParams, TokenResponse, TokenRevokeParams, ToolDescriptor, ToolErrorResult, UCPClient, UCPClientConfig, UCPProfile, UCPSpecOrder, UCP_CAPABILITIES, UpdateCheckoutPayload, WebhookEvent, connect, getAgentTools };
|
|
435
|
-
//# sourceMappingURL=catch-errors-
|
|
445
|
+
export { AdapterOptions, AgentTool, AuthorizationParams, BuyerConsent, CardCredential$1 as CardCredential, CheckoutCapability, CheckoutExtensions, CheckoutSession, CheckoutSessionStatus, CompleteCheckoutPayload, ConnectedClient, CreateCheckoutPayload, DEFAULT_UCP_VERSION, IdentityLinkingCapability, JWK, JsonSchema, LocalizationContext, OAuthServerMetadata, OrderCapability, PaymentCredential, PaymentHandlerInstance, PaymentHandlerMap, PaymentInstrument, PostalAddress, TokenCredential$1 as TokenCredential, TokenExchangeParams, TokenRefreshParams, TokenResponse, TokenRevokeParams, ToolDescriptor, ToolErrorResult, UCPClient, UCPClientConfig, UCPProfile, UCPSpecOrder, UCP_CAPABILITIES, UpdateCheckoutPayload, WebhookEvent, connect, getAgentTools };
|
|
446
|
+
//# sourceMappingURL=catch-errors-lijeGf45.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catch-errors-lijeGf45.d.ts","names":[],"sources":["../src/http.ts","../src/types/common.ts","../src/types/payment.ts","../src/types/checkout.ts","../src/capabilities/checkout.ts","../src/types/order.ts","../src/capabilities/order.ts","../src/types/identity-linking.ts","../src/capabilities/identity-linking.ts","../src/types/config.ts","../src/UCPClient.ts","../src/agent-tools.ts","../src/adapters/catch-errors.ts"],"sourcesContent":null,"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -33,6 +33,20 @@ const UCPProfileSchema = __omnixhq_ucp_js_sdk.UcpDiscoveryProfileSchema.passthro
|
|
|
33
33
|
const CreateCheckoutRequestSchema = __omnixhq_ucp_js_sdk.ExtendedCheckoutCreateRequestSchema.passthrough();
|
|
34
34
|
const UpdateCheckoutRequestSchema = __omnixhq_ucp_js_sdk.ExtendedCheckoutUpdateRequestSchema.passthrough();
|
|
35
35
|
const CompleteCheckoutRequestSchema = __omnixhq_ucp_js_sdk.CheckoutCompleteRequestSchema.passthrough();
|
|
36
|
+
const WebhookEventSchema = zod.z.object({
|
|
37
|
+
event_id: zod.z.string(),
|
|
38
|
+
created_time: zod.z.string(),
|
|
39
|
+
order: __omnixhq_ucp_js_sdk.OrderSchema.passthrough()
|
|
40
|
+
}).passthrough();
|
|
41
|
+
const JWKSchema = zod.z.object({
|
|
42
|
+
kty: zod.z.string(),
|
|
43
|
+
kid: zod.z.string().optional(),
|
|
44
|
+
use: zod.z.string().optional(),
|
|
45
|
+
alg: zod.z.string().optional(),
|
|
46
|
+
crv: zod.z.string().optional(),
|
|
47
|
+
x: zod.z.string().optional(),
|
|
48
|
+
y: zod.z.string().optional()
|
|
49
|
+
}).passthrough();
|
|
36
50
|
|
|
37
51
|
//#endregion
|
|
38
52
|
//#region src/http.ts
|
|
@@ -867,8 +881,10 @@ async function connect(config, options) {
|
|
|
867
881
|
const order = capabilityNames.has(UCP_CAPABILITIES.ORDER) ? new OrderCapability(http) : null;
|
|
868
882
|
const identityLinking = await buildIdentityLinking(config, capabilityNames);
|
|
869
883
|
const paymentHandlers = extractPaymentHandlers(profile);
|
|
884
|
+
const signingKeys = extractSigningKeys(profile);
|
|
870
885
|
const client = {
|
|
871
886
|
profile,
|
|
887
|
+
signingKeys,
|
|
872
888
|
checkout,
|
|
873
889
|
order,
|
|
874
890
|
identityLinking,
|
|
@@ -919,6 +935,16 @@ function extractPaymentHandlers(profile) {
|
|
|
919
935
|
if (!result.success) return {};
|
|
920
936
|
return result.data;
|
|
921
937
|
}
|
|
938
|
+
function extractSigningKeys(profile) {
|
|
939
|
+
const raw = profile["signing_keys"];
|
|
940
|
+
if (!Array.isArray(raw)) return [];
|
|
941
|
+
const keys = [];
|
|
942
|
+
for (const item of raw) {
|
|
943
|
+
const result = JWKSchema.safeParse(item);
|
|
944
|
+
if (result.success) keys.push(result.data);
|
|
945
|
+
}
|
|
946
|
+
return keys;
|
|
947
|
+
}
|
|
922
948
|
function buildCheckoutCapability(http, capabilityNames) {
|
|
923
949
|
if (!capabilityNames.has(UCP_CAPABILITIES.CHECKOUT)) return null;
|
|
924
950
|
const extensions = {
|
|
@@ -1023,6 +1049,157 @@ function buildToolDescriptors(checkout, order, identityLinking) {
|
|
|
1023
1049
|
return tools;
|
|
1024
1050
|
}
|
|
1025
1051
|
|
|
1052
|
+
//#endregion
|
|
1053
|
+
//#region src/verify-signature.ts
|
|
1054
|
+
/**
|
|
1055
|
+
* Verifies a `Request-Signature` header (detached JWS per RFC 7797) over a raw request body.
|
|
1056
|
+
*
|
|
1057
|
+
* Per UCP spec, the JWT header MUST include a `kid` claim identifying the signing key.
|
|
1058
|
+
* Returns `false` if `kid` is absent — do not fall back to guessing.
|
|
1059
|
+
*
|
|
1060
|
+
* @returns `true` if the signature is valid, `false` for any verification failure.
|
|
1061
|
+
*/
|
|
1062
|
+
async function verifyRequestSignature(body, signature, signingKeys) {
|
|
1063
|
+
const parts = signature.split(".");
|
|
1064
|
+
if (parts.length !== 3 || parts[1] !== "") return false;
|
|
1065
|
+
const [headerB64, , sigB64] = parts;
|
|
1066
|
+
let header;
|
|
1067
|
+
try {
|
|
1068
|
+
header = JSON.parse(new TextDecoder().decode(base64urlDecode(headerB64)));
|
|
1069
|
+
} catch {
|
|
1070
|
+
return false;
|
|
1071
|
+
}
|
|
1072
|
+
if (typeof header["alg"] !== "undefined" && header["alg"] !== "ES256") return false;
|
|
1073
|
+
if (typeof header["kid"] !== "string") return false;
|
|
1074
|
+
const kid = header["kid"];
|
|
1075
|
+
const key = signingKeys.find((k) => k.kid === kid);
|
|
1076
|
+
if (!key) return false;
|
|
1077
|
+
let cryptoKey;
|
|
1078
|
+
try {
|
|
1079
|
+
cryptoKey = await crypto.subtle.importKey("jwk", key, {
|
|
1080
|
+
name: "ECDSA",
|
|
1081
|
+
namedCurve: "P-256"
|
|
1082
|
+
}, false, ["verify"]);
|
|
1083
|
+
} catch {
|
|
1084
|
+
return false;
|
|
1085
|
+
}
|
|
1086
|
+
let sigBytes;
|
|
1087
|
+
try {
|
|
1088
|
+
sigBytes = base64urlDecode(sigB64);
|
|
1089
|
+
} catch {
|
|
1090
|
+
return false;
|
|
1091
|
+
}
|
|
1092
|
+
const signingInput = `${headerB64}.${Buffer.from(body).toString("base64url")}`;
|
|
1093
|
+
try {
|
|
1094
|
+
return await crypto.subtle.verify({
|
|
1095
|
+
name: "ECDSA",
|
|
1096
|
+
hash: "SHA-256"
|
|
1097
|
+
}, cryptoKey, sigBytes, new TextEncoder().encode(signingInput));
|
|
1098
|
+
} catch {
|
|
1099
|
+
return false;
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
1102
|
+
/**
|
|
1103
|
+
* Creates a {@link WebhookVerifier} bound to a specific business's UCP gateway.
|
|
1104
|
+
*
|
|
1105
|
+
* Signing keys are lazily loaded from `<gatewayUrl>/.well-known/ucp` on the first call
|
|
1106
|
+
* and cached by `kid`. A cache miss triggers a re-fetch to support key rotation.
|
|
1107
|
+
*
|
|
1108
|
+
* @example
|
|
1109
|
+
* ```typescript
|
|
1110
|
+
* import { createWebhookVerifier } from '@omnixhq/ucp-client';
|
|
1111
|
+
*
|
|
1112
|
+
* const verifier = createWebhookVerifier('https://store.example.com');
|
|
1113
|
+
*
|
|
1114
|
+
* // In your webhook handler:
|
|
1115
|
+
* const valid = await verifier.verify(rawBody, req.headers['request-signature']);
|
|
1116
|
+
* if (!valid) return res.status(401).send('Invalid signature');
|
|
1117
|
+
* ```
|
|
1118
|
+
*/
|
|
1119
|
+
function createWebhookVerifier(gatewayUrl) {
|
|
1120
|
+
const baseUrl = gatewayUrl.replace(/\/+$/, "");
|
|
1121
|
+
const keyCache = new Map();
|
|
1122
|
+
let fetched = false;
|
|
1123
|
+
async function loadKeys() {
|
|
1124
|
+
const res = await fetch(`${baseUrl}/.well-known/ucp`);
|
|
1125
|
+
if (!res.ok) return;
|
|
1126
|
+
const profile = await res.json();
|
|
1127
|
+
const rawKeys = profile["signing_keys"];
|
|
1128
|
+
if (!Array.isArray(rawKeys)) return;
|
|
1129
|
+
keyCache.clear();
|
|
1130
|
+
for (const item of rawKeys) {
|
|
1131
|
+
const parsed = JWKSchema.safeParse(item);
|
|
1132
|
+
if (parsed.success && typeof parsed.data.kid === "string") keyCache.set(parsed.data.kid, parsed.data);
|
|
1133
|
+
}
|
|
1134
|
+
fetched = true;
|
|
1135
|
+
}
|
|
1136
|
+
return { async verify(body, signature) {
|
|
1137
|
+
const kid = extractKid(signature);
|
|
1138
|
+
if (kid === null) return false;
|
|
1139
|
+
if (!fetched) await loadKeys();
|
|
1140
|
+
if (!keyCache.has(kid)) await loadKeys();
|
|
1141
|
+
const key = keyCache.get(kid);
|
|
1142
|
+
if (!key) return false;
|
|
1143
|
+
return verifyRequestSignature(body, signature, [key]);
|
|
1144
|
+
} };
|
|
1145
|
+
}
|
|
1146
|
+
/** Extracts the `kid` from a detached JWS header without full verification. */
|
|
1147
|
+
function extractKid(signature) {
|
|
1148
|
+
const parts = signature.split(".");
|
|
1149
|
+
if (parts.length !== 3 || parts[1] !== "") return null;
|
|
1150
|
+
try {
|
|
1151
|
+
const header = JSON.parse(new TextDecoder().decode(base64urlDecode(parts[0])));
|
|
1152
|
+
return typeof header["kid"] === "string" ? header["kid"] : null;
|
|
1153
|
+
} catch {
|
|
1154
|
+
return null;
|
|
1155
|
+
}
|
|
1156
|
+
}
|
|
1157
|
+
function base64urlDecode(b64url) {
|
|
1158
|
+
const b64 = b64url.replace(/-/g, "+").replace(/_/g, "/");
|
|
1159
|
+
const padded = b64 + "=".repeat((4 - b64.length % 4) % 4);
|
|
1160
|
+
const binaryStr = atob(padded);
|
|
1161
|
+
const result = new Uint8Array(binaryStr.length);
|
|
1162
|
+
for (let i = 0; i < binaryStr.length; i++) result[i] = binaryStr.charCodeAt(i);
|
|
1163
|
+
return result;
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
//#endregion
|
|
1167
|
+
//#region src/parse-webhook-event.ts
|
|
1168
|
+
/**
|
|
1169
|
+
* Parses and validates a raw webhook request body as a UCP order event.
|
|
1170
|
+
*
|
|
1171
|
+
* Call this after verifying the `Request-Signature` header with
|
|
1172
|
+
* {@link createWebhookVerifier} or {@link verifyRequestSignature}.
|
|
1173
|
+
*
|
|
1174
|
+
* Throws {@link UCPError} with code `INVALID_WEBHOOK_PAYLOAD` if the body is
|
|
1175
|
+
* not valid JSON or does not conform to the UCP webhook event schema.
|
|
1176
|
+
*
|
|
1177
|
+
* @example
|
|
1178
|
+
* ```typescript
|
|
1179
|
+
* import { createWebhookVerifier, parseWebhookEvent } from '@omnixhq/ucp-client';
|
|
1180
|
+
*
|
|
1181
|
+
* const verifier = createWebhookVerifier('https://store.example.com');
|
|
1182
|
+
*
|
|
1183
|
+
* // In your webhook handler:
|
|
1184
|
+
* const valid = await verifier.verify(rawBody, req.headers['request-signature']);
|
|
1185
|
+
* if (!valid) return res.status(401).send('Invalid signature');
|
|
1186
|
+
*
|
|
1187
|
+
* const event = parseWebhookEvent(rawBody);
|
|
1188
|
+
* console.log(event.event_id, event.order.id);
|
|
1189
|
+
* ```
|
|
1190
|
+
*/
|
|
1191
|
+
function parseWebhookEvent(body) {
|
|
1192
|
+
let raw;
|
|
1193
|
+
try {
|
|
1194
|
+
raw = JSON.parse(body);
|
|
1195
|
+
} catch {
|
|
1196
|
+
throw new require_errors.UCPError("INVALID_WEBHOOK_PAYLOAD", "Webhook body is not valid JSON");
|
|
1197
|
+
}
|
|
1198
|
+
const result = WebhookEventSchema.safeParse(raw);
|
|
1199
|
+
if (!result.success) throw new require_errors.UCPError("INVALID_WEBHOOK_PAYLOAD", `Webhook payload validation failed: ${result.error.message}`);
|
|
1200
|
+
return result.data;
|
|
1201
|
+
}
|
|
1202
|
+
|
|
1026
1203
|
//#endregion
|
|
1027
1204
|
exports.AccountInfoSchema = __omnixhq_ucp_js_sdk.AccountInfoSchema
|
|
1028
1205
|
exports.AdjustmentSchema = __omnixhq_ucp_js_sdk.AdjustmentSchema
|
|
@@ -1080,6 +1257,7 @@ exports.FulfillmentSchema = __omnixhq_ucp_js_sdk.FulfillmentSchema
|
|
|
1080
1257
|
exports.IdentityLinkingCapability = IdentityLinkingCapability
|
|
1081
1258
|
exports.ItemResponseSchema = __omnixhq_ucp_js_sdk.ItemResponseSchema
|
|
1082
1259
|
exports.ItemSchema = __omnixhq_ucp_js_sdk.ItemSchema
|
|
1260
|
+
exports.JWKSchema = JWKSchema
|
|
1083
1261
|
exports.LineItemResponseSchema = __omnixhq_ucp_js_sdk.LineItemResponseSchema
|
|
1084
1262
|
exports.LineItemSchema = __omnixhq_ucp_js_sdk.LineItemSchema
|
|
1085
1263
|
exports.LineItemUpdateRequestSchema = __omnixhq_ucp_js_sdk.LineItemUpdateRequestSchema
|
|
@@ -1132,6 +1310,10 @@ exports.UcpResponseOrderSchema = __omnixhq_ucp_js_sdk.UcpResponseOrderSchema
|
|
|
1132
1310
|
exports.UcpReverseDomainNameSchema = __omnixhq_ucp_js_sdk.UcpReverseDomainNameSchema
|
|
1133
1311
|
exports.UcpVersionSchema = __omnixhq_ucp_js_sdk.UcpVersionSchema
|
|
1134
1312
|
exports.UpdateCheckoutRequestSchema = UpdateCheckoutRequestSchema
|
|
1313
|
+
exports.WebhookEventSchema = WebhookEventSchema
|
|
1135
1314
|
exports.connect = connect
|
|
1315
|
+
exports.createWebhookVerifier = createWebhookVerifier
|
|
1136
1316
|
exports.getAgentTools = getAgentTools
|
|
1317
|
+
exports.parseWebhookEvent = parseWebhookEvent
|
|
1318
|
+
exports.verifyRequestSignature = verifyRequestSignature
|
|
1137
1319
|
//# sourceMappingURL=index.cjs.map
|