@adcp/sdk 15.9.0 → 16.0.0-beta.1

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 (295) hide show
  1. package/bin/adcp-identity.js +74 -0
  2. package/bin/adcp.js +2 -0
  3. package/dist/lib/adapters/keyed-account-backend.d.mts +37 -0
  4. package/dist/lib/adapters/keyed-account-backend.d.ts +37 -0
  5. package/dist/lib/adapters/keyed-account-backend.js +121 -0
  6. package/dist/lib/adapters/keyed-account-backend.mjs +94 -0
  7. package/dist/lib/adapters/keyed-account-store.d.mts +28 -0
  8. package/dist/lib/adapters/keyed-account-store.d.ts +28 -0
  9. package/dist/lib/adapters/keyed-account-store.js +227 -0
  10. package/dist/lib/adapters/keyed-account-store.mjs +203 -0
  11. package/dist/lib/core/SingleAgentClient.d.mts +16 -2
  12. package/dist/lib/core/SingleAgentClient.d.ts +16 -2
  13. package/dist/lib/core/SingleAgentClient.js +259 -62
  14. package/dist/lib/core/SingleAgentClient.mjs +261 -57
  15. package/dist/lib/core/TaskExecutor.d.mts +6 -0
  16. package/dist/lib/core/TaskExecutor.d.ts +6 -0
  17. package/dist/lib/core/TaskExecutor.js +66 -5
  18. package/dist/lib/core/TaskExecutor.mjs +71 -5
  19. package/dist/lib/core/postgres-webhook-registration-store.js +32 -5
  20. package/dist/lib/core/postgres-webhook-registration-store.mjs +32 -5
  21. package/dist/lib/core/redis-webhook-registration-store.js +23 -1
  22. package/dist/lib/core/redis-webhook-registration-store.mjs +23 -1
  23. package/dist/lib/core/webhook-registration.d.mts +7 -1
  24. package/dist/lib/core/webhook-registration.d.ts +7 -1
  25. package/dist/lib/core/webhook-registration.js +24 -2
  26. package/dist/lib/core/webhook-registration.mjs +23 -2
  27. package/dist/lib/identity-3.3/index.d.mts +10 -0
  28. package/dist/lib/identity-3.3/index.d.ts +10 -0
  29. package/dist/lib/identity-3.3/index.js +75 -0
  30. package/dist/lib/identity-3.3/index.mjs +46 -0
  31. package/dist/lib/identity-3.3/lifecycle.d.mts +113 -0
  32. package/dist/lib/identity-3.3/lifecycle.d.ts +113 -0
  33. package/dist/lib/identity-3.3/lifecycle.js +267 -0
  34. package/dist/lib/identity-3.3/lifecycle.mjs +240 -0
  35. package/dist/lib/identity-3.3/revocation.d.mts +50 -0
  36. package/dist/lib/identity-3.3/revocation.d.ts +50 -0
  37. package/dist/lib/identity-3.3/revocation.js +238 -0
  38. package/dist/lib/identity-3.3/revocation.mjs +216 -0
  39. package/dist/lib/identity-3.3/schemas.draft.d.mts +2472 -0
  40. package/dist/lib/identity-3.3/schemas.draft.d.ts +2472 -0
  41. package/dist/lib/identity-3.3/schemas.draft.js +1448 -0
  42. package/dist/lib/identity-3.3/schemas.draft.mjs +1428 -0
  43. package/dist/lib/identity-3.3/server.d.mts +34 -0
  44. package/dist/lib/identity-3.3/server.d.ts +34 -0
  45. package/dist/lib/identity-3.3/server.js +219 -0
  46. package/dist/lib/identity-3.3/server.mjs +194 -0
  47. package/dist/lib/identity-3.3/store.d.mts +24 -0
  48. package/dist/lib/identity-3.3/store.d.ts +24 -0
  49. package/dist/lib/identity-3.3/store.js +191 -0
  50. package/dist/lib/identity-3.3/store.mjs +169 -0
  51. package/dist/lib/identity-3.3/trust.d.mts +94 -0
  52. package/dist/lib/identity-3.3/trust.d.ts +94 -0
  53. package/dist/lib/identity-3.3/trust.js +278 -0
  54. package/dist/lib/identity-3.3/trust.mjs +239 -0
  55. package/dist/lib/identity-3.3/types.d.mts +127 -0
  56. package/dist/lib/identity-3.3/types.d.ts +127 -0
  57. package/dist/lib/identity-3.3/types.js +16 -0
  58. package/dist/lib/identity-3.3/types.mjs +0 -0
  59. package/dist/lib/identity-3.3/validation.d.mts +2 -0
  60. package/dist/lib/identity-3.3/validation.d.ts +2 -0
  61. package/dist/lib/identity-3.3/validation.js +125 -0
  62. package/dist/lib/identity-3.3/validation.mjs +91 -0
  63. package/dist/lib/index.d.mts +1 -1
  64. package/dist/lib/index.d.ts +1 -1
  65. package/dist/lib/reporting/azure/index.d.mts +5 -0
  66. package/dist/lib/reporting/azure/index.d.ts +5 -0
  67. package/dist/lib/reporting/azure/index.js +26 -7
  68. package/dist/lib/reporting/azure/index.mjs +26 -7
  69. package/dist/lib/reporting/bigquery/index.d.mts +80 -25
  70. package/dist/lib/reporting/bigquery/index.d.ts +80 -25
  71. package/dist/lib/reporting/bigquery/index.js +184 -81
  72. package/dist/lib/reporting/bigquery/index.mjs +182 -80
  73. package/dist/lib/reporting/gcs/adapter.d.mts +8 -1
  74. package/dist/lib/reporting/gcs/adapter.d.ts +8 -1
  75. package/dist/lib/reporting/gcs/errors.d.mts +6 -0
  76. package/dist/lib/reporting/gcs/errors.d.ts +6 -0
  77. package/dist/lib/reporting/gcs/fence.d.mts +5 -0
  78. package/dist/lib/reporting/gcs/fence.d.ts +5 -0
  79. package/dist/lib/reporting/gcs/index.d.mts +9 -0
  80. package/dist/lib/reporting/gcs/index.d.ts +9 -0
  81. package/dist/lib/reporting/gcs/reader.d.mts +27 -3
  82. package/dist/lib/reporting/gcs/reader.d.ts +27 -3
  83. package/dist/lib/reporting/gcs/row-provider.d.mts +7 -0
  84. package/dist/lib/reporting/gcs/row-provider.d.ts +7 -0
  85. package/dist/lib/reporting/gcs/row-provider.js +34 -14
  86. package/dist/lib/reporting/gcs/row-provider.mjs +34 -14
  87. package/dist/lib/reporting/ledger/change-feed.d.mts +22 -1
  88. package/dist/lib/reporting/ledger/change-feed.d.ts +22 -1
  89. package/dist/lib/reporting/ledger/index.d.mts +11 -0
  90. package/dist/lib/reporting/ledger/index.d.ts +11 -0
  91. package/dist/lib/reporting/ledger/managed-postgres.d.mts +8 -0
  92. package/dist/lib/reporting/ledger/managed-postgres.d.ts +8 -0
  93. package/dist/lib/reporting/ledger/managed-router.d.mts +27 -2
  94. package/dist/lib/reporting/ledger/managed-router.d.ts +27 -2
  95. package/dist/lib/reporting/ledger/managed.d.mts +86 -6
  96. package/dist/lib/reporting/ledger/managed.d.ts +86 -6
  97. package/dist/lib/reporting/ledger/notification-activity.d.mts +65 -3
  98. package/dist/lib/reporting/ledger/notification-activity.d.ts +65 -3
  99. package/dist/lib/reporting/ledger/object-writes.d.mts +64 -5
  100. package/dist/lib/reporting/ledger/object-writes.d.ts +64 -5
  101. package/dist/lib/reporting/ledger/postgres.d.mts +43 -9
  102. package/dist/lib/reporting/ledger/postgres.d.ts +43 -9
  103. package/dist/lib/reporting/ledger/postgres.js +43 -27
  104. package/dist/lib/reporting/ledger/postgres.mjs +43 -27
  105. package/dist/lib/reporting/ledger/row-encoding.d.mts +92 -6
  106. package/dist/lib/reporting/ledger/row-encoding.d.ts +92 -6
  107. package/dist/lib/reporting/ledger/row-encoding.js +8 -4
  108. package/dist/lib/reporting/ledger/row-encoding.mjs +6 -3
  109. package/dist/lib/reporting/ledger/row-storage-errors.d.mts +11 -1
  110. package/dist/lib/reporting/ledger/row-storage-errors.d.ts +11 -1
  111. package/dist/lib/reporting/ledger/row-storage-migration.d.mts +19 -1
  112. package/dist/lib/reporting/ledger/row-storage-migration.d.ts +19 -1
  113. package/dist/lib/reporting/ledger/row-storage-migration.js +133 -18
  114. package/dist/lib/reporting/ledger/row-storage-migration.mjs +133 -18
  115. package/dist/lib/reporting/ledger/row-storage-object.d.mts +103 -12
  116. package/dist/lib/reporting/ledger/row-storage-object.d.ts +103 -12
  117. package/dist/lib/reporting/ledger/row-storage-object.js +106 -31
  118. package/dist/lib/reporting/ledger/row-storage-object.mjs +104 -31
  119. package/dist/lib/reporting/ledger/row-storage.d.mts +87 -20
  120. package/dist/lib/reporting/ledger/row-storage.d.ts +87 -20
  121. package/dist/lib/reporting/ledger/row-storage.js +126 -66
  122. package/dist/lib/reporting/ledger/row-storage.mjs +129 -67
  123. package/dist/lib/reporting/ledger/schedule.d.mts +13 -0
  124. package/dist/lib/reporting/ledger/schedule.d.ts +13 -0
  125. package/dist/lib/reporting/ledger/schedule.js +24 -0
  126. package/dist/lib/reporting/ledger/schedule.mjs +23 -0
  127. package/dist/lib/reporting/ledger/types.d.mts +23 -1
  128. package/dist/lib/reporting/ledger/types.d.ts +23 -1
  129. package/dist/lib/reporting/s3/index.d.mts +5 -0
  130. package/dist/lib/reporting/s3/index.d.ts +5 -0
  131. package/dist/lib/reporting/s3/index.js +37 -14
  132. package/dist/lib/reporting/s3/index.mjs +37 -14
  133. package/dist/lib/reporting/service/index.d.mts +10 -0
  134. package/dist/lib/reporting/service/index.d.ts +10 -0
  135. package/dist/lib/reporting/service/maintenance.d.mts +28 -2
  136. package/dist/lib/reporting/service/maintenance.d.ts +28 -2
  137. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  138. package/dist/lib/server/account-sync-contract.d.mts +14 -0
  139. package/dist/lib/server/account-sync-contract.d.ts +14 -0
  140. package/dist/lib/server/account-sync-contract.js +225 -0
  141. package/dist/lib/server/account-sync-contract.mjs +197 -0
  142. package/dist/lib/server/adcp-server.js +5 -0
  143. package/dist/lib/server/adcp-server.mjs +10 -0
  144. package/dist/lib/server/auth-signature.d.mts +10 -0
  145. package/dist/lib/server/auth-signature.d.ts +10 -0
  146. package/dist/lib/server/auth-signature.js +61 -2
  147. package/dist/lib/server/auth-signature.mjs +65 -2
  148. package/dist/lib/server/auth.d.mts +6 -0
  149. package/dist/lib/server/auth.d.ts +6 -0
  150. package/dist/lib/server/auth.js +6 -0
  151. package/dist/lib/server/auth.mjs +6 -0
  152. package/dist/lib/server/create-adcp-server.d.mts +19 -5
  153. package/dist/lib/server/create-adcp-server.d.ts +19 -5
  154. package/dist/lib/server/create-adcp-server.js +238 -19
  155. package/dist/lib/server/create-adcp-server.mjs +240 -10
  156. package/dist/lib/server/decisioning/account.d.mts +24 -1
  157. package/dist/lib/server/decisioning/account.d.ts +24 -1
  158. package/dist/lib/server/decisioning/index.d.mts +1 -1
  159. package/dist/lib/server/decisioning/index.d.ts +1 -1
  160. package/dist/lib/server/decisioning/runtime/from-platform.d.mts +0 -50
  161. package/dist/lib/server/decisioning/runtime/from-platform.d.ts +0 -50
  162. package/dist/lib/server/decisioning/runtime/from-platform.js +61 -11
  163. package/dist/lib/server/decisioning/runtime/from-platform.mjs +65 -12
  164. package/dist/lib/server/index.d.mts +2 -0
  165. package/dist/lib/server/index.d.ts +2 -0
  166. package/dist/lib/server/index.js +12 -0
  167. package/dist/lib/server/index.mjs +12 -0
  168. package/dist/lib/server/notification-subscriptions/runtime.js +9 -1
  169. package/dist/lib/server/notification-subscriptions/runtime.mjs +9 -1
  170. package/dist/lib/server/notification-subscriptions/types.d.mts +5 -0
  171. package/dist/lib/server/notification-subscriptions/types.d.ts +5 -0
  172. package/dist/lib/server/principal/types.d.mts +1 -1
  173. package/dist/lib/server/principal/types.d.ts +1 -1
  174. package/dist/lib/server/serve.js +5 -0
  175. package/dist/lib/server/serve.mjs +5 -0
  176. package/dist/lib/server/webhook-delivery/recovery.d.mts +1 -0
  177. package/dist/lib/server/webhook-delivery/recovery.d.ts +1 -0
  178. package/dist/lib/server/webhook-delivery/recovery.js +4 -0
  179. package/dist/lib/server/webhook-delivery/recovery.mjs +4 -0
  180. package/dist/lib/server/webhook-emitter.d.mts +10 -0
  181. package/dist/lib/server/webhook-emitter.d.ts +10 -0
  182. package/dist/lib/server/webhook-emitter.js +22 -0
  183. package/dist/lib/server/webhook-emitter.mjs +22 -0
  184. package/dist/lib/signing/agent-context.d.mts +0 -5
  185. package/dist/lib/signing/agent-context.d.ts +0 -5
  186. package/dist/lib/signing/agent-context.js +9 -1
  187. package/dist/lib/signing/agent-context.mjs +9 -1
  188. package/dist/lib/signing/agent-fetch.js +27 -2
  189. package/dist/lib/signing/agent-fetch.mjs +32 -2
  190. package/dist/lib/signing/agent-resolver/canonicalize.d.mts +10 -15
  191. package/dist/lib/signing/agent-resolver/canonicalize.d.ts +10 -15
  192. package/dist/lib/signing/agent-resolver/canonicalize.js +17 -5
  193. package/dist/lib/signing/agent-resolver/canonicalize.mjs +16 -5
  194. package/dist/lib/signing/agent-resolver/index.d.mts +1 -0
  195. package/dist/lib/signing/agent-resolver/index.d.ts +1 -0
  196. package/dist/lib/signing/agent-resolver/index.js +5 -0
  197. package/dist/lib/signing/agent-resolver/index.mjs +3 -0
  198. package/dist/lib/signing/agent-resolver/resolved-agent-jwks.d.mts +3 -2
  199. package/dist/lib/signing/agent-resolver/resolved-agent-jwks.d.ts +3 -2
  200. package/dist/lib/signing/agent-resolver/resolved-agent-jwks.js +30 -3
  201. package/dist/lib/signing/agent-resolver/resolved-agent-jwks.mjs +30 -3
  202. package/dist/lib/signing/agent-resolver/strict-json.d.mts +2 -2
  203. package/dist/lib/signing/agent-resolver/strict-json.d.ts +2 -2
  204. package/dist/lib/signing/agent-resolver/strict-json.js +5 -3
  205. package/dist/lib/signing/agent-resolver/strict-json.mjs +5 -3
  206. package/dist/lib/signing/brand-jwks.d.mts +2 -2
  207. package/dist/lib/signing/brand-jwks.d.ts +2 -2
  208. package/dist/lib/signing/brand-jwks.js +4 -4
  209. package/dist/lib/signing/brand-jwks.mjs +4 -4
  210. package/dist/lib/signing/client.d.mts +1 -0
  211. package/dist/lib/signing/client.d.ts +1 -0
  212. package/dist/lib/signing/client.js +5 -0
  213. package/dist/lib/signing/client.mjs +3 -0
  214. package/dist/lib/signing/jwks-https.d.mts +1 -1
  215. package/dist/lib/signing/jwks-https.d.ts +1 -1
  216. package/dist/lib/signing/jwks-https.js +1 -1
  217. package/dist/lib/signing/jwks-https.mjs +1 -1
  218. package/dist/lib/signing/jwks.d.mts +11 -3
  219. package/dist/lib/signing/jwks.d.ts +11 -3
  220. package/dist/lib/signing/jwks.js +1 -1
  221. package/dist/lib/signing/jwks.mjs +1 -1
  222. package/dist/lib/signing/parser.d.mts +1 -1
  223. package/dist/lib/signing/parser.d.ts +1 -1
  224. package/dist/lib/signing/parser.js +5 -3
  225. package/dist/lib/signing/parser.mjs +6 -4
  226. package/dist/lib/signing/revocation.d.mts +4 -1
  227. package/dist/lib/signing/revocation.d.ts +4 -1
  228. package/dist/lib/signing/revocation.js +33 -3
  229. package/dist/lib/signing/revocation.mjs +31 -2
  230. package/dist/lib/signing/server.d.mts +1 -1
  231. package/dist/lib/signing/server.d.ts +1 -1
  232. package/dist/lib/signing/server.js +4 -0
  233. package/dist/lib/signing/server.mjs +4 -0
  234. package/dist/lib/signing/types.d.mts +3 -0
  235. package/dist/lib/signing/types.d.ts +3 -0
  236. package/dist/lib/signing/web-bot-auth.d.mts +117 -0
  237. package/dist/lib/signing/web-bot-auth.d.ts +117 -0
  238. package/dist/lib/signing/web-bot-auth.js +660 -0
  239. package/dist/lib/signing/web-bot-auth.mjs +624 -0
  240. package/dist/lib/testing/client.d.mts +1 -4
  241. package/dist/lib/testing/client.d.ts +1 -4
  242. package/dist/lib/testing/client.js +141 -20
  243. package/dist/lib/testing/client.mjs +137 -19
  244. package/dist/lib/testing/compliance/comply.js +29 -10
  245. package/dist/lib/testing/compliance/comply.mjs +37 -11
  246. package/dist/lib/testing/storyboard/account-sync-contract.d.mts +3 -0
  247. package/dist/lib/testing/storyboard/account-sync-contract.d.ts +3 -0
  248. package/dist/lib/testing/storyboard/account-sync-contract.js +79 -0
  249. package/dist/lib/testing/storyboard/account-sync-contract.mjs +55 -0
  250. package/dist/lib/testing/storyboard/default-invariants.js +2 -0
  251. package/dist/lib/testing/storyboard/default-invariants.mjs +2 -0
  252. package/dist/lib/testing/storyboard/runner.js +23 -8
  253. package/dist/lib/testing/storyboard/runner.mjs +24 -8
  254. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  255. package/dist/lib/testing/storyboard/validations.d.ts +1 -1
  256. package/dist/lib/types/adcp.d.mts +4 -0
  257. package/dist/lib/types/adcp.d.ts +4 -0
  258. package/dist/lib/types/schemas.generated.d.ts +6 -6
  259. package/dist/lib/utils/capabilities.d.mts +1 -0
  260. package/dist/lib/utils/capabilities.d.ts +1 -0
  261. package/dist/lib/utils/capabilities.js +5 -0
  262. package/dist/lib/utils/capabilities.mjs +5 -0
  263. package/dist/lib/v2/projection/creative-delivery.d.mts +3 -1
  264. package/dist/lib/v2/projection/creative-delivery.d.ts +3 -1
  265. package/dist/lib/v2/projection/creative-delivery.js +26 -10
  266. package/dist/lib/v2/projection/creative-delivery.mjs +26 -10
  267. package/dist/lib/v2/projection/index.d.mts +1 -1
  268. package/dist/lib/v2/projection/index.d.ts +1 -1
  269. package/dist/lib/v2/projection/legacy-routes.d.mts +24 -2
  270. package/dist/lib/v2/projection/legacy-routes.d.ts +24 -2
  271. package/dist/lib/v2/projection/legacy-routes.js +28 -2
  272. package/dist/lib/v2/projection/legacy-routes.mjs +26 -2
  273. package/dist/lib/validation/schema-loader.d.mts +2 -0
  274. package/dist/lib/validation/schema-loader.d.ts +2 -0
  275. package/dist/lib/validation/schema-loader.js +43 -4
  276. package/dist/lib/validation/schema-loader.mjs +39 -3
  277. package/dist/lib/version.d.mts +3 -3
  278. package/dist/lib/version.d.ts +3 -3
  279. package/dist/lib/version.js +3 -3
  280. package/dist/lib/version.mjs +3 -3
  281. package/docs/TYPE-SUMMARY.md +2 -2
  282. package/docs/guides/DISCOVERY-CACHE-AND-SESSION-REUSE.md +4 -0
  283. package/docs/guides/REPORTING-LEDGER-CUTOVER.md +1 -1
  284. package/docs/guides/REPORTING-LEDGER.md +132 -46
  285. package/docs/guides/REPORTING-OPERATIONS.md +25 -4
  286. package/docs/guides/REPORTING-STABILITY.md +76 -0
  287. package/docs/guides/account-resolution.md +101 -0
  288. package/docs/llms.txt +3 -2
  289. package/docs/migration-12-to-13.md +7 -0
  290. package/docs/migration-14.x-rc-worksheet.md +4 -4
  291. package/docs/migration-agent-identity-3.3.md +355 -0
  292. package/docs/migration-agent-resolution-3.3.md +5 -0
  293. package/docs/migration-reporting-row-storage-alignment.md +137 -0
  294. package/examples/storyboards/account-sync-contract.yaml +57 -0
  295. package/package.json +15 -1
