@adcp/sdk 14.0.0-beta.5 → 14.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/lib/core/AgentClient.d.ts.map +1 -1
  2. package/dist/lib/core/AgentClient.js +26 -10
  3. package/dist/lib/core/AgentClient.js.map +1 -1
  4. package/dist/lib/core/AgentClient.mjs +26 -10
  5. package/dist/lib/core/AgentClient.mjs.map +1 -1
  6. package/dist/lib/core/AsyncHandler.d.mts +4 -2
  7. package/dist/lib/core/AsyncHandler.d.ts +4 -2
  8. package/dist/lib/core/AsyncHandler.d.ts.map +1 -1
  9. package/dist/lib/core/AsyncHandler.js +15 -1
  10. package/dist/lib/core/AsyncHandler.js.map +1 -1
  11. package/dist/lib/core/AsyncHandler.mjs +15 -1
  12. package/dist/lib/core/AsyncHandler.mjs.map +1 -1
  13. package/dist/lib/core/SingleAgentClient.d.mts +3 -1
  14. package/dist/lib/core/SingleAgentClient.d.ts +3 -1
  15. package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
  16. package/dist/lib/core/SingleAgentClient.js +158 -39
  17. package/dist/lib/core/SingleAgentClient.js.map +1 -1
  18. package/dist/lib/core/SingleAgentClient.mjs +167 -40
  19. package/dist/lib/core/SingleAgentClient.mjs.map +1 -1
  20. package/dist/lib/core/TaskExecutor.d.mts +57 -2
  21. package/dist/lib/core/TaskExecutor.d.ts +57 -2
  22. package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
  23. package/dist/lib/core/TaskExecutor.js +382 -44
  24. package/dist/lib/core/TaskExecutor.js.map +1 -1
  25. package/dist/lib/core/TaskExecutor.mjs +382 -45
  26. package/dist/lib/core/TaskExecutor.mjs.map +1 -1
  27. package/dist/lib/core/request-proposals-guard.d.mts +11 -0
  28. package/dist/lib/core/request-proposals-guard.d.ts +12 -0
  29. package/dist/lib/core/request-proposals-guard.d.ts.map +1 -0
  30. package/dist/lib/core/request-proposals-guard.js +65 -0
  31. package/dist/lib/core/request-proposals-guard.js.map +1 -0
  32. package/dist/lib/core/request-proposals-guard.mjs +39 -0
  33. package/dist/lib/core/request-proposals-guard.mjs.map +1 -0
  34. package/dist/lib/core/webhook-registration.d.mts +5 -0
  35. package/dist/lib/core/webhook-registration.d.ts +5 -0
  36. package/dist/lib/core/webhook-registration.d.ts.map +1 -1
  37. package/dist/lib/core/webhook-registration.js +13 -0
  38. package/dist/lib/core/webhook-registration.js.map +1 -1
  39. package/dist/lib/core/webhook-registration.mjs +13 -0
  40. package/dist/lib/core/webhook-registration.mjs.map +1 -1
  41. package/dist/lib/media-buy/compatibility.d.mts +45 -10
  42. package/dist/lib/media-buy/compatibility.d.ts +45 -10
  43. package/dist/lib/media-buy/compatibility.d.ts.map +1 -1
  44. package/dist/lib/media-buy/compatibility.js +295 -113
  45. package/dist/lib/media-buy/compatibility.js.map +1 -1
  46. package/dist/lib/media-buy/compatibility.mjs +295 -113
  47. package/dist/lib/media-buy/compatibility.mjs.map +1 -1
  48. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  49. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  50. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  51. package/dist/lib/types/core.generated.d.mts +334 -85
  52. package/dist/lib/types/core.generated.d.ts +334 -85
  53. package/dist/lib/types/core.generated.d.ts.map +1 -1
  54. package/dist/lib/types/core.generated.js.map +1 -1
  55. package/dist/lib/types/decline-proposals.d.ts +0 -5
  56. package/dist/lib/types/index.d.mts +2 -0
  57. package/dist/lib/types/index.d.ts +2 -0
  58. package/dist/lib/types/index.d.ts.map +1 -1
  59. package/dist/lib/types/index.js.map +1 -1
  60. package/dist/lib/types/index.mjs.map +1 -1
  61. package/dist/lib/types/request-proposals.d.ts +254 -36
  62. package/dist/lib/types/schemas.generated.d.ts +3123 -835
  63. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  64. package/dist/lib/types/schemas.generated.js +192 -85
  65. package/dist/lib/types/schemas.generated.js.map +1 -1
  66. package/dist/lib/types/schemas.generated.mjs +192 -85
  67. package/dist/lib/types/schemas.generated.mjs.map +1 -1
  68. package/dist/lib/types/tools.generated.d.mts +1 -121
  69. package/dist/lib/types/tools.generated.d.ts +1 -121
  70. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  71. package/dist/lib/types/tools.generated.js.map +1 -1
  72. package/dist/lib/version.d.mts +3 -3
  73. package/dist/lib/version.d.ts +3 -3
  74. package/dist/lib/version.js +3 -3
  75. package/dist/lib/version.js.map +1 -1
  76. package/dist/lib/version.mjs +3 -3
  77. package/dist/lib/version.mjs.map +1 -1
  78. package/docs/guides/MEDIA-BUY-3.2-COMPATIBILITY.md +28 -14
  79. package/docs/llms.txt +1 -1
  80. package/package.json +1 -1
