@adcp/sdk 5.25.0 → 6.0.0
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 +45 -7
- package/dist/lib/compliance-fixtures/index.d.ts +1 -1
- package/dist/lib/compliance-fixtures/index.js +1 -1
- package/dist/lib/conformance/runners.d.ts.map +1 -1
- package/dist/lib/conformance/runners.js +13 -1
- package/dist/lib/conformance/runners.js.map +1 -1
- package/dist/lib/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +15 -0
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/core/TaskExecutor.d.ts +7 -0
- package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
- package/dist/lib/core/TaskExecutor.js +9 -2
- package/dist/lib/core/TaskExecutor.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +7 -8
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/protocols/index.d.ts +3 -1
- package/dist/lib/protocols/index.d.ts.map +1 -1
- package/dist/lib/protocols/index.js +23 -14
- package/dist/lib/protocols/index.js.map +1 -1
- package/dist/lib/schemas/index.d.ts +1 -1
- package/dist/lib/schemas/index.js +1 -1
- package/dist/lib/server/create-adcp-server.d.ts +142 -11
- package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
- package/dist/lib/server/create-adcp-server.js +211 -2
- package/dist/lib/server/create-adcp-server.js.map +1 -1
- package/dist/lib/server/ctx-metadata/backends/memory.d.ts +27 -0
- package/dist/lib/server/ctx-metadata/backends/memory.d.ts.map +1 -0
- package/dist/lib/server/ctx-metadata/backends/memory.js +72 -0
- package/dist/lib/server/ctx-metadata/backends/memory.js.map +1 -0
- package/dist/lib/server/ctx-metadata/backends/pg.d.ts +62 -0
- package/dist/lib/server/ctx-metadata/backends/pg.d.ts.map +1 -0
- package/dist/lib/server/ctx-metadata/backends/pg.js +145 -0
- package/dist/lib/server/ctx-metadata/backends/pg.js.map +1 -0
- package/dist/lib/server/ctx-metadata/index.d.ts +15 -0
- package/dist/lib/server/ctx-metadata/index.d.ts.map +1 -0
- package/dist/lib/server/ctx-metadata/index.js +28 -0
- package/dist/lib/server/ctx-metadata/index.js.map +1 -0
- package/dist/lib/server/ctx-metadata/store.d.ts +177 -0
- package/dist/lib/server/ctx-metadata/store.d.ts.map +1 -0
- package/dist/lib/server/ctx-metadata/store.js +327 -0
- package/dist/lib/server/ctx-metadata/store.js.map +1 -0
- package/dist/lib/server/ctx-metadata/wire-shape.d.ts +55 -0
- package/dist/lib/server/ctx-metadata/wire-shape.d.ts.map +1 -0
- package/dist/lib/server/ctx-metadata/wire-shape.js +121 -0
- package/dist/lib/server/ctx-metadata/wire-shape.js.map +1 -0
- package/dist/lib/server/decisioning/account.d.ts +309 -0
- package/dist/lib/server/decisioning/account.d.ts.map +1 -0
- package/dist/lib/server/decisioning/account.js +102 -0
- package/dist/lib/server/decisioning/account.js.map +1 -0
- package/dist/lib/server/decisioning/admin-router.d.ts +75 -0
- package/dist/lib/server/decisioning/admin-router.d.ts.map +1 -0
- package/dist/lib/server/decisioning/admin-router.js +120 -0
- package/dist/lib/server/decisioning/admin-router.js.map +1 -0
- package/dist/lib/server/decisioning/assembly-helpers.d.ts +204 -0
- package/dist/lib/server/decisioning/assembly-helpers.d.ts.map +1 -0
- package/dist/lib/server/decisioning/assembly-helpers.js +173 -0
- package/dist/lib/server/decisioning/assembly-helpers.js.map +1 -0
- package/dist/lib/server/decisioning/async-outcome.d.ts +154 -0
- package/dist/lib/server/decisioning/async-outcome.d.ts.map +1 -0
- package/dist/lib/server/decisioning/async-outcome.js +239 -0
- package/dist/lib/server/decisioning/async-outcome.js.map +1 -0
- package/dist/lib/server/decisioning/capabilities.d.ts +251 -0
- package/dist/lib/server/decisioning/capabilities.d.ts.map +1 -0
- package/dist/lib/server/decisioning/capabilities.js +16 -0
- package/dist/lib/server/decisioning/capabilities.js.map +1 -0
- package/dist/lib/server/decisioning/context.d.ts +212 -0
- package/dist/lib/server/decisioning/context.d.ts.map +1 -0
- package/dist/lib/server/decisioning/context.js +26 -0
- package/dist/lib/server/decisioning/context.js.map +1 -0
- package/dist/lib/server/decisioning/errors-typed.d.ts +104 -0
- package/dist/lib/server/decisioning/errors-typed.d.ts.map +1 -0
- package/dist/lib/server/decisioning/errors-typed.js +304 -0
- package/dist/lib/server/decisioning/errors-typed.js.map +1 -0
- package/dist/lib/server/decisioning/helpers.d.ts +131 -0
- package/dist/lib/server/decisioning/helpers.d.ts.map +1 -0
- package/dist/lib/server/decisioning/helpers.js +134 -0
- package/dist/lib/server/decisioning/helpers.js.map +1 -0
- package/dist/lib/server/decisioning/index.d.ts +46 -0
- package/dist/lib/server/decisioning/index.d.ts.map +1 -0
- package/dist/lib/server/decisioning/index.js +120 -0
- package/dist/lib/server/decisioning/index.js.map +1 -0
- package/dist/lib/server/decisioning/list-helpers.d.ts +53 -0
- package/dist/lib/server/decisioning/list-helpers.d.ts.map +1 -0
- package/dist/lib/server/decisioning/list-helpers.js +96 -0
- package/dist/lib/server/decisioning/list-helpers.js.map +1 -0
- package/dist/lib/server/decisioning/manifest-helpers.d.ts +56 -0
- package/dist/lib/server/decisioning/manifest-helpers.d.ts.map +1 -0
- package/dist/lib/server/decisioning/manifest-helpers.js +78 -0
- package/dist/lib/server/decisioning/manifest-helpers.js.map +1 -0
- package/dist/lib/server/decisioning/pagination.d.ts +21 -0
- package/dist/lib/server/decisioning/pagination.d.ts.map +1 -0
- package/dist/lib/server/decisioning/pagination.js +12 -0
- package/dist/lib/server/decisioning/pagination.js.map +1 -0
- package/dist/lib/server/decisioning/platform.d.ts +188 -0
- package/dist/lib/server/decisioning/platform.d.ts.map +1 -0
- package/dist/lib/server/decisioning/platform.js +19 -0
- package/dist/lib/server/decisioning/platform.js.map +1 -0
- package/dist/lib/server/decisioning/runtime/from-platform.d.ts +510 -0
- package/dist/lib/server/decisioning/runtime/from-platform.d.ts.map +1 -0
- package/dist/lib/server/decisioning/runtime/from-platform.js +2196 -0
- package/dist/lib/server/decisioning/runtime/from-platform.js.map +1 -0
- package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts +114 -0
- package/dist/lib/server/decisioning/runtime/postgres-task-registry.d.ts.map +1 -0
- package/dist/lib/server/decisioning/runtime/postgres-task-registry.js +247 -0
- package/dist/lib/server/decisioning/runtime/postgres-task-registry.js.map +1 -0
- package/dist/lib/server/decisioning/runtime/protocol-for-tool.d.ts +32 -0
- package/dist/lib/server/decisioning/runtime/protocol-for-tool.d.ts.map +1 -0
- package/dist/lib/server/decisioning/runtime/protocol-for-tool.js +127 -0
- package/dist/lib/server/decisioning/runtime/protocol-for-tool.js.map +1 -0
- package/dist/lib/server/decisioning/runtime/task-registry.d.ts +105 -0
- package/dist/lib/server/decisioning/runtime/task-registry.d.ts.map +1 -0
- package/dist/lib/server/decisioning/runtime/task-registry.js +96 -0
- package/dist/lib/server/decisioning/runtime/task-registry.js.map +1 -0
- package/dist/lib/server/decisioning/runtime/to-context.d.ts +54 -0
- package/dist/lib/server/decisioning/runtime/to-context.d.ts.map +1 -0
- package/dist/lib/server/decisioning/runtime/to-context.js +166 -0
- package/dist/lib/server/decisioning/runtime/to-context.js.map +1 -0
- package/dist/lib/server/decisioning/runtime/validate-platform.d.ts +20 -0
- package/dist/lib/server/decisioning/runtime/validate-platform.d.ts.map +1 -0
- package/dist/lib/server/decisioning/runtime/validate-platform.js +93 -0
- package/dist/lib/server/decisioning/runtime/validate-platform.js.map +1 -0
- package/dist/lib/server/decisioning/specialisms/audiences.d.ts +72 -0
- package/dist/lib/server/decisioning/specialisms/audiences.d.ts.map +1 -0
- package/dist/lib/server/decisioning/specialisms/audiences.js +15 -0
- package/dist/lib/server/decisioning/specialisms/audiences.js.map +1 -0
- package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts +92 -0
- package/dist/lib/server/decisioning/specialisms/brand-rights.d.ts.map +1 -0
- package/dist/lib/server/decisioning/specialisms/brand-rights.js +28 -0
- package/dist/lib/server/decisioning/specialisms/brand-rights.js.map +1 -0
- package/dist/lib/server/decisioning/specialisms/campaign-governance.d.ts +67 -0
- package/dist/lib/server/decisioning/specialisms/campaign-governance.d.ts.map +1 -0
- package/dist/lib/server/decisioning/specialisms/campaign-governance.js +31 -0
- package/dist/lib/server/decisioning/specialisms/campaign-governance.js.map +1 -0
- package/dist/lib/server/decisioning/specialisms/content-standards.d.ts +78 -0
- package/dist/lib/server/decisioning/specialisms/content-standards.d.ts.map +1 -0
- package/dist/lib/server/decisioning/specialisms/content-standards.js +35 -0
- package/dist/lib/server/decisioning/specialisms/content-standards.js.map +1 -0
- package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts +81 -0
- package/dist/lib/server/decisioning/specialisms/creative-ad-server.d.ts.map +1 -0
- package/dist/lib/server/decisioning/specialisms/creative-ad-server.js +28 -0
- package/dist/lib/server/decisioning/specialisms/creative-ad-server.js.map +1 -0
- package/dist/lib/server/decisioning/specialisms/creative.d.ts +144 -0
- package/dist/lib/server/decisioning/specialisms/creative.d.ts.map +1 -0
- package/dist/lib/server/decisioning/specialisms/creative.js +19 -0
- package/dist/lib/server/decisioning/specialisms/creative.js.map +1 -0
- package/dist/lib/server/decisioning/specialisms/lists.d.ts +61 -0
- package/dist/lib/server/decisioning/specialisms/lists.d.ts.map +1 -0
- package/dist/lib/server/decisioning/specialisms/lists.js +30 -0
- package/dist/lib/server/decisioning/specialisms/lists.js.map +1 -0
- package/dist/lib/server/decisioning/specialisms/sales.d.ts +163 -0
- package/dist/lib/server/decisioning/specialisms/sales.d.ts.map +1 -0
- package/dist/lib/server/decisioning/specialisms/sales.js +64 -0
- package/dist/lib/server/decisioning/specialisms/sales.js.map +1 -0
- package/dist/lib/server/decisioning/specialisms/signals.d.ts +64 -0
- package/dist/lib/server/decisioning/specialisms/signals.d.ts.map +1 -0
- package/dist/lib/server/decisioning/specialisms/signals.js +28 -0
- package/dist/lib/server/decisioning/specialisms/signals.js.map +1 -0
- package/dist/lib/server/decisioning/start-time.d.ts +76 -0
- package/dist/lib/server/decisioning/start-time.d.ts.map +1 -0
- package/dist/lib/server/decisioning/start-time.js +81 -0
- package/dist/lib/server/decisioning/start-time.js.map +1 -0
- package/dist/lib/server/decisioning/status-changes.d.ts +165 -0
- package/dist/lib/server/decisioning/status-changes.d.ts.map +1 -0
- package/dist/lib/server/decisioning/status-changes.js +131 -0
- package/dist/lib/server/decisioning/status-changes.js.map +1 -0
- package/dist/lib/server/decisioning/status-mappers.d.ts +46 -0
- package/dist/lib/server/decisioning/status-mappers.d.ts.map +1 -0
- package/dist/lib/server/decisioning/status-mappers.js +46 -0
- package/dist/lib/server/decisioning/status-mappers.js.map +1 -0
- package/dist/lib/server/decisioning/tenant-registry.d.ts +289 -0
- package/dist/lib/server/decisioning/tenant-registry.d.ts.map +1 -0
- package/dist/lib/server/decisioning/tenant-registry.js +503 -0
- package/dist/lib/server/decisioning/tenant-registry.js.map +1 -0
- package/dist/lib/server/express-adapter.d.ts +1 -1
- package/dist/lib/server/express-adapter.js +1 -1
- package/dist/lib/server/governance.d.ts +1 -1
- package/dist/lib/server/governance.js +1 -1
- package/dist/lib/server/idempotency/store.d.ts +1 -1
- package/dist/lib/server/idempotency/store.js +1 -1
- package/dist/lib/server/index.d.ts +9 -2
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +79 -4
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/server/legacy/v5/index.d.ts +38 -0
- package/dist/lib/server/legacy/v5/index.d.ts.map +1 -0
- package/dist/lib/server/legacy/v5/index.js +60 -0
- package/dist/lib/server/legacy/v5/index.js.map +1 -0
- package/dist/lib/server/normalize-errors.d.ts +88 -0
- package/dist/lib/server/normalize-errors.d.ts.map +1 -0
- package/dist/lib/server/normalize-errors.js +146 -0
- package/dist/lib/server/normalize-errors.js.map +1 -0
- package/dist/lib/server/pick-safe-details.d.ts +90 -0
- package/dist/lib/server/pick-safe-details.d.ts.map +1 -0
- package/dist/lib/server/pick-safe-details.js +148 -0
- package/dist/lib/server/pick-safe-details.js.map +1 -0
- package/dist/lib/server/postgres-state-store.d.ts +1 -1
- package/dist/lib/server/postgres-state-store.js +1 -1
- package/dist/lib/server/responses.d.ts +38 -0
- package/dist/lib/server/responses.d.ts.map +1 -1
- package/dist/lib/server/responses.js +38 -0
- package/dist/lib/server/responses.js.map +1 -1
- package/dist/lib/server/state-store.d.ts +1 -1
- package/dist/lib/server/state-store.js +1 -1
- package/dist/lib/server/test-controller.d.ts +10 -3
- package/dist/lib/server/test-controller.d.ts.map +1 -1
- package/dist/lib/server/test-controller.js +10 -3
- package/dist/lib/server/test-controller.js.map +1 -1
- package/dist/lib/testing/comply-controller.d.ts +47 -1
- package/dist/lib/testing/comply-controller.d.ts.map +1 -1
- package/dist/lib/testing/comply-controller.js +11 -4
- package/dist/lib/testing/comply-controller.js.map +1 -1
- package/dist/lib/testing/index.d.ts +1 -1
- package/dist/lib/testing/index.d.ts.map +1 -1
- package/dist/lib/testing/index.js.map +1 -1
- package/dist/lib/testing/personas/index.d.ts +143 -0
- package/dist/lib/testing/personas/index.d.ts.map +1 -0
- package/dist/lib/testing/personas/index.js +190 -0
- package/dist/lib/testing/personas/index.js.map +1 -0
- package/dist/lib/testing/storyboard/index.d.ts +1 -1
- package/dist/lib/testing/storyboard/index.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/index.js +3 -2
- package/dist/lib/testing/storyboard/index.js.map +1 -1
- package/dist/lib/testing/storyboard/runner.d.ts +13 -0
- package/dist/lib/testing/storyboard/runner.d.ts.map +1 -1
- package/dist/lib/testing/storyboard/runner.js +179 -7
- package/dist/lib/testing/storyboard/runner.js.map +1 -1
- package/dist/lib/types/adcp.d.ts.map +1 -1
- package/dist/lib/types/adcp.js +1 -0
- package/dist/lib/types/adcp.js.map +1 -1
- package/dist/lib/types/asset-instances.d.ts +1 -0
- package/dist/lib/types/asset-instances.d.ts.map +1 -1
- package/dist/lib/types/core.generated.d.ts +203 -98
- package/dist/lib/types/core.generated.d.ts.map +1 -1
- package/dist/lib/types/core.generated.js +1 -1
- package/dist/lib/types/index.d.ts +1 -0
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js.map +1 -1
- package/dist/lib/types/schemas.generated.d.ts +599 -159
- package/dist/lib/types/schemas.generated.d.ts.map +1 -1
- package/dist/lib/types/schemas.generated.js +175 -94
- package/dist/lib/types/schemas.generated.js.map +1 -1
- package/dist/lib/types/tools.generated.d.ts +315 -46
- package/dist/lib/types/tools.generated.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.d.ts +1 -1
- package/dist/lib/utils/capabilities.d.ts.map +1 -1
- package/dist/lib/utils/capabilities.js +6 -0
- package/dist/lib/utils/capabilities.js.map +1 -1
- package/dist/lib/validation/schema-validator.d.ts +13 -0
- package/dist/lib/validation/schema-validator.d.ts.map +1 -1
- package/dist/lib/validation/schema-validator.js +240 -3
- package/dist/lib/validation/schema-validator.js.map +1 -1
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.d.ts.map +1 -1
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.js.map +1 -1
- package/docs/guides/BUILD-AN-AGENT.md +30 -5
- package/docs/llms.txt +28 -17
- package/examples/README.md +3 -1
- package/examples/decisioning-platform-broadcast-tv.ts +300 -0
- package/examples/decisioning-platform-identity-graph.ts +214 -0
- package/examples/decisioning-platform-mock-seller.ts +332 -0
- package/examples/decisioning-platform-multi-tenant.ts +128 -0
- package/examples/decisioning-platform-programmatic.ts +254 -0
- package/examples/signals-agent.ts +1 -1
- package/package.json +13 -2
- package/skills/build-brand-rights-agent/SKILL.md +10 -3
- package/skills/build-creative-agent/SKILL.md +94 -64
- package/skills/build-decisioning-creative-template/SKILL.md +554 -0
- package/skills/build-decisioning-platform/SKILL.md +304 -0
- package/skills/build-decisioning-platform/advanced/BRAND-RIGHTS.md +25 -0
- package/skills/build-decisioning-platform/advanced/COMPLIANCE.md +23 -0
- package/skills/build-decisioning-platform/advanced/GOVERNANCE.md +24 -0
- package/skills/build-decisioning-platform/advanced/HITL.md +34 -0
- package/skills/build-decisioning-platform/advanced/IDEMPOTENCY.md +52 -0
- package/skills/build-decisioning-platform/advanced/MULTI-TENANT.md +47 -0
- package/skills/build-decisioning-platform/advanced/OAUTH.md +22 -0
- package/skills/build-decisioning-platform/advanced/REFERENCE.md +991 -0
- package/skills/build-decisioning-platform/advanced/SANDBOX.md +24 -0
- package/skills/build-decisioning-platform/advanced/STATE-MACHINE.md +52 -0
- package/skills/build-decisioning-signal-marketplace/SKILL.md +269 -0
- package/skills/build-generative-seller-agent/SKILL.md +89 -53
- package/skills/build-governance-agent/SKILL.md +76 -45
- package/skills/build-retail-media-agent/SKILL.md +87 -62
- package/skills/build-seller-agent/SKILL.md +384 -255
- package/skills/build-seller-agent/deployment.md +5 -3
- package/skills/build-seller-agent/specialisms/audience-sync.md +0 -2
- package/skills/build-seller-agent/specialisms/sales-broadcast-tv.md +0 -2
- package/skills/build-seller-agent/specialisms/sales-guaranteed.md +0 -2
- package/skills/build-seller-agent/specialisms/sales-non-guaranteed.md +0 -2
- package/skills/build-seller-agent/specialisms/sales-proposal-mode.md +0 -2
- package/skills/build-seller-agent/specialisms/sales-social.md +0 -2
- package/skills/build-seller-agent/specialisms/signed-requests.md +0 -2
- package/skills/build-si-agent/SKILL.md +40 -32
- package/skills/build-signals-agent/SKILL.md +139 -92
- package/skills/call-adcp-agent.previous/SKILL.md +5 -0
package/dist/lib/server/index.js
CHANGED
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
exports.
|
|
5
|
-
exports.matchesCollectionList = exports.matchesPropertyList = exports.resolveCollectionList = exports.resolvePropertyList = exports.governanceDeniedError = exports.checkGovernance = exports.LOOPBACK_OK_WEBHOOK_SSRF_POLICY = exports.WEBHOOK_SSRF_POLICY = exports.createPinAndBindFetch = exports.memoryWebhookKeyStore = exports.createWebhookEmitter = exports.A2AInvocationError = exports.createA2AAdapter = exports.hashPayload = exports.cleanupExpiredIdempotency = exports.IDEMPOTENCY_MIGRATION = exports.getIdempotencyMigration = exports.pgBackend = exports.memoryBackend = exports.probeIdempotencyStore = exports.createIdempotencyStore = exports.bridgeFromSessionStore = exports.bridgeFromTestControllerStore = exports.filterValidSeededProducts = exports.mergeSeededProductsIntoResponse = exports.isSandboxRequest = exports.DEFAULT_REPORTING_CAPABILITIES = exports.ADCP_SIGNED_REQUESTS_STATE = exports.ADCP_PRE_TRANSPORT = exports.requireSessionKey = exports.
|
|
17
|
+
exports.registerTestController = exports.MCP_TASKS_MIGRATION = exports.getMcpTasksMigration = exports.cleanupExpiredTasks = exports.PostgresTaskStore = exports.isTerminal = exports.InMemoryTaskStore = exports.createTaskCapableServer = exports.registerAdcpTaskTool = exports.taskToolResponse = exports.validActionsForStatus = exports.toStructuredContent = exports.reportUsageResponse = exports.syncGovernanceResponse = exports.syncAccountsResponse = exports.acquireRightsRejected = exports.acquireRightsPendingApproval = exports.acquireRightsAcquired = exports.acquireRightsResponse = exports.cancelMediaBuyResponse = exports.activateSignalResponse = exports.getSignalsResponse = exports.syncCreativesResponse = exports.getPlanAuditLogsResponse = exports.listContentStandardsResponse = exports.listCollectionListsResponse = exports.listPropertyListsResponse = exports.listCreativesResponse = exports.creativeDeliveryResponse = exports.previewCreativeResponse = exports.buildCreativeMultiResponse = exports.buildCreativeResponse = exports.performanceFeedbackResponse = exports.getMediaBuysResponse = exports.updateMediaBuyResponse = exports.listCreativeFormatsResponse = exports.listAccountsResponse = exports.deliveryResponse = exports.mediaBuyResponse = exports.productsResponse = exports.capabilitiesResponse = exports.CONFLICT_ADCP_ERROR_ALLOWLIST = exports.ADCP_ERROR_FIELD_ALLOWLIST = exports.DEFAULT_ERROR_ENVELOPE_FIELDS = exports.ERROR_ENVELOPE_FIELD_ALLOWLIST = exports.wrapEnvelope = exports.pickSafeDetails = exports.normalizeErrors = exports.normalizeError = exports.adcpError = void 0;
|
|
18
|
+
exports.validateWrite = exports.validatePayloadSize = exports.validateId = exports.validateCollection = exports.isPutIfMatchConflict = exports.patchWithRetry = exports.scopedStore = exports.createSessionedStore = exports.SESSION_KEY_FIELD = exports.DEFAULT_MAX_DOCUMENT_BYTES = exports.PatchConflictError = exports.StateError = exports.InMemoryStateStore = exports.mcpToolNameResolver = exports.requireAuthenticatedOrSigned = exports.requireSignatureWhenPresent = exports.verifySignatureAsAuthenticator = exports.verifyIntrospection = exports.DEFAULT_JWT_CLOCK_TOLERANCE_SECONDS = exports.DEFAULT_JWT_ALGORITHMS = exports.getServeRequestContext = exports.ADCP_SERVE_REQUEST_CONTEXT = exports.isAuthenticatorPresenceGated = exports.tagAuthenticatorPresenceGated = exports.AUTH_PRESENCE_GATED = exports.authenticatorNeedsRawBody = exports.tagAuthenticatorNeedsRawBody = exports.AUTH_NEEDS_RAW_BODY = exports.AuthError = exports.signatureErrorCodeFromCause = exports.respondUnauthorized = exports.extractBearerToken = exports.anyOf = exports.verifyBearer = exports.verifyApiKey = exports.createExpressAdapter = exports.resolveHost = exports.hostname = exports.UnknownHostError = exports.serve = exports.createSeedFixtureCache = exports.enforceMapCap = exports.SESSION_ENTRY_CAP = exports.SEED_MESSAGES = exports.SEED_SCENARIOS = exports.CONTROLLER_SCENARIOS = exports.TOOL_INPUT_SHAPE = exports.toMcpResponse = exports.TestControllerError = exports.handleTestControllerRequest = void 0;
|
|
19
|
+
exports.scopeCtxMetadataKey = exports.ctxMetadataResultKey = exports.hasCtxMetadata = exports.stripCtxMetadata = exports.MAX_TTL_SECONDS = exports.DEFAULT_MAX_VALUE_BYTES = exports.ADCP_INTERNAL_TAG = exports.CtxMetadataValidationError = exports.CTX_METADATA_MIGRATION = exports.cleanupExpiredCtxMetadata = exports.getCtxMetadataMigration = exports.pgCtxMetadataStore = exports.memoryCtxMetadataStore = exports.createCtxMetadataStore = exports.matchesCollectionList = exports.matchesPropertyList = exports.resolveCollectionList = exports.resolvePropertyList = exports.governanceDeniedError = exports.checkGovernance = exports.LOOPBACK_OK_WEBHOOK_SSRF_POLICY = exports.WEBHOOK_SSRF_POLICY = exports.createPinAndBindFetch = exports.memoryWebhookKeyStore = exports.createWebhookEmitter = exports.A2AInvocationError = exports.createA2AAdapter = exports.hashPayload = exports.cleanupExpiredIdempotency = exports.IDEMPOTENCY_MIGRATION = exports.getIdempotencyMigration = exports.pgBackend = exports.memoryBackend = exports.probeIdempotencyStore = exports.createIdempotencyStore = exports.bridgeFromSessionStore = exports.bridgeFromTestControllerStore = exports.filterValidSeededProducts = exports.mergeSeededProductsIntoResponse = exports.isSandboxRequest = exports.DEFAULT_REPORTING_CAPABILITIES = exports.ADCP_SIGNED_REQUESTS_STATE = exports.ADCP_PRE_TRANSPORT = exports.requireSessionKey = exports.structuredDeserialize = exports.structuredSerialize = exports.ADCP_STATE_MIGRATION = exports.getAdcpStateMigration = exports.PostgresStateStore = void 0;
|
|
6
20
|
var errors_1 = require("./errors");
|
|
7
21
|
Object.defineProperty(exports, "adcpError", { enumerable: true, get: function () { return errors_1.adcpError; } });
|
|
22
|
+
var normalize_errors_1 = require("./normalize-errors");
|
|
23
|
+
Object.defineProperty(exports, "normalizeError", { enumerable: true, get: function () { return normalize_errors_1.normalizeError; } });
|
|
24
|
+
Object.defineProperty(exports, "normalizeErrors", { enumerable: true, get: function () { return normalize_errors_1.normalizeErrors; } });
|
|
25
|
+
var pick_safe_details_1 = require("./pick-safe-details");
|
|
26
|
+
Object.defineProperty(exports, "pickSafeDetails", { enumerable: true, get: function () { return pick_safe_details_1.pickSafeDetails; } });
|
|
8
27
|
var wrap_envelope_1 = require("./wrap-envelope");
|
|
9
28
|
Object.defineProperty(exports, "wrapEnvelope", { enumerable: true, get: function () { return wrap_envelope_1.wrapEnvelope; } });
|
|
10
29
|
var envelope_allowlist_1 = require("./envelope-allowlist");
|
|
@@ -121,8 +140,15 @@ Object.defineProperty(exports, "ADCP_STATE_MIGRATION", { enumerable: true, get:
|
|
|
121
140
|
var structured_serialize_1 = require("./structured-serialize");
|
|
122
141
|
Object.defineProperty(exports, "structuredSerialize", { enumerable: true, get: function () { return structured_serialize_1.structuredSerialize; } });
|
|
123
142
|
Object.defineProperty(exports, "structuredDeserialize", { enumerable: true, get: function () { return structured_serialize_1.structuredDeserialize; } });
|
|
143
|
+
// `createAdcpServer` is NOT re-exported from `@adcp/sdk/server` anymore —
|
|
144
|
+
// LLMs scaffolding from skills consistently latched onto it as the canonical
|
|
145
|
+
// entry point despite the @deprecated JSDoc. Removing the top-level export
|
|
146
|
+
// forces new code to either reach for `createAdcpServerFromPlatform` (the v6
|
|
147
|
+
// canonical) or import from `@adcp/sdk/server/legacy/v5` (mid-migration /
|
|
148
|
+
// escape-hatch only). Breaking change: v5 adopters see a hard import error
|
|
149
|
+
// and update their import path. The migration is one line; the LLM-output
|
|
150
|
+
// quality win is significant. See `docs/migration-5.x-to-6.x.md`.
|
|
124
151
|
var create_adcp_server_1 = require("./create-adcp-server");
|
|
125
|
-
Object.defineProperty(exports, "createAdcpServer", { enumerable: true, get: function () { return create_adcp_server_1.createAdcpServer; } });
|
|
126
152
|
Object.defineProperty(exports, "requireSessionKey", { enumerable: true, get: function () { return create_adcp_server_1.requireSessionKey; } });
|
|
127
153
|
Object.defineProperty(exports, "ADCP_PRE_TRANSPORT", { enumerable: true, get: function () { return create_adcp_server_1.ADCP_PRE_TRANSPORT; } });
|
|
128
154
|
Object.defineProperty(exports, "ADCP_SIGNED_REQUESTS_STATE", { enumerable: true, get: function () { return create_adcp_server_1.ADCP_SIGNED_REQUESTS_STATE; } });
|
|
@@ -161,4 +187,53 @@ Object.defineProperty(exports, "resolvePropertyList", { enumerable: true, get: f
|
|
|
161
187
|
Object.defineProperty(exports, "resolveCollectionList", { enumerable: true, get: function () { return targeting_helpers_1.resolveCollectionList; } });
|
|
162
188
|
Object.defineProperty(exports, "matchesPropertyList", { enumerable: true, get: function () { return targeting_helpers_1.matchesPropertyList; } });
|
|
163
189
|
Object.defineProperty(exports, "matchesCollectionList", { enumerable: true, get: function () { return targeting_helpers_1.matchesCollectionList; } });
|
|
190
|
+
// ---------------------------------------------------------------------------
|
|
191
|
+
// Platform-shaped server entry point (recommended for new agents)
|
|
192
|
+
// ---------------------------------------------------------------------------
|
|
193
|
+
//
|
|
194
|
+
// `createAdcpServerFromPlatform` wraps `createAdcpServer` (the lower-level
|
|
195
|
+
// handler-bag entry above) with compile-time specialism enforcement
|
|
196
|
+
// (`RequiredPlatformsFor<S>`), capability projection, idempotency wiring,
|
|
197
|
+
// async tasks, status normalization, multi-tenant routing, and webhook
|
|
198
|
+
// auto-emit. Adopters declare a typed `DecisioningPlatform` per-specialism
|
|
199
|
+
// and the framework wires the rest. See `docs/migration-5.x-to-6.x.md`
|
|
200
|
+
// and `skills/build-decisioning-platform/` for the full walkthrough.
|
|
201
|
+
//
|
|
202
|
+
// Both `createAdcpServer` and `createAdcpServerFromPlatform` live on the
|
|
203
|
+
// same import path so adopters discover them as siblings; pick the
|
|
204
|
+
// function shape that matches your agent. The platform path internally
|
|
205
|
+
// builds an `AdcpServerConfig` and calls `createAdcpServer` — they're
|
|
206
|
+
// not adjacent surfaces, they're parent-child layers of the same SDK.
|
|
207
|
+
//
|
|
208
|
+
// **Pin to v5 long-term?** Import from `@adcp/sdk/server/legacy/v5`
|
|
209
|
+
// instead. The subpath is the stable home for the v5 handler-bag
|
|
210
|
+
// constructor; the top-level re-export here may be removed in a
|
|
211
|
+
// future major. New code should not pin against `legacy/v5` either —
|
|
212
|
+
// reach for `createAdcpServerFromPlatform` first.
|
|
213
|
+
__exportStar(require("./decisioning"), exports);
|
|
214
|
+
// ---------------------------------------------------------------------------
|
|
215
|
+
// Ctx-metadata store — opaque-blob round-trip for adapter-internal state
|
|
216
|
+
// ---------------------------------------------------------------------------
|
|
217
|
+
//
|
|
218
|
+
// Publishers attach platform-specific opaque blobs to any returned resource
|
|
219
|
+
// (product, media_buy, package, creative, audience, signal, rights_grant);
|
|
220
|
+
// the framework persists by `(account_id, kind, id)`, strips from buyer-
|
|
221
|
+
// facing wire payloads, threads back into the publisher's request context
|
|
222
|
+
// on subsequent calls referencing the same resource ID. See
|
|
223
|
+
// `docs/proposals/decisioning-platform-v6-1-ctx-metadata.md`.
|
|
224
|
+
var ctx_metadata_1 = require("./ctx-metadata");
|
|
225
|
+
Object.defineProperty(exports, "createCtxMetadataStore", { enumerable: true, get: function () { return ctx_metadata_1.createCtxMetadataStore; } });
|
|
226
|
+
Object.defineProperty(exports, "memoryCtxMetadataStore", { enumerable: true, get: function () { return ctx_metadata_1.memoryCtxMetadataStore; } });
|
|
227
|
+
Object.defineProperty(exports, "pgCtxMetadataStore", { enumerable: true, get: function () { return ctx_metadata_1.pgCtxMetadataStore; } });
|
|
228
|
+
Object.defineProperty(exports, "getCtxMetadataMigration", { enumerable: true, get: function () { return ctx_metadata_1.getCtxMetadataMigration; } });
|
|
229
|
+
Object.defineProperty(exports, "cleanupExpiredCtxMetadata", { enumerable: true, get: function () { return ctx_metadata_1.cleanupExpiredCtxMetadata; } });
|
|
230
|
+
Object.defineProperty(exports, "CTX_METADATA_MIGRATION", { enumerable: true, get: function () { return ctx_metadata_1.CTX_METADATA_MIGRATION; } });
|
|
231
|
+
Object.defineProperty(exports, "CtxMetadataValidationError", { enumerable: true, get: function () { return ctx_metadata_1.CtxMetadataValidationError; } });
|
|
232
|
+
Object.defineProperty(exports, "ADCP_INTERNAL_TAG", { enumerable: true, get: function () { return ctx_metadata_1.ADCP_INTERNAL_TAG; } });
|
|
233
|
+
Object.defineProperty(exports, "DEFAULT_MAX_VALUE_BYTES", { enumerable: true, get: function () { return ctx_metadata_1.DEFAULT_MAX_VALUE_BYTES; } });
|
|
234
|
+
Object.defineProperty(exports, "MAX_TTL_SECONDS", { enumerable: true, get: function () { return ctx_metadata_1.MAX_TTL_SECONDS; } });
|
|
235
|
+
Object.defineProperty(exports, "stripCtxMetadata", { enumerable: true, get: function () { return ctx_metadata_1.stripCtxMetadata; } });
|
|
236
|
+
Object.defineProperty(exports, "hasCtxMetadata", { enumerable: true, get: function () { return ctx_metadata_1.hasCtxMetadata; } });
|
|
237
|
+
Object.defineProperty(exports, "ctxMetadataResultKey", { enumerable: true, get: function () { return ctx_metadata_1.ctxMetadataResultKey; } });
|
|
238
|
+
Object.defineProperty(exports, "scopeCtxMetadataKey", { enumerable: true, get: function () { return ctx_metadata_1.scopeCtxMetadataKey; } });
|
|
164
239
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/server/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `@adcp/sdk/server/legacy/v5` — stable home for the v5 handler-bag
|
|
3
|
+
* server constructor.
|
|
4
|
+
*
|
|
5
|
+
* **New code should not import from this subpath.** The canonical v6
|
|
6
|
+
* entry point is `createAdcpServerFromPlatform` from `@adcp/sdk/server`,
|
|
7
|
+
* which wraps this constructor with the typed specialism interfaces,
|
|
8
|
+
* compile-time capability enforcement, ctx_metadata auto-hydration,
|
|
9
|
+
* idempotency-principal synthesis, status mappers, multi-tenant routing,
|
|
10
|
+
* and webhook auto-emit. See `docs/migration-5.x-to-6.x.md`.
|
|
11
|
+
*
|
|
12
|
+
* Reasons to import from `legacy/v5` rather than `@adcp/sdk/server`:
|
|
13
|
+
*
|
|
14
|
+
* 1. **Mid-migration codebases.** v5 adopters who haven't finished
|
|
15
|
+
* migrating to v6 keep working by switching the import path —
|
|
16
|
+
* same constructor, same config shape, no behavior change.
|
|
17
|
+
*
|
|
18
|
+
* 2. **Escape-hatch handlers** that v6 doesn't model directly: custom
|
|
19
|
+
* `tools[]` outside the AdCP wire surface, the `mergeSeam` hook,
|
|
20
|
+
* `preTransport` / `signedRequests` middleware. These stay on v5
|
|
21
|
+
* until the v6 platform interface picks them up explicitly.
|
|
22
|
+
*
|
|
23
|
+
* 3. **Pinning against future v6 evolution.** The top-level export
|
|
24
|
+
* is `@deprecated` and may be removed in a major; `legacy/v5`
|
|
25
|
+
* is the stable subpath for adopters who genuinely need the v5
|
|
26
|
+
* shape long-term.
|
|
27
|
+
*
|
|
28
|
+
* The top-level `@adcp/sdk/server` keeps a tag-deprecated re-export of
|
|
29
|
+
* `createAdcpServer` for one cycle so existing imports don't break on
|
|
30
|
+
* upgrade. New imports SHOULD reach for the subpath.
|
|
31
|
+
*
|
|
32
|
+
* @public
|
|
33
|
+
*/
|
|
34
|
+
export { createAdcpServer } from '../../create-adcp-server';
|
|
35
|
+
export * from '../..';
|
|
36
|
+
export type { AdcpServerConfig, WebhooksConfig, AdcpToolMap, AdcpServerToolName, AdcpCapabilitiesConfig, AdcpCapabilitiesOverrides, AdcpCustomToolConfig, AdcpLogger, SignedRequestsConfig, AdcpPreTransport, AdcpSignedRequestsState, HandlerContext, SessionKeyContext, MediaBuyHandlers, SignalsHandlers, CreativeHandlers, GovernanceHandlers, AccountHandlers, EventTrackingHandlers, SponsoredIntelligenceHandlers, ResolveAccountContext, } from '../../create-adcp-server';
|
|
37
|
+
export type { AdcpServer, AdcpServerComplianceApi, AdcpServerTransport, AdcpTestRequest, AdcpTestToolsCallRequest, AdcpTestResponse, } from '../../adcp-server';
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/server/legacy/v5/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAM5D,cAAc,OAAO,CAAC;AAEtB,YAAY,EACV,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,oBAAoB,EACpB,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EACV,UAAU,EACV,uBAAuB,EACvB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `@adcp/sdk/server/legacy/v5` — stable home for the v5 handler-bag
|
|
4
|
+
* server constructor.
|
|
5
|
+
*
|
|
6
|
+
* **New code should not import from this subpath.** The canonical v6
|
|
7
|
+
* entry point is `createAdcpServerFromPlatform` from `@adcp/sdk/server`,
|
|
8
|
+
* which wraps this constructor with the typed specialism interfaces,
|
|
9
|
+
* compile-time capability enforcement, ctx_metadata auto-hydration,
|
|
10
|
+
* idempotency-principal synthesis, status mappers, multi-tenant routing,
|
|
11
|
+
* and webhook auto-emit. See `docs/migration-5.x-to-6.x.md`.
|
|
12
|
+
*
|
|
13
|
+
* Reasons to import from `legacy/v5` rather than `@adcp/sdk/server`:
|
|
14
|
+
*
|
|
15
|
+
* 1. **Mid-migration codebases.** v5 adopters who haven't finished
|
|
16
|
+
* migrating to v6 keep working by switching the import path —
|
|
17
|
+
* same constructor, same config shape, no behavior change.
|
|
18
|
+
*
|
|
19
|
+
* 2. **Escape-hatch handlers** that v6 doesn't model directly: custom
|
|
20
|
+
* `tools[]` outside the AdCP wire surface, the `mergeSeam` hook,
|
|
21
|
+
* `preTransport` / `signedRequests` middleware. These stay on v5
|
|
22
|
+
* until the v6 platform interface picks them up explicitly.
|
|
23
|
+
*
|
|
24
|
+
* 3. **Pinning against future v6 evolution.** The top-level export
|
|
25
|
+
* is `@deprecated` and may be removed in a major; `legacy/v5`
|
|
26
|
+
* is the stable subpath for adopters who genuinely need the v5
|
|
27
|
+
* shape long-term.
|
|
28
|
+
*
|
|
29
|
+
* The top-level `@adcp/sdk/server` keeps a tag-deprecated re-export of
|
|
30
|
+
* `createAdcpServer` for one cycle so existing imports don't break on
|
|
31
|
+
* upgrade. New imports SHOULD reach for the subpath.
|
|
32
|
+
*
|
|
33
|
+
* @public
|
|
34
|
+
*/
|
|
35
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
36
|
+
if (k2 === undefined) k2 = k;
|
|
37
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
38
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
39
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
40
|
+
}
|
|
41
|
+
Object.defineProperty(o, k2, desc);
|
|
42
|
+
}) : (function(o, m, k, k2) {
|
|
43
|
+
if (k2 === undefined) k2 = k;
|
|
44
|
+
o[k2] = m[k];
|
|
45
|
+
}));
|
|
46
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
47
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.createAdcpServer = void 0;
|
|
51
|
+
// `createAdcpServer` is the v5 entry point that was previously at the
|
|
52
|
+
// top-level `@adcp/sdk/server` export. It now lives only here.
|
|
53
|
+
var create_adcp_server_1 = require("../../create-adcp-server");
|
|
54
|
+
Object.defineProperty(exports, "createAdcpServer", { enumerable: true, get: function () { return create_adcp_server_1.createAdcpServer; } });
|
|
55
|
+
// Re-export everything else from `@adcp/sdk/server` so a v5 adopter's
|
|
56
|
+
// migration path is a single-line import swap:
|
|
57
|
+
// from '@adcp/sdk/server' → from '@adcp/sdk/server/legacy/v5'
|
|
58
|
+
// without splitting destructured imports across two paths.
|
|
59
|
+
__exportStar(require("../.."), exports);
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/server/legacy/v5/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;;;;;;;;;;;;;;;;;AAEH,sEAAsE;AACtE,+DAA+D;AAC/D,+DAA4D;AAAnD,sHAAA,gBAAgB,OAAA;AAEzB,sEAAsE;AACtE,+CAA+C;AAC/C,kEAAkE;AAClE,2DAA2D;AAC3D,wCAAsB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire-shape normalizer for the AdCP `Error` row used in tool responses
|
|
3
|
+
* carrying per-row failures (`sync_creatives`, `sync_audiences`,
|
|
4
|
+
* `sync_accounts`, `report_usage`, `acquire_rights` error arm).
|
|
5
|
+
*
|
|
6
|
+
* Adopters return errors in whichever shape their codebase already
|
|
7
|
+
* speaks: bare strings, native `Error` instances, plain
|
|
8
|
+
* `{ code, message }` objects, `AdcpError` instances thrown internally,
|
|
9
|
+
* upstream-platform error objects with vendor-specific fields. This
|
|
10
|
+
* helper coerces all of those into the canonical wire `Error` shape
|
|
11
|
+
* (`code`, `message`, optional `field` / `suggestion` / `retry_after`
|
|
12
|
+
* / `details` / `recovery`) so the framework's response validator
|
|
13
|
+
* accepts the projected response without forcing every adopter to
|
|
14
|
+
* hand-shape the wire envelope.
|
|
15
|
+
*
|
|
16
|
+
* @see AdCP wire spec: `core/error.json`
|
|
17
|
+
*
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Canonical wire `Error` row. Mirrors `core/error.json` —
|
|
22
|
+
* `code` + `message` are required; everything else optional.
|
|
23
|
+
*
|
|
24
|
+
* Differs from the SDK's `AdcpStructuredError` in only one detail —
|
|
25
|
+
* `recovery` is optional here (per the wire spec) but required on
|
|
26
|
+
* `AdcpStructuredError` (the SDK's stricter shape for thrown errors).
|
|
27
|
+
*
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
export interface NormalizedError {
|
|
31
|
+
code: string;
|
|
32
|
+
message: string;
|
|
33
|
+
field?: string;
|
|
34
|
+
suggestion?: string;
|
|
35
|
+
retry_after?: number;
|
|
36
|
+
details?: Record<string, unknown>;
|
|
37
|
+
recovery?: 'transient' | 'correctable' | 'terminal';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Coerce a single adopter-returned error value into the canonical
|
|
41
|
+
* wire `Error` shape. Handles:
|
|
42
|
+
*
|
|
43
|
+
* - `string` → `{ code: 'GENERIC_ERROR', message: <input>, recovery: 'terminal' }`
|
|
44
|
+
* - `Error` instance → `{ code: 'GENERIC_ERROR', message: err.message, recovery: 'terminal' }`
|
|
45
|
+
* - `AdcpError` instance → projected to wire shape using its `code` /
|
|
46
|
+
* `recovery` / `field` / `suggestion` / `retry_after` / `details`
|
|
47
|
+
* - Plain object with `code` + `message` → fields whitelisted to the
|
|
48
|
+
* wire shape; vendor-specific fields dropped (use `details` for
|
|
49
|
+
* vendor extensions)
|
|
50
|
+
* - Any other object → `{ code: 'GENERIC_ERROR', message: <safeStringify>, recovery: 'terminal' }`
|
|
51
|
+
* - `null` / `undefined` → `{ code: 'GENERIC_ERROR', message: 'Unknown error', recovery: 'terminal' }`
|
|
52
|
+
*
|
|
53
|
+
* The `details` field, when present on the input, is shallow-copied
|
|
54
|
+
* and SHOULD be passed through {@link pickSafeDetails} on the
|
|
55
|
+
* adopter side before reaching this helper. `normalizeError` does NOT
|
|
56
|
+
* sanitize `details` — it's the adopter's job to ensure no
|
|
57
|
+
* credentials / PII / stack traces land there.
|
|
58
|
+
*
|
|
59
|
+
* @public
|
|
60
|
+
*/
|
|
61
|
+
export declare function normalizeError(input: unknown): NormalizedError;
|
|
62
|
+
/**
|
|
63
|
+
* Coerce an adopter-returned errors collection into a wire-shaped
|
|
64
|
+
* `Error[]`. Accepts `undefined` / `null` (returns `undefined`),
|
|
65
|
+
* a single error value (wraps in array), or an array of error values
|
|
66
|
+
* (each normalized via {@link normalizeError}).
|
|
67
|
+
*
|
|
68
|
+
* Empty arrays and arrays where every entry normalizes to the same
|
|
69
|
+
* sentinel "Unknown error" are still emitted — the framework lets the
|
|
70
|
+
* wire validator decide whether `errors: []` is acceptable for the
|
|
71
|
+
* specific tool response (sync_creatives accepts empty;
|
|
72
|
+
* sync_creatives_error requires non-empty).
|
|
73
|
+
*
|
|
74
|
+
* Use at the v6 wire-projection seam:
|
|
75
|
+
*
|
|
76
|
+
* ```ts
|
|
77
|
+
* import { normalizeErrors } from '@adcp/client/server';
|
|
78
|
+
*
|
|
79
|
+
* const projected = adopterRows.map(row => ({
|
|
80
|
+
* ...row,
|
|
81
|
+
* errors: normalizeErrors(row.errors),
|
|
82
|
+
* }));
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @public
|
|
86
|
+
*/
|
|
87
|
+
export declare function normalizeErrors(input: unknown): NormalizedError[] | undefined;
|
|
88
|
+
//# sourceMappingURL=normalize-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-errors.d.ts","sourceRoot":"","sources":["../../../src/lib/server/normalize-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH;;;;;;;;;GASG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;CACrD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CA0C9D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,EAAE,GAAG,SAAS,CAM7E"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Wire-shape normalizer for the AdCP `Error` row used in tool responses
|
|
4
|
+
* carrying per-row failures (`sync_creatives`, `sync_audiences`,
|
|
5
|
+
* `sync_accounts`, `report_usage`, `acquire_rights` error arm).
|
|
6
|
+
*
|
|
7
|
+
* Adopters return errors in whichever shape their codebase already
|
|
8
|
+
* speaks: bare strings, native `Error` instances, plain
|
|
9
|
+
* `{ code, message }` objects, `AdcpError` instances thrown internally,
|
|
10
|
+
* upstream-platform error objects with vendor-specific fields. This
|
|
11
|
+
* helper coerces all of those into the canonical wire `Error` shape
|
|
12
|
+
* (`code`, `message`, optional `field` / `suggestion` / `retry_after`
|
|
13
|
+
* / `details` / `recovery`) so the framework's response validator
|
|
14
|
+
* accepts the projected response without forcing every adopter to
|
|
15
|
+
* hand-shape the wire envelope.
|
|
16
|
+
*
|
|
17
|
+
* @see AdCP wire spec: `core/error.json`
|
|
18
|
+
*
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.normalizeError = normalizeError;
|
|
23
|
+
exports.normalizeErrors = normalizeErrors;
|
|
24
|
+
exports._coerceErrorCode = _coerceErrorCode;
|
|
25
|
+
/**
|
|
26
|
+
* Coerce a single adopter-returned error value into the canonical
|
|
27
|
+
* wire `Error` shape. Handles:
|
|
28
|
+
*
|
|
29
|
+
* - `string` → `{ code: 'GENERIC_ERROR', message: <input>, recovery: 'terminal' }`
|
|
30
|
+
* - `Error` instance → `{ code: 'GENERIC_ERROR', message: err.message, recovery: 'terminal' }`
|
|
31
|
+
* - `AdcpError` instance → projected to wire shape using its `code` /
|
|
32
|
+
* `recovery` / `field` / `suggestion` / `retry_after` / `details`
|
|
33
|
+
* - Plain object with `code` + `message` → fields whitelisted to the
|
|
34
|
+
* wire shape; vendor-specific fields dropped (use `details` for
|
|
35
|
+
* vendor extensions)
|
|
36
|
+
* - Any other object → `{ code: 'GENERIC_ERROR', message: <safeStringify>, recovery: 'terminal' }`
|
|
37
|
+
* - `null` / `undefined` → `{ code: 'GENERIC_ERROR', message: 'Unknown error', recovery: 'terminal' }`
|
|
38
|
+
*
|
|
39
|
+
* The `details` field, when present on the input, is shallow-copied
|
|
40
|
+
* and SHOULD be passed through {@link pickSafeDetails} on the
|
|
41
|
+
* adopter side before reaching this helper. `normalizeError` does NOT
|
|
42
|
+
* sanitize `details` — it's the adopter's job to ensure no
|
|
43
|
+
* credentials / PII / stack traces land there.
|
|
44
|
+
*
|
|
45
|
+
* @public
|
|
46
|
+
*/
|
|
47
|
+
function normalizeError(input) {
|
|
48
|
+
if (input == null) {
|
|
49
|
+
return { code: 'GENERIC_ERROR', message: 'Unknown error', recovery: 'terminal' };
|
|
50
|
+
}
|
|
51
|
+
if (typeof input === 'string') {
|
|
52
|
+
return { code: 'GENERIC_ERROR', message: input, recovery: 'terminal' };
|
|
53
|
+
}
|
|
54
|
+
// AdcpError-shaped (has `code`, optional structured fields). Detected
|
|
55
|
+
// structurally rather than via instanceof so framework code in different
|
|
56
|
+
// module realms (test fixtures, server-side renderers) still gets the
|
|
57
|
+
// typed projection.
|
|
58
|
+
if (typeof input === 'object' && 'code' in input) {
|
|
59
|
+
const obj = input;
|
|
60
|
+
const code = typeof obj.code === 'string' && obj.code.length > 0 ? obj.code : 'GENERIC_ERROR';
|
|
61
|
+
const message = typeof obj.message === 'string' && obj.message.length > 0 ? obj.message : code; // fall back to code when message missing — never empty-string
|
|
62
|
+
const out = { code, message };
|
|
63
|
+
if (typeof obj.field === 'string')
|
|
64
|
+
out.field = obj.field;
|
|
65
|
+
if (typeof obj.suggestion === 'string')
|
|
66
|
+
out.suggestion = obj.suggestion;
|
|
67
|
+
if (typeof obj.retry_after === 'number' && Number.isFinite(obj.retry_after)) {
|
|
68
|
+
// Wire spec clamps retry_after to [1, 3600]
|
|
69
|
+
out.retry_after = Math.max(1, Math.min(3600, Math.floor(obj.retry_after)));
|
|
70
|
+
}
|
|
71
|
+
if (obj.recovery === 'transient' || obj.recovery === 'correctable' || obj.recovery === 'terminal') {
|
|
72
|
+
out.recovery = obj.recovery;
|
|
73
|
+
}
|
|
74
|
+
if (typeof obj.details === 'object' && obj.details !== null) {
|
|
75
|
+
// Shallow copy to break aliasing; adopter is responsible for sanitizing
|
|
76
|
+
// via pickSafeDetails before reaching here.
|
|
77
|
+
out.details = { ...obj.details };
|
|
78
|
+
}
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
// Native Error (no `code` field, has `message`).
|
|
82
|
+
if (input instanceof Error) {
|
|
83
|
+
return { code: 'GENERIC_ERROR', message: input.message || 'Unknown error', recovery: 'terminal' };
|
|
84
|
+
}
|
|
85
|
+
// Last-resort: stringify whatever was passed.
|
|
86
|
+
return {
|
|
87
|
+
code: 'GENERIC_ERROR',
|
|
88
|
+
message: safeStringify(input),
|
|
89
|
+
recovery: 'terminal',
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Coerce an adopter-returned errors collection into a wire-shaped
|
|
94
|
+
* `Error[]`. Accepts `undefined` / `null` (returns `undefined`),
|
|
95
|
+
* a single error value (wraps in array), or an array of error values
|
|
96
|
+
* (each normalized via {@link normalizeError}).
|
|
97
|
+
*
|
|
98
|
+
* Empty arrays and arrays where every entry normalizes to the same
|
|
99
|
+
* sentinel "Unknown error" are still emitted — the framework lets the
|
|
100
|
+
* wire validator decide whether `errors: []` is acceptable for the
|
|
101
|
+
* specific tool response (sync_creatives accepts empty;
|
|
102
|
+
* sync_creatives_error requires non-empty).
|
|
103
|
+
*
|
|
104
|
+
* Use at the v6 wire-projection seam:
|
|
105
|
+
*
|
|
106
|
+
* ```ts
|
|
107
|
+
* import { normalizeErrors } from '@adcp/client/server';
|
|
108
|
+
*
|
|
109
|
+
* const projected = adopterRows.map(row => ({
|
|
110
|
+
* ...row,
|
|
111
|
+
* errors: normalizeErrors(row.errors),
|
|
112
|
+
* }));
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* @public
|
|
116
|
+
*/
|
|
117
|
+
function normalizeErrors(input) {
|
|
118
|
+
if (input == null)
|
|
119
|
+
return undefined;
|
|
120
|
+
if (Array.isArray(input)) {
|
|
121
|
+
return input.map(normalizeError);
|
|
122
|
+
}
|
|
123
|
+
return [normalizeError(input)];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Coerce an `ErrorCode`-typed input back to the underlying string —
|
|
127
|
+
* useful when adopters pass an enum-narrowed code into a place that
|
|
128
|
+
* expects the wire string. Pure-function alias for clarity at call
|
|
129
|
+
* sites; the runtime is identity.
|
|
130
|
+
*
|
|
131
|
+
* @internal
|
|
132
|
+
*/
|
|
133
|
+
function _coerceErrorCode(code) {
|
|
134
|
+
return code;
|
|
135
|
+
}
|
|
136
|
+
/** Best-effort `JSON.stringify` that swallows circular-reference errors. */
|
|
137
|
+
function safeStringify(input) {
|
|
138
|
+
try {
|
|
139
|
+
const s = JSON.stringify(input);
|
|
140
|
+
return typeof s === 'string' ? s : String(input);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
return '[unserializable error]';
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=normalize-errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-errors.js","sourceRoot":"","sources":["../../../src/lib/server/normalize-errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security primitive for the `details` field on `AdcpError` and the
|
|
3
|
+
* `Error` wire row. Adopters fronting upstream platforms (GAM, Snap,
|
|
4
|
+
* retail-media APIs, internal billing systems) often want to surface
|
|
5
|
+
* upstream error context to buyers — but raw upstream errors carry
|
|
6
|
+
* credentials, PII, internal stack traces, request IDs that leak
|
|
7
|
+
* tenant identity, and other liability surfaces that MUST NOT cross
|
|
8
|
+
* the wire boundary.
|
|
9
|
+
*
|
|
10
|
+
* `pickSafeDetails(input, allowlist, opts?)` is an explicit-allowlist
|
|
11
|
+
* sanitizer: only keys in the allowlist survive, with optional caps
|
|
12
|
+
* on depth and serialized size. Returns `undefined` when the input is
|
|
13
|
+
* not a plain object or the allowlist filter produces an empty
|
|
14
|
+
* result, so callers can spread the return into an optional `details`
|
|
15
|
+
* field without polluting it with `{}`.
|
|
16
|
+
*
|
|
17
|
+
* Adopters should call this BEFORE constructing the `AdcpError` /
|
|
18
|
+
* wire `Error` row. The framework's `normalizeError` does NOT
|
|
19
|
+
* sanitize details — it shallow-copies whatever was passed.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* import { pickSafeDetails } from '@adcp/client/server';
|
|
24
|
+
*
|
|
25
|
+
* try {
|
|
26
|
+
* await gamClient.createOrder(req);
|
|
27
|
+
* } catch (upstreamErr) {
|
|
28
|
+
* throw new AdcpError('UPSTREAM_REJECTED', {
|
|
29
|
+
* recovery: 'transient',
|
|
30
|
+
* message: 'Ad server rejected the order',
|
|
31
|
+
* // Allowlist: only safe upstream fields cross the wire
|
|
32
|
+
* details: pickSafeDetails(upstreamErr, [
|
|
33
|
+
* 'http_status',
|
|
34
|
+
* 'request_id',
|
|
35
|
+
* 'gam_error_code',
|
|
36
|
+
* ]),
|
|
37
|
+
* });
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @public
|
|
42
|
+
*/
|
|
43
|
+
export interface PickSafeDetailsOptions {
|
|
44
|
+
/**
|
|
45
|
+
* Maximum nesting depth retained in the result. `undefined` keeps
|
|
46
|
+
* the input unchanged at any depth; values like `2` keep top-level
|
|
47
|
+
* + one nested level. Strings, numbers, booleans, and null are
|
|
48
|
+
* leaves; arrays and plain objects count as a level.
|
|
49
|
+
*
|
|
50
|
+
* Default: `2` — top-level + one nested level. Caps cardinality
|
|
51
|
+
* blast radius from accidentally-recursive upstream error objects.
|
|
52
|
+
*/
|
|
53
|
+
maxDepth?: number;
|
|
54
|
+
/**
|
|
55
|
+
* Maximum serialized JSON byte size of the result (best-effort
|
|
56
|
+
* UTF-8 estimate via `JSON.stringify().length`). When the projected
|
|
57
|
+
* result exceeds this, returns `undefined` rather than truncating —
|
|
58
|
+
* adopters should choose a tighter allowlist if they hit the cap.
|
|
59
|
+
*
|
|
60
|
+
* Default: `2048` bytes. Wire envelopes shouldn't carry kilobytes
|
|
61
|
+
* of details; if you need that, ship via `publishStatusChange` or
|
|
62
|
+
* `task_registry.progress`.
|
|
63
|
+
*/
|
|
64
|
+
maxSizeBytes?: number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Filter `input` to keys named in `allowlist`, depth-capped and
|
|
68
|
+
* size-capped. Returns `undefined` when the result is empty or
|
|
69
|
+
* exceeds the size cap so callers can spread the value into an
|
|
70
|
+
* optional `details` field without polluting it.
|
|
71
|
+
*
|
|
72
|
+
* Properties NOT in the allowlist are dropped silently (no warning;
|
|
73
|
+
* the design assumes the allowlist is the contract). Nested objects
|
|
74
|
+
* are recursively filtered with the SAME allowlist — there is no
|
|
75
|
+
* per-key allowlist for nested fields. Adopters who need per-level
|
|
76
|
+
* filtering should call `pickSafeDetails` recursively on each
|
|
77
|
+
* nested value.
|
|
78
|
+
*
|
|
79
|
+
* Common-sense behaviors:
|
|
80
|
+
* - `null` / `undefined` / non-object input → `undefined`
|
|
81
|
+
* - Empty result after filtering → `undefined`
|
|
82
|
+
* - Arrays at the top level → `undefined` (use a wrapping object)
|
|
83
|
+
* - Functions and Symbols are dropped
|
|
84
|
+
* - Date / RegExp / Error / Map / Set are dropped (use a string
|
|
85
|
+
* allowlist of primitive fields, or pre-shape the input)
|
|
86
|
+
*
|
|
87
|
+
* @public
|
|
88
|
+
*/
|
|
89
|
+
export declare function pickSafeDetails(input: unknown, allowlist: readonly string[], opts?: PickSafeDetailsOptions): Record<string, unknown> | undefined;
|
|
90
|
+
//# sourceMappingURL=pick-safe-details.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pick-safe-details.d.ts","sourceRoot":"","sources":["../../../src/lib/server/pick-safe-details.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,MAAM,WAAW,sBAAsB;IACrC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAOD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,IAAI,CAAC,EAAE,sBAAsB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAyBrC"}
|