@adcp/sdk 16.0.0-beta.2 → 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.
- package/README.md +54 -0
- package/dist/lib/auth/oauth/diagnose.js +3 -11
- package/dist/lib/auth/oauth/diagnose.mjs +4 -12
- package/dist/lib/auth/oauth/diagnostics.d.mts +2 -1
- package/dist/lib/auth/oauth/diagnostics.d.ts +2 -1
- package/dist/lib/auth/oauth/diagnostics.js +8 -10
- package/dist/lib/auth/oauth/diagnostics.mjs +7 -10
- package/dist/lib/core/ConversationTypes.d.mts +8 -3
- package/dist/lib/core/ConversationTypes.d.ts +8 -3
- package/dist/lib/core/SingleAgentClient.d.mts +5 -3
- package/dist/lib/core/SingleAgentClient.d.ts +5 -3
- package/dist/lib/core/TaskExecutor.js +5 -1
- package/dist/lib/core/TaskExecutor.mjs +5 -1
- package/dist/lib/errors/index.d.mts +9 -4
- package/dist/lib/errors/index.d.ts +9 -4
- package/dist/lib/index.d.mts +3 -3
- package/dist/lib/index.d.ts +3 -3
- package/dist/lib/index.js +8 -0
- package/dist/lib/index.mjs +14 -2
- package/dist/lib/negotiation/types.d.mts +20 -39
- package/dist/lib/negotiation/types.d.ts +20 -39
- package/dist/lib/protocols/index.d.mts +60 -24
- package/dist/lib/protocols/index.d.ts +60 -24
- package/dist/lib/protocols/index.js +9 -4
- package/dist/lib/protocols/index.mjs +3 -0
- package/dist/lib/protocols/mcp-modern.js +1 -0
- package/dist/lib/protocols/mcp-modern.mjs +2 -1
- package/dist/lib/protocols/mcp.js +1 -0
- package/dist/lib/protocols/mcp.mjs +2 -1
- package/dist/lib/protocols/responseSizeLimit.d.mts +91 -5
- package/dist/lib/protocols/responseSizeLimit.d.ts +91 -5
- package/dist/lib/protocols/responseSizeLimit.js +195 -31
- package/dist/lib/protocols/responseSizeLimit.mjs +192 -31
- package/dist/lib/reporting/consumer-runtime.js +2 -1
- package/dist/lib/reporting/consumer-runtime.mjs +2 -1
- package/dist/lib/reporting/ledger/handler.js +50 -11
- package/dist/lib/reporting/ledger/handler.mjs +50 -12
- package/dist/lib/reporting/ledger/index.d.mts +17 -14
- package/dist/lib/reporting/ledger/index.d.ts +17 -14
- package/dist/lib/reporting/ledger/index.js +32 -20
- package/dist/lib/reporting/ledger/index.mjs +21 -10
- package/dist/lib/reporting/ledger/offering-validation.d.mts +9 -0
- package/dist/lib/reporting/ledger/offering-validation.d.ts +9 -0
- package/dist/lib/reporting/{gcs/bucket-policy.js → ledger/offering-validation.js} +9 -8
- package/dist/lib/reporting/ledger/offering-validation.mjs +8 -0
- package/dist/lib/reporting/ledger/receipts.d.mts +48 -0
- package/dist/lib/reporting/ledger/receipts.d.ts +48 -0
- package/dist/lib/reporting/ledger/receipts.js +186 -0
- package/dist/lib/reporting/ledger/receipts.mjs +161 -0
- package/dist/lib/reporting/ledger/status-ingest.js +3 -3
- package/dist/lib/reporting/ledger/status-ingest.mjs +4 -5
- package/dist/lib/reporting/ledger/types.d.mts +43 -0
- package/dist/lib/reporting/ledger/types.d.ts +43 -0
- package/dist/lib/reporting/ledger/types.js +31 -2
- package/dist/lib/reporting/ledger/types.mjs +26 -1
- package/dist/lib/reporting/pagination.d.mts +6 -0
- package/dist/lib/reporting/pagination.d.ts +6 -0
- package/dist/lib/reporting/{gcs/errors.js → pagination.js} +12 -17
- package/dist/lib/reporting/pagination.mjs +12 -0
- package/dist/lib/reporting/reconciliation.d.mts +1 -0
- package/dist/lib/reporting/reconciliation.d.ts +1 -0
- package/dist/lib/reporting/reconciliation.js +3 -2
- package/dist/lib/reporting/reconciliation.mjs +3 -2
- package/dist/lib/reporting/service/index.d.mts +79 -153
- package/dist/lib/reporting/service/index.d.ts +79 -153
- package/dist/lib/reporting/service/index.js +34 -491
- package/dist/lib/reporting/service/index.mjs +36 -510
- package/dist/lib/reporting/service/scheduler-support.d.mts +43 -0
- package/dist/lib/reporting/service/scheduler-support.d.ts +43 -0
- package/dist/lib/reporting/service/scheduler-support.js +125 -0
- package/dist/lib/reporting/service/scheduler-support.mjs +96 -0
- package/dist/lib/schemas-data/v2.5/_provenance.json +1 -1
- package/dist/lib/signing/canonicalize.d.mts +4 -0
- package/dist/lib/signing/canonicalize.d.ts +4 -0
- package/dist/lib/signing/canonicalize.js +14 -8
- package/dist/lib/signing/canonicalize.mjs +14 -8
- package/dist/lib/signing/content-digest.d.mts +8 -0
- package/dist/lib/signing/content-digest.d.ts +8 -0
- package/dist/lib/signing/content-digest.js +11 -5
- package/dist/lib/signing/content-digest.mjs +10 -5
- package/dist/lib/signing/crypto.d.mts +15 -0
- package/dist/lib/signing/crypto.d.ts +15 -0
- package/dist/lib/signing/crypto.js +75 -3
- package/dist/lib/signing/crypto.mjs +78 -3
- package/dist/lib/signing/server.d.mts +1 -1
- package/dist/lib/signing/server.d.ts +1 -1
- package/dist/lib/signing/server.js +2 -0
- package/dist/lib/signing/server.mjs +2 -1
- package/dist/lib/signing/signer.js +11 -14
- package/dist/lib/signing/signer.mjs +13 -16
- package/dist/lib/signing/testing.js +2 -6
- package/dist/lib/signing/testing.mjs +3 -7
- package/dist/lib/signing/verifier.js +2 -2
- package/dist/lib/signing/verifier.mjs +3 -3
- package/dist/lib/signing/web-bot-auth.js +122 -43
- package/dist/lib/signing/web-bot-auth.mjs +128 -44
- package/dist/lib/signing/webhook-verifier.js +2 -2
- package/dist/lib/signing/webhook-verifier.mjs +3 -3
- package/dist/lib/substitution/compile.js +2 -1
- package/dist/lib/substitution/compile.mjs +2 -1
- package/dist/lib/substitution/consent-macros.d.mts +4 -0
- package/dist/lib/substitution/consent-macros.d.ts +4 -0
- package/dist/lib/substitution/consent-macros.js +45 -0
- package/dist/lib/substitution/consent-macros.mjs +20 -0
- package/dist/lib/substitution/index.d.mts +1 -1
- package/dist/lib/substitution/index.d.ts +1 -1
- package/dist/lib/substitution/index.js +2 -0
- package/dist/lib/substitution/index.mjs +2 -1
- package/dist/lib/substitution/translate.d.mts +15 -2
- package/dist/lib/substitution/translate.d.ts +15 -2
- package/dist/lib/substitution/translate.js +148 -26
- package/dist/lib/substitution/translate.mjs +147 -26
- package/dist/lib/testing/client.js +2 -1
- package/dist/lib/testing/client.mjs +2 -1
- package/dist/lib/testing/scenarios/capabilities.js +1 -1
- package/dist/lib/testing/scenarios/capabilities.mjs +1 -1
- package/dist/lib/testing/storyboard/junit.js +16 -3
- package/dist/lib/testing/storyboard/junit.mjs +16 -3
- package/dist/lib/testing/storyboard/request-signing/builder.js +12 -14
- package/dist/lib/testing/storyboard/request-signing/builder.mjs +13 -15
- package/dist/lib/testing/storyboard/runner.js +94 -25
- package/dist/lib/testing/storyboard/runner.mjs +94 -25
- package/dist/lib/testing/storyboard/signer-grader/grader.js +2 -7
- package/dist/lib/testing/storyboard/signer-grader/grader.mjs +2 -7
- package/dist/lib/testing/storyboard/types.d.mts +6 -0
- package/dist/lib/testing/storyboard/types.d.ts +6 -0
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/types/enums.generated.d.mts +3 -0
- package/dist/lib/types/enums.generated.d.ts +3 -0
- package/dist/lib/types/enums.generated.js +9 -0
- package/dist/lib/types/enums.generated.mjs +6 -0
- package/dist/lib/validation/schema-loader.js +25 -0
- package/dist/lib/validation/schema-loader.mjs +24 -0
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.mjs +3 -3
- package/docs/TYPE-SUMMARY.md +28 -5
- package/docs/guides/DISCOVERY-CACHE-AND-SESSION-REUSE.md +3 -2
- package/docs/guides/REPORTING-GCS-FENCE.md +3 -3
- package/docs/guides/REPORTING-GCS-MANAGED.md +4 -4
- package/docs/guides/REPORTING-LEDGER-CUTOVER.md +7 -7
- package/docs/guides/REPORTING-LEDGER.md +107 -51
- package/docs/guides/REPORTING-OPERATIONS.md +66 -5
- package/docs/guides/REPORTING-STABILITY.md +36 -32
- package/docs/guides/UNIVERSAL-MACRO-COMPILATION.md +38 -0
- package/docs/guides/VALIDATE-YOUR-AGENT.md +12 -0
- package/docs/llms.txt +4 -3
- package/docs/migration-14.x-rc-worksheet.md +4 -7
- package/docs/migration-reporting-storage-package.md +186 -0
- package/examples/README.md +1 -1
- package/package.json +14 -78
- package/dist/lib/reporting/azure/index.d.mts +0 -31
- package/dist/lib/reporting/azure/index.d.ts +0 -31
- package/dist/lib/reporting/azure/index.js +0 -266
- package/dist/lib/reporting/azure/index.mjs +0 -249
- package/dist/lib/reporting/bigquery/index.d.mts +0 -246
- package/dist/lib/reporting/bigquery/index.d.ts +0 -246
- package/dist/lib/reporting/bigquery/index.js +0 -633
- package/dist/lib/reporting/bigquery/index.mjs +0 -594
- package/dist/lib/reporting/gcs/adapter.d.mts +0 -38
- package/dist/lib/reporting/gcs/adapter.d.ts +0 -38
- package/dist/lib/reporting/gcs/adapter.js +0 -342
- package/dist/lib/reporting/gcs/adapter.mjs +0 -325
- package/dist/lib/reporting/gcs/bucket-policy.d.mts +0 -3
- package/dist/lib/reporting/gcs/bucket-policy.d.ts +0 -3
- package/dist/lib/reporting/gcs/bucket-policy.mjs +0 -7
- package/dist/lib/reporting/gcs/errors.d.mts +0 -11
- package/dist/lib/reporting/gcs/errors.d.ts +0 -11
- package/dist/lib/reporting/gcs/errors.mjs +0 -16
- package/dist/lib/reporting/gcs/fence.d.mts +0 -41
- package/dist/lib/reporting/gcs/fence.d.ts +0 -41
- package/dist/lib/reporting/gcs/fence.js +0 -250
- package/dist/lib/reporting/gcs/fence.mjs +0 -230
- package/dist/lib/reporting/gcs/index.d.mts +0 -18
- package/dist/lib/reporting/gcs/index.d.ts +0 -18
- package/dist/lib/reporting/gcs/index.js +0 -44
- package/dist/lib/reporting/gcs/index.mjs +0 -14
- package/dist/lib/reporting/gcs/io.d.mts +0 -7
- package/dist/lib/reporting/gcs/io.d.ts +0 -7
- package/dist/lib/reporting/gcs/io.js +0 -95
- package/dist/lib/reporting/gcs/io.mjs +0 -69
- package/dist/lib/reporting/gcs/reader.d.mts +0 -67
- package/dist/lib/reporting/gcs/reader.d.ts +0 -67
- package/dist/lib/reporting/gcs/reader.js +0 -193
- package/dist/lib/reporting/gcs/reader.mjs +0 -169
- package/dist/lib/reporting/gcs/row-provider.d.mts +0 -39
- package/dist/lib/reporting/gcs/row-provider.d.ts +0 -39
- package/dist/lib/reporting/gcs/row-provider.js +0 -225
- package/dist/lib/reporting/gcs/row-provider.mjs +0 -208
- package/dist/lib/reporting/gcs/validation.d.mts +0 -5
- package/dist/lib/reporting/gcs/validation.d.ts +0 -5
- package/dist/lib/reporting/gcs/validation.js +0 -49
- package/dist/lib/reporting/gcs/validation.mjs +0 -25
- package/dist/lib/reporting/ledger/change-feed.d.mts +0 -69
- package/dist/lib/reporting/ledger/change-feed.d.ts +0 -69
- package/dist/lib/reporting/ledger/change-feed.js +0 -107
- package/dist/lib/reporting/ledger/change-feed.mjs +0 -80
- package/dist/lib/reporting/ledger/managed-postgres.d.mts +0 -293
- package/dist/lib/reporting/ledger/managed-postgres.d.ts +0 -293
- package/dist/lib/reporting/ledger/managed-postgres.js +0 -2346
- package/dist/lib/reporting/ledger/managed-postgres.mjs +0 -2332
- package/dist/lib/reporting/ledger/managed-router.d.mts +0 -148
- package/dist/lib/reporting/ledger/managed-router.d.ts +0 -148
- package/dist/lib/reporting/ledger/managed-router.js +0 -280
- package/dist/lib/reporting/ledger/managed-router.mjs +0 -258
- package/dist/lib/reporting/ledger/managed.d.mts +0 -535
- package/dist/lib/reporting/ledger/managed.d.ts +0 -535
- package/dist/lib/reporting/ledger/managed.js +0 -761
- package/dist/lib/reporting/ledger/managed.mjs +0 -729
- package/dist/lib/reporting/ledger/notification-activity.d.mts +0 -332
- package/dist/lib/reporting/ledger/notification-activity.d.ts +0 -332
- package/dist/lib/reporting/ledger/notification-activity.js +0 -1366
- package/dist/lib/reporting/ledger/notification-activity.mjs +0 -1337
- package/dist/lib/reporting/ledger/object-writes.d.mts +0 -128
- package/dist/lib/reporting/ledger/object-writes.d.ts +0 -128
- package/dist/lib/reporting/ledger/object-writes.js +0 -147
- package/dist/lib/reporting/ledger/object-writes.mjs +0 -114
- package/dist/lib/reporting/ledger/postgres.d.mts +0 -689
- package/dist/lib/reporting/ledger/postgres.d.ts +0 -689
- package/dist/lib/reporting/ledger/postgres.js +0 -4462
- package/dist/lib/reporting/ledger/postgres.mjs +0 -4462
- package/dist/lib/reporting/ledger/row-storage-migration.d.mts +0 -59
- package/dist/lib/reporting/ledger/row-storage-migration.d.ts +0 -59
- package/dist/lib/reporting/ledger/row-storage-migration.js +0 -365
- package/dist/lib/reporting/ledger/row-storage-migration.mjs +0 -339
- package/dist/lib/reporting/ledger/row-storage-object.d.mts +0 -203
- package/dist/lib/reporting/ledger/row-storage-object.d.ts +0 -203
- package/dist/lib/reporting/ledger/row-storage-object.js +0 -379
- package/dist/lib/reporting/ledger/row-storage-object.mjs +0 -335
- package/dist/lib/reporting/ledger/row-storage-provider-io.d.mts +0 -44
- package/dist/lib/reporting/ledger/row-storage-provider-io.d.ts +0 -44
- package/dist/lib/reporting/ledger/row-storage-provider-io.js +0 -142
- package/dist/lib/reporting/ledger/row-storage-provider-io.mjs +0 -111
- package/dist/lib/reporting/ledger/row-storage.d.mts +0 -316
- package/dist/lib/reporting/ledger/row-storage.d.ts +0 -316
- package/dist/lib/reporting/ledger/row-storage.js +0 -812
- package/dist/lib/reporting/ledger/row-storage.mjs +0 -802
- package/dist/lib/reporting/s3/index.d.mts +0 -34
- package/dist/lib/reporting/s3/index.d.ts +0 -34
- package/dist/lib/reporting/s3/index.js +0 -347
- package/dist/lib/reporting/s3/index.mjs +0 -340
- package/dist/lib/reporting/service/maintenance.d.mts +0 -148
- package/dist/lib/reporting/service/maintenance.d.ts +0 -148
- package/dist/lib/reporting/service/maintenance.js +0 -185
- package/dist/lib/reporting/service/maintenance.mjs +0 -159
- package/examples/reliable-reporting-service/README.md +0 -169
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reliable Reporting ledger
|
|
2
|
+
* Reliable Reporting protocol layer: the ledger store interface, the protocol handlers, the producer,
|
|
3
|
+
* status ingest, row encoding and the health, coverage and lifecycle helpers.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* Storage implementations (PostgreSQL ledger store, row storage, managed delivery, notification activity,
|
|
6
|
+
* the cloud providers and the BigQuery sink) live in `@adcp/reporting-storage`, which depends on this
|
|
7
|
+
* package. Nothing here imports it. A store from any package works with these handlers as long as it
|
|
8
|
+
* implements `ReportingLedgerStore`.
|
|
9
|
+
*
|
|
10
|
+
* The store, transaction, lease and row-read interfaces in `./types` are tagged `@experimental`: they
|
|
11
|
+
* change together with `@adcp/reporting-storage`, which is pre-1.0. The protocol-facing handlers,
|
|
12
|
+
* producer, status ingest, health, coverage and lifecycle helpers follow normal semver.
|
|
7
13
|
*
|
|
8
14
|
* Stability policy: https://github.com/adcontextprotocol/adcp-client/blob/main/docs/guides/REPORTING-STABILITY.md
|
|
9
15
|
*
|
|
@@ -13,18 +19,15 @@ export * from './types';
|
|
|
13
19
|
export * from './health';
|
|
14
20
|
export * from './coverage';
|
|
15
21
|
export * from './lifecycle';
|
|
16
|
-
export * from './postgres';
|
|
17
22
|
export * from './producer';
|
|
18
23
|
export * from './handler';
|
|
19
24
|
export * from './status-ingest';
|
|
20
25
|
export * from './consumer-status-identity';
|
|
21
|
-
export * from './managed';
|
|
22
|
-
export * from './managed-router';
|
|
23
|
-
export * from './managed-postgres';
|
|
24
|
-
export * from './object-writes';
|
|
25
|
-
export * from './notification-activity';
|
|
26
26
|
export * from './row-encoding';
|
|
27
|
-
export * from './row-storage-
|
|
28
|
-
export * from './
|
|
29
|
-
export * from './
|
|
30
|
-
export
|
|
27
|
+
export * from './row-storage-errors';
|
|
28
|
+
export * from './receipts';
|
|
29
|
+
export * from './offering-validation';
|
|
30
|
+
export { compareReportingInstants } from './instant';
|
|
31
|
+
export { isFrozenCalendarRulesMismatch, reportingPeriodDate, reportingPeriodSchedule } from './schedule';
|
|
32
|
+
export { isReportingAdjustmentReceiptEvidence, isReportingReceiptEvidence, isReportingVerificationEvidence, } from '../evidence';
|
|
33
|
+
export { isWellFormedUnicodeString } from '../../utils/well-formed-unicode';
|
|
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
|
|
|
3
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
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
|
+
};
|
|
6
10
|
var __copyProps = (to, from, except, desc) => {
|
|
7
11
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
12
|
for (let key of __getOwnPropNames(from))
|
|
@@ -14,45 +18,53 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
14
18
|
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
15
19
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
16
20
|
var ledger_exports = {};
|
|
21
|
+
__export(ledger_exports, {
|
|
22
|
+
compareReportingInstants: () => import_instant.compareReportingInstants,
|
|
23
|
+
isFrozenCalendarRulesMismatch: () => import_schedule.isFrozenCalendarRulesMismatch,
|
|
24
|
+
isReportingAdjustmentReceiptEvidence: () => import_evidence.isReportingAdjustmentReceiptEvidence,
|
|
25
|
+
isReportingReceiptEvidence: () => import_evidence.isReportingReceiptEvidence,
|
|
26
|
+
isReportingVerificationEvidence: () => import_evidence.isReportingVerificationEvidence,
|
|
27
|
+
isWellFormedUnicodeString: () => import_well_formed_unicode.isWellFormedUnicodeString,
|
|
28
|
+
reportingPeriodDate: () => import_schedule.reportingPeriodDate,
|
|
29
|
+
reportingPeriodSchedule: () => import_schedule.reportingPeriodSchedule
|
|
30
|
+
});
|
|
17
31
|
module.exports = __toCommonJS(ledger_exports);
|
|
18
32
|
__reExport(ledger_exports, require('./types.js'), module.exports);
|
|
19
33
|
__reExport(ledger_exports, require('./health.js'), module.exports);
|
|
20
34
|
__reExport(ledger_exports, require('./coverage.js'), module.exports);
|
|
21
35
|
__reExport(ledger_exports, require('./lifecycle.js'), module.exports);
|
|
22
|
-
__reExport(ledger_exports, require('./postgres.js'), module.exports);
|
|
23
36
|
__reExport(ledger_exports, require('./producer.js'), module.exports);
|
|
24
37
|
__reExport(ledger_exports, require('./handler.js'), module.exports);
|
|
25
38
|
__reExport(ledger_exports, require('./status-ingest.js'), module.exports);
|
|
26
39
|
__reExport(ledger_exports, require('./consumer-status-identity.js'), module.exports);
|
|
27
|
-
__reExport(ledger_exports, require('./managed.js'), module.exports);
|
|
28
|
-
__reExport(ledger_exports, require('./managed-router.js'), module.exports);
|
|
29
|
-
__reExport(ledger_exports, require('./managed-postgres.js'), module.exports);
|
|
30
|
-
__reExport(ledger_exports, require('./object-writes.js'), module.exports);
|
|
31
|
-
__reExport(ledger_exports, require('./notification-activity.js'), module.exports);
|
|
32
40
|
__reExport(ledger_exports, require('./row-encoding.js'), module.exports);
|
|
33
|
-
__reExport(ledger_exports, require('./row-storage-
|
|
34
|
-
__reExport(ledger_exports, require('./
|
|
35
|
-
__reExport(ledger_exports, require('./
|
|
36
|
-
|
|
41
|
+
__reExport(ledger_exports, require('./row-storage-errors.js'), module.exports);
|
|
42
|
+
__reExport(ledger_exports, require('./receipts.js'), module.exports);
|
|
43
|
+
__reExport(ledger_exports, require('./offering-validation.js'), module.exports);
|
|
44
|
+
var import_instant = require('./instant.js');
|
|
45
|
+
var import_schedule = require('./schedule.js');
|
|
46
|
+
var import_evidence = require('../evidence.js');
|
|
47
|
+
var import_well_formed_unicode = require('../../utils/well-formed-unicode.js');
|
|
37
48
|
// Annotate the CommonJS export names for ESM import in node:
|
|
38
49
|
0 && (module.exports = {
|
|
50
|
+
compareReportingInstants,
|
|
51
|
+
isFrozenCalendarRulesMismatch,
|
|
52
|
+
isReportingAdjustmentReceiptEvidence,
|
|
53
|
+
isReportingReceiptEvidence,
|
|
54
|
+
isReportingVerificationEvidence,
|
|
55
|
+
isWellFormedUnicodeString,
|
|
56
|
+
reportingPeriodDate,
|
|
57
|
+
reportingPeriodSchedule,
|
|
39
58
|
...require('./types.js'),
|
|
40
59
|
...require('./health.js'),
|
|
41
60
|
...require('./coverage.js'),
|
|
42
61
|
...require('./lifecycle.js'),
|
|
43
|
-
...require('./postgres.js'),
|
|
44
62
|
...require('./producer.js'),
|
|
45
63
|
...require('./handler.js'),
|
|
46
64
|
...require('./status-ingest.js'),
|
|
47
65
|
...require('./consumer-status-identity.js'),
|
|
48
|
-
...require('./managed.js'),
|
|
49
|
-
...require('./managed-router.js'),
|
|
50
|
-
...require('./managed-postgres.js'),
|
|
51
|
-
...require('./object-writes.js'),
|
|
52
|
-
...require('./notification-activity.js'),
|
|
53
66
|
...require('./row-encoding.js'),
|
|
54
|
-
...require('./row-storage-
|
|
55
|
-
...require('./
|
|
56
|
-
...require('./
|
|
57
|
-
...require('./change-feed.js')
|
|
67
|
+
...require('./row-storage-errors.js'),
|
|
68
|
+
...require('./receipts.js'),
|
|
69
|
+
...require('./offering-validation.js')
|
|
58
70
|
});
|
|
@@ -2,18 +2,29 @@ export * from "./types.mjs";
|
|
|
2
2
|
export * from "./health.mjs";
|
|
3
3
|
export * from "./coverage.mjs";
|
|
4
4
|
export * from "./lifecycle.mjs";
|
|
5
|
-
export * from "./postgres.mjs";
|
|
6
5
|
export * from "./producer.mjs";
|
|
7
6
|
export * from "./handler.mjs";
|
|
8
7
|
export * from "./status-ingest.mjs";
|
|
9
8
|
export * from "./consumer-status-identity.mjs";
|
|
10
|
-
export * from "./managed.mjs";
|
|
11
|
-
export * from "./managed-router.mjs";
|
|
12
|
-
export * from "./managed-postgres.mjs";
|
|
13
|
-
export * from "./object-writes.mjs";
|
|
14
|
-
export * from "./notification-activity.mjs";
|
|
15
9
|
export * from "./row-encoding.mjs";
|
|
16
|
-
export * from "./row-storage-
|
|
17
|
-
export * from "./
|
|
18
|
-
export * from "./
|
|
19
|
-
|
|
10
|
+
export * from "./row-storage-errors.mjs";
|
|
11
|
+
export * from "./receipts.mjs";
|
|
12
|
+
export * from "./offering-validation.mjs";
|
|
13
|
+
import { compareReportingInstants } from "./instant.mjs";
|
|
14
|
+
import { isFrozenCalendarRulesMismatch, reportingPeriodDate, reportingPeriodSchedule } from "./schedule.mjs";
|
|
15
|
+
import {
|
|
16
|
+
isReportingAdjustmentReceiptEvidence,
|
|
17
|
+
isReportingReceiptEvidence,
|
|
18
|
+
isReportingVerificationEvidence
|
|
19
|
+
} from "../evidence.mjs";
|
|
20
|
+
import { isWellFormedUnicodeString } from "../../utils/well-formed-unicode.mjs";
|
|
21
|
+
export {
|
|
22
|
+
compareReportingInstants,
|
|
23
|
+
isFrozenCalendarRulesMismatch,
|
|
24
|
+
isReportingAdjustmentReceiptEvidence,
|
|
25
|
+
isReportingReceiptEvidence,
|
|
26
|
+
isReportingVerificationEvidence,
|
|
27
|
+
isWellFormedUnicodeString,
|
|
28
|
+
reportingPeriodDate,
|
|
29
|
+
reportingPeriodSchedule
|
|
30
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validator for one reporting delivery offering, built from the installed AdCP bundle's
|
|
3
|
+
* `core/reporting-delivery-offering.json`. Returns `undefined` when the installed bundle cannot
|
|
4
|
+
* validate offerings, so a caller can refuse to publish a capability it cannot check.
|
|
5
|
+
*
|
|
6
|
+
* Storage packages use this to hold a managed-delivery runtime to the same offering contract the
|
|
7
|
+
* protocol layer enforces.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getReportingDeliveryOfferingValidatorV1(): ((offering: unknown) => boolean) | undefined;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validator for one reporting delivery offering, built from the installed AdCP bundle's
|
|
3
|
+
* `core/reporting-delivery-offering.json`. Returns `undefined` when the installed bundle cannot
|
|
4
|
+
* validate offerings, so a caller can refuse to publish a capability it cannot check.
|
|
5
|
+
*
|
|
6
|
+
* Storage packages use this to hold a managed-delivery runtime to the same offering contract the
|
|
7
|
+
* protocol layer enforces.
|
|
8
|
+
*/
|
|
9
|
+
export declare function getReportingDeliveryOfferingValidatorV1(): ((offering: unknown) => boolean) | undefined;
|
|
@@ -16,16 +16,17 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
21
|
-
|
|
19
|
+
var offering_validation_exports = {};
|
|
20
|
+
__export(offering_validation_exports, {
|
|
21
|
+
getReportingDeliveryOfferingValidatorV1: () => getReportingDeliveryOfferingValidatorV1
|
|
22
22
|
});
|
|
23
|
-
module.exports = __toCommonJS(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
module.exports = __toCommonJS(offering_validation_exports);
|
|
24
|
+
var import_schema_loader = require('../../validation/schema-loader.js');
|
|
25
|
+
function getReportingDeliveryOfferingValidatorV1() {
|
|
26
|
+
const validate = (0, import_schema_loader.getSchemaValidatorByRef)("core/reporting-delivery-offering.json");
|
|
27
|
+
return validate ? (offering) => Boolean(validate(offering)) : void 0;
|
|
27
28
|
}
|
|
28
29
|
// Annotate the CommonJS export names for ESM import in node:
|
|
29
30
|
0 && (module.exports = {
|
|
30
|
-
|
|
31
|
+
getReportingDeliveryOfferingValidatorV1
|
|
31
32
|
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { getSchemaValidatorByRef } from "../../validation/schema-loader.mjs";
|
|
2
|
+
function getReportingDeliveryOfferingValidatorV1() {
|
|
3
|
+
const validate = getSchemaValidatorByRef("core/reporting-delivery-offering.json");
|
|
4
|
+
return validate ? (offering) => Boolean(validate(offering)) : void 0;
|
|
5
|
+
}
|
|
6
|
+
export {
|
|
7
|
+
getReportingDeliveryOfferingValidatorV1
|
|
8
|
+
};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ReportingAdjustmentReceipt, ReportingReceipt, SyncReportingReceiptsResponse } from '../../types/index.mjs';
|
|
2
|
+
import type { AdcpToolMap } from '../../server/create-adcp-server.mjs';
|
|
3
|
+
import type { ReportingManagedDeliveryBindingV1 } from './types.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 type ReportingReceiptBatchEntryV1 = {
|
|
8
|
+
kind: 'revision';
|
|
9
|
+
receipt: ReportingReceipt;
|
|
10
|
+
} | {
|
|
11
|
+
kind: 'adjustment';
|
|
12
|
+
receipt: ReportingAdjustmentReceipt;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* @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
|
|
16
|
+
*/
|
|
17
|
+
export interface ReportingReceiptBatchInputV1 {
|
|
18
|
+
account_id: string;
|
|
19
|
+
consumer_id: string;
|
|
20
|
+
idempotency_key: string;
|
|
21
|
+
request_fingerprint: string;
|
|
22
|
+
entries: ReportingReceiptBatchEntryV1[];
|
|
23
|
+
received_at: string;
|
|
24
|
+
}
|
|
25
|
+
/** The `sync_reporting_receipts` request as the server framework hands it to a handler. */
|
|
26
|
+
export type SyncReportingReceiptsParamsV1 = AdcpToolMap['sync_reporting_receipts']['params'];
|
|
27
|
+
/**
|
|
28
|
+
* The one store method `sync_reporting_receipts` needs. A managed-delivery store implements it as
|
|
29
|
+
* part of its full contract; the protocol handler depends on nothing else, so it works against any
|
|
30
|
+
* store that can record receipts.
|
|
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 interface ReportingReceiptSyncStoreV1 {
|
|
35
|
+
syncReceiptBatch(input: ReportingReceiptBatchInputV1): Promise<SyncReportingReceiptsResponse['results']>;
|
|
36
|
+
}
|
|
37
|
+
/** Protocol handler for `sync_reporting_receipts`. Works against any `ReportingReceiptSyncStoreV1`. */
|
|
38
|
+
export declare function createSyncReportingReceiptsHandler<TContext extends {
|
|
39
|
+
account?: unknown;
|
|
40
|
+
}>(store: ReportingReceiptSyncStoreV1, resolveConsumerId: (context: TContext) => string | Promise<string>, now?: () => Date): (request: SyncReportingReceiptsParamsV1, context: TContext) => Promise<SyncReportingReceiptsResponse>;
|
|
41
|
+
/**
|
|
42
|
+
* Stable helper for immutable binding creation.
|
|
43
|
+
*
|
|
44
|
+
* @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
|
|
45
|
+
*/
|
|
46
|
+
export declare function reportingManagedDeliveryBindingV1(input: Omit<ReportingManagedDeliveryBindingV1, 'created_at' | 'semantic_fingerprint'> & {
|
|
47
|
+
created_at?: string;
|
|
48
|
+
}): ReportingManagedDeliveryBindingV1;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ReportingAdjustmentReceipt, ReportingReceipt, SyncReportingReceiptsResponse } from '../../types';
|
|
2
|
+
import type { AdcpToolMap } from '../../server/create-adcp-server';
|
|
3
|
+
import type { ReportingManagedDeliveryBindingV1 } from './types';
|
|
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 type ReportingReceiptBatchEntryV1 = {
|
|
8
|
+
kind: 'revision';
|
|
9
|
+
receipt: ReportingReceipt;
|
|
10
|
+
} | {
|
|
11
|
+
kind: 'adjustment';
|
|
12
|
+
receipt: ReportingAdjustmentReceipt;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* @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
|
|
16
|
+
*/
|
|
17
|
+
export interface ReportingReceiptBatchInputV1 {
|
|
18
|
+
account_id: string;
|
|
19
|
+
consumer_id: string;
|
|
20
|
+
idempotency_key: string;
|
|
21
|
+
request_fingerprint: string;
|
|
22
|
+
entries: ReportingReceiptBatchEntryV1[];
|
|
23
|
+
received_at: string;
|
|
24
|
+
}
|
|
25
|
+
/** The `sync_reporting_receipts` request as the server framework hands it to a handler. */
|
|
26
|
+
export type SyncReportingReceiptsParamsV1 = AdcpToolMap['sync_reporting_receipts']['params'];
|
|
27
|
+
/**
|
|
28
|
+
* The one store method `sync_reporting_receipts` needs. A managed-delivery store implements it as
|
|
29
|
+
* part of its full contract; the protocol handler depends on nothing else, so it works against any
|
|
30
|
+
* store that can record receipts.
|
|
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 interface ReportingReceiptSyncStoreV1 {
|
|
35
|
+
syncReceiptBatch(input: ReportingReceiptBatchInputV1): Promise<SyncReportingReceiptsResponse['results']>;
|
|
36
|
+
}
|
|
37
|
+
/** Protocol handler for `sync_reporting_receipts`. Works against any `ReportingReceiptSyncStoreV1`. */
|
|
38
|
+
export declare function createSyncReportingReceiptsHandler<TContext extends {
|
|
39
|
+
account?: unknown;
|
|
40
|
+
}>(store: ReportingReceiptSyncStoreV1, resolveConsumerId: (context: TContext) => string | Promise<string>, now?: () => Date): (request: SyncReportingReceiptsParamsV1, context: TContext) => Promise<SyncReportingReceiptsResponse>;
|
|
41
|
+
/**
|
|
42
|
+
* Stable helper for immutable binding creation.
|
|
43
|
+
*
|
|
44
|
+
* @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
|
|
45
|
+
*/
|
|
46
|
+
export declare function reportingManagedDeliveryBindingV1(input: Omit<ReportingManagedDeliveryBindingV1, 'created_at' | 'semantic_fingerprint'> & {
|
|
47
|
+
created_at?: string;
|
|
48
|
+
}): ReportingManagedDeliveryBindingV1;
|
|
@@ -0,0 +1,186 @@
|
|
|
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 receipts_exports = {};
|
|
20
|
+
__export(receipts_exports, {
|
|
21
|
+
createSyncReportingReceiptsHandler: () => createSyncReportingReceiptsHandler,
|
|
22
|
+
reportingManagedDeliveryBindingV1: () => reportingManagedDeliveryBindingV1
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(receipts_exports);
|
|
25
|
+
var import_node_crypto = require("node:crypto");
|
|
26
|
+
var import_jcs = require('../../utils/jcs.js');
|
|
27
|
+
var import_evidence = require('../evidence.js');
|
|
28
|
+
var import_async_outcome = require('../../server/decisioning/async-outcome.js');
|
|
29
|
+
const MAX_RECEIPTS_PER_ARRAY = 100;
|
|
30
|
+
const MAX_RECEIPT_RESULTS = 100;
|
|
31
|
+
const MAX_RECEIPT_EVIDENCE_BYTES = 64 * 1024;
|
|
32
|
+
function createSyncReportingReceiptsHandler(store, resolveConsumerId, now = () => /* @__PURE__ */ new Date()) {
|
|
33
|
+
return async (request, context) => {
|
|
34
|
+
const account_id = resolvedAccountId(context.account);
|
|
35
|
+
const consumer_id = await resolveConsumerId(context);
|
|
36
|
+
if (!consumer_id || consumer_id.length > 255) {
|
|
37
|
+
throw new TypeError("resolveConsumerId must return a durable authenticated principal of at most 255 characters");
|
|
38
|
+
}
|
|
39
|
+
if (request.receipts !== void 0 && !Array.isArray(request.receipts)) {
|
|
40
|
+
throw new import_async_outcome.AdcpError("VALIDATION_ERROR", { message: "sync_reporting_receipts receipts must be an array" });
|
|
41
|
+
}
|
|
42
|
+
if (request.adjustment_receipts !== void 0 && !Array.isArray(request.adjustment_receipts)) {
|
|
43
|
+
throw new import_async_outcome.AdcpError("VALIDATION_ERROR", {
|
|
44
|
+
message: "sync_reporting_receipts adjustment_receipts must be an array"
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
const revisionReceipts = request.receipts ?? [];
|
|
48
|
+
const adjustmentReceipts = request.adjustment_receipts ?? [];
|
|
49
|
+
if (!revisionReceipts.every(isRecord) || !adjustmentReceipts.every(isRecord)) {
|
|
50
|
+
throw new import_async_outcome.AdcpError("VALIDATION_ERROR", {
|
|
51
|
+
message: "sync_reporting_receipts entries must be objects"
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (revisionReceipts.length > MAX_RECEIPTS_PER_ARRAY || adjustmentReceipts.length > MAX_RECEIPTS_PER_ARRAY) {
|
|
55
|
+
throw new import_async_outcome.AdcpError("VALIDATION_ERROR", {
|
|
56
|
+
message: `sync_reporting_receipts accepts at most ${MAX_RECEIPTS_PER_ARRAY} receipts and ${MAX_RECEIPTS_PER_ARRAY} adjustment receipts per request`
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if ([...revisionReceipts, ...adjustmentReceipts].some((receipt) => "received_at" in receipt)) {
|
|
60
|
+
throw new import_async_outcome.AdcpError("VALIDATION_ERROR", {
|
|
61
|
+
message: "sync_reporting_receipts receipts must not carry received_at; it is assigned by the server"
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const entries = [
|
|
65
|
+
...revisionReceipts.map((receipt) => ({ kind: "revision", receipt })),
|
|
66
|
+
...adjustmentReceipts.map((receipt) => ({
|
|
67
|
+
kind: "adjustment",
|
|
68
|
+
receipt
|
|
69
|
+
}))
|
|
70
|
+
];
|
|
71
|
+
if (entries.length > MAX_RECEIPT_RESULTS) {
|
|
72
|
+
throw new import_async_outcome.AdcpError("VALIDATION_ERROR", {
|
|
73
|
+
message: `sync_reporting_receipts can return at most ${MAX_RECEIPT_RESULTS} results, so a request may carry at most ${MAX_RECEIPT_RESULTS} receipts and adjustment receipts in total`
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
if (!entries.length) {
|
|
77
|
+
throw new import_async_outcome.AdcpError("VALIDATION_ERROR", {
|
|
78
|
+
message: "sync_reporting_receipts requires at least one receipt or adjustment receipt"
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
if (request.account && "account_id" in request.account && request.account.account_id !== account_id) {
|
|
82
|
+
return receiptBatchFailure(entries, "PERMISSION_DENIED", "Reporting receipt account is unavailable");
|
|
83
|
+
}
|
|
84
|
+
if (!/^[A-Za-z0-9_.:-]{16,255}$/.test(request.idempotency_key)) {
|
|
85
|
+
return receiptBatchFailure(entries, "VALIDATION_ERROR", "sync_reporting_receipts idempotency_key is invalid");
|
|
86
|
+
}
|
|
87
|
+
const submittedIds = entries.map(
|
|
88
|
+
(entry) => isRecord(entry.receipt) && typeof entry.receipt.reporting_receipt_id === "string" ? entry.receipt.reporting_receipt_id : ""
|
|
89
|
+
);
|
|
90
|
+
const duplicateSubmittedIds = new Set(
|
|
91
|
+
submittedIds.filter((value, index) => value !== "" && submittedIds.indexOf(value) !== index)
|
|
92
|
+
);
|
|
93
|
+
if (duplicateSubmittedIds.size) {
|
|
94
|
+
return receiptBatchFailure(
|
|
95
|
+
entries,
|
|
96
|
+
"VALIDATION_ERROR",
|
|
97
|
+
"sync_reporting_receipts receipt IDs must be unique across the batch"
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
const evidenceValid = entries.map(
|
|
101
|
+
(entry) => entry.kind === "revision" ? (0, import_evidence.isReportingReceiptEvidence)(entry.receipt) : (0, import_evidence.isReportingAdjustmentReceiptEvidence)(entry.receipt)
|
|
102
|
+
);
|
|
103
|
+
const oversized = entries.map(
|
|
104
|
+
(entry) => Buffer.byteLength(JSON.stringify(entry.receipt), "utf8") > MAX_RECEIPT_EVIDENCE_BYTES
|
|
105
|
+
);
|
|
106
|
+
const valid = entries.map((_, index) => evidenceValid[index] && !oversized[index]);
|
|
107
|
+
const validEntries = entries.filter((_, index) => valid[index]);
|
|
108
|
+
const request_fingerprint = sha256({ entries });
|
|
109
|
+
const stored = validEntries.length ? await store.syncReceiptBatch({
|
|
110
|
+
account_id,
|
|
111
|
+
consumer_id,
|
|
112
|
+
idempotency_key: request.idempotency_key,
|
|
113
|
+
request_fingerprint,
|
|
114
|
+
entries: validEntries,
|
|
115
|
+
received_at: now().toISOString()
|
|
116
|
+
}) : [];
|
|
117
|
+
let storedIndex = 0;
|
|
118
|
+
return {
|
|
119
|
+
status: "completed",
|
|
120
|
+
results: entries.map((entry, index) => {
|
|
121
|
+
if (valid[index]) return stored[storedIndex++];
|
|
122
|
+
const field = entry.kind === "revision" ? `receipts[${index}]` : `adjustment_receipts[${index - revisionReceipts.length}]`;
|
|
123
|
+
return oversized[index] ? receiptFailure(
|
|
124
|
+
reflectableReceiptId(entry.receipt.reporting_receipt_id, index),
|
|
125
|
+
"VALIDATION_ERROR",
|
|
126
|
+
"Reporting receipt evidence exceeds the 64 KiB limit",
|
|
127
|
+
{
|
|
128
|
+
field,
|
|
129
|
+
suggestion: `Reduce ${field} to 64 KiB or less and retry.`
|
|
130
|
+
}
|
|
131
|
+
) : receiptFailure(
|
|
132
|
+
reflectableReceiptId(entry.receipt.reporting_receipt_id, index),
|
|
133
|
+
"VALIDATION_ERROR",
|
|
134
|
+
"Reporting receipt evidence is malformed",
|
|
135
|
+
{
|
|
136
|
+
field,
|
|
137
|
+
suggestion: `Correct ${field} to satisfy the reporting receipt evidence schema and retry.`
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
})
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function receiptBatchFailure(entries, code, message) {
|
|
145
|
+
return {
|
|
146
|
+
status: "completed",
|
|
147
|
+
results: entries.map(
|
|
148
|
+
(entry, index) => receiptFailure(reflectableReceiptId(entry.receipt.reporting_receipt_id, index), code, message)
|
|
149
|
+
)
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const RECEIPT_ID_PATTERN = /^[A-Za-z0-9_.:-]{16,255}$/;
|
|
153
|
+
function reflectableReceiptId(value, index) {
|
|
154
|
+
return typeof value === "string" && RECEIPT_ID_PATTERN.test(value) ? value : `unidentified-reporting-receipt-${String(index).padStart(3, "0")}`;
|
|
155
|
+
}
|
|
156
|
+
function receiptFailure(reporting_receipt_id, code, message, metadata = {}) {
|
|
157
|
+
return {
|
|
158
|
+
result: "failed",
|
|
159
|
+
reporting_receipt_id,
|
|
160
|
+
errors: [{ code, message, recovery: "correctable", ...metadata }]
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
function resolvedAccountId(account) {
|
|
164
|
+
if (!account || typeof account !== "object") throw new Error("Reporting receipts require a resolved account");
|
|
165
|
+
const value = account;
|
|
166
|
+
const id = typeof value.id === "string" ? value.id : typeof value.account_id === "string" ? value.account_id : "";
|
|
167
|
+
if (!id) throw new Error("Reporting receipts require a resolved account");
|
|
168
|
+
return id;
|
|
169
|
+
}
|
|
170
|
+
function isRecord(value) {
|
|
171
|
+
return Boolean(value) && typeof value === "object" && !Array.isArray(value);
|
|
172
|
+
}
|
|
173
|
+
function sha256(value) {
|
|
174
|
+
return (0, import_node_crypto.createHash)("sha256").update((0, import_jcs.canonicalize)(value === void 0 ? null : value)).digest("hex");
|
|
175
|
+
}
|
|
176
|
+
function reportingManagedDeliveryBindingV1(input) {
|
|
177
|
+
const created_at = input.created_at ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
178
|
+
const { semantic_fingerprint: _predecessor, ...semantic } = input;
|
|
179
|
+
const semantic_fingerprint = sha256({ ...semantic, created_at: void 0 });
|
|
180
|
+
return { ...semantic, created_at, semantic_fingerprint };
|
|
181
|
+
}
|
|
182
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
183
|
+
0 && (module.exports = {
|
|
184
|
+
createSyncReportingReceiptsHandler,
|
|
185
|
+
reportingManagedDeliveryBindingV1
|
|
186
|
+
});
|