@@ -0,0 +1,11 @@
1
+ import type { TaskResult } from './ConversationTypes.mjs';
2
+ /** Reject compatibility-only proposal projections at every native 3.2 completion boundary. */
3
+ export declare function assertNativeRequestProposalsResult(data: unknown): void;
4
+ /** Apply the native proposal guard to remote TaskInfo and local TaskState records. */
5
+ export declare function assertNativeRequestProposalsTask<T extends {
6
+ taskType?: string;
7
+ taskName?: string;
8
+ result?: unknown;
9
+ }>(task: T): T;
10
+ /** Guard immediate and resumable completions returned by the native task API. */
11
+ export declare function guardNativeRequestProposalsCompletion<T>(completion: TaskResult<T>): TaskResult<T>;
@@ -0,0 +1,12 @@
1
+ import type { TaskResult } from './ConversationTypes';
2
+ /** Reject compatibility-only proposal projections at every native 3.2 completion boundary. */
3
+ export declare function assertNativeRequestProposalsResult(data: unknown): void;
4
+ /** Apply the native proposal guard to remote TaskInfo and local TaskState records. */
5
+ export declare function assertNativeRequestProposalsTask<T extends {
6
+ taskType?: string;
7
+ taskName?: string;
8
+ result?: unknown;
9
+ }>(task: T): T;
10
+ /** Guard immediate and resumable completions returned by the native task API. */
11
+ export declare function guardNativeRequestProposalsCompletion<T>(completion: TaskResult<T>): TaskResult<T>;
12
+ //# sourceMappingURL=request-proposals-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-proposals-guard.d.ts","sourceRoot":"","sources":["../../../src/lib/core/request-proposals-guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD,8FAA8F;AAC9F,wBAAgB,kCAAkC,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAStE;AAED,sFAAsF;AACtF,wBAAgB,gCAAgC,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EACnH,IAAI,EAAE,CAAC,GACN,CAAC,CAGH;AAED,iFAAiF;AACjF,wBAAgB,qCAAqC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAuBjG"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var request_proposals_guard_exports = {};
20
+ __export(request_proposals_guard_exports, {
21
+ assertNativeRequestProposalsResult: () => assertNativeRequestProposalsResult,
22
+ assertNativeRequestProposalsTask: () => assertNativeRequestProposalsTask,
23
+ guardNativeRequestProposalsCompletion: () => guardNativeRequestProposalsCompletion
24
+ });
25
+ module.exports = __toCommonJS(request_proposals_guard_exports);
26
+ const PROJECTION_ONLY_REQUEST_PROPOSALS_MESSAGE = "request_proposals returned the projection-only products_available outcome from a native compact seller.";
27
+ function assertNativeRequestProposalsResult(data) {
28
+ if (data !== null && typeof data === "object" && (data.outcome === "products_available" || data.purchase_continuation !== void 0)) {
29
+ throw new TypeError(PROJECTION_ONLY_REQUEST_PROPOSALS_MESSAGE);
30
+ }
31
+ }
32
+ function assertNativeRequestProposalsTask(task) {
33
+ if ((task.taskType ?? task.taskName) === "request_proposals") assertNativeRequestProposalsResult(task.result);
34
+ return task;
35
+ }
36
+ function guardNativeRequestProposalsCompletion(completion) {
37
+ assertNativeRequestProposalsResult(completion.data);
38
+ if (completion.submitted) {
39
+ const submitted = completion.submitted;
40
+ completion.submitted = {
41
+ ...submitted,
42
+ track: async (transport) => {
43
+ const task = await submitted.track(transport);
44
+ assertNativeRequestProposalsResult(task.result);
45
+ return task;
46
+ },
47
+ waitForCompletion: async (pollInterval, signal) => guardNativeRequestProposalsCompletion(await submitted.waitForCompletion(pollInterval, signal))
48
+ };
49
+ }
50
+ if (completion.deferred) {
51
+ const deferred = completion.deferred;
52
+ completion.deferred = {
53
+ ...deferred,
54
+ resume: async (resumeInput) => guardNativeRequestProposalsCompletion(await deferred.resume(resumeInput))
55
+ };
56
+ }
57
+ return completion;
58
+ }
59
+ // Annotate the CommonJS export names for ESM import in node:
60
+ 0 && (module.exports = {
61
+ assertNativeRequestProposalsResult,
62
+ assertNativeRequestProposalsTask,
63
+ guardNativeRequestProposalsCompletion
64
+ });
65
+ //# sourceMappingURL=request-proposals-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/core/request-proposals-guard.ts"],"sourcesContent":["import type { TaskResult } from './ConversationTypes';\n\nconst PROJECTION_ONLY_REQUEST_PROPOSALS_MESSAGE =\n 'request_proposals returned the projection-only products_available outcome from a native compact seller.';\n\n/** Reject compatibility-only proposal projections at every native 3.2 completion boundary. */\nexport function assertNativeRequestProposalsResult(data: unknown): void {\n if (\n data !== null &&\n typeof data === 'object' &&\n ((data as { outcome?: unknown }).outcome === 'products_available' ||\n (data as { purchase_continuation?: unknown }).purchase_continuation !== undefined)\n ) {\n throw new TypeError(PROJECTION_ONLY_REQUEST_PROPOSALS_MESSAGE);\n }\n}\n\n/** Apply the native proposal guard to remote TaskInfo and local TaskState records. */\nexport function assertNativeRequestProposalsTask<T extends { taskType?: string; taskName?: string; result?: unknown }>(\n task: T\n): T {\n if ((task.taskType ?? task.taskName) === 'request_proposals') assertNativeRequestProposalsResult(task.result);\n return task;\n}\n\n/** Guard immediate and resumable completions returned by the native task API. */\nexport function guardNativeRequestProposalsCompletion<T>(completion: TaskResult<T>): TaskResult<T> {\n assertNativeRequestProposalsResult(completion.data);\n if (completion.submitted) {\n const submitted = completion.submitted;\n completion.submitted = {\n ...submitted,\n track: async transport => {\n const task = await submitted.track(transport);\n assertNativeRequestProposalsResult(task.result);\n return task;\n },\n waitForCompletion: async (pollInterval, signal) =>\n guardNativeRequestProposalsCompletion(await submitted.waitForCompletion(pollInterval, signal)),\n };\n }\n if (completion.deferred) {\n const deferred = completion.deferred;\n completion.deferred = {\n ...deferred,\n resume: async resumeInput => guardNativeRequestProposalsCompletion(await deferred.resume(resumeInput)),\n };\n }\n return completion;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,MAAM,4CACJ;AAGK,SAAS,mCAAmC,MAAqB;AACtE,MACE,SAAS,QACT,OAAO,SAAS,aACd,KAA+B,YAAY,wBAC1C,KAA6C,0BAA0B,SAC1E;AACA,UAAM,IAAI,UAAU,yCAAyC;AAAA,EAC/D;AACF;AAGO,SAAS,iCACd,MACG;AACH,OAAK,KAAK,YAAY,KAAK,cAAc,oBAAqB,oCAAmC,KAAK,MAAM;AAC5G,SAAO;AACT;AAGO,SAAS,sCAAyC,YAA0C;AACjG,qCAAmC,WAAW,IAAI;AAClD,MAAI,WAAW,WAAW;AACxB,UAAM,YAAY,WAAW;AAC7B,eAAW,YAAY;AAAA,MACrB,GAAG;AAAA,MACH,OAAO,OAAM,cAAa;AACxB,cAAM,OAAO,MAAM,UAAU,MAAM,SAAS;AAC5C,2CAAmC,KAAK,MAAM;AAC9C,eAAO;AAAA,MACT;AAAA,MACA,mBAAmB,OAAO,cAAc,WACtC,sCAAsC,MAAM,UAAU,kBAAkB,cAAc,MAAM,CAAC;AAAA,IACjG;AAAA,EACF;AACA,MAAI,WAAW,UAAU;AACvB,UAAM,WAAW,WAAW;AAC5B,eAAW,WAAW;AAAA,MACpB,GAAG;AAAA,MACH,QAAQ,OAAM,gBAAe,sCAAsC,MAAM,SAAS,OAAO,WAAW,CAAC;AAAA,IACvG;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,39 @@
1
+ const PROJECTION_ONLY_REQUEST_PROPOSALS_MESSAGE = "request_proposals returned the projection-only products_available outcome from a native compact seller.";
2
+ function assertNativeRequestProposalsResult(data) {
3
+ if (data !== null && typeof data === "object" && (data.outcome === "products_available" || data.purchase_continuation !== void 0)) {
4
+ throw new TypeError(PROJECTION_ONLY_REQUEST_PROPOSALS_MESSAGE);
5
+ }
6
+ }
7
+ function assertNativeRequestProposalsTask(task) {
8
+ if ((task.taskType ?? task.taskName) === "request_proposals") assertNativeRequestProposalsResult(task.result);
9
+ return task;
10
+ }
11
+ function guardNativeRequestProposalsCompletion(completion) {
12
+ assertNativeRequestProposalsResult(completion.data);
13
+ if (completion.submitted) {
14
+ const submitted = completion.submitted;
15
+ completion.submitted = {
16
+ ...submitted,
17
+ track: async (transport) => {
18
+ const task = await submitted.track(transport);
19
+ assertNativeRequestProposalsResult(task.result);
20
+ return task;
21
+ },
22
+ waitForCompletion: async (pollInterval, signal) => guardNativeRequestProposalsCompletion(await submitted.waitForCompletion(pollInterval, signal))
23
+ };
24
+ }
25
+ if (completion.deferred) {
26
+ const deferred = completion.deferred;
27
+ completion.deferred = {
28
+ ...deferred,
29
+ resume: async (resumeInput) => guardNativeRequestProposalsCompletion(await deferred.resume(resumeInput))
30
+ };
31
+ }
32
+ return completion;
33
+ }
34
+ export {
35
+ assertNativeRequestProposalsResult,
36
+ assertNativeRequestProposalsTask,
37
+ guardNativeRequestProposalsCompletion
38
+ };
39
+ //# sourceMappingURL=request-proposals-guard.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/core/request-proposals-guard.ts"],"sourcesContent":["import type { TaskResult } from './ConversationTypes';\n\nconst PROJECTION_ONLY_REQUEST_PROPOSALS_MESSAGE =\n 'request_proposals returned the projection-only products_available outcome from a native compact seller.';\n\n/** Reject compatibility-only proposal projections at every native 3.2 completion boundary. */\nexport function assertNativeRequestProposalsResult(data: unknown): void {\n if (\n data !== null &&\n typeof data === 'object' &&\n ((data as { outcome?: unknown }).outcome === 'products_available' ||\n (data as { purchase_continuation?: unknown }).purchase_continuation !== undefined)\n ) {\n throw new TypeError(PROJECTION_ONLY_REQUEST_PROPOSALS_MESSAGE);\n }\n}\n\n/** Apply the native proposal guard to remote TaskInfo and local TaskState records. */\nexport function assertNativeRequestProposalsTask<T extends { taskType?: string; taskName?: string; result?: unknown }>(\n task: T\n): T {\n if ((task.taskType ?? task.taskName) === 'request_proposals') assertNativeRequestProposalsResult(task.result);\n return task;\n}\n\n/** Guard immediate and resumable completions returned by the native task API. */\nexport function guardNativeRequestProposalsCompletion<T>(completion: TaskResult<T>): TaskResult<T> {\n assertNativeRequestProposalsResult(completion.data);\n if (completion.submitted) {\n const submitted = completion.submitted;\n completion.submitted = {\n ...submitted,\n track: async transport => {\n const task = await submitted.track(transport);\n assertNativeRequestProposalsResult(task.result);\n return task;\n },\n waitForCompletion: async (pollInterval, signal) =>\n guardNativeRequestProposalsCompletion(await submitted.waitForCompletion(pollInterval, signal)),\n };\n }\n if (completion.deferred) {\n const deferred = completion.deferred;\n completion.deferred = {\n ...deferred,\n resume: async resumeInput => guardNativeRequestProposalsCompletion(await deferred.resume(resumeInput)),\n };\n }\n return completion;\n}\n"],"mappings":"AAEA,MAAM,4CACJ;AAGK,SAAS,mCAAmC,MAAqB;AACtE,MACE,SAAS,QACT,OAAO,SAAS,aACd,KAA+B,YAAY,wBAC1C,KAA6C,0BAA0B,SAC1E;AACA,UAAM,IAAI,UAAU,yCAAyC;AAAA,EAC/D;AACF;AAGO,SAAS,iCACd,MACG;AACH,OAAK,KAAK,YAAY,KAAK,cAAc,oBAAqB,oCAAmC,KAAK,MAAM;AAC5G,SAAO;AACT;AAGO,SAAS,sCAAyC,YAA0C;AACjG,qCAAmC,WAAW,IAAI;AAClD,MAAI,WAAW,WAAW;AACxB,UAAM,YAAY,WAAW;AAC7B,eAAW,YAAY;AAAA,MACrB,GAAG;AAAA,MACH,OAAO,OAAM,cAAa;AACxB,cAAM,OAAO,MAAM,UAAU,MAAM,SAAS;AAC5C,2CAAmC,KAAK,MAAM;AAC9C,eAAO;AAAA,MACT;AAAA,MACA,mBAAmB,OAAO,cAAc,WACtC,sCAAsC,MAAM,UAAU,kBAAkB,cAAc,MAAM,CAAC;AAAA,IACjG;AAAA,EACF;AACA,MAAI,WAAW,UAAU;AACvB,UAAM,WAAW,WAAW;AAC5B,eAAW,WAAW;AAAA,MACpB,GAAG;AAAA,MACH,QAAQ,OAAM,gBAAe,sCAAsC,MAAM,SAAS,OAAO,WAAW,CAAC;AAAA,IACvG;AAAA,EACF;AACA,SAAO;AACT;","names":[]}
@@ -17,6 +17,8 @@ export interface WebhookRegistration {
17
17
  mode: WebhookAuthenticationMode;
18
18
  /** Originating preview API, persisted so async routing survives races and restarts. */
19
19
  previewMode?: 'canonical' | 'legacy';
20
+ /** Callback must fail closed unless a durable mutation-settlement route is recoverable. */
21
+ requiresDurableSettlement?: boolean;
20
22
  /** Epoch milliseconds. */
21
23
  createdAt: number;
22
24
  /** Epoch milliseconds. */
@@ -30,6 +32,8 @@ export interface WebhookRegistrationStore {
30
32
  * conflicting live registration for the same key MUST reject.
31
33
  */
32
34
  putIfAbsent(registration: WebhookRegistration): Promise<void>;
35
+ /** Atomically mark a live registration as requiring durable mutation settlement. */
36
+ markRequiresDurableSettlement?(agentId: string, operationId: string): Promise<void>;
33
37
  /** Remove provenance after a definitively synchronous terminal response. */
34
38
  delete?(agentId: string, operationId: string): Promise<void>;
35
39
  }
@@ -51,5 +55,6 @@ export declare class InMemoryWebhookRegistrationStore implements WebhookRegistra
51
55
  get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined>;
52
56
  putIfAbsent(registration: WebhookRegistration): Promise<void>;
53
57
  delete(agentId: string, operationId: string): Promise<void>;
58
+ markRequiresDurableSettlement(agentId: string, operationId: string): Promise<void>;
54
59
  private pruneExpired;
55
60
  }
