@agentpress/sdk 0.5.4 → 0.5.5
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 +69 -7
- package/dist/index.cjs +114 -53
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +127 -48
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +127 -48
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +114 -53
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/http.ts","../src/actions/client.ts","../src/partners/client.ts","../src/userApprovals/client.ts","../src/webhooks/client.ts","../src/client.ts","../src/errors.ts","../src/webhooks/
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/http.ts","../src/actions/client.ts","../src/partners/client.ts","../src/userApprovals/client.ts","../src/webhooks/client.ts","../src/client.ts","../src/errors.ts","../src/webhooks/actionWebhookSigning.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -606,7 +606,57 @@ function validatePayload(raw) {
|
|
|
606
606
|
return event;
|
|
607
607
|
}
|
|
608
608
|
//#endregion
|
|
609
|
+
//#region src/webhooks/actionWebhookSigning.ts
|
|
610
|
+
/**
|
|
611
|
+
* Sign an outbound request for an AgentPress action webhook that uses the
|
|
612
|
+
* `hmac_sha256` verification scheme
|
|
613
|
+
* (`POST /webhooks/actions/:org/:identifier`).
|
|
614
|
+
*
|
|
615
|
+
* Produces the two headers AgentPress verifies:
|
|
616
|
+
*
|
|
617
|
+
* - `x-webhook-timestamp` — unix seconds; AgentPress rejects timestamps more
|
|
618
|
+
* than 5 minutes from its own clock.
|
|
619
|
+
* - `x-webhook-signature` — `v1=<hex HMAC-SHA256 of "${timestamp}.${rawBody}">`.
|
|
620
|
+
*
|
|
621
|
+
* Send the exact `rawBody` string you signed — any re-serialization after
|
|
622
|
+
* signing (re-ordered keys, whitespace changes) invalidates the signature.
|
|
623
|
+
*
|
|
624
|
+
* @example
|
|
625
|
+
* ```ts
|
|
626
|
+
* const rawBody = JSON.stringify({ eventType: "review.created", data: {...} });
|
|
627
|
+
* const { headers } = signHmacWebhookRequest({ secret, rawBody });
|
|
628
|
+
* await fetch(actionWebhookUrl, {
|
|
629
|
+
* method: "POST",
|
|
630
|
+
* body: rawBody,
|
|
631
|
+
* headers: { "content-type": "application/json", ...headers },
|
|
632
|
+
* });
|
|
633
|
+
* ```
|
|
634
|
+
*/
|
|
635
|
+
function signHmacWebhookRequest(params) {
|
|
636
|
+
const timestamp = Math.floor(params.timestamp ?? Date.now() / 1e3).toString();
|
|
637
|
+
return { headers: {
|
|
638
|
+
"x-webhook-timestamp": timestamp,
|
|
639
|
+
"x-webhook-signature": `v1=${createHmac("sha256", params.secret).update(`${timestamp}.${params.rawBody}`).digest("hex")}`
|
|
640
|
+
} };
|
|
641
|
+
}
|
|
642
|
+
/**
|
|
643
|
+
* Build the auth header for an AgentPress action webhook that uses the
|
|
644
|
+
* `shared_token` verification scheme. AgentPress also accepts
|
|
645
|
+
* `Authorization: Bearer <token>`; this helper uses the dedicated
|
|
646
|
+
* `x-webhook-token` header so it never collides with other auth middleware.
|
|
647
|
+
*/
|
|
648
|
+
function sharedTokenHeaders(token) {
|
|
649
|
+
return { "x-webhook-token": token };
|
|
650
|
+
}
|
|
651
|
+
//#endregion
|
|
609
652
|
//#region src/webhooks/client.ts
|
|
653
|
+
function pathSegment(value) {
|
|
654
|
+
return encodeURIComponent(value);
|
|
655
|
+
}
|
|
656
|
+
function requireSecret(scheme, secret) {
|
|
657
|
+
if (!secret) throw new ConfigurationError(`webhookSecret or auth.${scheme === "shared_token" ? "token" : "secret"} is required for ${scheme} action webhook sends`);
|
|
658
|
+
return secret;
|
|
659
|
+
}
|
|
610
660
|
var WebhooksClient = class {
|
|
611
661
|
options;
|
|
612
662
|
http;
|
|
@@ -616,7 +666,8 @@ var WebhooksClient = class {
|
|
|
616
666
|
}
|
|
617
667
|
/**
|
|
618
668
|
* Send an arbitrary webhook payload to AgentPress.
|
|
619
|
-
* Signs the payload with
|
|
669
|
+
* Signs the payload with the verification scheme configured on the action
|
|
670
|
+
* webhook. Defaults to Svix-compatible signing.
|
|
620
671
|
*
|
|
621
672
|
* On the happy path the response is synchronous: `{ success: true,
|
|
622
673
|
* actionId, data }`, or `{ success, actionId, alreadyExists: true, data }`
|
|
@@ -629,28 +680,81 @@ var WebhooksClient = class {
|
|
|
629
680
|
* auto-processes once an operator fixes the configuration, so check
|
|
630
681
|
* {@link WebhookResponse.buffered} before relying on `actionId`.
|
|
631
682
|
*
|
|
632
|
-
* @throws ConfigurationError if
|
|
683
|
+
* @throws ConfigurationError if the selected verification scheme needs a
|
|
684
|
+
* secret/token and none is configured
|
|
633
685
|
* @throws HttpError on non-2xx response
|
|
634
686
|
* @throws TimeoutError if request exceeds timeout
|
|
635
687
|
*/
|
|
636
688
|
async send(params) {
|
|
637
|
-
|
|
638
|
-
const path = `/webhooks/actions/${this.options.org}/${params.action}`;
|
|
689
|
+
const path = `/webhooks/actions/${pathSegment(this.options.org)}/${pathSegment(params.action)}`;
|
|
639
690
|
const body = JSON.stringify(params.payload);
|
|
640
|
-
const
|
|
641
|
-
const
|
|
642
|
-
|
|
691
|
+
const auth = params.auth ?? { scheme: "svix" };
|
|
692
|
+
const headers = {};
|
|
693
|
+
if (auth.scheme === "svix") {
|
|
694
|
+
const secret = requireSecret("svix", auth.secret ?? this.options.webhookSecret);
|
|
695
|
+
const msgId = auth.msgId ?? randomMessageId();
|
|
696
|
+
const timestamp = Math.floor(auth.timestamp ?? Date.now() / 1e3);
|
|
697
|
+
Object.assign(headers, {
|
|
698
|
+
"svix-id": msgId,
|
|
699
|
+
"svix-timestamp": String(timestamp),
|
|
700
|
+
"svix-signature": sign(secret, msgId, timestamp, body)
|
|
701
|
+
});
|
|
702
|
+
} else if (auth.scheme === "hmac_sha256") {
|
|
703
|
+
const secret = requireSecret("hmac_sha256", auth.secret ?? this.options.webhookSecret);
|
|
704
|
+
Object.assign(headers, signHmacWebhookRequest({
|
|
705
|
+
secret,
|
|
706
|
+
rawBody: body,
|
|
707
|
+
timestamp: auth.timestamp
|
|
708
|
+
}).headers);
|
|
709
|
+
} else if (auth.scheme === "shared_token") {
|
|
710
|
+
const token = requireSecret("shared_token", auth.token ?? this.options.webhookSecret);
|
|
711
|
+
Object.assign(headers, sharedTokenHeaders(token));
|
|
712
|
+
}
|
|
643
713
|
return this.http.request(path, {
|
|
644
714
|
method: "POST",
|
|
645
715
|
body,
|
|
646
|
-
headers
|
|
716
|
+
headers
|
|
717
|
+
});
|
|
718
|
+
}
|
|
719
|
+
/**
|
|
720
|
+
* Send a payload to the legacy Actions listener ingestion endpoint
|
|
721
|
+
* (`POST /webhooks/ingest/:org/:identifier`).
|
|
722
|
+
*
|
|
723
|
+
* New integrations should prefer {@link send}; this method is kept for
|
|
724
|
+
* existing listener integrations and SDK patch compatibility.
|
|
725
|
+
*/
|
|
726
|
+
async sendToActionsListener(params) {
|
|
727
|
+
const path = `/webhooks/ingest/${pathSegment(this.options.org)}/${pathSegment(params.identifier)}`;
|
|
728
|
+
const body = JSON.stringify(params.payload);
|
|
729
|
+
const headers = {};
|
|
730
|
+
if (params.auth.scheme === "svix") {
|
|
731
|
+
const msgId = params.auth.msgId ?? randomMessageId();
|
|
732
|
+
const timestamp = Math.floor(params.auth.timestamp ?? Date.now() / 1e3);
|
|
733
|
+
Object.assign(headers, {
|
|
647
734
|
"svix-id": msgId,
|
|
648
735
|
"svix-timestamp": String(timestamp),
|
|
649
|
-
"svix-signature":
|
|
650
|
-
}
|
|
736
|
+
"svix-signature": sign(params.auth.secret, msgId, timestamp, body)
|
|
737
|
+
});
|
|
738
|
+
} else if (params.auth.scheme === "hmac_sha256") Object.assign(headers, signHmacWebhookRequest({
|
|
739
|
+
secret: params.auth.secret,
|
|
740
|
+
rawBody: body,
|
|
741
|
+
timestamp: params.auth.timestamp
|
|
742
|
+
}).headers);
|
|
743
|
+
else if (params.auth.scheme === "shared_token") Object.assign(headers, sharedTokenHeaders(params.auth.token));
|
|
744
|
+
return this.http.request(path, {
|
|
745
|
+
method: "POST",
|
|
746
|
+
body,
|
|
747
|
+
headers
|
|
651
748
|
});
|
|
652
749
|
}
|
|
653
750
|
/**
|
|
751
|
+
* @deprecated Use {@link sendToActionsListener}. Kept as a compatibility
|
|
752
|
+
* alias for integrations created before the Actions listener naming update.
|
|
753
|
+
*/
|
|
754
|
+
async sendToListener(params) {
|
|
755
|
+
return this.sendToActionsListener(params);
|
|
756
|
+
}
|
|
757
|
+
/**
|
|
654
758
|
* Verify an inbound Svix webhook signature.
|
|
655
759
|
*
|
|
656
760
|
* @returns true if valid, false if invalid or expired
|
|
@@ -792,49 +896,6 @@ const ACTION_EVENT_TYPES = [
|
|
|
792
896
|
"action.expired"
|
|
793
897
|
];
|
|
794
898
|
//#endregion
|
|
795
|
-
//#region src/webhooks/ingestSigning.ts
|
|
796
|
-
/**
|
|
797
|
-
* Sign an outbound request for an AgentPress inbound webhook listener that
|
|
798
|
-
* uses the `hmac_sha256` verification scheme
|
|
799
|
-
* (`POST /webhooks/ingest/:org/:identifier`).
|
|
800
|
-
*
|
|
801
|
-
* Produces the two headers AgentPress verifies:
|
|
802
|
-
*
|
|
803
|
-
* - `x-webhook-timestamp` — unix seconds; AgentPress rejects timestamps more
|
|
804
|
-
* than 5 minutes from its own clock.
|
|
805
|
-
* - `x-webhook-signature` — `v1=<hex HMAC-SHA256 of "${timestamp}.${rawBody}">`.
|
|
806
|
-
*
|
|
807
|
-
* Send the exact `rawBody` string you signed — any re-serialization after
|
|
808
|
-
* signing (re-ordered keys, whitespace changes) invalidates the signature.
|
|
809
|
-
*
|
|
810
|
-
* @example
|
|
811
|
-
* ```ts
|
|
812
|
-
* const rawBody = JSON.stringify({ eventType: "review.created", data: {...} });
|
|
813
|
-
* const { headers } = signHmacWebhookRequest({ secret, rawBody });
|
|
814
|
-
* await fetch(ingestUrl, {
|
|
815
|
-
* method: "POST",
|
|
816
|
-
* body: rawBody,
|
|
817
|
-
* headers: { "content-type": "application/json", ...headers },
|
|
818
|
-
* });
|
|
819
|
-
* ```
|
|
820
|
-
*/
|
|
821
|
-
function signHmacWebhookRequest(params) {
|
|
822
|
-
const timestamp = Math.floor(params.timestamp ?? Date.now() / 1e3).toString();
|
|
823
|
-
return { headers: {
|
|
824
|
-
"x-webhook-timestamp": timestamp,
|
|
825
|
-
"x-webhook-signature": `v1=${createHmac("sha256", params.secret).update(`${timestamp}.${params.rawBody}`).digest("hex")}`
|
|
826
|
-
} };
|
|
827
|
-
}
|
|
828
|
-
/**
|
|
829
|
-
* Build the auth header for an AgentPress inbound webhook listener that uses
|
|
830
|
-
* the `shared_token` verification scheme. AgentPress also accepts
|
|
831
|
-
* `Authorization: Bearer <token>`; this helper uses the dedicated
|
|
832
|
-
* `x-webhook-token` header so it never collides with other auth middleware.
|
|
833
|
-
*/
|
|
834
|
-
function sharedTokenHeaders(token) {
|
|
835
|
-
return { "x-webhook-token": token };
|
|
836
|
-
}
|
|
837
|
-
//#endregion
|
|
838
899
|
export { ACTION_EVENT_TYPES, ActionsClient, AgentPress, AgentPressError, ConfigurationError, HttpError, KeyRotationVerifyError, PartnerTokenError, PartnersClient, TimeoutError, UserApprovalsClient, WebhookSignatureError, WebhooksClient, sharedTokenHeaders, signHmacWebhookRequest };
|
|
839
900
|
|
|
840
901
|
//# sourceMappingURL=index.mjs.map
|