@adcp/sdk 16.0.0-beta.3 → 16.0.0-beta.4

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 (182) hide show
  1. package/dist/lib/auth/oauth/diagnose.js +3 -11
  2. package/dist/lib/auth/oauth/diagnose.mjs +4 -12
  3. package/dist/lib/auth/oauth/diagnostics.d.mts +2 -1
  4. package/dist/lib/auth/oauth/diagnostics.d.ts +2 -1
  5. package/dist/lib/auth/oauth/diagnostics.js +8 -10
  6. package/dist/lib/auth/oauth/diagnostics.mjs +7 -10
  7. package/dist/lib/index.d.mts +1 -1
  8. package/dist/lib/index.d.ts +1 -1
  9. package/dist/lib/index.js +2 -0
  10. package/dist/lib/index.mjs +7 -1
  11. package/dist/lib/reporting/consumer-runtime.js +2 -1
  12. package/dist/lib/reporting/consumer-runtime.mjs +2 -1
  13. package/dist/lib/reporting/ledger/handler.js +50 -11
  14. package/dist/lib/reporting/ledger/handler.mjs +50 -12
  15. package/dist/lib/reporting/ledger/index.d.mts +17 -14
  16. package/dist/lib/reporting/ledger/index.d.ts +17 -14
  17. package/dist/lib/reporting/ledger/index.js +32 -20
  18. package/dist/lib/reporting/ledger/index.mjs +21 -10
  19. package/dist/lib/reporting/ledger/offering-validation.d.mts +9 -0
  20. package/dist/lib/reporting/ledger/offering-validation.d.ts +9 -0
  21. package/dist/lib/reporting/{gcs/bucket-policy.js → ledger/offering-validation.js} +9 -8
  22. package/dist/lib/reporting/ledger/offering-validation.mjs +8 -0
  23. package/dist/lib/reporting/ledger/receipts.d.mts +48 -0
  24. package/dist/lib/reporting/ledger/receipts.d.ts +48 -0
  25. package/dist/lib/reporting/ledger/receipts.js +186 -0
  26. package/dist/lib/reporting/ledger/receipts.mjs +161 -0
  27. package/dist/lib/reporting/ledger/status-ingest.js +3 -3
  28. package/dist/lib/reporting/ledger/status-ingest.mjs +4 -5
  29. package/dist/lib/reporting/ledger/types.d.mts +43 -0
  30. package/dist/lib/reporting/ledger/types.d.ts +43 -0
  31. package/dist/lib/reporting/ledger/types.js +31 -2
  32. package/dist/lib/reporting/ledger/types.mjs +26 -1
  33. package/dist/lib/reporting/pagination.d.mts +6 -0
  34. package/dist/lib/reporting/pagination.d.ts +6 -0
  35. package/dist/lib/reporting/{gcs/errors.js → pagination.js} +12 -17
  36. package/dist/lib/reporting/pagination.mjs +12 -0
  37. package/dist/lib/reporting/reconciliation.d.mts +1 -0
  38. package/dist/lib/reporting/reconciliation.d.ts +1 -0
  39. package/dist/lib/reporting/reconciliation.js +3 -2
  40. package/dist/lib/reporting/reconciliation.mjs +3 -2
  41. package/dist/lib/reporting/service/index.d.mts +79 -153
  42. package/dist/lib/reporting/service/index.d.ts +79 -153
  43. package/dist/lib/reporting/service/index.js +34 -491
  44. package/dist/lib/reporting/service/index.mjs +36 -510
  45. package/dist/lib/reporting/service/scheduler-support.d.mts +43 -0
  46. package/dist/lib/reporting/service/scheduler-support.d.ts +43 -0
  47. package/dist/lib/reporting/service/scheduler-support.js +125 -0
  48. package/dist/lib/reporting/service/scheduler-support.mjs +96 -0
  49. package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
  50. package/dist/lib/signing/canonicalize.d.mts +4 -0
  51. package/dist/lib/signing/canonicalize.d.ts +4 -0
  52. package/dist/lib/signing/canonicalize.js +14 -8
  53. package/dist/lib/signing/canonicalize.mjs +14 -8
  54. package/dist/lib/signing/content-digest.d.mts +8 -0
  55. package/dist/lib/signing/content-digest.d.ts +8 -0
  56. package/dist/lib/signing/content-digest.js +11 -5
  57. package/dist/lib/signing/content-digest.mjs +10 -5
  58. package/dist/lib/signing/signer.js +9 -6
  59. package/dist/lib/signing/signer.mjs +10 -7
  60. package/dist/lib/signing/web-bot-auth.js +103 -37
  61. package/dist/lib/signing/web-bot-auth.mjs +108 -37
  62. package/dist/lib/testing/storyboard/junit.js +16 -3
  63. package/dist/lib/testing/storyboard/junit.mjs +16 -3
  64. package/dist/lib/testing/storyboard/request-signing/builder.js +10 -9
  65. package/dist/lib/testing/storyboard/request-signing/builder.mjs +10 -9
  66. package/dist/lib/testing/storyboard/runner.js +94 -25
  67. package/dist/lib/testing/storyboard/runner.mjs +94 -25
  68. package/dist/lib/testing/storyboard/types.d.mts +6 -0
  69. package/dist/lib/testing/storyboard/types.d.ts +6 -0
  70. package/dist/lib/testing/storyboard/validations.d.mts +1 -1
  71. package/dist/lib/testing/storyboard/validations.d.ts +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.mjs +3 -3
  76. package/docs/TYPE-SUMMARY.md +23 -5
  77. package/docs/guides/REPORTING-GCS-FENCE.md +3 -3
  78. package/docs/guides/REPORTING-GCS-MANAGED.md +4 -4
  79. package/docs/guides/REPORTING-LEDGER-CUTOVER.md +7 -7
  80. package/docs/guides/REPORTING-LEDGER.md +107 -51
  81. package/docs/guides/REPORTING-OPERATIONS.md +66 -5
  82. package/docs/guides/REPORTING-STABILITY.md +36 -32
  83. package/docs/llms.txt +4 -3
  84. package/docs/migration-14.x-rc-worksheet.md +4 -7
  85. package/docs/migration-reporting-storage-package.md +186 -0
  86. package/examples/README.md +1 -1
  87. package/package.json +13 -78
  88. package/dist/lib/reporting/azure/index.d.mts +0 -31
  89. package/dist/lib/reporting/azure/index.d.ts +0 -31
  90. package/dist/lib/reporting/azure/index.js +0 -266
  91. package/dist/lib/reporting/azure/index.mjs +0 -249
  92. package/dist/lib/reporting/bigquery/index.d.mts +0 -246
  93. package/dist/lib/reporting/bigquery/index.d.ts +0 -246
  94. package/dist/lib/reporting/bigquery/index.js +0 -633
  95. package/dist/lib/reporting/bigquery/index.mjs +0 -594
  96. package/dist/lib/reporting/gcs/adapter.d.mts +0 -38
  97. package/dist/lib/reporting/gcs/adapter.d.ts +0 -38
  98. package/dist/lib/reporting/gcs/adapter.js +0 -342
  99. package/dist/lib/reporting/gcs/adapter.mjs +0 -325
  100. package/dist/lib/reporting/gcs/bucket-policy.d.mts +0 -3
  101. package/dist/lib/reporting/gcs/bucket-policy.d.ts +0 -3
  102. package/dist/lib/reporting/gcs/bucket-policy.mjs +0 -7
  103. package/dist/lib/reporting/gcs/errors.d.mts +0 -11
  104. package/dist/lib/reporting/gcs/errors.d.ts +0 -11
  105. package/dist/lib/reporting/gcs/errors.mjs +0 -16
  106. package/dist/lib/reporting/gcs/fence.d.mts +0 -41
  107. package/dist/lib/reporting/gcs/fence.d.ts +0 -41
  108. package/dist/lib/reporting/gcs/fence.js +0 -250
  109. package/dist/lib/reporting/gcs/fence.mjs +0 -230
  110. package/dist/lib/reporting/gcs/index.d.mts +0 -18
  111. package/dist/lib/reporting/gcs/index.d.ts +0 -18
  112. package/dist/lib/reporting/gcs/index.js +0 -44
  113. package/dist/lib/reporting/gcs/index.mjs +0 -14
  114. package/dist/lib/reporting/gcs/io.d.mts +0 -7
  115. package/dist/lib/reporting/gcs/io.d.ts +0 -7
  116. package/dist/lib/reporting/gcs/io.js +0 -95
  117. package/dist/lib/reporting/gcs/io.mjs +0 -69
  118. package/dist/lib/reporting/gcs/reader.d.mts +0 -67
  119. package/dist/lib/reporting/gcs/reader.d.ts +0 -67
  120. package/dist/lib/reporting/gcs/reader.js +0 -193
  121. package/dist/lib/reporting/gcs/reader.mjs +0 -169
  122. package/dist/lib/reporting/gcs/row-provider.d.mts +0 -39
  123. package/dist/lib/reporting/gcs/row-provider.d.ts +0 -39
  124. package/dist/lib/reporting/gcs/row-provider.js +0 -225
  125. package/dist/lib/reporting/gcs/row-provider.mjs +0 -208
  126. package/dist/lib/reporting/gcs/validation.d.mts +0 -5
  127. package/dist/lib/reporting/gcs/validation.d.ts +0 -5
  128. package/dist/lib/reporting/gcs/validation.js +0 -49
  129. package/dist/lib/reporting/gcs/validation.mjs +0 -25
  130. package/dist/lib/reporting/ledger/change-feed.d.mts +0 -69
  131. package/dist/lib/reporting/ledger/change-feed.d.ts +0 -69
  132. package/dist/lib/reporting/ledger/change-feed.js +0 -107
  133. package/dist/lib/reporting/ledger/change-feed.mjs +0 -80
  134. package/dist/lib/reporting/ledger/managed-postgres.d.mts +0 -293
  135. package/dist/lib/reporting/ledger/managed-postgres.d.ts +0 -293
  136. package/dist/lib/reporting/ledger/managed-postgres.js +0 -2346
  137. package/dist/lib/reporting/ledger/managed-postgres.mjs +0 -2332
  138. package/dist/lib/reporting/ledger/managed-router.d.mts +0 -148
  139. package/dist/lib/reporting/ledger/managed-router.d.ts +0 -148
  140. package/dist/lib/reporting/ledger/managed-router.js +0 -280
  141. package/dist/lib/reporting/ledger/managed-router.mjs +0 -258
  142. package/dist/lib/reporting/ledger/managed.d.mts +0 -535
  143. package/dist/lib/reporting/ledger/managed.d.ts +0 -535
  144. package/dist/lib/reporting/ledger/managed.js +0 -761
  145. package/dist/lib/reporting/ledger/managed.mjs +0 -729
  146. package/dist/lib/reporting/ledger/notification-activity.d.mts +0 -332
  147. package/dist/lib/reporting/ledger/notification-activity.d.ts +0 -332
  148. package/dist/lib/reporting/ledger/notification-activity.js +0 -1366
  149. package/dist/lib/reporting/ledger/notification-activity.mjs +0 -1337
  150. package/dist/lib/reporting/ledger/object-writes.d.mts +0 -128
  151. package/dist/lib/reporting/ledger/object-writes.d.ts +0 -128
  152. package/dist/lib/reporting/ledger/object-writes.js +0 -147
  153. package/dist/lib/reporting/ledger/object-writes.mjs +0 -114
  154. package/dist/lib/reporting/ledger/postgres.d.mts +0 -689
  155. package/dist/lib/reporting/ledger/postgres.d.ts +0 -689
  156. package/dist/lib/reporting/ledger/postgres.js +0 -4462
  157. package/dist/lib/reporting/ledger/postgres.mjs +0 -4462
  158. package/dist/lib/reporting/ledger/row-storage-migration.d.mts +0 -59
  159. package/dist/lib/reporting/ledger/row-storage-migration.d.ts +0 -59
  160. package/dist/lib/reporting/ledger/row-storage-migration.js +0 -365
  161. package/dist/lib/reporting/ledger/row-storage-migration.mjs +0 -339
  162. package/dist/lib/reporting/ledger/row-storage-object.d.mts +0 -203
  163. package/dist/lib/reporting/ledger/row-storage-object.d.ts +0 -203
  164. package/dist/lib/reporting/ledger/row-storage-object.js +0 -379
  165. package/dist/lib/reporting/ledger/row-storage-object.mjs +0 -335
  166. package/dist/lib/reporting/ledger/row-storage-provider-io.d.mts +0 -44
  167. package/dist/lib/reporting/ledger/row-storage-provider-io.d.ts +0 -44
  168. package/dist/lib/reporting/ledger/row-storage-provider-io.js +0 -142
  169. package/dist/lib/reporting/ledger/row-storage-provider-io.mjs +0 -111
  170. package/dist/lib/reporting/ledger/row-storage.d.mts +0 -316
  171. package/dist/lib/reporting/ledger/row-storage.d.ts +0 -316
  172. package/dist/lib/reporting/ledger/row-storage.js +0 -812
  173. package/dist/lib/reporting/ledger/row-storage.mjs +0 -802
  174. package/dist/lib/reporting/s3/index.d.mts +0 -34
  175. package/dist/lib/reporting/s3/index.d.ts +0 -34
  176. package/dist/lib/reporting/s3/index.js +0 -347
  177. package/dist/lib/reporting/s3/index.mjs +0 -340
  178. package/dist/lib/reporting/service/maintenance.d.mts +0 -148
  179. package/dist/lib/reporting/service/maintenance.d.ts +0 -148
  180. package/dist/lib/reporting/service/maintenance.js +0 -185
  181. package/dist/lib/reporting/service/maintenance.mjs +0 -159
  182. package/examples/reliable-reporting-service/README.md +0 -169