@@ -17,6 +17,8 @@ export interface WebhookRegistration {
17
17
  mode: WebhookAuthenticationMode;
18
18
  /** Originating preview API, persisted so async routing survives races and restarts. */
19
19
  previewMode?: 'canonical' | 'legacy';
20
+ /** Callback must fail closed unless a durable mutation-settlement route is recoverable. */
21
+ requiresDurableSettlement?: boolean;
20
22
  /** Epoch milliseconds. */
21
23
  createdAt: number;
22
24
  /** Epoch milliseconds. */
@@ -30,6 +32,8 @@ export interface WebhookRegistrationStore {
30
32
  * conflicting live registration for the same key MUST reject.
31
33
  */
32
34
  putIfAbsent(registration: WebhookRegistration): Promise<void>;
35
+ /** Atomically mark a live registration as requiring durable mutation settlement. */
36
+ markRequiresDurableSettlement?(agentId: string, operationId: string): Promise<void>;
33
37
  /** Remove provenance after a definitively synchronous terminal response. */
34
38
  delete?(agentId: string, operationId: string): Promise<void>;
35
39
  }
@@ -51,6 +55,7 @@ export declare class InMemoryWebhookRegistrationStore implements WebhookRegistra
51
55
  get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined>;
52
56
  putIfAbsent(registration: WebhookRegistration): Promise<void>;
53
57
  delete(agentId: string, operationId: string): Promise<void>;
58
+ markRequiresDurableSettlement(agentId: string, operationId: string): Promise<void>;
54
59
  private pruneExpired;
55
60
  }