@@ -0,0 +1,34 @@
1
+ import type { AuthPrincipal } from '../server/auth.mjs';
2
+ import type { HandlerContext, ProtocolHandlers } from '../server/create-adcp-server.mjs';
3
+ import { type VerifiedWebBotSigner } from '../signing/web-bot-auth.mjs';
4
+ import type { ResolvedOperation } from '../signing/operation-resolution.mjs';
5
+ import type { OriginIdentityLifecycle } from './lifecycle.mjs';
6
+ import { type DemandGrantClaim, type DemandGrantOptions } from './trust.mjs';
7
+ export declare function isIdentity33UnboundContext(ctx: HandlerContext<unknown>): boolean;
8
+ /** Maps only audited bindings. An unknown origin remains in anonymous scope. */
9
+ export declare function createIdentity33PrincipalResolver(options: {
10
+ lifecycle: OriginIdentityLifecycle;
11
+ anonymousPrincipal?: string;
12
+ anonymousTools?: readonly string[];
13
+ }): (signers: readonly VerifiedWebBotSigner[], operation: ResolvedOperation) => Promise<AuthPrincipal>;
14
+ /** Pass to createAdcpServer.identity33.authorize; framework runs it before its replay cache. */
15
+ export declare function createIdentity33Authorization<TAccount>(options: {
16
+ lifecycle: OriginIdentityLifecycle;
17
+ /** Explicitly declared custom read tools still re-check identity membership. */
18
+ readOnlyTools?: readonly string[];
19
+ anonymousTools?: readonly string[];
20
+ grants: DemandGrantOptions;
21
+ /** Runs before account resolution: look up existing seller accounts read-only. sync_accounts includes all proposed rows. Never trust request reassignment or provision here. */
22
+ resolveClaims: (ctx: HandlerContext<TAccount>, tool: string, params: unknown) => Promise<readonly (Omit<DemandGrantClaim, 'signerOrigin'> & {
23
+ sandbox?: boolean;
24
+ billing?: 'operator' | 'agent' | 'advertiser';
25
+ })[]>;
26
+ }): (ctx: HandlerContext<TAccount>, tool: string, params: unknown) => Promise<void>;
27
+ /** Adds caller-only relationship readback; unknown reads never run the durable principal runtime. */
28
+ export declare function withIdentity33PrincipalHandlers<TAccount>(base: ProtocolHandlers<TAccount>, lifecycle: OriginIdentityLifecycle): ProtocolHandlers<TAccount>;
29
+ /** Use as createPrincipalLifecycle.resolvePrincipal to keep the configuration record on the audited binding. */
30
+ export declare function createIdentity33PrincipalScopeResolver<TAccount>(options: {
31
+ lifecycle: OriginIdentityLifecycle;
32
+ tenantId: string;
33
+ legacy?: (ctx: HandlerContext<TAccount>) => Promise<import('../server/principal/types.mjs').ResolvedPrincipalScope>;
34
+ }): (ctx: HandlerContext<TAccount>) => Promise<import('../server/principal/types.mjs').ResolvedPrincipalScope>;
@@ -0,0 +1,34 @@
1
+ import type { AuthPrincipal } from '../server/auth';
2
+ import type { HandlerContext, ProtocolHandlers } from '../server/create-adcp-server';
3
+ import { type VerifiedWebBotSigner } from '../signing/web-bot-auth';
4
+ import type { ResolvedOperation } from '../signing/operation-resolution';
5
+ import type { OriginIdentityLifecycle } from './lifecycle';
6
+ import { type DemandGrantClaim, type DemandGrantOptions } from './trust';
7
+ export declare function isIdentity33UnboundContext(ctx: HandlerContext<unknown>): boolean;
8
+ /** Maps only audited bindings. An unknown origin remains in anonymous scope. */
9
+ export declare function createIdentity33PrincipalResolver(options: {
10
+ lifecycle: OriginIdentityLifecycle;
11
+ anonymousPrincipal?: string;
12
+ anonymousTools?: readonly string[];
13
+ }): (signers: readonly VerifiedWebBotSigner[], operation: ResolvedOperation) => Promise<AuthPrincipal>;
14
+ /** Pass to createAdcpServer.identity33.authorize; framework runs it before its replay cache. */
15
+ export declare function createIdentity33Authorization<TAccount>(options: {
16
+ lifecycle: OriginIdentityLifecycle;
17
+ /** Explicitly declared custom read tools still re-check identity membership. */
18
+ readOnlyTools?: readonly string[];
19
+ anonymousTools?: readonly string[];
20
+ grants: DemandGrantOptions;
21
+ /** Runs before account resolution: look up existing seller accounts read-only. sync_accounts includes all proposed rows. Never trust request reassignment or provision here. */
22
+ resolveClaims: (ctx: HandlerContext<TAccount>, tool: string, params: unknown) => Promise<readonly (Omit<DemandGrantClaim, 'signerOrigin'> & {
23
+ sandbox?: boolean;
24
+ billing?: 'operator' | 'agent' | 'advertiser';
25
+ })[]>;
26
+ }): (ctx: HandlerContext<TAccount>, tool: string, params: unknown) => Promise<void>;
27
+ /** Adds caller-only relationship readback; unknown reads never run the durable principal runtime. */
28
+ export declare function withIdentity33PrincipalHandlers<TAccount>(base: ProtocolHandlers<TAccount>, lifecycle: OriginIdentityLifecycle): ProtocolHandlers<TAccount>;
29
+ /** Use as createPrincipalLifecycle.resolvePrincipal to keep the configuration record on the audited binding. */
30
+ export declare function createIdentity33PrincipalScopeResolver<TAccount>(options: {
31
+ lifecycle: OriginIdentityLifecycle;
32
+ tenantId: string;
33
+ legacy?: (ctx: HandlerContext<TAccount>) => Promise<import('../server/principal/types').ResolvedPrincipalScope>;
34
+ }): (ctx: HandlerContext<TAccount>) => Promise<import('../server/principal/types').ResolvedPrincipalScope>;
@@ -0,0 +1,219 @@
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 server_exports = {};
20
+ __export(server_exports, {
21
+ createIdentity33Authorization: () => createIdentity33Authorization,
22
+ createIdentity33PrincipalResolver: () => createIdentity33PrincipalResolver,
23
+ createIdentity33PrincipalScopeResolver: () => createIdentity33PrincipalScopeResolver,
24
+ isIdentity33UnboundContext: () => isIdentity33UnboundContext,
25
+ withIdentity33PrincipalHandlers: () => withIdentity33PrincipalHandlers
26
+ });
27
+ module.exports = __toCommonJS(server_exports);
28
+ var import_crypto = require("crypto");
29
+ var import_web_bot_auth = require('../signing/web-bot-auth.js');
30
+ var import_errors = require('../signing/errors.js');
31
+ var import_enums = require('../types/enums.generated.js');
32
+ var import_async_outcome = require('../server/decisioning/async-outcome.js');
33
+ var import_web_bot_auth2 = require('../signing/web-bot-auth.js');
34
+ var import_buyer_agent = require('../server/decisioning/buyer-agent.js');
35
+ var import_web_bot_auth3 = require('../signing/web-bot-auth.js');
36
+ var import_trust = require('./trust.js');
37
+ var import_idempotency = require('../utils/idempotency.js');
38
+ const IDENTITY_ADMIN_TOOLS = /* @__PURE__ */ new Set(["sync_principal", "sync_agent_notification_configs"]);
39
+ const KNOWN_TOOLS = /* @__PURE__ */ new Set([...import_enums.TaskTypeValues, "get_task_status", "list_tasks", "tasks_get"]);
40
+ const SPEND_TOOLS = new Set([...import_idempotency.MUTATING_TASKS].filter((tool) => !IDENTITY_ADMIN_TOOLS.has(tool)));
41
+ function needsSpendAuthorization(tool, params) {
42
+ if (SPEND_TOOLS.has(tool) || !KNOWN_TOOLS.has(tool)) return true;
43
+ if (tool !== "get_products" || !params || typeof params !== "object") return false;
44
+ const refine = params.refine;
45
+ return (Array.isArray(refine) ? refine : [refine]).some(
46
+ (entry) => entry && typeof entry === "object" && entry.action === "finalize"
47
+ );
48
+ }
49
+ function claimFromContext(ctx) {
50
+ const claim = ctx.authInfo?.extra?.identity33;
51
+ return claim && (0, import_web_bot_auth3.isVerifiedWebBotSigner)(claim.signer) ? claim : void 0;
52
+ }
53
+ function isIdentity33UnboundContext(ctx) {
54
+ return claimFromContext(ctx)?.state === "identity-established";
55
+ }
56
+ function createIdentity33PrincipalResolver(options) {
57
+ const anonymousTools = new Set(
58
+ options.anonymousTools ?? [
59
+ "get_adcp_capabilities",
60
+ "get_principal",
61
+ "sync_principal",
62
+ "list_creative_formats",
63
+ "get_products"
64
+ ]
65
+ );
66
+ const resolver = async (signers, operation) => {
67
+ if (!signers.length || signers.some((s) => !(0, import_web_bot_auth3.isVerifiedWebBotSigner)(s)))
68
+ throw new import_web_bot_auth3.WebBotAuthError(403, "unverified_identity");
69
+ const signer = signers[signers.length - 1];
70
+ const revoked = signers.find((s) => s.authorizationFailure);
71
+ const { binding } = revoked ? { binding: void 0 } : await options.lifecycle.getPrincipal(signer.origin);
72
+ if (!binding && operation !== void 0 && typeof operation !== "string")
73
+ throw new import_web_bot_auth3.WebBotAuthError(400, "operation");
74
+ const authorizationFailure = revoked?.authorizationFailure ?? (!binding && typeof operation === "string" && !anonymousTools.has(operation) ? (0, import_web_bot_auth2.createWebBotAuthAuthorizationFailure)("identity_not_bound") : void 0);
75
+ return {
76
+ principal: binding?.principalId ?? `${options.anonymousPrincipal ?? "anonymous"}:${(0, import_crypto.createHash)("sha256").update(signer.origin).digest("hex")}`,
77
+ extra: {
78
+ identity33: {
79
+ state: binding ? "bound" : "identity-established",
80
+ signer: revoked ?? signer,
81
+ ...authorizationFailure && { authorizationFailure }
82
+ }
83
+ },
84
+ ...binding ? {
85
+ credential: (0, import_buyer_agent.markVerifiedHttpSig)({
86
+ kind: "http_sig",
87
+ keyid: signer.keyid,
88
+ agent_url: signer.origin,
89
+ verified_at: signer.verified_at
90
+ })
91
+ } : {}
92
+ };
93
+ };
94
+ (0, import_web_bot_auth.registerWebBotAuthLegacyOriginGate)(resolver, async (origin) => {
95
+ if ((await options.lifecycle.getPrincipal(origin)).binding)
96
+ throw new import_errors.RequestSignatureError(
97
+ "request_signature_key_unknown",
98
+ 7,
99
+ "Origin-bound principals require Web Bot Auth"
100
+ );
101
+ });
102
+ return resolver;
103
+ }
104
+ function createIdentity33Authorization(options) {
105
+ return async (ctx, tool, params) => {
106
+ const identity = claimFromContext(ctx);
107
+ const failure = (0, import_web_bot_auth2.getWebBotAuthAuthorizationFailure)(ctx.authInfo?.extra);
108
+ if (failure) throw new import_async_outcome.AdcpError(failure.code, failure);
109
+ if (!identity) {
110
+ const verified = ctx.authInfo?.extra?.webBotAuthAuthorization;
111
+ if ((0, import_web_bot_auth3.isVerifiedWebBotSigner)(verified?.signer))
112
+ throw new import_async_outcome.AdcpError("PERMISSION_DENIED", {
113
+ message: "Web Bot Auth resolver did not supply an audited identity claim"
114
+ });
115
+ return;
116
+ }
117
+ if (identity.state === "identity-established") {
118
+ if (tool === "sync_principal") {
119
+ const dryRun = !!params && typeof params === "object" && params.dry_run === true;
120
+ const binding = await options.lifecycle.syncOpen(identity.signer.origin, { dryRun });
121
+ if (dryRun) return;
122
+ if (!ctx.authInfo) throw new import_trust.IdentityAuthorizationError();
123
+ ctx.authInfo.clientId = binding.principalId;
124
+ ctx.authInfo.credential = (0, import_buyer_agent.markVerifiedHttpSig)({
125
+ kind: "http_sig",
126
+ keyid: identity.signer.keyid,
127
+ agent_url: identity.signer.origin,
128
+ verified_at: identity.signer.verified_at
129
+ });
130
+ ctx.authInfo.extra = {
131
+ ...ctx.authInfo.extra,
132
+ credential: ctx.authInfo.credential,
133
+ identity33: { ...identity, state: "bound" }
134
+ };
135
+ return;
136
+ }
137
+ if ((options.anonymousTools ?? ["get_principal", "get_adcp_capabilities", "list_creative_formats", "get_products"]).includes(tool) && !needsSpendAuthorization(tool, params))
138
+ return;
139
+ throw new import_async_outcome.AdcpError("PERMISSION_DENIED", { message: "Agent identity is not onboarded for this operation" });
140
+ }
141
+ const origin = identity.signer.origin;
142
+ if (IDENTITY_ADMIN_TOOLS.has(tool)) {
143
+ await options.lifecycle.authorizeBound(origin, { identityConfiguration: true });
144
+ return;
145
+ }
146
+ if (!needsSpendAuthorization(tool, params) || !KNOWN_TOOLS.has(tool) && options.readOnlyTools?.includes(tool)) {
147
+ await options.lifecycle.authorizeBound(origin, { readOnly: true });
148
+ return;
149
+ }
150
+ const claims = await options.resolveClaims(ctx, tool, params);
151
+ if (!claims.length) throw new import_trust.IdentityAuthorizationError();
152
+ for (const claim of claims) {
153
+ await options.lifecycle.authorizeBound(origin, {
154
+ sandbox: claim.sandbox,
155
+ billing: claim.billing,
156
+ brandDomain: claim.brand.domain
157
+ });
158
+ await (0, import_trust.authorizeDemandGrant)({ ...claim, signerOrigin: origin }, options.grants);
159
+ }
160
+ };
161
+ }
162
+ function withIdentity33PrincipalHandlers(base, lifecycle) {
163
+ return {
164
+ ...base,
165
+ async syncPrincipal(params, ctx) {
166
+ const identity = claimFromContext(ctx);
167
+ if (identity?.state === "identity-established" && params.dry_run === true)
168
+ return { result: { kind: "validated", action: "would_update", dry_run: true } };
169
+ if (!base.syncPrincipal) throw new import_trust.IdentityAuthorizationError();
170
+ return base.syncPrincipal(params, ctx);
171
+ },
172
+ async getPrincipal(params, ctx) {
173
+ const identity = claimFromContext(ctx);
174
+ if (!identity) {
175
+ if (!base.getPrincipal) throw new import_trust.IdentityAuthorizationError();
176
+ return base.getPrincipal(params, ctx);
177
+ }
178
+ const read = await lifecycle.getPrincipal(identity.signer.origin);
179
+ if (!read.binding) return { result: read.result };
180
+ if (!base.getPrincipal) return { result: read.result };
181
+ const response = await base.getPrincipal(params, ctx);
182
+ if (read.result.relationship && response && typeof response === "object") {
183
+ const boxed = "structuredContent" in response;
184
+ const payload = boxed ? response.structuredContent : response;
185
+ if (payload?.result && ["current", "recognized", "unconfigured"].includes(payload.result.kind ?? "")) {
186
+ const augmented = { ...payload, result: { ...payload.result, relationship: read.result.relationship } };
187
+ return boxed ? { ...response, structuredContent: augmented } : augmented;
188
+ }
189
+ }
190
+ return response;
191
+ }
192
+ };
193
+ }
194
+ function createIdentity33PrincipalScopeResolver(options) {
195
+ if (!options.tenantId) throw new TypeError("Principal scope requires a trusted tenant id");
196
+ return async (ctx) => {
197
+ const identity = claimFromContext(ctx);
198
+ if (!identity) {
199
+ if (!options.legacy) throw new import_trust.IdentityAuthorizationError();
200
+ return options.legacy(ctx);
201
+ }
202
+ const { binding } = await options.lifecycle.getPrincipal(identity.signer.origin);
203
+ if (!binding) throw new import_trust.IdentityAuthorizationError();
204
+ return {
205
+ tenant_id: options.tenantId,
206
+ principal_id: binding.principalId,
207
+ principal_record_id: binding.principalId,
208
+ principal_kind: binding.principalKind ?? "buyer_agent"
209
+ };
210
+ };
211
+ }
212
+ // Annotate the CommonJS export names for ESM import in node:
213
+ 0 && (module.exports = {
214
+ createIdentity33Authorization,
215
+ createIdentity33PrincipalResolver,
216
+ createIdentity33PrincipalScopeResolver,
217
+ isIdentity33UnboundContext,
218
+ withIdentity33PrincipalHandlers
219
+ });
@@ -0,0 +1,194 @@
1
+ import { createHash } from "crypto";
2
+ import { registerWebBotAuthLegacyOriginGate } from "../signing/web-bot-auth.mjs";
3
+ import { RequestSignatureError } from "../signing/errors.mjs";
4
+ import { TaskTypeValues } from "../types/enums.generated.mjs";
5
+ import { AdcpError } from "../server/decisioning/async-outcome.mjs";
6
+ import { createWebBotAuthAuthorizationFailure, getWebBotAuthAuthorizationFailure } from "../signing/web-bot-auth.mjs";
7
+ import { markVerifiedHttpSig } from "../server/decisioning/buyer-agent.mjs";
8
+ import { isVerifiedWebBotSigner, WebBotAuthError } from "../signing/web-bot-auth.mjs";
9
+ import {
10
+ authorizeDemandGrant,
11
+ IdentityAuthorizationError
12
+ } from "./trust.mjs";
13
+ import { MUTATING_TASKS } from "../utils/idempotency.mjs";
14
+ const IDENTITY_ADMIN_TOOLS = /* @__PURE__ */ new Set(["sync_principal", "sync_agent_notification_configs"]);
15
+ const KNOWN_TOOLS = /* @__PURE__ */ new Set([...TaskTypeValues, "get_task_status", "list_tasks", "tasks_get"]);
16
+ const SPEND_TOOLS = new Set([...MUTATING_TASKS].filter((tool) => !IDENTITY_ADMIN_TOOLS.has(tool)));
17
+ function needsSpendAuthorization(tool, params) {
18
+ if (SPEND_TOOLS.has(tool) || !KNOWN_TOOLS.has(tool)) return true;
19
+ if (tool !== "get_products" || !params || typeof params !== "object") return false;
20
+ const refine = params.refine;
21
+ return (Array.isArray(refine) ? refine : [refine]).some(
22
+ (entry) => entry && typeof entry === "object" && entry.action === "finalize"
23
+ );
24
+ }
25
+ function claimFromContext(ctx) {
26
+ const claim = ctx.authInfo?.extra?.identity33;
27
+ return claim && isVerifiedWebBotSigner(claim.signer) ? claim : void 0;
28
+ }
29
+ function isIdentity33UnboundContext(ctx) {
30
+ return claimFromContext(ctx)?.state === "identity-established";
31
+ }
32
+ function createIdentity33PrincipalResolver(options) {
33
+ const anonymousTools = new Set(
34
+ options.anonymousTools ?? [
35
+ "get_adcp_capabilities",
36
+ "get_principal",
37
+ "sync_principal",
38
+ "list_creative_formats",
39
+ "get_products"
40
+ ]
41
+ );
42
+ const resolver = async (signers, operation) => {
43
+ if (!signers.length || signers.some((s) => !isVerifiedWebBotSigner(s)))
44
+ throw new WebBotAuthError(403, "unverified_identity");
45
+ const signer = signers[signers.length - 1];
46
+ const revoked = signers.find((s) => s.authorizationFailure);
47
+ const { binding } = revoked ? { binding: void 0 } : await options.lifecycle.getPrincipal(signer.origin);
48
+ if (!binding && operation !== void 0 && typeof operation !== "string")
49
+ throw new WebBotAuthError(400, "operation");
50
+ const authorizationFailure = revoked?.authorizationFailure ?? (!binding && typeof operation === "string" && !anonymousTools.has(operation) ? createWebBotAuthAuthorizationFailure("identity_not_bound") : void 0);
51
+ return {
52
+ principal: binding?.principalId ?? `${options.anonymousPrincipal ?? "anonymous"}:${createHash("sha256").update(signer.origin).digest("hex")}`,
53
+ extra: {
54
+ identity33: {
55
+ state: binding ? "bound" : "identity-established",
56
+ signer: revoked ?? signer,
57
+ ...authorizationFailure && { authorizationFailure }
58
+ }
59
+ },
60
+ ...binding ? {
61
+ credential: markVerifiedHttpSig({
62
+ kind: "http_sig",
63
+ keyid: signer.keyid,
64
+ agent_url: signer.origin,
65
+ verified_at: signer.verified_at
66
+ })
67
+ } : {}
68
+ };
69
+ };
70
+ registerWebBotAuthLegacyOriginGate(resolver, async (origin) => {
71
+ if ((await options.lifecycle.getPrincipal(origin)).binding)
72
+ throw new RequestSignatureError(
73
+ "request_signature_key_unknown",
74
+ 7,
75
+ "Origin-bound principals require Web Bot Auth"
76
+ );
77
+ });
78
+ return resolver;
79
+ }
80
+ function createIdentity33Authorization(options) {
81
+ return async (ctx, tool, params) => {
82
+ const identity = claimFromContext(ctx);
83
+ const failure = getWebBotAuthAuthorizationFailure(ctx.authInfo?.extra);
84
+ if (failure) throw new AdcpError(failure.code, failure);
85
+ if (!identity) {
86
+ const verified = ctx.authInfo?.extra?.webBotAuthAuthorization;
87
+ if (isVerifiedWebBotSigner(verified?.signer))
88
+ throw new AdcpError("PERMISSION_DENIED", {
89
+ message: "Web Bot Auth resolver did not supply an audited identity claim"
90
+ });
91
+ return;
92
+ }
93
+ if (identity.state === "identity-established") {
94
+ if (tool === "sync_principal") {
95
+ const dryRun = !!params && typeof params === "object" && params.dry_run === true;
96
+ const binding = await options.lifecycle.syncOpen(identity.signer.origin, { dryRun });
97
+ if (dryRun) return;
98
+ if (!ctx.authInfo) throw new IdentityAuthorizationError();
99
+ ctx.authInfo.clientId = binding.principalId;
100
+ ctx.authInfo.credential = markVerifiedHttpSig({
101
+ kind: "http_sig",
102
+ keyid: identity.signer.keyid,
103
+ agent_url: identity.signer.origin,
104
+ verified_at: identity.signer.verified_at
105
+ });
106
+ ctx.authInfo.extra = {
107
+ ...ctx.authInfo.extra,
108
+ credential: ctx.authInfo.credential,
109
+ identity33: { ...identity, state: "bound" }
110
+ };
111
+ return;
112
+ }
113
+ if ((options.anonymousTools ?? ["get_principal", "get_adcp_capabilities", "list_creative_formats", "get_products"]).includes(tool) && !needsSpendAuthorization(tool, params))
114
+ return;
115
+ throw new AdcpError("PERMISSION_DENIED", { message: "Agent identity is not onboarded for this operation" });
116
+ }
117
+ const origin = identity.signer.origin;
118
+ if (IDENTITY_ADMIN_TOOLS.has(tool)) {
119
+ await options.lifecycle.authorizeBound(origin, { identityConfiguration: true });
120
+ return;
121
+ }
122
+ if (!needsSpendAuthorization(tool, params) || !KNOWN_TOOLS.has(tool) && options.readOnlyTools?.includes(tool)) {
123
+ await options.lifecycle.authorizeBound(origin, { readOnly: true });
124
+ return;
125
+ }
126
+ const claims = await options.resolveClaims(ctx, tool, params);
127
+ if (!claims.length) throw new IdentityAuthorizationError();
128
+ for (const claim of claims) {
129
+ await options.lifecycle.authorizeBound(origin, {
130
+ sandbox: claim.sandbox,
131
+ billing: claim.billing,
132
+ brandDomain: claim.brand.domain
133
+ });
134
+ await authorizeDemandGrant({ ...claim, signerOrigin: origin }, options.grants);
135
+ }
136
+ };
137
+ }
138
+ function withIdentity33PrincipalHandlers(base, lifecycle) {
139
+ return {
140
+ ...base,
141
+ async syncPrincipal(params, ctx) {
142
+ const identity = claimFromContext(ctx);
143
+ if (identity?.state === "identity-established" && params.dry_run === true)
144
+ return { result: { kind: "validated", action: "would_update", dry_run: true } };
145
+ if (!base.syncPrincipal) throw new IdentityAuthorizationError();
146
+ return base.syncPrincipal(params, ctx);
147
+ },
148
+ async getPrincipal(params, ctx) {
149
+ const identity = claimFromContext(ctx);
150
+ if (!identity) {
151
+ if (!base.getPrincipal) throw new IdentityAuthorizationError();
152
+ return base.getPrincipal(params, ctx);
153
+ }
154
+ const read = await lifecycle.getPrincipal(identity.signer.origin);
155
+ if (!read.binding) return { result: read.result };
156
+ if (!base.getPrincipal) return { result: read.result };
157
+ const response = await base.getPrincipal(params, ctx);
158
+ if (read.result.relationship && response && typeof response === "object") {
159
+ const boxed = "structuredContent" in response;
160
+ const payload = boxed ? response.structuredContent : response;
161
+ if (payload?.result && ["current", "recognized", "unconfigured"].includes(payload.result.kind ?? "")) {
162
+ const augmented = { ...payload, result: { ...payload.result, relationship: read.result.relationship } };
163
+ return boxed ? { ...response, structuredContent: augmented } : augmented;
164
+ }
165
+ }
166
+ return response;
167
+ }
168
+ };
169
+ }
170
+ function createIdentity33PrincipalScopeResolver(options) {
171
+ if (!options.tenantId) throw new TypeError("Principal scope requires a trusted tenant id");
172
+ return async (ctx) => {
173
+ const identity = claimFromContext(ctx);
174
+ if (!identity) {
175
+ if (!options.legacy) throw new IdentityAuthorizationError();
176
+ return options.legacy(ctx);
177
+ }
178
+ const { binding } = await options.lifecycle.getPrincipal(identity.signer.origin);
179
+ if (!binding) throw new IdentityAuthorizationError();
180
+ return {
181
+ tenant_id: options.tenantId,
182
+ principal_id: binding.principalId,
183
+ principal_record_id: binding.principalId,
184
+ principal_kind: binding.principalKind ?? "buyer_agent"
185
+ };
186
+ };
187
+ }
188
+ export {
189
+ createIdentity33Authorization,
190
+ createIdentity33PrincipalResolver,
191
+ createIdentity33PrincipalScopeResolver,
192
+ isIdentity33UnboundContext,
193
+ withIdentity33PrincipalHandlers
194
+ };
@@ -0,0 +1,24 @@
1
+ import type { AdcpStateStore } from '../server/state-store.mjs';
2
+ import { type MonotonicOriginRevocationStore } from './revocation.mjs';
3
+ import type { OriginIdentityStore } from './lifecycle.mjs';
4
+ /** CAS-backed stores work with the SDK's PostgresStateStore and custom shared backends. */
5
+ export declare function createIdentity33StateStores(options: {
6
+ store: AdcpStateStore;
7
+ tenantId: string;
8
+ collection?: string;
9
+ /** Separate capacity for bound and unbound origins. Raising limits preserves every existing fact. */
10
+ revocationLimits?: {
11
+ keys?: number;
12
+ origins?: number;
13
+ operatorKeys?: number;
14
+ operatorOrigins?: number;
15
+ originKeys?: number;
16
+ };
17
+ }): {
18
+ identity: OriginIdentityStore;
19
+ authorityHistory: {
20
+ has(operator: string): Promise<boolean>;
21
+ mark(operator: string): Promise<void>;
22
+ };
23
+ revocations: MonotonicOriginRevocationStore;
24
+ };
@@ -0,0 +1,24 @@
1
+ import type { AdcpStateStore } from '../server/state-store';
2
+ import { type MonotonicOriginRevocationStore } from './revocation';
3
+ import type { OriginIdentityStore } from './lifecycle';
4
+ /** CAS-backed stores work with the SDK's PostgresStateStore and custom shared backends. */
5
+ export declare function createIdentity33StateStores(options: {
6
+ store: AdcpStateStore;
7
+ tenantId: string;
8
+ collection?: string;
9
+ /** Separate capacity for bound and unbound origins. Raising limits preserves every existing fact. */
10
+ revocationLimits?: {
11
+ keys?: number;
12
+ origins?: number;
13
+ operatorKeys?: number;
14
+ operatorOrigins?: number;
15
+ originKeys?: number;
16
+ };
17
+ }): {
18
+ identity: OriginIdentityStore;
19
+ authorityHistory: {
20
+ has(operator: string): Promise<boolean>;
21
+ mark(operator: string): Promise<void>;
22
+ };
23
+ revocations: MonotonicOriginRevocationStore;
24
+ };