@@ -1,3 +0,0 @@
1
- import type { BucketMetadata } from '@google-cloud/storage';
2
- /** Pure policy guard shared by the real-provider probe and deterministic negative controls. */
3
- export declare function assertGcsReportingBucketPolicy(metadata: BucketMetadata): void;
@@ -1,7 +0,0 @@
1
- function assertGcsReportingBucketPolicy(metadata) {
2
- if (!metadata || metadata.versioning?.enabled || metadata.softDeletePolicy?.retentionDurationSeconds === void 0 || Number(metadata.softDeletePolicy.retentionDurationSeconds) !== 0 || Number(metadata.retentionPolicy?.retentionPeriod ?? 0) !== 0 || metadata.defaultEventBasedHold === true || metadata.objectRetention?.mode === "Enabled" || (metadata.lifecycle?.rule?.length ?? 0) > 0 || metadata.iamConfiguration?.uniformBucketLevelAccess?.enabled !== true || metadata.iamConfiguration?.publicAccessPrevention !== "enforced")
3
- throw new Error("Unsafe reporting GCS bucket policy");
4
- }
5
- export {
6
- assertGcsReportingBucketPolicy
7
- };
@@ -1,11 +0,0 @@
1
- /**
2
- * @experimental Reliable Reporting storage surface: breaking changes may ship in minor releases. See https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
3
- */
4
- export declare class ReportingGcsFenceError extends Error {
5
- readonly code: 'INVALID_INPUT' | 'UNSAFE_BUCKET' | 'REVOKED' | 'NOT_REVOKED' | 'CONTENT_CONFLICT' | 'ABORTED' | 'PROVIDER_UNAVAILABLE' | 'DEADLINE_EXCEEDED' | 'HOST_CALLBACK_FAILED' | 'STATE_UNAVAILABLE';
6
- constructor(code: 'INVALID_INPUT' | 'UNSAFE_BUCKET' | 'REVOKED' | 'NOT_REVOKED' | 'CONTENT_CONFLICT' | 'ABORTED' | 'PROVIDER_UNAVAILABLE' | 'DEADLINE_EXCEEDED' | 'HOST_CALLBACK_FAILED' | 'STATE_UNAVAILABLE');
7
- }
8
- /**
9
- * @experimental Reliable Reporting storage surface: breaking changes may ship in minor releases. See https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
10
- */
11
- export declare function isReportingGcsFenceError(error: unknown): error is ReportingGcsFenceError;
@@ -1,11 +0,0 @@
1
- /**
2
- * @experimental Reliable Reporting storage surface: breaking changes may ship in minor releases. See https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
3
- */
4
- export declare class ReportingGcsFenceError extends Error {
5
- readonly code: 'INVALID_INPUT' | 'UNSAFE_BUCKET' | 'REVOKED' | 'NOT_REVOKED' | 'CONTENT_CONFLICT' | 'ABORTED' | 'PROVIDER_UNAVAILABLE' | 'DEADLINE_EXCEEDED' | 'HOST_CALLBACK_FAILED' | 'STATE_UNAVAILABLE';
6
- constructor(code: 'INVALID_INPUT' | 'UNSAFE_BUCKET' | 'REVOKED' | 'NOT_REVOKED' | 'CONTENT_CONFLICT' | 'ABORTED' | 'PROVIDER_UNAVAILABLE' | 'DEADLINE_EXCEEDED' | 'HOST_CALLBACK_FAILED' | 'STATE_UNAVAILABLE');
7
- }
8
- /**
9
- * @experimental Reliable Reporting storage surface: breaking changes may ship in minor releases. See https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
10
- */
11
- export declare function isReportingGcsFenceError(error: unknown): error is ReportingGcsFenceError;
@@ -1,16 +0,0 @@
1
- class ReportingGcsFenceError extends Error {
2
- constructor(code) {
3
- super(`Reporting GCS fence: ${code}`);
4
- this.code = code;
5
- this.name = "ReportingGcsFenceError";
6
- Object.defineProperty(this, /* @__PURE__ */ Symbol.for("adcp.reportingGcsFenceError"), { value: true });
7
- }
8
- code;
9
- }
10
- function isReportingGcsFenceError(error) {
11
- return !!error && typeof error === "object" && error[/* @__PURE__ */ Symbol.for("adcp.reportingGcsFenceError")] === true;
12
- }
13
- export {
14
- ReportingGcsFenceError,
15
- isReportingGcsFenceError
16
- };
@@ -1,41 +0,0 @@
1
- import type { Storage } from '@google-cloud/storage';
2
- import { type ReportingObjectWriteScopeV1, type ReportingObjectWritePlanV1, type ReportingObjectWriteStoreV1 } from '../ledger/object-writes.mjs';
3
- export { ReportingGcsFenceError } from './errors.mjs';
4
- /**
5
- * @experimental Reliable Reporting storage surface: breaking changes may ship in minor releases. See https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
6
- */
7
- export interface GcsReportingObjectFenceV1 {
8
- probe(context?: {
9
- signal?: AbortSignal;
10
- }): Promise<void>;
11
- register(scope: ReportingObjectWriteScopeV1, deliveryId: string, bodies: readonly Uint8Array[], context?: {
12
- signal?: AbortSignal;
13
- }): Promise<ReportingObjectWritePlanV1>;
14
- write(plan: ReportingObjectWritePlanV1, index: number, bytes: Uint8Array, context: {
15
- signal: AbortSignal;
16
- }): Promise<void>;
17
- revoke(scope: ReportingObjectWriteScopeV1, context: {
18
- signal: AbortSignal;
19
- maxObjects?: number;
20
- }): Promise<{
21
- fenced: number;
22
- complete: boolean;
23
- }>;
24
- }
25
- /**
26
- * Provider-side write fence, not a complete Managed Delivery adapter.
27
- * Derive scope from authenticated host state; these methods do not authorize callers.
28
- * Bucket configuration must remain managed exclusively by the trusted host.
29
- * Tombstones and inventory MUST NOT be deleted while stale requests can execute.
30
- * Inject the official Storage client with host-owned, keyless credentials.
31
- *
32
- * @experimental Reliable Reporting storage surface: breaking changes may ship in minor releases. See https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
33
- */
34
- export declare function createGcsReportingObjectFenceV1(options: {
35
- storage: Storage;
36
- store: ReportingObjectWriteStoreV1;
37
- bucket: string;
38
- /** Opaque deployment identity, separate from account and destination generations. */
39
- namespace: string;
40
- operationDeadlineMilliseconds?: number;
41
- }): GcsReportingObjectFenceV1;
@@ -1,41 +0,0 @@
1
- import type { Storage } from '@google-cloud/storage';
2
- import { type ReportingObjectWriteScopeV1, type ReportingObjectWritePlanV1, type ReportingObjectWriteStoreV1 } from '../ledger/object-writes';
3
- export { ReportingGcsFenceError } from './errors';
4
- /**
5
- * @experimental Reliable Reporting storage surface: breaking changes may ship in minor releases. See https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
6
- */
7
- export interface GcsReportingObjectFenceV1 {
8
- probe(context?: {
9
- signal?: AbortSignal;
10
- }): Promise<void>;
11
- register(scope: ReportingObjectWriteScopeV1, deliveryId: string, bodies: readonly Uint8Array[], context?: {
12
- signal?: AbortSignal;
13
- }): Promise<ReportingObjectWritePlanV1>;
14
- write(plan: ReportingObjectWritePlanV1, index: number, bytes: Uint8Array, context: {
15
- signal: AbortSignal;
16
- }): Promise<void>;
17
- revoke(scope: ReportingObjectWriteScopeV1, context: {
18
- signal: AbortSignal;
19
- maxObjects?: number;
20
- }): Promise<{
21
- fenced: number;
22
- complete: boolean;
23
- }>;
24
- }
25
- /**
26
- * Provider-side write fence, not a complete Managed Delivery adapter.
27
- * Derive scope from authenticated host state; these methods do not authorize callers.
28
- * Bucket configuration must remain managed exclusively by the trusted host.
29
- * Tombstones and inventory MUST NOT be deleted while stale requests can execute.
30
- * Inject the official Storage client with host-owned, keyless credentials.
31
- *
32
- * @experimental Reliable Reporting storage surface: breaking changes may ship in minor releases. See https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
33
- */
34
- export declare function createGcsReportingObjectFenceV1(options: {
35
- storage: Storage;
36
- store: ReportingObjectWriteStoreV1;
37
- bucket: string;
38
- /** Opaque deployment identity, separate from account and destination generations. */
39
- namespace: string;
40
- operationDeadlineMilliseconds?: number;
41
- }): GcsReportingObjectFenceV1;
@@ -1,250 +0,0 @@
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 fence_exports = {};
20
- __export(fence_exports, {
21
- ReportingGcsFenceError: () => import_errors2.ReportingGcsFenceError,
22
- createGcsReportingObjectFenceV1: () => createGcsReportingObjectFenceV1
23
- });
24
- module.exports = __toCommonJS(fence_exports);
25
- var import_node_crypto = require("node:crypto");
26
- var import_object_writes = require('../ledger/object-writes.js');
27
- var import_errors = require('./errors.js');
28
- var import_io = require('./io.js');
29
- var import_bucket_policy = require('./bucket-policy.js');
30
- var import_errors2 = require('./errors.js');
31
- const hash = (bytes) => (0, import_node_crypto.createHash)("sha256").update(bytes).digest("hex");
32
- const TOMBSTONE = "adcp_reporting_tombstone";
33
- function createGcsReportingObjectFenceV1(options) {
34
- if (!options || typeof options.bucket !== "string" || !/^[a-z0-9][a-z0-9.-]{1,220}[a-z0-9]$/.test(options.bucket) || typeof options.namespace !== "string" || options.namespace.length < 1 || options.namespace.length > 255 || !options.storage || typeof options.storage.bucket !== "function" || !options.store)
35
- throw new import_errors.ReportingGcsFenceError("INVALID_INPUT");
36
- const { storage, store, bucket: bucketName, namespace } = options;
37
- const deadline = options.operationDeadlineMilliseconds ?? 6e4;
38
- if (!Number.isSafeInteger(deadline) || deadline < 1 || deadline > 6e4)
39
- throw new import_errors.ReportingGcsFenceError("INVALID_INPUT");
40
- const provider = { bucket: bucketName, namespace_key: hash(namespace) };
41
- const status = (error, code) => !!error && typeof error === "object" && "code" in error && Number(error.code) === code;
42
- const bounded = (work, signal) => (0, import_io.withGcsDeadline)(work, { signal, milliseconds: deadline });
43
- async function probe(bucket, signal) {
44
- (0, import_io.activeGcsSignal)(signal);
45
- try {
46
- const [metadata] = await bucket.getMetadata();
47
- (0, import_io.activeGcsSignal)(signal);
48
- try {
49
- (0, import_bucket_policy.assertGcsReportingBucketPolicy)(metadata);
50
- } catch {
51
- throw new import_errors.ReportingGcsFenceError("UNSAFE_BUCKET");
52
- }
53
- } catch (error) {
54
- (0, import_io.activeGcsSignal)(signal);
55
- if ((0, import_errors.isReportingGcsFenceError)(error)) throw error;
56
- throw new import_errors.ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
57
- }
58
- }
59
- function assertScope(scope) {
60
- try {
61
- (0, import_object_writes.assertReportingObjectWriteScope)(scope);
62
- } catch {
63
- throw new import_errors.ReportingGcsFenceError("INVALID_INPUT");
64
- }
65
- }
66
- function assertPlan(plan) {
67
- try {
68
- (0, import_object_writes.reportingObjectWritePlanFingerprint)(plan);
69
- } catch {
70
- throw new import_errors.ReportingGcsFenceError("INVALID_INPUT");
71
- }
72
- if (plan.provider.bucket !== bucketName || plan.provider.namespace_key !== provider.namespace_key)
73
- throw new import_errors.ReportingGcsFenceError("INVALID_INPUT");
74
- }
75
- async function register(scope, deliveryId, bodies, signal) {
76
- assertScope(scope);
77
- if (typeof deliveryId !== "string" || deliveryId.length < 1 || deliveryId.length > 255 || !Array.isArray(bodies) || bodies.length < 1 || bodies.length > 128 || bodies.some((b) => !(b instanceof Uint8Array) || b.byteLength > 64 * 1024 * 1024) || bodies.reduce((total, b) => total + b.byteLength, 0) > 64 * 1024 * 1024)
78
- throw new import_errors.ReportingGcsFenceError("INVALID_INPUT");
79
- const scopeCopy = {
80
- account_id: scope.account_id,
81
- destination_ref: scope.destination_ref,
82
- generation: scope.generation
83
- };
84
- const planId = hash(deliveryId);
85
- const plan = {
86
- ...scopeCopy,
87
- provider: { ...provider },
88
- plan_id: planId,
89
- objects: bodies.map((b, i) => ({
90
- bucket: bucketName,
91
- object_name: (0, import_object_writes.reportingObjectWriteName)(scopeCopy, provider, planId, i),
92
- sha256: hash(b),
93
- size_bytes: b.byteLength
94
- }))
95
- };
96
- await probe(storage.bucket(bucketName), signal);
97
- (0, import_io.activeGcsSignal)(signal);
98
- const registered = await store.registerObjectWritePlan(plan, { signal });
99
- (0, import_io.activeGcsSignal)(signal);
100
- if (registered === "revoked") throw new import_errors.ReportingGcsFenceError("REVOKED");
101
- return plan;
102
- }
103
- async function write(input, index, inputBytes, signal) {
104
- const plan = structuredClone(input);
105
- assertPlan(plan);
106
- const expected = plan.objects[index];
107
- if (!Number.isInteger(index) || !expected || !(inputBytes instanceof Uint8Array))
108
- throw new import_errors.ReportingGcsFenceError("INVALID_INPUT");
109
- if (inputBytes.byteLength !== expected.size_bytes) throw new import_errors.ReportingGcsFenceError("CONTENT_CONFLICT");
110
- const bytes = Buffer.from(inputBytes);
111
- if (hash(bytes) !== expected.sha256) throw new import_errors.ReportingGcsFenceError("CONTENT_CONFLICT");
112
- (0, import_io.activeGcsSignal)(signal);
113
- const bucket = storage.bucket(bucketName);
114
- await probe(bucket, signal);
115
- (0, import_io.activeGcsSignal)(signal);
116
- const registered = await store.registerObjectWritePlan(plan, { signal });
117
- (0, import_io.activeGcsSignal)(signal);
118
- if (registered === "revoked") throw new import_errors.ReportingGcsFenceError("REVOKED");
119
- const file = bucket.file(expected.object_name);
120
- try {
121
- await file.save(bytes, {
122
- resumable: false,
123
- preconditionOpts: { ifGenerationMatch: 0 },
124
- metadata: { cacheControl: "no-store" }
125
- });
126
- (0, import_io.activeGcsSignal)(signal);
127
- } catch (error) {
128
- (0, import_io.activeGcsSignal)(signal);
129
- if (!status(error, 412)) throw new import_errors.ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
130
- try {
131
- const [metadata] = await file.getMetadata();
132
- (0, import_io.activeGcsSignal)(signal);
133
- if (metadata.metadata?.[TOMBSTONE] !== void 0) throw new import_errors.ReportingGcsFenceError("REVOKED");
134
- const existing = await (0, import_io.readGcsBytes)(
135
- bucket.file(expected.object_name, { generation: metadata.generation }),
136
- bytes.length,
137
- signal
138
- );
139
- if (existing.length !== bytes.length || hash(existing) !== expected.sha256)
140
- throw new import_errors.ReportingGcsFenceError("CONTENT_CONFLICT");
141
- } catch (error2) {
142
- (0, import_io.activeGcsSignal)(signal);
143
- if (status(error2, 404)) {
144
- const current = await store.registerObjectWritePlan(plan, { signal });
145
- (0, import_io.activeGcsSignal)(signal);
146
- if (current === "revoked") throw new import_errors.ReportingGcsFenceError("REVOKED");
147
- }
148
- if ((0, import_errors.isReportingGcsFenceError)(error2)) throw error2;
149
- throw new import_errors.ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
150
- }
151
- }
152
- (0, import_io.activeGcsSignal)(signal);
153
- if (await store.registerObjectWritePlan(plan, { signal }) === "revoked")
154
- throw new import_errors.ReportingGcsFenceError("REVOKED");
155
- (0, import_io.activeGcsSignal)(signal);
156
- }
157
- async function revoke(scopeInput, maxObjects, signal) {
158
- assertScope(scopeInput);
159
- const scope = {
160
- account_id: scopeInput.account_id,
161
- destination_ref: scopeInput.destination_ref,
162
- generation: scopeInput.generation
163
- };
164
- const limit = maxObjects ?? 10;
165
- if (!Number.isSafeInteger(limit) || limit < 1 || limit > 1e3) throw new import_errors.ReportingGcsFenceError("INVALID_INPUT");
166
- (0, import_io.activeGcsSignal)(signal);
167
- const binding = await store.getObjectWriteBinding(scope, { signal });
168
- (0, import_io.activeGcsSignal)(signal);
169
- const objects = await store.listRevokedObjectWrites(scope, { limit }, { signal });
170
- (0, import_io.activeGcsSignal)(signal);
171
- if (!binding) {
172
- if (objects.length) throw new import_errors.ReportingGcsFenceError("STATE_UNAVAILABLE");
173
- return { fenced: 0, complete: true };
174
- }
175
- const bucket = storage.bucket(binding.bucket);
176
- await probe(bucket, signal);
177
- const scopeKey = (0, import_object_writes.reportingObjectWriteScopeKey)(scope);
178
- for (const object of objects) {
179
- (0, import_io.activeGcsSignal)(signal);
180
- if (object.bucket !== binding.bucket || object.object_name !== (0, import_object_writes.reportingObjectWriteName)(scope, binding, object.plan_id, object.object_index))
181
- throw new import_errors.ReportingGcsFenceError("STATE_UNAVAILABLE");
182
- const file = bucket.file(object.object_name);
183
- let fencedGeneration;
184
- for (let attempt = 0; attempt < 4 && !fencedGeneration; attempt++) {
185
- (0, import_io.activeGcsSignal)(signal);
186
- let generation = 0;
187
- try {
188
- const [metadata] = await file.getMetadata();
189
- (0, import_io.activeGcsSignal)(signal);
190
- generation = String(metadata.generation);
191
- if (metadata.metadata?.[TOMBSTONE] === scopeKey && String(metadata.size) === "0") {
192
- fencedGeneration = String(metadata.generation);
193
- break;
194
- }
195
- } catch (error) {
196
- (0, import_io.activeGcsSignal)(signal);
197
- if (!status(error, 404)) throw new import_errors.ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
198
- }
199
- (0, import_io.activeGcsSignal)(signal);
200
- try {
201
- await file.save(Buffer.alloc(0), {
202
- resumable: false,
203
- preconditionOpts: { ifGenerationMatch: generation },
204
- metadata: { cacheControl: "no-store", metadata: { [TOMBSTONE]: scopeKey } }
205
- });
206
- (0, import_io.activeGcsSignal)(signal);
207
- const [verified] = await file.getMetadata();
208
- (0, import_io.activeGcsSignal)(signal);
209
- if (verified.metadata?.[TOMBSTONE] !== scopeKey || String(verified.size) !== "0")
210
- throw new import_errors.ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
211
- fencedGeneration = String(verified.generation);
212
- } catch (error) {
213
- (0, import_io.activeGcsSignal)(signal);
214
- if ((0, import_errors.isReportingGcsFenceError)(error)) throw error;
215
- if (!status(error, 412)) throw new import_errors.ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
216
- }
217
- }
218
- if (!fencedGeneration) throw new import_errors.ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
219
- (0, import_io.activeGcsSignal)(signal);
220
- await store.markObjectWriteFenced(
221
- {
222
- ...scope,
223
- plan_id: object.plan_id,
224
- object_index: object.object_index,
225
- tombstone_generation: fencedGeneration
226
- },
227
- { signal }
228
- );
229
- (0, import_io.activeGcsSignal)(signal);
230
- }
231
- const remaining = await store.listRevokedObjectWrites(scope, { limit: 1 }, { signal });
232
- (0, import_io.activeGcsSignal)(signal);
233
- return { fenced: objects.length, complete: remaining.length === 0 };
234
- }
235
- function requireSignal(context) {
236
- if (!(context?.signal instanceof AbortSignal)) throw new import_errors.ReportingGcsFenceError("INVALID_INPUT");
237
- return context.signal;
238
- }
239
- return {
240
- probe: async (context) => bounded((signal) => probe(storage.bucket(bucketName), signal), context?.signal),
241
- register: async (scope, deliveryId, bodies, context) => bounded((signal) => register(scope, deliveryId, bodies, signal), context?.signal),
242
- write: async (plan, index, bytes, context) => bounded((signal) => write(plan, index, bytes, signal), requireSignal(context)),
243
- revoke: async (scope, context) => bounded((signal) => revoke(scope, context.maxObjects, signal), requireSignal(context))
244
- };
245
- }
246
- // Annotate the CommonJS export names for ESM import in node:
247
- 0 && (module.exports = {
248
- ReportingGcsFenceError,
249
- createGcsReportingObjectFenceV1
250
- });
@@ -1,230 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import {
3
- assertReportingObjectWriteScope,
4
- reportingObjectWritePlanFingerprint,
5
- reportingObjectWriteName,
6
- reportingObjectWriteScopeKey
7
- } from "../ledger/object-writes.mjs";
8
- import { ReportingGcsFenceError, isReportingGcsFenceError } from "./errors.mjs";
9
- import { activeGcsSignal as active, withGcsDeadline, readGcsBytes } from "./io.mjs";
10
- import { assertGcsReportingBucketPolicy } from "./bucket-policy.mjs";
11
- const hash = (bytes) => createHash("sha256").update(bytes).digest("hex");
12
- const TOMBSTONE = "adcp_reporting_tombstone";
13
- import { ReportingGcsFenceError as ReportingGcsFenceError2 } from "./errors.mjs";
14
- function createGcsReportingObjectFenceV1(options) {
15
- if (!options || typeof options.bucket !== "string" || !/^[a-z0-9][a-z0-9.-]{1,220}[a-z0-9]$/.test(options.bucket) || typeof options.namespace !== "string" || options.namespace.length < 1 || options.namespace.length > 255 || !options.storage || typeof options.storage.bucket !== "function" || !options.store)
16
- throw new ReportingGcsFenceError("INVALID_INPUT");
17
- const { storage, store, bucket: bucketName, namespace } = options;
18
- const deadline = options.operationDeadlineMilliseconds ?? 6e4;
19
- if (!Number.isSafeInteger(deadline) || deadline < 1 || deadline > 6e4)
20
- throw new ReportingGcsFenceError("INVALID_INPUT");
21
- const provider = { bucket: bucketName, namespace_key: hash(namespace) };
22
- const status = (error, code) => !!error && typeof error === "object" && "code" in error && Number(error.code) === code;
23
- const bounded = (work, signal) => withGcsDeadline(work, { signal, milliseconds: deadline });
24
- async function probe(bucket, signal) {
25
- active(signal);
26
- try {
27
- const [metadata] = await bucket.getMetadata();
28
- active(signal);
29
- try {
30
- assertGcsReportingBucketPolicy(metadata);
31
- } catch {
32
- throw new ReportingGcsFenceError("UNSAFE_BUCKET");
33
- }
34
- } catch (error) {
35
- active(signal);
36
- if (isReportingGcsFenceError(error)) throw error;
37
- throw new ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
38
- }
39
- }
40
- function assertScope(scope) {
41
- try {
42
- assertReportingObjectWriteScope(scope);
43
- } catch {
44
- throw new ReportingGcsFenceError("INVALID_INPUT");
45
- }
46
- }
47
- function assertPlan(plan) {
48
- try {
49
- reportingObjectWritePlanFingerprint(plan);
50
- } catch {
51
- throw new ReportingGcsFenceError("INVALID_INPUT");
52
- }
53
- if (plan.provider.bucket !== bucketName || plan.provider.namespace_key !== provider.namespace_key)
54
- throw new ReportingGcsFenceError("INVALID_INPUT");
55
- }
56
- async function register(scope, deliveryId, bodies, signal) {
57
- assertScope(scope);
58
- if (typeof deliveryId !== "string" || deliveryId.length < 1 || deliveryId.length > 255 || !Array.isArray(bodies) || bodies.length < 1 || bodies.length > 128 || bodies.some((b) => !(b instanceof Uint8Array) || b.byteLength > 64 * 1024 * 1024) || bodies.reduce((total, b) => total + b.byteLength, 0) > 64 * 1024 * 1024)
59
- throw new ReportingGcsFenceError("INVALID_INPUT");
60
- const scopeCopy = {
61
- account_id: scope.account_id,
62
- destination_ref: scope.destination_ref,
63
- generation: scope.generation
64
- };
65
- const planId = hash(deliveryId);
66
- const plan = {
67
- ...scopeCopy,
68
- provider: { ...provider },
69
- plan_id: planId,
70
- objects: bodies.map((b, i) => ({
71
- bucket: bucketName,
72
- object_name: reportingObjectWriteName(scopeCopy, provider, planId, i),
73
- sha256: hash(b),
74
- size_bytes: b.byteLength
75
- }))
76
- };
77
- await probe(storage.bucket(bucketName), signal);
78
- active(signal);
79
- const registered = await store.registerObjectWritePlan(plan, { signal });
80
- active(signal);
81
- if (registered === "revoked") throw new ReportingGcsFenceError("REVOKED");
82
- return plan;
83
- }
84
- async function write(input, index, inputBytes, signal) {
85
- const plan = structuredClone(input);
86
- assertPlan(plan);
87
- const expected = plan.objects[index];
88
- if (!Number.isInteger(index) || !expected || !(inputBytes instanceof Uint8Array))
89
- throw new ReportingGcsFenceError("INVALID_INPUT");
90
- if (inputBytes.byteLength !== expected.size_bytes) throw new ReportingGcsFenceError("CONTENT_CONFLICT");
91
- const bytes = Buffer.from(inputBytes);
92
- if (hash(bytes) !== expected.sha256) throw new ReportingGcsFenceError("CONTENT_CONFLICT");
93
- active(signal);
94
- const bucket = storage.bucket(bucketName);
95
- await probe(bucket, signal);
96
- active(signal);
97
- const registered = await store.registerObjectWritePlan(plan, { signal });
98
- active(signal);
99
- if (registered === "revoked") throw new ReportingGcsFenceError("REVOKED");
100
- const file = bucket.file(expected.object_name);
101
- try {
102
- await file.save(bytes, {
103
- resumable: false,
104
- preconditionOpts: { ifGenerationMatch: 0 },
105
- metadata: { cacheControl: "no-store" }
106
- });
107
- active(signal);
108
- } catch (error) {
109
- active(signal);
110
- if (!status(error, 412)) throw new ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
111
- try {
112
- const [metadata] = await file.getMetadata();
113
- active(signal);
114
- if (metadata.metadata?.[TOMBSTONE] !== void 0) throw new ReportingGcsFenceError("REVOKED");
115
- const existing = await readGcsBytes(
116
- bucket.file(expected.object_name, { generation: metadata.generation }),
117
- bytes.length,
118
- signal
119
- );
120
- if (existing.length !== bytes.length || hash(existing) !== expected.sha256)
121
- throw new ReportingGcsFenceError("CONTENT_CONFLICT");
122
- } catch (error2) {
123
- active(signal);
124
- if (status(error2, 404)) {
125
- const current = await store.registerObjectWritePlan(plan, { signal });
126
- active(signal);
127
- if (current === "revoked") throw new ReportingGcsFenceError("REVOKED");
128
- }
129
- if (isReportingGcsFenceError(error2)) throw error2;
130
- throw new ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
131
- }
132
- }
133
- active(signal);
134
- if (await store.registerObjectWritePlan(plan, { signal }) === "revoked")
135
- throw new ReportingGcsFenceError("REVOKED");
136
- active(signal);
137
- }
138
- async function revoke(scopeInput, maxObjects, signal) {
139
- assertScope(scopeInput);
140
- const scope = {
141
- account_id: scopeInput.account_id,
142
- destination_ref: scopeInput.destination_ref,
143
- generation: scopeInput.generation
144
- };
145
- const limit = maxObjects ?? 10;
146
- if (!Number.isSafeInteger(limit) || limit < 1 || limit > 1e3) throw new ReportingGcsFenceError("INVALID_INPUT");
147
- active(signal);
148
- const binding = await store.getObjectWriteBinding(scope, { signal });
149
- active(signal);
150
- const objects = await store.listRevokedObjectWrites(scope, { limit }, { signal });
151
- active(signal);
152
- if (!binding) {
153
- if (objects.length) throw new ReportingGcsFenceError("STATE_UNAVAILABLE");
154
- return { fenced: 0, complete: true };
155
- }
156
- const bucket = storage.bucket(binding.bucket);
157
- await probe(bucket, signal);
158
- const scopeKey = reportingObjectWriteScopeKey(scope);
159
- for (const object of objects) {
160
- active(signal);
161
- if (object.bucket !== binding.bucket || object.object_name !== reportingObjectWriteName(scope, binding, object.plan_id, object.object_index))
162
- throw new ReportingGcsFenceError("STATE_UNAVAILABLE");
163
- const file = bucket.file(object.object_name);
164
- let fencedGeneration;
165
- for (let attempt = 0; attempt < 4 && !fencedGeneration; attempt++) {
166
- active(signal);
167
- let generation = 0;
168
- try {
169
- const [metadata] = await file.getMetadata();
170
- active(signal);
171
- generation = String(metadata.generation);
172
- if (metadata.metadata?.[TOMBSTONE] === scopeKey && String(metadata.size) === "0") {
173
- fencedGeneration = String(metadata.generation);
174
- break;
175
- }
176
- } catch (error) {
177
- active(signal);
178
- if (!status(error, 404)) throw new ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
179
- }
180
- active(signal);
181
- try {
182
- await file.save(Buffer.alloc(0), {
183
- resumable: false,
184
- preconditionOpts: { ifGenerationMatch: generation },
185
- metadata: { cacheControl: "no-store", metadata: { [TOMBSTONE]: scopeKey } }
186
- });
187
- active(signal);
188
- const [verified] = await file.getMetadata();
189
- active(signal);
190
- if (verified.metadata?.[TOMBSTONE] !== scopeKey || String(verified.size) !== "0")
191
- throw new ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
192
- fencedGeneration = String(verified.generation);
193
- } catch (error) {
194
- active(signal);
195
- if (isReportingGcsFenceError(error)) throw error;
196
- if (!status(error, 412)) throw new ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
197
- }
198
- }
199
- if (!fencedGeneration) throw new ReportingGcsFenceError("PROVIDER_UNAVAILABLE");
200
- active(signal);
201
- await store.markObjectWriteFenced(
202
- {
203
- ...scope,
204
- plan_id: object.plan_id,
205
- object_index: object.object_index,
206
- tombstone_generation: fencedGeneration
207
- },
208
- { signal }
209
- );
210
- active(signal);
211
- }
212
- const remaining = await store.listRevokedObjectWrites(scope, { limit: 1 }, { signal });
213
- active(signal);
214
- return { fenced: objects.length, complete: remaining.length === 0 };
215
- }
216
- function requireSignal(context) {
217
- if (!(context?.signal instanceof AbortSignal)) throw new ReportingGcsFenceError("INVALID_INPUT");
218
- return context.signal;
219
- }
220
- return {
221
- probe: async (context) => bounded((signal) => probe(storage.bucket(bucketName), signal), context?.signal),
222
- register: async (scope, deliveryId, bodies, context) => bounded((signal) => register(scope, deliveryId, bodies, signal), context?.signal),
223
- write: async (plan, index, bytes, context) => bounded((signal) => write(plan, index, bytes, signal), requireSignal(context)),
224
- revoke: async (scope, context) => bounded((signal) => revoke(scope, context.maxObjects, signal), requireSignal(context))
225
- };
226
- }
227
- export {
228
- ReportingGcsFenceError2 as ReportingGcsFenceError,
229
- createGcsReportingObjectFenceV1
230
- };
@@ -1,18 +0,0 @@
1
- /**
2
- * Google Cloud Storage fence, reader, managed-delivery adapter and row-object provider for Reliable Reporting.
3
- *
4
- * Every export of this subpath is `@experimental` and may change in minor releases.
5
- *
6
- * Stability policy: https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
7
- *
8
- * @packageDocumentation
9
- */
10
- export { createGcsReportingObjectFenceV1 } from './fence.mjs';
11
- export type { GcsReportingObjectFenceV1 } from './fence.mjs';
12
- export { ReportingGcsFenceError, isReportingGcsFenceError } from './errors.mjs';
13
- export { createGcsReportingResourceReaderV1, createGcsReportingReferenceResolverV1 } from './reader.mjs';
14
- export type { GcsReportingReadScopeV1, GcsReportingReadAuthorizationV1, GcsReportingReaderOptionsV1 } from './reader.mjs';
15
- export { createGcsReportingManagedDeliveryAdapterV1 } from './adapter.mjs';
16
- export type { CreateGcsReportingManagedDeliveryAdapterOptionsV1 } from './adapter.mjs';
17
- export { createGcsReportingRowObjectProviderV1 } from './row-provider.mjs';
18
- export type { CreateGcsReportingRowObjectProviderOptionsV1 } from './row-provider.mjs';
@@ -1,18 +0,0 @@
1
- /**
2
- * Google Cloud Storage fence, reader, managed-delivery adapter and row-object provider for Reliable Reporting.
3
- *
4
- * Every export of this subpath is `@experimental` and may change in minor releases.
5
- *
6
- * Stability policy: https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
7
- *
8
- * @packageDocumentation
9
- */
10
- export { createGcsReportingObjectFenceV1 } from './fence';
11
- export type { GcsReportingObjectFenceV1 } from './fence';
12
- export { ReportingGcsFenceError, isReportingGcsFenceError } from './errors';
13
- export { createGcsReportingResourceReaderV1, createGcsReportingReferenceResolverV1 } from './reader';
14
- export type { GcsReportingReadScopeV1, GcsReportingReadAuthorizationV1, GcsReportingReaderOptionsV1 } from './reader';
15
- export { createGcsReportingManagedDeliveryAdapterV1 } from './adapter';
16
- export type { CreateGcsReportingManagedDeliveryAdapterOptionsV1 } from './adapter';
17
- export { createGcsReportingRowObjectProviderV1 } from './row-provider';
18
- export type { CreateGcsReportingRowObjectProviderOptionsV1 } from './row-provider';