56
61
  //# sourceMappingURL=webhook-registration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-registration.d.ts","sourceRoot":"","sources":["../../../src/lib/core/webhook-registration.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,yBAAyB,GAAG,aAAa,GAAG,SAAS,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,yBAAyB,CAAC;IAChC,uFAAuF;IACvF,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACrC,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,0EAA0E;IAC1E,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9F;;;OAGG;IACH,WAAW,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,4EAA4E;IAC5E,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,uCAAuC;IACtD,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,gCAAiC,YAAW,wBAAwB;IAC/E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,OAAO,GAAE,uCAA4C;IAQ3D,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;IAW7F,WAAW,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,OAAO,CAAC,YAAY;CAMrB"}
1
+ {"version":3,"file":"webhook-registration.d.ts","sourceRoot":"","sources":["../../../src/lib/core/webhook-registration.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,yBAAyB,GAAG,aAAa,GAAG,SAAS,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,yBAAyB,CAAC;IAChC,uFAAuF;IACvF,WAAW,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACrC,2FAA2F;IAC3F,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,0EAA0E;IAC1E,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC,CAAC;IAC9F;;;OAGG;IACH,WAAW,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,oFAAoF;IACpF,6BAA6B,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,4EAA4E;IAC5E,MAAM,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,uCAAuC;IACtD,iEAAiE;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,gCAAiC,YAAW,wBAAwB;IAC/E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoD;IAC5E,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,OAAO,GAAE,uCAA4C;IAQ3D,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,SAAS,CAAC;IAW7F,WAAW,CAAC,YAAY,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB7D,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3D,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxF,OAAO,CAAC,YAAY;CAMrB"}
@@ -64,6 +64,15 @@ class InMemoryWebhookRegistrationStore {
64
64
  async delete(agentId, operationId) {
65
65
  this.entries.delete(registrationKey(agentId, operationId));
66
66
  }
67
+ async markRequiresDurableSettlement(agentId, operationId) {
68
+ const key = registrationKey(agentId, operationId);
69
+ const registration = this.entries.get(key);
70
+ if (!registration || registration.expiresAt <= this.now()) {
71
+ this.entries.delete(key);
72
+ throw new Error("Cannot mark a missing or expired webhook registration for durable settlement.");
73
+ }
74
+ this.entries.set(key, Object.freeze({ ...registration, requiresDurableSettlement: true }));
75
+ }
67
76
  pruneExpired() {
68
77
  const now = this.now();
69
78
  for (const [key, registration] of this.entries) {
@@ -91,6 +100,10 @@ function validateRegistration(registration) {
91
100
  if (callback.protocol !== "https:" && !(0, import_webhook_verifier.isWebhookLoopbackHost)(callback.hostname)) {
92
101
  throw new TypeError("Webhook callbackUrl must use HTTPS (except loopback development URLs).");
93
102
  }
103
+ const agent = new URL(registration.agentUrl);
104
+ if (agent.username || agent.password) {
105
+ throw new TypeError("Webhook agentUrl cannot contain userinfo credentials.");
106
+ }
94
107
  if (registration.expiresAt <= registration.createdAt) {
95
108
  throw new TypeError("Webhook registration expiresAt must be later than createdAt.");
96
109
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/core/webhook-registration.ts"],"sourcesContent":["import { ConfigurationError } from '../errors';\nimport { isWebhookLoopbackHost } from '../signing/webhook-verifier';\n\nexport type WebhookAuthenticationMode = 'hmac-sha256' | 'rfc9421';\n\n/**\n * Trusted provenance for an outbound task-status webhook registration.\n *\n * Registrations contain routing and mode provenance only, never callback\n * credentials. Stores should still treat seller and callback URLs as\n * operationally sensitive and omit them from public diagnostics.\n */\nexport interface WebhookRegistration {\n agentId: string;\n agentUrl: string;\n protocol: 'mcp' | 'a2a';\n operationId: string;\n taskType: string;\n callbackUrl: string;\n method: 'POST';\n mode: WebhookAuthenticationMode;\n /** Originating preview API, persisted so async routing survives races and restarts. */\n previewMode?: 'canonical' | 'legacy';\n /** Epoch milliseconds. */\n createdAt: number;\n /** Epoch milliseconds. */\n expiresAt: number;\n}\n\nexport interface WebhookRegistrationStore {\n /** Return no record when `expiresAt` is at or before the current time. */\n get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined>;\n /**\n * Atomically create a registration. An identical retry is idempotent; a\n * conflicting live registration for the same key MUST reject.\n */\n putIfAbsent(registration: WebhookRegistration): Promise<void>;\n /** Remove provenance after a definitively synchronous terminal response. */\n delete?(agentId: string, operationId: string): Promise<void>;\n}\n\nexport interface InMemoryWebhookRegistrationStoreOptions {\n /** Maximum number of live registrations. Defaults to 100,000. */\n maxEntries?: number;\n /** Current time in epoch milliseconds, for deterministic tests. */\n now?: () => number;\n}\n\n/**\n * Process-local registration store. Multi-process or restart-safe receivers\n * must inject a shared durable implementation.\n */\nexport class InMemoryWebhookRegistrationStore implements WebhookRegistrationStore {\n private readonly entries = new Map<string, Readonly<WebhookRegistration>>();\n private readonly maxEntries: number;\n private readonly now: () => number;\n\n constructor(options: InMemoryWebhookRegistrationStoreOptions = {}) {\n this.maxEntries = options.maxEntries ?? 100_000;\n this.now = options.now ?? Date.now;\n if (!Number.isSafeInteger(this.maxEntries) || this.maxEntries < 1) {\n throw new TypeError('maxEntries must be a positive safe integer.');\n }\n }\n\n async get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined> {\n const key = registrationKey(agentId, operationId);\n const registration = this.entries.get(key);\n if (!registration) return undefined;\n if (registration.expiresAt <= this.now()) {\n this.entries.delete(key);\n return undefined;\n }\n return registration;\n }\n\n async putIfAbsent(registration: WebhookRegistration): Promise<void> {\n validateRegistration(registration);\n this.pruneExpired();\n const key = registrationKey(registration.agentId, registration.operationId);\n const existing = this.entries.get(key);\n if (existing) {\n if (sameRegistration(existing, registration)) return;\n throw new ConfigurationError(\n `Webhook operation id '${registration.operationId}' is already registered with different trusted provenance.`,\n 'operationId'\n );\n }\n if (this.entries.size >= this.maxEntries) {\n throw new Error('Webhook registration store capacity reached; refusing to dispatch an untracked callback.');\n }\n this.entries.set(key, Object.freeze({ ...registration }));\n }\n\n async delete(agentId: string, operationId: string): Promise<void> {\n this.entries.delete(registrationKey(agentId, operationId));\n }\n\n private pruneExpired(): void {\n const now = this.now();\n for (const [key, registration] of this.entries) {\n if (registration.expiresAt <= now) this.entries.delete(key);\n }\n }\n}\n\nfunction registrationKey(agentId: string, operationId: string): string {\n return `${agentId}\\x00${operationId}`;\n}\n\nfunction validateRegistration(registration: WebhookRegistration): void {\n if (!registration.agentId || !registration.operationId || !registration.taskType) {\n throw new TypeError('Webhook registration requires agentId, operationId, and taskType.');\n }\n if (\n registration.agentId.includes('\\0') ||\n registration.operationId.includes('\\0') ||\n registration.taskType.includes('\\0')\n ) {\n throw new TypeError('Webhook registration identifiers cannot contain NUL characters.');\n }\n if (registration.previewMode !== undefined && !['canonical', 'legacy'].includes(registration.previewMode)) {\n throw new TypeError('Webhook registration previewMode must be canonical or legacy.');\n }\n const callback = new URL(registration.callbackUrl);\n if (callback.username || callback.password || callback.hash) {\n throw new TypeError('Webhook callbackUrl cannot contain userinfo or a fragment.');\n }\n if (callback.protocol !== 'https:' && !isWebhookLoopbackHost(callback.hostname)) {\n throw new TypeError('Webhook callbackUrl must use HTTPS (except loopback development URLs).');\n }\n if (registration.expiresAt <= registration.createdAt) {\n throw new TypeError('Webhook registration expiresAt must be later than createdAt.');\n }\n}\n\nfunction sameRegistration(a: Readonly<WebhookRegistration>, b: WebhookRegistration): boolean {\n return (\n a.agentId === b.agentId &&\n a.agentUrl === b.agentUrl &&\n a.protocol === b.protocol &&\n a.operationId === b.operationId &&\n a.taskType === b.taskType &&\n a.callbackUrl === b.callbackUrl &&\n a.method === b.method &&\n a.mode === b.mode &&\n a.previewMode === b.previewMode\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/core/webhook-registration.ts"],"sourcesContent":["import { ConfigurationError } from '../errors';\nimport { isWebhookLoopbackHost } from '../signing/webhook-verifier';\n\nexport type WebhookAuthenticationMode = 'hmac-sha256' | 'rfc9421';\n\n/**\n * Trusted provenance for an outbound task-status webhook registration.\n *\n * Registrations contain routing and mode provenance only, never callback\n * credentials. Stores should still treat seller and callback URLs as\n * operationally sensitive and omit them from public diagnostics.\n */\nexport interface WebhookRegistration {\n agentId: string;\n agentUrl: string;\n protocol: 'mcp' | 'a2a';\n operationId: string;\n taskType: string;\n callbackUrl: string;\n method: 'POST';\n mode: WebhookAuthenticationMode;\n /** Originating preview API, persisted so async routing survives races and restarts. */\n previewMode?: 'canonical' | 'legacy';\n /** Callback must fail closed unless a durable mutation-settlement route is recoverable. */\n requiresDurableSettlement?: boolean;\n /** Epoch milliseconds. */\n createdAt: number;\n /** Epoch milliseconds. */\n expiresAt: number;\n}\n\nexport interface WebhookRegistrationStore {\n /** Return no record when `expiresAt` is at or before the current time. */\n get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined>;\n /**\n * Atomically create a registration. An identical retry is idempotent; a\n * conflicting live registration for the same key MUST reject.\n */\n putIfAbsent(registration: WebhookRegistration): Promise<void>;\n /** Atomically mark a live registration as requiring durable mutation settlement. */\n markRequiresDurableSettlement?(agentId: string, operationId: string): Promise<void>;\n /** Remove provenance after a definitively synchronous terminal response. */\n delete?(agentId: string, operationId: string): Promise<void>;\n}\n\nexport interface InMemoryWebhookRegistrationStoreOptions {\n /** Maximum number of live registrations. Defaults to 100,000. */\n maxEntries?: number;\n /** Current time in epoch milliseconds, for deterministic tests. */\n now?: () => number;\n}\n\n/**\n * Process-local registration store. Multi-process or restart-safe receivers\n * must inject a shared durable implementation.\n */\nexport class InMemoryWebhookRegistrationStore implements WebhookRegistrationStore {\n private readonly entries = new Map<string, Readonly<WebhookRegistration>>();\n private readonly maxEntries: number;\n private readonly now: () => number;\n\n constructor(options: InMemoryWebhookRegistrationStoreOptions = {}) {\n this.maxEntries = options.maxEntries ?? 100_000;\n this.now = options.now ?? Date.now;\n if (!Number.isSafeInteger(this.maxEntries) || this.maxEntries < 1) {\n throw new TypeError('maxEntries must be a positive safe integer.');\n }\n }\n\n async get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined> {\n const key = registrationKey(agentId, operationId);\n const registration = this.entries.get(key);\n if (!registration) return undefined;\n if (registration.expiresAt <= this.now()) {\n this.entries.delete(key);\n return undefined;\n }\n return registration;\n }\n\n async putIfAbsent(registration: WebhookRegistration): Promise<void> {\n validateRegistration(registration);\n this.pruneExpired();\n const key = registrationKey(registration.agentId, registration.operationId);\n const existing = this.entries.get(key);\n if (existing) {\n if (sameRegistration(existing, registration)) return;\n throw new ConfigurationError(\n `Webhook operation id '${registration.operationId}' is already registered with different trusted provenance.`,\n 'operationId'\n );\n }\n if (this.entries.size >= this.maxEntries) {\n throw new Error('Webhook registration store capacity reached; refusing to dispatch an untracked callback.');\n }\n this.entries.set(key, Object.freeze({ ...registration }));\n }\n\n async delete(agentId: string, operationId: string): Promise<void> {\n this.entries.delete(registrationKey(agentId, operationId));\n }\n\n async markRequiresDurableSettlement(agentId: string, operationId: string): Promise<void> {\n const key = registrationKey(agentId, operationId);\n const registration = this.entries.get(key);\n if (!registration || registration.expiresAt <= this.now()) {\n this.entries.delete(key);\n throw new Error('Cannot mark a missing or expired webhook registration for durable settlement.');\n }\n this.entries.set(key, Object.freeze({ ...registration, requiresDurableSettlement: true }));\n }\n\n private pruneExpired(): void {\n const now = this.now();\n for (const [key, registration] of this.entries) {\n if (registration.expiresAt <= now) this.entries.delete(key);\n }\n }\n}\n\nfunction registrationKey(agentId: string, operationId: string): string {\n return `${agentId}\\x00${operationId}`;\n}\n\nfunction validateRegistration(registration: WebhookRegistration): void {\n if (!registration.agentId || !registration.operationId || !registration.taskType) {\n throw new TypeError('Webhook registration requires agentId, operationId, and taskType.');\n }\n if (\n registration.agentId.includes('\\0') ||\n registration.operationId.includes('\\0') ||\n registration.taskType.includes('\\0')\n ) {\n throw new TypeError('Webhook registration identifiers cannot contain NUL characters.');\n }\n if (registration.previewMode !== undefined && !['canonical', 'legacy'].includes(registration.previewMode)) {\n throw new TypeError('Webhook registration previewMode must be canonical or legacy.');\n }\n const callback = new URL(registration.callbackUrl);\n if (callback.username || callback.password || callback.hash) {\n throw new TypeError('Webhook callbackUrl cannot contain userinfo or a fragment.');\n }\n if (callback.protocol !== 'https:' && !isWebhookLoopbackHost(callback.hostname)) {\n throw new TypeError('Webhook callbackUrl must use HTTPS (except loopback development URLs).');\n }\n const agent = new URL(registration.agentUrl);\n if (agent.username || agent.password) {\n throw new TypeError('Webhook agentUrl cannot contain userinfo credentials.');\n }\n if (registration.expiresAt <= registration.createdAt) {\n throw new TypeError('Webhook registration expiresAt must be later than createdAt.');\n }\n}\n\nfunction sameRegistration(a: Readonly<WebhookRegistration>, b: WebhookRegistration): boolean {\n return (\n a.agentId === b.agentId &&\n a.agentUrl === b.agentUrl &&\n a.protocol === b.protocol &&\n a.operationId === b.operationId &&\n a.taskType === b.taskType &&\n a.callbackUrl === b.callbackUrl &&\n a.method === b.method &&\n a.mode === b.mode &&\n a.previewMode === b.previewMode\n );\n}\n"],"mappings":"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","names":[]}
@@ -41,6 +41,15 @@ class InMemoryWebhookRegistrationStore {
41
41
  async delete(agentId, operationId) {
42
42
  this.entries.delete(registrationKey(agentId, operationId));
43
43
  }
44
+ async markRequiresDurableSettlement(agentId, operationId) {
45
+ const key = registrationKey(agentId, operationId);
46
+ const registration = this.entries.get(key);
47
+ if (!registration || registration.expiresAt <= this.now()) {
48
+ this.entries.delete(key);
49
+ throw new Error("Cannot mark a missing or expired webhook registration for durable settlement.");
50
+ }
51
+ this.entries.set(key, Object.freeze({ ...registration, requiresDurableSettlement: true }));
52
+ }
44
53
  pruneExpired() {
45
54
  const now = this.now();
46
55
  for (const [key, registration] of this.entries) {
@@ -68,6 +77,10 @@ function validateRegistration(registration) {
68
77
  if (callback.protocol !== "https:" && !isWebhookLoopbackHost(callback.hostname)) {
69
78
  throw new TypeError("Webhook callbackUrl must use HTTPS (except loopback development URLs).");
70
79
  }
80
+ const agent = new URL(registration.agentUrl);
81
+ if (agent.username || agent.password) {
82
+ throw new TypeError("Webhook agentUrl cannot contain userinfo credentials.");
83
+ }
71
84
  if (registration.expiresAt <= registration.createdAt) {
72
85
  throw new TypeError("Webhook registration expiresAt must be later than createdAt.");
73
86
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/lib/core/webhook-registration.ts"],"sourcesContent":["import { ConfigurationError } from '../errors';\nimport { isWebhookLoopbackHost } from '../signing/webhook-verifier';\n\nexport type WebhookAuthenticationMode = 'hmac-sha256' | 'rfc9421';\n\n/**\n * Trusted provenance for an outbound task-status webhook registration.\n *\n * Registrations contain routing and mode provenance only, never callback\n * credentials. Stores should still treat seller and callback URLs as\n * operationally sensitive and omit them from public diagnostics.\n */\nexport interface WebhookRegistration {\n agentId: string;\n agentUrl: string;\n protocol: 'mcp' | 'a2a';\n operationId: string;\n taskType: string;\n callbackUrl: string;\n method: 'POST';\n mode: WebhookAuthenticationMode;\n /** Originating preview API, persisted so async routing survives races and restarts. */\n previewMode?: 'canonical' | 'legacy';\n /** Epoch milliseconds. */\n createdAt: number;\n /** Epoch milliseconds. */\n expiresAt: number;\n}\n\nexport interface WebhookRegistrationStore {\n /** Return no record when `expiresAt` is at or before the current time. */\n get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined>;\n /**\n * Atomically create a registration. An identical retry is idempotent; a\n * conflicting live registration for the same key MUST reject.\n */\n putIfAbsent(registration: WebhookRegistration): Promise<void>;\n /** Remove provenance after a definitively synchronous terminal response. */\n delete?(agentId: string, operationId: string): Promise<void>;\n}\n\nexport interface InMemoryWebhookRegistrationStoreOptions {\n /** Maximum number of live registrations. Defaults to 100,000. */\n maxEntries?: number;\n /** Current time in epoch milliseconds, for deterministic tests. */\n now?: () => number;\n}\n\n/**\n * Process-local registration store. Multi-process or restart-safe receivers\n * must inject a shared durable implementation.\n */\nexport class InMemoryWebhookRegistrationStore implements WebhookRegistrationStore {\n private readonly entries = new Map<string, Readonly<WebhookRegistration>>();\n private readonly maxEntries: number;\n private readonly now: () => number;\n\n constructor(options: InMemoryWebhookRegistrationStoreOptions = {}) {\n this.maxEntries = options.maxEntries ?? 100_000;\n this.now = options.now ?? Date.now;\n if (!Number.isSafeInteger(this.maxEntries) || this.maxEntries < 1) {\n throw new TypeError('maxEntries must be a positive safe integer.');\n }\n }\n\n async get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined> {\n const key = registrationKey(agentId, operationId);\n const registration = this.entries.get(key);\n if (!registration) return undefined;\n if (registration.expiresAt <= this.now()) {\n this.entries.delete(key);\n return undefined;\n }\n return registration;\n }\n\n async putIfAbsent(registration: WebhookRegistration): Promise<void> {\n validateRegistration(registration);\n this.pruneExpired();\n const key = registrationKey(registration.agentId, registration.operationId);\n const existing = this.entries.get(key);\n if (existing) {\n if (sameRegistration(existing, registration)) return;\n throw new ConfigurationError(\n `Webhook operation id '${registration.operationId}' is already registered with different trusted provenance.`,\n 'operationId'\n );\n }\n if (this.entries.size >= this.maxEntries) {\n throw new Error('Webhook registration store capacity reached; refusing to dispatch an untracked callback.');\n }\n this.entries.set(key, Object.freeze({ ...registration }));\n }\n\n async delete(agentId: string, operationId: string): Promise<void> {\n this.entries.delete(registrationKey(agentId, operationId));\n }\n\n private pruneExpired(): void {\n const now = this.now();\n for (const [key, registration] of this.entries) {\n if (registration.expiresAt <= now) this.entries.delete(key);\n }\n }\n}\n\nfunction registrationKey(agentId: string, operationId: string): string {\n return `${agentId}\\x00${operationId}`;\n}\n\nfunction validateRegistration(registration: WebhookRegistration): void {\n if (!registration.agentId || !registration.operationId || !registration.taskType) {\n throw new TypeError('Webhook registration requires agentId, operationId, and taskType.');\n }\n if (\n registration.agentId.includes('\\0') ||\n registration.operationId.includes('\\0') ||\n registration.taskType.includes('\\0')\n ) {\n throw new TypeError('Webhook registration identifiers cannot contain NUL characters.');\n }\n if (registration.previewMode !== undefined && !['canonical', 'legacy'].includes(registration.previewMode)) {\n throw new TypeError('Webhook registration previewMode must be canonical or legacy.');\n }\n const callback = new URL(registration.callbackUrl);\n if (callback.username || callback.password || callback.hash) {\n throw new TypeError('Webhook callbackUrl cannot contain userinfo or a fragment.');\n }\n if (callback.protocol !== 'https:' && !isWebhookLoopbackHost(callback.hostname)) {\n throw new TypeError('Webhook callbackUrl must use HTTPS (except loopback development URLs).');\n }\n if (registration.expiresAt <= registration.createdAt) {\n throw new TypeError('Webhook registration expiresAt must be later than createdAt.');\n }\n}\n\nfunction sameRegistration(a: Readonly<WebhookRegistration>, b: WebhookRegistration): boolean {\n return (\n a.agentId === b.agentId &&\n a.agentUrl === b.agentUrl &&\n a.protocol === b.protocol &&\n a.operationId === b.operationId &&\n a.taskType === b.taskType &&\n a.callbackUrl === b.callbackUrl &&\n a.method === b.method &&\n a.mode === b.mode &&\n a.previewMode === b.previewMode\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/lib/core/webhook-registration.ts"],"sourcesContent":["import { ConfigurationError } from '../errors';\nimport { isWebhookLoopbackHost } from '../signing/webhook-verifier';\n\nexport type WebhookAuthenticationMode = 'hmac-sha256' | 'rfc9421';\n\n/**\n * Trusted provenance for an outbound task-status webhook registration.\n *\n * Registrations contain routing and mode provenance only, never callback\n * credentials. Stores should still treat seller and callback URLs as\n * operationally sensitive and omit them from public diagnostics.\n */\nexport interface WebhookRegistration {\n agentId: string;\n agentUrl: string;\n protocol: 'mcp' | 'a2a';\n operationId: string;\n taskType: string;\n callbackUrl: string;\n method: 'POST';\n mode: WebhookAuthenticationMode;\n /** Originating preview API, persisted so async routing survives races and restarts. */\n previewMode?: 'canonical' | 'legacy';\n /** Callback must fail closed unless a durable mutation-settlement route is recoverable. */\n requiresDurableSettlement?: boolean;\n /** Epoch milliseconds. */\n createdAt: number;\n /** Epoch milliseconds. */\n expiresAt: number;\n}\n\nexport interface WebhookRegistrationStore {\n /** Return no record when `expiresAt` is at or before the current time. */\n get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined>;\n /**\n * Atomically create a registration. An identical retry is idempotent; a\n * conflicting live registration for the same key MUST reject.\n */\n putIfAbsent(registration: WebhookRegistration): Promise<void>;\n /** Atomically mark a live registration as requiring durable mutation settlement. */\n markRequiresDurableSettlement?(agentId: string, operationId: string): Promise<void>;\n /** Remove provenance after a definitively synchronous terminal response. */\n delete?(agentId: string, operationId: string): Promise<void>;\n}\n\nexport interface InMemoryWebhookRegistrationStoreOptions {\n /** Maximum number of live registrations. Defaults to 100,000. */\n maxEntries?: number;\n /** Current time in epoch milliseconds, for deterministic tests. */\n now?: () => number;\n}\n\n/**\n * Process-local registration store. Multi-process or restart-safe receivers\n * must inject a shared durable implementation.\n */\nexport class InMemoryWebhookRegistrationStore implements WebhookRegistrationStore {\n private readonly entries = new Map<string, Readonly<WebhookRegistration>>();\n private readonly maxEntries: number;\n private readonly now: () => number;\n\n constructor(options: InMemoryWebhookRegistrationStoreOptions = {}) {\n this.maxEntries = options.maxEntries ?? 100_000;\n this.now = options.now ?? Date.now;\n if (!Number.isSafeInteger(this.maxEntries) || this.maxEntries < 1) {\n throw new TypeError('maxEntries must be a positive safe integer.');\n }\n }\n\n async get(agentId: string, operationId: string): Promise<Readonly<WebhookRegistration> | undefined> {\n const key = registrationKey(agentId, operationId);\n const registration = this.entries.get(key);\n if (!registration) return undefined;\n if (registration.expiresAt <= this.now()) {\n this.entries.delete(key);\n return undefined;\n }\n return registration;\n }\n\n async putIfAbsent(registration: WebhookRegistration): Promise<void> {\n validateRegistration(registration);\n this.pruneExpired();\n const key = registrationKey(registration.agentId, registration.operationId);\n const existing = this.entries.get(key);\n if (existing) {\n if (sameRegistration(existing, registration)) return;\n throw new ConfigurationError(\n `Webhook operation id '${registration.operationId}' is already registered with different trusted provenance.`,\n 'operationId'\n );\n }\n if (this.entries.size >= this.maxEntries) {\n throw new Error('Webhook registration store capacity reached; refusing to dispatch an untracked callback.');\n }\n this.entries.set(key, Object.freeze({ ...registration }));\n }\n\n async delete(agentId: string, operationId: string): Promise<void> {\n this.entries.delete(registrationKey(agentId, operationId));\n }\n\n async markRequiresDurableSettlement(agentId: string, operationId: string): Promise<void> {\n const key = registrationKey(agentId, operationId);\n const registration = this.entries.get(key);\n if (!registration || registration.expiresAt <= this.now()) {\n this.entries.delete(key);\n throw new Error('Cannot mark a missing or expired webhook registration for durable settlement.');\n }\n this.entries.set(key, Object.freeze({ ...registration, requiresDurableSettlement: true }));\n }\n\n private pruneExpired(): void {\n const now = this.now();\n for (const [key, registration] of this.entries) {\n if (registration.expiresAt <= now) this.entries.delete(key);\n }\n }\n}\n\nfunction registrationKey(agentId: string, operationId: string): string {\n return `${agentId}\\x00${operationId}`;\n}\n\nfunction validateRegistration(registration: WebhookRegistration): void {\n if (!registration.agentId || !registration.operationId || !registration.taskType) {\n throw new TypeError('Webhook registration requires agentId, operationId, and taskType.');\n }\n if (\n registration.agentId.includes('\\0') ||\n registration.operationId.includes('\\0') ||\n registration.taskType.includes('\\0')\n ) {\n throw new TypeError('Webhook registration identifiers cannot contain NUL characters.');\n }\n if (registration.previewMode !== undefined && !['canonical', 'legacy'].includes(registration.previewMode)) {\n throw new TypeError('Webhook registration previewMode must be canonical or legacy.');\n }\n const callback = new URL(registration.callbackUrl);\n if (callback.username || callback.password || callback.hash) {\n throw new TypeError('Webhook callbackUrl cannot contain userinfo or a fragment.');\n }\n if (callback.protocol !== 'https:' && !isWebhookLoopbackHost(callback.hostname)) {\n throw new TypeError('Webhook callbackUrl must use HTTPS (except loopback development URLs).');\n }\n const agent = new URL(registration.agentUrl);\n if (agent.username || agent.password) {\n throw new TypeError('Webhook agentUrl cannot contain userinfo credentials.');\n }\n if (registration.expiresAt <= registration.createdAt) {\n throw new TypeError('Webhook registration expiresAt must be later than createdAt.');\n }\n}\n\nfunction sameRegistration(a: Readonly<WebhookRegistration>, b: WebhookRegistration): boolean {\n return (\n a.agentId === b.agentId &&\n a.agentUrl === b.agentUrl &&\n a.protocol === b.protocol &&\n a.operationId === b.operationId &&\n a.taskType === b.taskType &&\n a.callbackUrl === b.callbackUrl &&\n a.method === b.method &&\n a.mode === b.mode &&\n a.previewMode === b.previewMode\n );\n}\n"],"mappings":"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","names":[]}
@@ -113,16 +113,51 @@ interface CompatibleProposalResponseBase {
113
113
  errors?: CompatibleErrors;
114
114
  context?: CompatibleContext;
115
115
  }
116
- export interface CompatibleRequestProposalsResponse extends CompatibleProposalResponseBase {
116
+ type CompatibleRequestProposalsResponseBase = Omit<CompatibleProposalResponseBase, 'proposals' | 'products'> & {
117
117
  operation: 'request';
118
- /** `legacy_unavailable` never overstates an empty legacy response as a seller rejection. */
119
- outcome: 'proposed' | 'products_available' | 'rejected' | 'legacy_unavailable';
120
- reason?: string;
121
- suggestions?: string[];
122
- incomplete?: RequestProposalsResponse['incomplete'];
123
- purchase_continuation?: RequestProposalsResponse['purchase_continuation'];
124
118
  raw: RequestProposalsResponse | EstablishedProductsWireResponse;
125
- }
119
+ };
120
+ /** Completed request-proposal projection with branch fields narrowed by `outcome`. */
121
+ export type CompatibleRequestProposalsResponse = CompatibleRequestProposalsResponseBase & ({
122
+ outcome: 'proposed';
123
+ proposals: CompatibleProposal[];
124
+ products?: CompatibleProduct[];
125
+ incomplete?: RequestProposalsIncomplete;
126
+ reason?: never;
127
+ suggestions?: never;
128
+ purchase_continuation?: never;
129
+ } | {
130
+ outcome: 'products_available';
131
+ proposals?: never;
132
+ products: CompatibleProduct[];
133
+ incomplete?: RequestProposalsIncomplete;
134
+ reason?: never;
135
+ suggestions?: never;
136
+ purchase_continuation: RequestProposalsPurchaseContinuation;
137
+ } | {
138
+ outcome: 'rejected';
139
+ proposals?: never;
140
+ products?: never;
141
+ incomplete?: never;
142
+ reason: string;
143
+ suggestions?: string[];
144
+ purchase_continuation?: never;
145
+ } | {
146
+ /** Never overstates an empty or unsafe legacy response as a seller rejection. */
147
+ outcome: 'legacy_unavailable';
148
+ proposals?: never;
149
+ products?: CompatibleProduct[];
150
+ incomplete?: RequestProposalsIncomplete;
151
+ reason?: never;
152
+ suggestions?: never;
153
+ purchase_continuation?: never;
154
+ });
155
+ type RequestProposalsIncomplete = NonNullable<Extract<RequestProposalsResponse, {
156
+ outcome: 'proposed';
157
+ }>['incomplete']>;
158
+ type RequestProposalsPurchaseContinuation = Extract<RequestProposalsResponse, {
159
+ outcome: 'products_available';
160
+ }>['purchase_continuation'];
126
161
  export interface CompatibleRefineProposalsResponse extends CompatibleProposalResponseBase {
127
162
  operation: 'refine';
128
163
  /** Native result arms remain available in `results`; legacy projection is explicitly named. */
@@ -166,7 +201,7 @@ export interface MediaBuyLifecycleCoordinatorOptions {
166
201
  /**
167
202
  * Stable, non-secret identity for the authenticated seller/account session.
168
203
  * Persist and reuse it when a coordinator is rehydrated. It is required for
169
- * AdCP 2.5 sellers that do not provide a server context ID.
204
+ * every established 2.5, 3.0, or 3.1 seller that provides no server context ID.
170
205
  */
171
206
  legacyPurchaseSellerSessionScope?: string;
172
207
  /** Durable storage for products-only legacy purchase continuations. */
@@ -181,7 +216,7 @@ export interface MediaBuyLifecycleCoordinatorOptions {
181
216
  reconcileLegacyPurchase?: ReconcileLegacyPurchase;
182
217
  }
183
218
  export type LegacyPurchaseContinuationErrorCode = 'not_found' | 'expired' | 'binding_mismatch' | 'selection_mismatch' | 'loss_mismatch' | 'request_invalid' | 'conflict' | 'in_flight' | 'ambiguous' | 'store_error';
184
- /** Fail-closed local error raised before a legacy create is sent or replayed. */
219
+ /** Fail-closed continuation error; ambiguous/store variants may be raised after seller dispatch. */
185
220
  export declare class LegacyPurchaseContinuationError extends Error {
186
221
  readonly code: LegacyPurchaseContinuationErrorCode;
187
222
  readonly retryable: boolean;
@@ -113,16 +113,51 @@ interface CompatibleProposalResponseBase {
113
113
  errors?: CompatibleErrors;
114
114
  context?: CompatibleContext;
115
115
  }
116
- export interface CompatibleRequestProposalsResponse extends CompatibleProposalResponseBase {
116
+ type CompatibleRequestProposalsResponseBase = Omit<CompatibleProposalResponseBase, 'proposals' | 'products'> & {
117
117
  operation: 'request';
118
- /** `legacy_unavailable` never overstates an empty legacy response as a seller rejection. */
119
- outcome: 'proposed' | 'products_available' | 'rejected' | 'legacy_unavailable';
120
- reason?: string;
121
- suggestions?: string[];
122
- incomplete?: RequestProposalsResponse['incomplete'];
123
- purchase_continuation?: RequestProposalsResponse['purchase_continuation'];
124
118
  raw: RequestProposalsResponse | EstablishedProductsWireResponse;
125
- }
119
+ };
120
+ /** Completed request-proposal projection with branch fields narrowed by `outcome`. */
121
+ export type CompatibleRequestProposalsResponse = CompatibleRequestProposalsResponseBase & ({
122
+ outcome: 'proposed';
123
+ proposals: CompatibleProposal[];
124
+ products?: CompatibleProduct[];
125
+ incomplete?: RequestProposalsIncomplete;
126
+ reason?: never;
127
+ suggestions?: never;
128
+ purchase_continuation?: never;
129
+ } | {
130
+ outcome: 'products_available';
131
+ proposals?: never;
132
+ products: CompatibleProduct[];
133
+ incomplete?: RequestProposalsIncomplete;
134
+ reason?: never;
135
+ suggestions?: never;
136
+ purchase_continuation: RequestProposalsPurchaseContinuation;
137
+ } | {
138
+ outcome: 'rejected';
139
+ proposals?: never;
140
+ products?: never;
141
+ incomplete?: never;
142
+ reason: string;
143
+ suggestions?: string[];
144
+ purchase_continuation?: never;
145
+ } | {
146
+ /** Never overstates an empty or unsafe legacy response as a seller rejection. */
147
+ outcome: 'legacy_unavailable';
148
+ proposals?: never;
149
+ products?: CompatibleProduct[];
150
+ incomplete?: RequestProposalsIncomplete;
151
+ reason?: never;
152
+ suggestions?: never;
153
+ purchase_continuation?: never;
154
+ });
155
+ type RequestProposalsIncomplete = NonNullable<Extract<RequestProposalsResponse, {
156
+ outcome: 'proposed';
157
+ }>['incomplete']>;
158
+ type RequestProposalsPurchaseContinuation = Extract<RequestProposalsResponse, {
159
+ outcome: 'products_available';
160
+ }>['purchase_continuation'];
126
161
  export interface CompatibleRefineProposalsResponse extends CompatibleProposalResponseBase {
127
162
  operation: 'refine';
128
163
  /** Native result arms remain available in `results`; legacy projection is explicitly named. */
@@ -166,7 +201,7 @@ export interface MediaBuyLifecycleCoordinatorOptions {
166
201
  /**
167
202
  * Stable, non-secret identity for the authenticated seller/account session.
168
203
  * Persist and reuse it when a coordinator is rehydrated. It is required for
169
- * AdCP 2.5 sellers that do not provide a server context ID.
204
+ * every established 2.5, 3.0, or 3.1 seller that provides no server context ID.
170
205
  */
171
206
  legacyPurchaseSellerSessionScope?: string;
172
207
  /** Durable storage for products-only legacy purchase continuations. */
@@ -181,7 +216,7 @@ export interface MediaBuyLifecycleCoordinatorOptions {
181
216
  reconcileLegacyPurchase?: ReconcileLegacyPurchase;
182
217
  }
183
218
  export type LegacyPurchaseContinuationErrorCode = 'not_found' | 'expired' | 'binding_mismatch' | 'selection_mismatch' | 'loss_mismatch' | 'request_invalid' | 'conflict' | 'in_flight' | 'ambiguous' | 'store_error';
184
- /** Fail-closed local error raised before a legacy create is sent or replayed. */
219
+ /** Fail-closed continuation error; ambiguous/store variants may be raised after seller dispatch. */
185
220
  export declare class LegacyPurchaseContinuationError extends Error {
186
221
  readonly code: LegacyPurchaseContinuationErrorCode;
187
222
  readonly retryable: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../src/lib/media-buy/compatibility.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../src/lib/media-buy/compatibility.ts"],"names":[],"mappings":"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"}