@adcp/sdk 5.25.1 → 6.1.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/core/AgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.d.ts.map +1 -1
- package/dist/lib/core/SingleAgentClient.js +27 -0
- package/dist/lib/core/SingleAgentClient.js.map +1 -1
- package/dist/lib/core/TaskExecutor.d.ts +21 -0
- package/dist/lib/core/TaskExecutor.d.ts.map +1 -1
- package/dist/lib/core/TaskExecutor.js +25 -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/schemas/index.d.ts +1 -1
- package/dist/lib/schemas/index.js +1 -1
- package/dist/lib/schemas-data/v2.5/_provenance.json +8 -0
- package/dist/lib/schemas-data/v2.5/adagents.json +494 -0
- package/dist/lib/schemas-data/v2.5/core/activation-key.json +50 -0
- package/dist/lib/schemas-data/v2.5/core/assets/audio-asset.json +32 -0
- package/dist/lib/schemas-data/v2.5/core/assets/css-asset.json +21 -0
- package/dist/lib/schemas-data/v2.5/core/assets/daast-asset.json +87 -0
- package/dist/lib/schemas-data/v2.5/core/assets/html-asset.json +21 -0
- package/dist/lib/schemas-data/v2.5/core/assets/image-asset.json +38 -0
- package/dist/lib/schemas-data/v2.5/core/assets/javascript-asset.json +21 -0
- package/dist/lib/schemas-data/v2.5/core/assets/markdown-asset.json +31 -0
- package/dist/lib/schemas-data/v2.5/core/assets/text-asset.json +21 -0
- package/dist/lib/schemas-data/v2.5/core/assets/url-asset.json +26 -0
- package/dist/lib/schemas-data/v2.5/core/assets/vast-asset.json +87 -0
- package/dist/lib/schemas-data/v2.5/core/assets/video-asset.json +44 -0
- package/dist/lib/schemas-data/v2.5/core/assets/webhook-asset.json +71 -0
- package/dist/lib/schemas-data/v2.5/core/async-response-data.json +88 -0
- package/dist/lib/schemas-data/v2.5/core/brand-manifest-ref.json +33 -0
- package/dist/lib/schemas-data/v2.5/core/brand-manifest.json +409 -0
- package/dist/lib/schemas-data/v2.5/core/context.json +8 -0
- package/dist/lib/schemas-data/v2.5/core/creative-asset.json +125 -0
- package/dist/lib/schemas-data/v2.5/core/creative-assignment.json +31 -0
- package/dist/lib/schemas-data/v2.5/core/creative-filters.json +111 -0
- package/dist/lib/schemas-data/v2.5/core/creative-manifest.json +72 -0
- package/dist/lib/schemas-data/v2.5/core/creative-policy.json +27 -0
- package/dist/lib/schemas-data/v2.5/core/delivery-metrics.json +171 -0
- package/dist/lib/schemas-data/v2.5/core/deployment.json +93 -0
- package/dist/lib/schemas-data/v2.5/core/destination.json +53 -0
- package/dist/lib/schemas-data/v2.5/core/error.json +40 -0
- package/dist/lib/schemas-data/v2.5/core/ext.json +8 -0
- package/dist/lib/schemas-data/v2.5/core/format-id.json +47 -0
- package/dist/lib/schemas-data/v2.5/core/format.json +324 -0
- package/dist/lib/schemas-data/v2.5/core/frequency-cap.json +18 -0
- package/dist/lib/schemas-data/v2.5/core/mcp-webhook-payload.json +152 -0
- package/dist/lib/schemas-data/v2.5/core/measurement.json +48 -0
- package/dist/lib/schemas-data/v2.5/core/media-buy.json +62 -0
- package/dist/lib/schemas-data/v2.5/core/package.json +72 -0
- package/dist/lib/schemas-data/v2.5/core/performance-feedback.json +90 -0
- package/dist/lib/schemas-data/v2.5/core/placement.json +34 -0
- package/dist/lib/schemas-data/v2.5/core/pricing-option.json +35 -0
- package/dist/lib/schemas-data/v2.5/core/product-filters.json +102 -0
- package/dist/lib/schemas-data/v2.5/core/product.json +153 -0
- package/dist/lib/schemas-data/v2.5/core/promoted-offerings.json +115 -0
- package/dist/lib/schemas-data/v2.5/core/promoted-products.json +67 -0
- package/dist/lib/schemas-data/v2.5/core/property-id.json +14 -0
- package/dist/lib/schemas-data/v2.5/core/property-tag.json +16 -0
- package/dist/lib/schemas-data/v2.5/core/property.json +62 -0
- package/dist/lib/schemas-data/v2.5/core/protocol-envelope.json +146 -0
- package/dist/lib/schemas-data/v2.5/core/publisher-property-selector.json +92 -0
- package/dist/lib/schemas-data/v2.5/core/push-notification-config.json +48 -0
- package/dist/lib/schemas-data/v2.5/core/reporting-capabilities.json +71 -0
- package/dist/lib/schemas-data/v2.5/core/response.json +24 -0
- package/dist/lib/schemas-data/v2.5/core/signal-filters.json +35 -0
- package/dist/lib/schemas-data/v2.5/core/start-timing.json +18 -0
- package/dist/lib/schemas-data/v2.5/core/sub-asset.json +79 -0
- package/dist/lib/schemas-data/v2.5/core/targeting.json +50 -0
- package/dist/lib/schemas-data/v2.5/core/tasks-get-request.json +43 -0
- package/dist/lib/schemas-data/v2.5/core/tasks-get-response.json +166 -0
- package/dist/lib/schemas-data/v2.5/core/tasks-list-request.json +192 -0
- package/dist/lib/schemas-data/v2.5/core/tasks-list-response.json +183 -0
- package/dist/lib/schemas-data/v2.5/creative/asset-types/index.json +101 -0
- package/dist/lib/schemas-data/v2.5/creative/list-creative-formats-request.json +73 -0
- package/dist/lib/schemas-data/v2.5/creative/list-creative-formats-response.json +61 -0
- package/dist/lib/schemas-data/v2.5/creative/preview-creative-request.json +164 -0
- package/dist/lib/schemas-data/v2.5/creative/preview-creative-response.json +245 -0
- package/dist/lib/schemas-data/v2.5/creative/preview-render.json +225 -0
- package/dist/lib/schemas-data/v2.5/enums/adcp-domain.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/asset-content-type.json +22 -0
- package/dist/lib/schemas-data/v2.5/enums/auth-scheme.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/available-metric.json +18 -0
- package/dist/lib/schemas-data/v2.5/enums/channels.json +18 -0
- package/dist/lib/schemas-data/v2.5/enums/co-branding-requirement.json +12 -0
- package/dist/lib/schemas-data/v2.5/enums/creative-action.json +14 -0
- package/dist/lib/schemas-data/v2.5/enums/creative-agent-capability.json +13 -0
- package/dist/lib/schemas-data/v2.5/enums/creative-sort-field.json +15 -0
- package/dist/lib/schemas-data/v2.5/enums/creative-status.json +19 -0
- package/dist/lib/schemas-data/v2.5/enums/daast-tracking-event.json +20 -0
- package/dist/lib/schemas-data/v2.5/enums/daast-version.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/delivery-type.json +15 -0
- package/dist/lib/schemas-data/v2.5/enums/dimension-unit.json +13 -0
- package/dist/lib/schemas-data/v2.5/enums/feed-format.json +12 -0
- package/dist/lib/schemas-data/v2.5/enums/feedback-source.json +13 -0
- package/dist/lib/schemas-data/v2.5/enums/format-category.json +16 -0
- package/dist/lib/schemas-data/v2.5/enums/format-id-parameter.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/frequency-cap-scope.json +13 -0
- package/dist/lib/schemas-data/v2.5/enums/history-entry-type.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/http-method.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/identifier-types.json +34 -0
- package/dist/lib/schemas-data/v2.5/enums/javascript-module-type.json +12 -0
- package/dist/lib/schemas-data/v2.5/enums/landing-page-requirement.json +12 -0
- package/dist/lib/schemas-data/v2.5/enums/markdown-flavor.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/media-buy-status.json +19 -0
- package/dist/lib/schemas-data/v2.5/enums/metric-type.json +17 -0
- package/dist/lib/schemas-data/v2.5/enums/notification-type.json +13 -0
- package/dist/lib/schemas-data/v2.5/enums/pacing.json +17 -0
- package/dist/lib/schemas-data/v2.5/enums/preview-output-format.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/pricing-model.json +25 -0
- package/dist/lib/schemas-data/v2.5/enums/property-type.json +16 -0
- package/dist/lib/schemas-data/v2.5/enums/publisher-identifier-types.json +19 -0
- package/dist/lib/schemas-data/v2.5/enums/reporting-frequency.json +12 -0
- package/dist/lib/schemas-data/v2.5/enums/signal-catalog-type.json +12 -0
- package/dist/lib/schemas-data/v2.5/enums/sort-direction.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/standard-format-ids.json +103 -0
- package/dist/lib/schemas-data/v2.5/enums/task-status.json +29 -0
- package/dist/lib/schemas-data/v2.5/enums/task-type.json +27 -0
- package/dist/lib/schemas-data/v2.5/enums/update-frequency.json +13 -0
- package/dist/lib/schemas-data/v2.5/enums/url-asset-type.json +12 -0
- package/dist/lib/schemas-data/v2.5/enums/validation-mode.json +11 -0
- package/dist/lib/schemas-data/v2.5/enums/vast-tracking-event.json +25 -0
- package/dist/lib/schemas-data/v2.5/enums/vast-version.json +14 -0
- package/dist/lib/schemas-data/v2.5/enums/webhook-response-type.json +13 -0
- package/dist/lib/schemas-data/v2.5/enums/webhook-security-method.json +12 -0
- package/dist/lib/schemas-data/v2.5/index.json +604 -0
- package/dist/lib/schemas-data/v2.5/media-buy/build-creative-request.json +31 -0
- package/dist/lib/schemas-data/v2.5/media-buy/build-creative-response.json +65 -0
- package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-async-response-input-required.json +31 -0
- package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-async-response-submitted.json +16 -0
- package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-async-response-working.json +36 -0
- package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-request.json +126 -0
- package/dist/lib/schemas-data/v2.5/media-buy/create-media-buy-response.json +97 -0
- package/dist/lib/schemas-data/v2.5/media-buy/get-media-buy-delivery-request.json +54 -0
- package/dist/lib/schemas-data/v2.5/media-buy/get-media-buy-delivery-response.json +285 -0
- package/dist/lib/schemas-data/v2.5/media-buy/get-products-async-response-input-required.json +38 -0
- package/dist/lib/schemas-data/v2.5/media-buy/get-products-async-response-submitted.json +21 -0
- package/dist/lib/schemas-data/v2.5/media-buy/get-products-async-response-working.json +34 -0
- package/dist/lib/schemas-data/v2.5/media-buy/get-products-request.json +28 -0
- package/dist/lib/schemas-data/v2.5/media-buy/get-products-response.json +33 -0
- package/dist/lib/schemas-data/v2.5/media-buy/list-authorized-properties-request.json +26 -0
- package/dist/lib/schemas-data/v2.5/media-buy/list-authorized-properties-response.json +70 -0
- package/dist/lib/schemas-data/v2.5/media-buy/list-creative-formats-request.json +58 -0
- package/dist/lib/schemas-data/v2.5/media-buy/list-creative-formats-response.json +61 -0
- package/dist/lib/schemas-data/v2.5/media-buy/list-creatives-request.json +137 -0
- package/dist/lib/schemas-data/v2.5/media-buy/list-creatives-response.json +437 -0
- package/dist/lib/schemas-data/v2.5/media-buy/package-request.json +80 -0
- package/dist/lib/schemas-data/v2.5/media-buy/provide-performance-feedback-request.json +88 -0
- package/dist/lib/schemas-data/v2.5/media-buy/provide-performance-feedback-response.json +66 -0
- package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-async-response-input-required.json +25 -0
- package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-async-response-submitted.json +16 -0
- package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-async-response-working.json +46 -0
- package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-request.json +178 -0
- package/dist/lib/schemas-data/v2.5/media-buy/sync-creatives-response.json +149 -0
- package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-async-response-input-required.json +24 -0
- package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-async-response-submitted.json +16 -0
- package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-async-response-working.json +36 -0
- package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-request.json +129 -0
- package/dist/lib/schemas-data/v2.5/media-buy/update-media-buy-response.json +99 -0
- package/dist/lib/schemas-data/v2.5/pricing-options/cpc-option.json +52 -0
- package/dist/lib/schemas-data/v2.5/pricing-options/cpcv-option.json +52 -0
- package/dist/lib/schemas-data/v2.5/pricing-options/cpm-auction-option.json +81 -0
- package/dist/lib/schemas-data/v2.5/pricing-options/cpm-fixed-option.json +52 -0
- package/dist/lib/schemas-data/v2.5/pricing-options/cpp-option.json +73 -0
- package/dist/lib/schemas-data/v2.5/pricing-options/cpv-option.json +88 -0
- package/dist/lib/schemas-data/v2.5/pricing-options/flat-rate-option.json +93 -0
- package/dist/lib/schemas-data/v2.5/pricing-options/vcpm-auction-option.json +81 -0
- package/dist/lib/schemas-data/v2.5/pricing-options/vcpm-fixed-option.json +52 -0
- package/dist/lib/schemas-data/v2.5/protocols/adcp-extension.json +33 -0
- package/dist/lib/schemas-data/v2.5/signals/activate-signal-request.json +32 -0
- package/dist/lib/schemas-data/v2.5/signals/activate-signal-response.json +68 -0
- package/dist/lib/schemas-data/v2.5/signals/get-signals-request.json +59 -0
- package/dist/lib/schemas-data/v2.5/signals/get-signals-response.json +100 -0
- package/dist/lib/server/create-adcp-server.d.ts +129 -11
- package/dist/lib/server/create-adcp-server.d.ts.map +1 -1
- package/dist/lib/server/create-adcp-server.js +127 -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 +260 -7
- package/dist/lib/testing/storyboard/runner.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/utils/creative-adapter.d.ts +32 -2
- package/dist/lib/utils/creative-adapter.d.ts.map +1 -1
- package/dist/lib/utils/creative-adapter.js +42 -6
- package/dist/lib/utils/creative-adapter.js.map +1 -1
- package/dist/lib/validation/schema-loader.d.ts.map +1 -1
- package/dist/lib/validation/schema-loader.js +20 -2
- package/dist/lib/validation/schema-loader.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 +18 -5
- 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
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SignalsPlatform — signal-marketplace + signal-owned specialism interface
|
|
4
|
+
* (v6.0).
|
|
5
|
+
*
|
|
6
|
+
* Two specialisms share the same platform interface:
|
|
7
|
+
*
|
|
8
|
+
* - **`signal-marketplace`** — third-party data brokers serving curated
|
|
9
|
+
* audience signals (LiveRamp, Oracle Data Cloud, third-party DMPs)
|
|
10
|
+
* - **`signal-owned`** — first-party data providers serving their own
|
|
11
|
+
* signals (publisher first-party data, retailer customer-graph)
|
|
12
|
+
*
|
|
13
|
+
* Both expose the same surface: `getSignals` for catalog discovery and
|
|
14
|
+
* `activateSignal` for provisioning a signal onto a destination platform.
|
|
15
|
+
*
|
|
16
|
+
* Async story: `activate_signal` is sync at the wire level — its response
|
|
17
|
+
* union has no `Submitted` arm. Long-running activation pipelines (identity-
|
|
18
|
+
* graph match: 5-30 min, destination provisioning: hours) return the wire
|
|
19
|
+
* `ActivateSignalSuccess` immediately with deployments in `pending` state,
|
|
20
|
+
* then emit `publishStatusChange({ resource_type: 'signal', ... })` events
|
|
21
|
+
* as each deployment reaches `activating` / `deployed` / `failed`.
|
|
22
|
+
*
|
|
23
|
+
* Status: Preview / 6.0.
|
|
24
|
+
*
|
|
25
|
+
* @public
|
|
26
|
+
*/
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
//# sourceMappingURL=signals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../../../src/lib/server/decisioning/specialisms/signals.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a wire `start_time` into a concrete `Date`, with platform-aware
|
|
3
|
+
* ASAP semantics.
|
|
4
|
+
*
|
|
5
|
+
* The wire shape is `string | undefined` where the string is either an
|
|
6
|
+
* ISO 8601 timestamp OR the literal `'asap'`. Every platform method that
|
|
7
|
+
* touches `start_time` has to:
|
|
8
|
+
* 1. Handle the union (and the undefined case)
|
|
9
|
+
* 2. Validate that an ISO timestamp parses + isn't in the past
|
|
10
|
+
* 3. Interpret `'asap'` as a sensible date for THIS platform
|
|
11
|
+
*
|
|
12
|
+
* Step 3 is platform-specific. For programmatic sellers, ASAP means
|
|
13
|
+
* `now()`. For guaranteed/broadcast sellers with a 1-3 day trafficker
|
|
14
|
+
* approval pipeline, ASAP means `now() + approval lead time` because the
|
|
15
|
+
* buy can't physically start before the operator signs off. This helper
|
|
16
|
+
* takes a config object so each adopter injects their own semantics
|
|
17
|
+
* consistently across `createMediaBuy(Task)` and `updateMediaBuy`.
|
|
18
|
+
*
|
|
19
|
+
* @example Programmatic seller (no approval)
|
|
20
|
+
* ```ts
|
|
21
|
+
* const startAt = resolveStartTime(req.start_time, {});
|
|
22
|
+
* // 'asap' → now()
|
|
23
|
+
* // '2026-05-01T00:00:00Z' → that date
|
|
24
|
+
* // undefined → now()
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @example Broadcast seller with 2-day IO sign-off + 1-day default lead
|
|
28
|
+
* ```ts
|
|
29
|
+
* const startAt = resolveStartTime(req.start_time, {
|
|
30
|
+
* asapLeadTimeMs: 2 * 86_400_000,
|
|
31
|
+
* defaultLeadTimeMs: 86_400_000,
|
|
32
|
+
* notBefore: new Date(),
|
|
33
|
+
* });
|
|
34
|
+
* // 'asap' → now() + 2 days
|
|
35
|
+
* // past date → throws AdcpError(INVALID_REQUEST)
|
|
36
|
+
* // undefined → now() + 1 day
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* @public
|
|
40
|
+
*/
|
|
41
|
+
export interface ResolveStartTimeOptions {
|
|
42
|
+
/**
|
|
43
|
+
* When `start_time` is the literal `'asap'`, return `now() + this`.
|
|
44
|
+
* Models the platform's approval / trafficking pipeline that runs
|
|
45
|
+
* before a buy can actually start. Default `0` (interpret asap as
|
|
46
|
+
* truly now, suitable for programmatic platforms).
|
|
47
|
+
*/
|
|
48
|
+
asapLeadTimeMs?: number;
|
|
49
|
+
/**
|
|
50
|
+
* When `start_time` is `undefined`, return `now() + this`. Lets adopters
|
|
51
|
+
* pick whether "no start_time specified" means "asap" (use the same
|
|
52
|
+
* lead time) or some other default. Defaults to the value of
|
|
53
|
+
* `asapLeadTimeMs`.
|
|
54
|
+
*/
|
|
55
|
+
defaultLeadTimeMs?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Reject parsed timestamps strictly before this. Most adopters pass
|
|
58
|
+
* `new Date()` to forbid past start times. Omit to skip the check.
|
|
59
|
+
*/
|
|
60
|
+
notBefore?: Date;
|
|
61
|
+
/**
|
|
62
|
+
* Override the field name on the error message when validation throws.
|
|
63
|
+
* Defaults to `'start_time'`. Set to `'patch.start_time'` (or similar)
|
|
64
|
+
* when calling from `updateMediaBuy`.
|
|
65
|
+
*/
|
|
66
|
+
fieldName?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Normalize the wire `start_time` value into a guaranteed-non-null Date.
|
|
70
|
+
*
|
|
71
|
+
* Throws `AdcpError('INVALID_REQUEST')` when the string isn't a parseable
|
|
72
|
+
* ISO 8601 timestamp OR when the parsed date is before `opts.notBefore`.
|
|
73
|
+
* Returns `now() + lead time` for `'asap'` and `undefined` inputs.
|
|
74
|
+
*/
|
|
75
|
+
export declare function resolveStartTime(raw: string | undefined, opts?: ResolveStartTimeOptions): Date;
|
|
76
|
+
//# sourceMappingURL=start-time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-time.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/start-time.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAIH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,GAAE,uBAA4B,GAAG,IAAI,CAgClG"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve a wire `start_time` into a concrete `Date`, with platform-aware
|
|
4
|
+
* ASAP semantics.
|
|
5
|
+
*
|
|
6
|
+
* The wire shape is `string | undefined` where the string is either an
|
|
7
|
+
* ISO 8601 timestamp OR the literal `'asap'`. Every platform method that
|
|
8
|
+
* touches `start_time` has to:
|
|
9
|
+
* 1. Handle the union (and the undefined case)
|
|
10
|
+
* 2. Validate that an ISO timestamp parses + isn't in the past
|
|
11
|
+
* 3. Interpret `'asap'` as a sensible date for THIS platform
|
|
12
|
+
*
|
|
13
|
+
* Step 3 is platform-specific. For programmatic sellers, ASAP means
|
|
14
|
+
* `now()`. For guaranteed/broadcast sellers with a 1-3 day trafficker
|
|
15
|
+
* approval pipeline, ASAP means `now() + approval lead time` because the
|
|
16
|
+
* buy can't physically start before the operator signs off. This helper
|
|
17
|
+
* takes a config object so each adopter injects their own semantics
|
|
18
|
+
* consistently across `createMediaBuy(Task)` and `updateMediaBuy`.
|
|
19
|
+
*
|
|
20
|
+
* @example Programmatic seller (no approval)
|
|
21
|
+
* ```ts
|
|
22
|
+
* const startAt = resolveStartTime(req.start_time, {});
|
|
23
|
+
* // 'asap' → now()
|
|
24
|
+
* // '2026-05-01T00:00:00Z' → that date
|
|
25
|
+
* // undefined → now()
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* @example Broadcast seller with 2-day IO sign-off + 1-day default lead
|
|
29
|
+
* ```ts
|
|
30
|
+
* const startAt = resolveStartTime(req.start_time, {
|
|
31
|
+
* asapLeadTimeMs: 2 * 86_400_000,
|
|
32
|
+
* defaultLeadTimeMs: 86_400_000,
|
|
33
|
+
* notBefore: new Date(),
|
|
34
|
+
* });
|
|
35
|
+
* // 'asap' → now() + 2 days
|
|
36
|
+
* // past date → throws AdcpError(INVALID_REQUEST)
|
|
37
|
+
* // undefined → now() + 1 day
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @public
|
|
41
|
+
*/
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.resolveStartTime = resolveStartTime;
|
|
44
|
+
const async_outcome_1 = require("./async-outcome");
|
|
45
|
+
/**
|
|
46
|
+
* Normalize the wire `start_time` value into a guaranteed-non-null Date.
|
|
47
|
+
*
|
|
48
|
+
* Throws `AdcpError('INVALID_REQUEST')` when the string isn't a parseable
|
|
49
|
+
* ISO 8601 timestamp OR when the parsed date is before `opts.notBefore`.
|
|
50
|
+
* Returns `now() + lead time` for `'asap'` and `undefined` inputs.
|
|
51
|
+
*/
|
|
52
|
+
function resolveStartTime(raw, opts = {}) {
|
|
53
|
+
const asapLead = opts.asapLeadTimeMs ?? 0;
|
|
54
|
+
const defaultLead = opts.defaultLeadTimeMs ?? asapLead;
|
|
55
|
+
const fieldName = opts.fieldName ?? 'start_time';
|
|
56
|
+
if (raw === undefined) {
|
|
57
|
+
return new Date(Date.now() + defaultLead);
|
|
58
|
+
}
|
|
59
|
+
if (raw === 'asap') {
|
|
60
|
+
return new Date(Date.now() + asapLead);
|
|
61
|
+
}
|
|
62
|
+
const parsed = new Date(raw);
|
|
63
|
+
if (isNaN(parsed.getTime())) {
|
|
64
|
+
throw new async_outcome_1.AdcpError('INVALID_REQUEST', {
|
|
65
|
+
recovery: 'correctable',
|
|
66
|
+
message: `${fieldName} is not a valid ISO 8601 timestamp: '${raw}'`,
|
|
67
|
+
field: fieldName,
|
|
68
|
+
suggestion: "Use 'asap' or an ISO 8601 timestamp (e.g., '2026-05-01T00:00:00Z')",
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (opts.notBefore && parsed.getTime() < opts.notBefore.getTime()) {
|
|
72
|
+
throw new async_outcome_1.AdcpError('INVALID_REQUEST', {
|
|
73
|
+
recovery: 'correctable',
|
|
74
|
+
message: `${fieldName} is in the past: ${parsed.toISOString()} (cutoff ${opts.notBefore.toISOString()})`,
|
|
75
|
+
field: fieldName,
|
|
76
|
+
suggestion: 'Use a future timestamp or `asap`',
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return parsed;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=start-time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"start-time.js","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/start-time.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;;AAuCH,4CAgCC;AArED,mDAA4C;AA8B5C;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,GAAuB,EAAE,OAAgC,EAAE;IAC1F,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,IAAI,QAAQ,CAAC;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC;IAEjD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,yBAAS,CAAC,iBAAiB,EAAE;YACrC,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,GAAG,SAAS,wCAAwC,GAAG,GAAG;YACnE,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,oEAAoE;SACjF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;QAClE,MAAM,IAAI,yBAAS,CAAC,iBAAiB,EAAE;YACrC,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,GAAG,SAAS,oBAAoB,MAAM,CAAC,WAAW,EAAE,YAAY,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG;YACxG,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE,kCAAkC;SAC/C,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status-change event bus for the v6.0 decisioning runtime.
|
|
3
|
+
*
|
|
4
|
+
* Adopters call `publishStatusChange(...)` from anywhere — webhook handler,
|
|
5
|
+
* cron, in-process worker, the body of a `*Task` method — to push lifecycle
|
|
6
|
+
* updates on a resource the framework knows about. The framework records
|
|
7
|
+
* the change against the resource and projects it to subscribed buyers via
|
|
8
|
+
* the MCP Resources subscription extension (`notifications/resources/updated`)
|
|
9
|
+
* and the equivalent A2A DataPart-typed message contract.
|
|
10
|
+
*
|
|
11
|
+
* Ten resource types are wired in v6.0 (matches AdCP 3.0 lifecycle
|
|
12
|
+
* channels):
|
|
13
|
+
*
|
|
14
|
+
* - `media_buy` — pending → active → completed; paused, canceled
|
|
15
|
+
* - `creative` — pending_review → approved/rejected
|
|
16
|
+
* - `audience` — matching → matched → activating → active
|
|
17
|
+
* - `signal` — pending → activated → expired
|
|
18
|
+
* - `proposal` — issued → accepted/expired/withdrawn
|
|
19
|
+
* - `plan` — draft → submitted → approved/rejected
|
|
20
|
+
* - `rights_grant` — pending → granted/denied/expired
|
|
21
|
+
* - `delivery_report`— staging → published (manual report-runs)
|
|
22
|
+
* - `property_list` — list-changed events (cache invalidation, fetch_token revoke)
|
|
23
|
+
* - `collection_list`— list-changed events (cache invalidation, fetch_token revoke)
|
|
24
|
+
*
|
|
25
|
+
* The bus is module-level so adopters can call `publishStatusChange(...)`
|
|
26
|
+
* without holding a reference to the server. The framework wires the bus
|
|
27
|
+
* into the server's resource registry at construction; in tests, the
|
|
28
|
+
* registry can be swapped via `setStatusChangeBus(...)`.
|
|
29
|
+
*
|
|
30
|
+
* Status: Preview / 6.0. Wire-level MCP Resources subscription handlers
|
|
31
|
+
* and the A2A backport land in a subsequent commit; this file ships the
|
|
32
|
+
* adopter-facing primitive and an in-memory subscriber model the runtime
|
|
33
|
+
* can consume.
|
|
34
|
+
*
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Resource categories whose lifecycle changes can be published on the
|
|
39
|
+
* status-change bus and projected to subscribed buyers.
|
|
40
|
+
*
|
|
41
|
+
* **Spec status (v6.0):** The AdCP spec doesn't yet ship a closed enum
|
|
42
|
+
* for `resource_type`. The values below are the v6 SDK's working set —
|
|
43
|
+
* the resource categories adopters publish lifecycle events against
|
|
44
|
+
* today. They become wire-visible via the URI scheme
|
|
45
|
+
* `adcp://{account_id}/{resource_type}/{resource_id}` projected to MCP
|
|
46
|
+
* Resources subscriptions.
|
|
47
|
+
*
|
|
48
|
+
* Filed upstream as adcontextprotocol/adcp#3412 proposing a normative
|
|
49
|
+
* `enums/status-change-resource-type.json`. When the spec lands the
|
|
50
|
+
* enum, this type becomes a `$ref` to the generated schema. Until then
|
|
51
|
+
* adopters subscribing across multiple AdCP agents may see drift; the
|
|
52
|
+
* SDK's set is the working canonical until the spec consolidates.
|
|
53
|
+
*
|
|
54
|
+
* Adopters publishing custom resource types not in this list should
|
|
55
|
+
* prefix with `x-` (e.g., `'x-pcim_session'`) to reduce collision risk
|
|
56
|
+
* with the eventual normative enum. The framework accepts any string
|
|
57
|
+
* (the type is widened with `(string & {})` for forward-compat) but
|
|
58
|
+
* only the values listed here have stable cross-SDK semantics.
|
|
59
|
+
*/
|
|
60
|
+
export type StatusChangeResourceType = 'media_buy' | 'creative' | 'audience' | 'signal' | 'proposal' | 'plan' | 'rights_grant' | 'delivery_report' | 'property_list' | 'collection_list' | (string & {});
|
|
61
|
+
/**
|
|
62
|
+
* A single status-change event.
|
|
63
|
+
*
|
|
64
|
+
* `account_id` scopes the event to a tenant; subscribers receive only
|
|
65
|
+
* events for their resolved account. `resource_uri` follows the MCP
|
|
66
|
+
* Resources URI scheme: `adcp://{account_id}/{resource_type}/{resource_id}`.
|
|
67
|
+
*/
|
|
68
|
+
export interface StatusChange<TPayload = unknown> {
|
|
69
|
+
account_id: string;
|
|
70
|
+
resource_type: StatusChangeResourceType;
|
|
71
|
+
resource_id: string;
|
|
72
|
+
/** Canonical MCP Resources URI for this resource. */
|
|
73
|
+
resource_uri: string;
|
|
74
|
+
/** ISO 8601 timestamp the change was observed. */
|
|
75
|
+
at: string;
|
|
76
|
+
/**
|
|
77
|
+
* Resource-type-specific change payload. Shape is the wire fragment the
|
|
78
|
+
* subscribed buyer will see — e.g., for `media_buy` it's the AdCP
|
|
79
|
+
* `media_buy_status_changes` message body.
|
|
80
|
+
*/
|
|
81
|
+
payload: TPayload;
|
|
82
|
+
/**
|
|
83
|
+
* Correlation id linking this change back to the buyer request that
|
|
84
|
+
* caused it. Useful for "show me everything that happened from this
|
|
85
|
+
* `create_media_buy` call" observability across HITL flows. Adopters
|
|
86
|
+
* pass through `ctx.task.id` (for `*Task`-driven changes) or any
|
|
87
|
+
* stable request identifier they generate at dispatch time.
|
|
88
|
+
*
|
|
89
|
+
* Optional — many status changes originate from cron / webhook /
|
|
90
|
+
* upstream-platform events that have no buyer-request correlation.
|
|
91
|
+
*/
|
|
92
|
+
caused_by_request_id?: string;
|
|
93
|
+
/**
|
|
94
|
+
* Status the resource was transitioning FROM. Lets subscribers assert
|
|
95
|
+
* legal transitions (`from: 'matching' → to: 'active'` is fine;
|
|
96
|
+
* `from: 'failed' → to: 'matching'` is a state-machine bug). The
|
|
97
|
+
* framework doesn't validate transitions in v6.0 (no per-resource
|
|
98
|
+
* state machine yet); the field is captured and projected to the
|
|
99
|
+
* wire so downstream consumers can.
|
|
100
|
+
*/
|
|
101
|
+
previous_status?: string;
|
|
102
|
+
}
|
|
103
|
+
export interface PublishStatusChangeOpts<TPayload = unknown> {
|
|
104
|
+
account_id: string;
|
|
105
|
+
resource_type: StatusChangeResourceType;
|
|
106
|
+
resource_id: string;
|
|
107
|
+
payload: TPayload;
|
|
108
|
+
/** Override the timestamp (defaults to now). Useful for replay/backfill. */
|
|
109
|
+
at?: string;
|
|
110
|
+
/**
|
|
111
|
+
* Correlation id linking this change to the buyer request that caused
|
|
112
|
+
* it. Inside `*Task` method bodies, pass `ctx.task.id` to thread the
|
|
113
|
+
* task lifecycle. Outside HITL flows, pass any stable request id you
|
|
114
|
+
* derive at dispatch time. Optional.
|
|
115
|
+
*/
|
|
116
|
+
caused_by_request_id?: string;
|
|
117
|
+
/** Status the resource was transitioning FROM. Optional. */
|
|
118
|
+
previous_status?: string;
|
|
119
|
+
}
|
|
120
|
+
export type StatusChangeListener = (event: StatusChange) => void | Promise<void>;
|
|
121
|
+
export interface StatusChangeBus {
|
|
122
|
+
publish<TPayload>(opts: PublishStatusChangeOpts<TPayload>): void;
|
|
123
|
+
/**
|
|
124
|
+
* Subscribe a listener. Returns an unsubscribe function. Listeners are
|
|
125
|
+
* fire-and-forget; rejected promises are caught and logged so one bad
|
|
126
|
+
* subscriber doesn't break delivery to others.
|
|
127
|
+
*/
|
|
128
|
+
subscribe(listener: StatusChangeListener): () => void;
|
|
129
|
+
/** Snapshot the most-recent N events (in-memory cache for `tasks/get` + replay). */
|
|
130
|
+
recent(limit?: number): readonly StatusChange[];
|
|
131
|
+
}
|
|
132
|
+
export declare function createInMemoryStatusChangeBus(opts?: {
|
|
133
|
+
recentLimit?: number;
|
|
134
|
+
}): StatusChangeBus;
|
|
135
|
+
/**
|
|
136
|
+
* Push a status change for a resource. Adopters call this from anywhere —
|
|
137
|
+
* webhook handler, cron, in-process worker — to surface lifecycle changes
|
|
138
|
+
* the framework projects to subscribed buyers.
|
|
139
|
+
*
|
|
140
|
+
* ```ts
|
|
141
|
+
* // After GAM webhook reports order activation:
|
|
142
|
+
* publishStatusChange({
|
|
143
|
+
* account_id: account.id,
|
|
144
|
+
* resource_type: 'media_buy',
|
|
145
|
+
* resource_id: gamOrderToBuyId(order),
|
|
146
|
+
* payload: { status: 'active', activated_at: order.startTime },
|
|
147
|
+
* });
|
|
148
|
+
* ```
|
|
149
|
+
*
|
|
150
|
+
* Buyers subscribed via MCP `resources/subscribe` (or the A2A equivalent)
|
|
151
|
+
* receive the change as a `notifications/resources/updated` notification
|
|
152
|
+
* carrying the `payload` as the resource's wire fragment.
|
|
153
|
+
*/
|
|
154
|
+
export declare function publishStatusChange<TPayload>(opts: PublishStatusChangeOpts<TPayload>): void;
|
|
155
|
+
/**
|
|
156
|
+
* Replace the active bus. The framework calls this at server construction
|
|
157
|
+
* to wire its own bus implementation; tests can call it to swap in a fake.
|
|
158
|
+
*
|
|
159
|
+
* Returns the previous bus so the caller can restore it (e.g., in a test
|
|
160
|
+
* teardown).
|
|
161
|
+
*/
|
|
162
|
+
export declare function setStatusChangeBus(bus: StatusChangeBus): StatusChangeBus;
|
|
163
|
+
/** Read the active bus (for the framework to wire subscribers). */
|
|
164
|
+
export declare function getStatusChangeBus(): StatusChangeBus;
|
|
165
|
+
//# sourceMappingURL=status-changes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-changes.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/status-changes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,wBAAwB,GAChC,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,UAAU,GACV,MAAM,GACN,cAAc,GACd,iBAAiB,GACjB,eAAe,GACf,iBAAiB,GAEjB,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAElB;;;;;;GAMG;AACH,MAAM,WAAW,YAAY,CAAC,QAAQ,GAAG,OAAO;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,wBAAwB,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,kDAAkD;IAClD,EAAE,EAAE,MAAM,CAAC;IACX;;;;OAIG;IACH,OAAO,EAAE,QAAQ,CAAC;IAClB;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB,CAAC,QAAQ,GAAG,OAAO;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,wBAAwB,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC;IAClB,4EAA4E;IAC5E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjF,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;IACjE;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAAC;IACtD,oFAAoF;IACpF,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,YAAY,EAAE,CAAC;CACjD;AAID,wBAAgB,6BAA6B,CAAC,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CA8C9F;AAQD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,uBAAuB,CAAC,QAAQ,CAAC,GAAG,IAAI,CAE3F;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAIxE;AAED,mEAAmE;AACnE,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Status-change event bus for the v6.0 decisioning runtime.
|
|
4
|
+
*
|
|
5
|
+
* Adopters call `publishStatusChange(...)` from anywhere — webhook handler,
|
|
6
|
+
* cron, in-process worker, the body of a `*Task` method — to push lifecycle
|
|
7
|
+
* updates on a resource the framework knows about. The framework records
|
|
8
|
+
* the change against the resource and projects it to subscribed buyers via
|
|
9
|
+
* the MCP Resources subscription extension (`notifications/resources/updated`)
|
|
10
|
+
* and the equivalent A2A DataPart-typed message contract.
|
|
11
|
+
*
|
|
12
|
+
* Ten resource types are wired in v6.0 (matches AdCP 3.0 lifecycle
|
|
13
|
+
* channels):
|
|
14
|
+
*
|
|
15
|
+
* - `media_buy` — pending → active → completed; paused, canceled
|
|
16
|
+
* - `creative` — pending_review → approved/rejected
|
|
17
|
+
* - `audience` — matching → matched → activating → active
|
|
18
|
+
* - `signal` — pending → activated → expired
|
|
19
|
+
* - `proposal` — issued → accepted/expired/withdrawn
|
|
20
|
+
* - `plan` — draft → submitted → approved/rejected
|
|
21
|
+
* - `rights_grant` — pending → granted/denied/expired
|
|
22
|
+
* - `delivery_report`— staging → published (manual report-runs)
|
|
23
|
+
* - `property_list` — list-changed events (cache invalidation, fetch_token revoke)
|
|
24
|
+
* - `collection_list`— list-changed events (cache invalidation, fetch_token revoke)
|
|
25
|
+
*
|
|
26
|
+
* The bus is module-level so adopters can call `publishStatusChange(...)`
|
|
27
|
+
* without holding a reference to the server. The framework wires the bus
|
|
28
|
+
* into the server's resource registry at construction; in tests, the
|
|
29
|
+
* registry can be swapped via `setStatusChangeBus(...)`.
|
|
30
|
+
*
|
|
31
|
+
* Status: Preview / 6.0. Wire-level MCP Resources subscription handlers
|
|
32
|
+
* and the A2A backport land in a subsequent commit; this file ships the
|
|
33
|
+
* adopter-facing primitive and an in-memory subscriber model the runtime
|
|
34
|
+
* can consume.
|
|
35
|
+
*
|
|
36
|
+
* @public
|
|
37
|
+
*/
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.createInMemoryStatusChangeBus = createInMemoryStatusChangeBus;
|
|
40
|
+
exports.publishStatusChange = publishStatusChange;
|
|
41
|
+
exports.setStatusChangeBus = setStatusChangeBus;
|
|
42
|
+
exports.getStatusChangeBus = getStatusChangeBus;
|
|
43
|
+
const DEFAULT_RECENT_LIMIT = 1000;
|
|
44
|
+
function createInMemoryStatusChangeBus(opts) {
|
|
45
|
+
const listeners = new Set();
|
|
46
|
+
const recent = [];
|
|
47
|
+
const recentLimit = opts?.recentLimit ?? DEFAULT_RECENT_LIMIT;
|
|
48
|
+
return {
|
|
49
|
+
publish(eventOpts) {
|
|
50
|
+
const event = {
|
|
51
|
+
account_id: eventOpts.account_id,
|
|
52
|
+
resource_type: eventOpts.resource_type,
|
|
53
|
+
resource_id: eventOpts.resource_id,
|
|
54
|
+
resource_uri: `adcp://${eventOpts.account_id}/${eventOpts.resource_type}/${eventOpts.resource_id}`,
|
|
55
|
+
at: eventOpts.at ?? new Date().toISOString(),
|
|
56
|
+
payload: eventOpts.payload,
|
|
57
|
+
...(eventOpts.caused_by_request_id !== undefined && { caused_by_request_id: eventOpts.caused_by_request_id }),
|
|
58
|
+
...(eventOpts.previous_status !== undefined && { previous_status: eventOpts.previous_status }),
|
|
59
|
+
};
|
|
60
|
+
recent.push(event);
|
|
61
|
+
if (recent.length > recentLimit)
|
|
62
|
+
recent.shift();
|
|
63
|
+
for (const listener of listeners) {
|
|
64
|
+
try {
|
|
65
|
+
const result = listener(event);
|
|
66
|
+
if (result && typeof result.catch === 'function') {
|
|
67
|
+
result.catch((err) => {
|
|
68
|
+
// eslint-disable-next-line no-console
|
|
69
|
+
console.warn('[adcp] status-change listener rejected:', err);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
// eslint-disable-next-line no-console
|
|
75
|
+
console.warn('[adcp] status-change listener threw:', err);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
subscribe(listener) {
|
|
80
|
+
listeners.add(listener);
|
|
81
|
+
return () => listeners.delete(listener);
|
|
82
|
+
},
|
|
83
|
+
recent(limit) {
|
|
84
|
+
const n = limit ?? recent.length;
|
|
85
|
+
return recent.slice(-n);
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
// Module-level adopter-facing primitive
|
|
91
|
+
// ---------------------------------------------------------------------------
|
|
92
|
+
let activeBus = createInMemoryStatusChangeBus();
|
|
93
|
+
/**
|
|
94
|
+
* Push a status change for a resource. Adopters call this from anywhere —
|
|
95
|
+
* webhook handler, cron, in-process worker — to surface lifecycle changes
|
|
96
|
+
* the framework projects to subscribed buyers.
|
|
97
|
+
*
|
|
98
|
+
* ```ts
|
|
99
|
+
* // After GAM webhook reports order activation:
|
|
100
|
+
* publishStatusChange({
|
|
101
|
+
* account_id: account.id,
|
|
102
|
+
* resource_type: 'media_buy',
|
|
103
|
+
* resource_id: gamOrderToBuyId(order),
|
|
104
|
+
* payload: { status: 'active', activated_at: order.startTime },
|
|
105
|
+
* });
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* Buyers subscribed via MCP `resources/subscribe` (or the A2A equivalent)
|
|
109
|
+
* receive the change as a `notifications/resources/updated` notification
|
|
110
|
+
* carrying the `payload` as the resource's wire fragment.
|
|
111
|
+
*/
|
|
112
|
+
function publishStatusChange(opts) {
|
|
113
|
+
activeBus.publish(opts);
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Replace the active bus. The framework calls this at server construction
|
|
117
|
+
* to wire its own bus implementation; tests can call it to swap in a fake.
|
|
118
|
+
*
|
|
119
|
+
* Returns the previous bus so the caller can restore it (e.g., in a test
|
|
120
|
+
* teardown).
|
|
121
|
+
*/
|
|
122
|
+
function setStatusChangeBus(bus) {
|
|
123
|
+
const prev = activeBus;
|
|
124
|
+
activeBus = bus;
|
|
125
|
+
return prev;
|
|
126
|
+
}
|
|
127
|
+
/** Read the active bus (for the framework to wire subscribers). */
|
|
128
|
+
function getStatusChangeBus() {
|
|
129
|
+
return activeBus;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=status-changes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-changes.js","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/status-changes.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;;AAoHH,sEA8CC;AA2BD,kDAEC;AASD,gDAIC;AAGD,gDAEC;AA/FD,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,SAAgB,6BAA6B,CAAC,IAA+B;IAC3E,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;IAClD,MAAM,MAAM,GAAmB,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,oBAAoB,CAAC;IAE9D,OAAO;QACL,OAAO,CAAW,SAA4C;YAC5D,MAAM,KAAK,GAA2B;gBACpC,UAAU,EAAE,SAAS,CAAC,UAAU;gBAChC,aAAa,EAAE,SAAS,CAAC,aAAa;gBACtC,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,YAAY,EAAE,UAAU,SAAS,CAAC,UAAU,IAAI,SAAS,CAAC,aAAa,IAAI,SAAS,CAAC,WAAW,EAAE;gBAClG,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC5C,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,GAAG,CAAC,SAAS,CAAC,oBAAoB,KAAK,SAAS,IAAI,EAAE,oBAAoB,EAAE,SAAS,CAAC,oBAAoB,EAAE,CAAC;gBAC7G,GAAG,CAAC,SAAS,CAAC,eAAe,KAAK,SAAS,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,eAAe,EAAE,CAAC;aAC/F,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,KAAqB,CAAC,CAAC;YACnC,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YAEhD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAqB,CAAC,CAAC;oBAC/C,IAAI,MAAM,IAAI,OAAQ,MAAwB,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;wBACnE,MAAwB,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;4BAC/C,sCAAsC;4BACtC,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;wBAC/D,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,sCAAsC;oBACtC,OAAO,CAAC,IAAI,CAAC,sCAAsC,EAAE,GAAG,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;QAED,SAAS,CAAC,QAA8B;YACtC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,CAAC,KAAc;YACnB,MAAM,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;YACjC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,wCAAwC;AACxC,8EAA8E;AAE9E,IAAI,SAAS,GAAoB,6BAA6B,EAAE,CAAC;AAEjE;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,mBAAmB,CAAW,IAAuC;IACnF,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB,CAAC,GAAoB;IACrD,MAAM,IAAI,GAAG,SAAS,CAAC;IACvB,SAAS,GAAG,GAAG,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mEAAmE;AACnE,SAAgB,kBAAkB;IAChC,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Native status mapping. Real ad systems have their own status models
|
|
3
|
+
* (GAM uses DRAFT/APPROVED/etc.; Spotify uses PENDING/ACTIVE; LiveRamp
|
|
4
|
+
* uses INGESTING/MATCHED/ACTIVATED). The platform implements one mapper
|
|
5
|
+
* per AdCP-typed status; framework calls them where wire responses need
|
|
6
|
+
* the AdCP-typed value.
|
|
7
|
+
*
|
|
8
|
+
* **Scope**: each mapper is a wire-status decoder for a single native
|
|
9
|
+
* status string. Rollup logic — taking N native statuses across multiple
|
|
10
|
+
* objects (GAM Order + LineItems, Criteo campaign + line items + creatives)
|
|
11
|
+
* and computing one AdCP-typed status — is platform-specific and lives in
|
|
12
|
+
* adapter code, NOT here. The mapper answers "what does GAM's `READY` mean
|
|
13
|
+
* in AdCP terms?"; the adapter answers "if any LineItem is `DISAPPROVED`,
|
|
14
|
+
* the buy is `rejected`; if all are `DELIVERING`, the buy is `active`".
|
|
15
|
+
*
|
|
16
|
+
* Status: Preview / 6.0.
|
|
17
|
+
*
|
|
18
|
+
* @public
|
|
19
|
+
*/
|
|
20
|
+
import type { AdcpAccountStatus } from './account';
|
|
21
|
+
/**
|
|
22
|
+
* One method per AdCP-typed status. All optional — platforms only map the
|
|
23
|
+
* statuses their AdCP-claimed specialisms expose.
|
|
24
|
+
*/
|
|
25
|
+
export interface StatusMappers {
|
|
26
|
+
account?(native: string): AdcpAccountStatus;
|
|
27
|
+
mediaBuy?(native: string): AdcpMediaBuyStatus;
|
|
28
|
+
creative?(native: string): AdcpCreativeStatus;
|
|
29
|
+
plan?(native: string): AdcpPlanStatus;
|
|
30
|
+
}
|
|
31
|
+
export type AdcpMediaBuyStatus = 'pending_creatives' | 'pending_start' | 'active' | 'paused' | 'completed' | 'rejected' | 'canceled';
|
|
32
|
+
export type AdcpCreativeStatus = 'pending_review' | 'approved' | 'rejected' | 'archived';
|
|
33
|
+
export type AdcpPlanStatus = 'active' | 'exhausted' | 'expired' | 'paused';
|
|
34
|
+
/**
|
|
35
|
+
* Identity mappers — when the platform's native status strings already match
|
|
36
|
+
* AdCP's typed enums (most modern platforms do for `active` / `paused`),
|
|
37
|
+
* adopters use this instead of writing the obvious passthrough functions.
|
|
38
|
+
*
|
|
39
|
+
* Falls back to the AdCP default for unknown native values:
|
|
40
|
+
* - mediaBuy: `'pending_creatives'`
|
|
41
|
+
* - creative: `'pending_review'`
|
|
42
|
+
* - account: `'active'`
|
|
43
|
+
* - plan: `'active'`
|
|
44
|
+
*/
|
|
45
|
+
export declare const identityStatusMappers: StatusMappers;
|
|
46
|
+
//# sourceMappingURL=status-mappers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-mappers.d.ts","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/status-mappers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAAC;IAC5C,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAC9C,QAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAC9C,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;CACvC;AAED,MAAM,MAAM,kBAAkB,GAC1B,mBAAmB,GACnB,eAAe,GACf,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,UAAU,GACV,UAAU,CAAC;AAEf,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAEzF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE3E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAcnC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Native status mapping. Real ad systems have their own status models
|
|
4
|
+
* (GAM uses DRAFT/APPROVED/etc.; Spotify uses PENDING/ACTIVE; LiveRamp
|
|
5
|
+
* uses INGESTING/MATCHED/ACTIVATED). The platform implements one mapper
|
|
6
|
+
* per AdCP-typed status; framework calls them where wire responses need
|
|
7
|
+
* the AdCP-typed value.
|
|
8
|
+
*
|
|
9
|
+
* **Scope**: each mapper is a wire-status decoder for a single native
|
|
10
|
+
* status string. Rollup logic — taking N native statuses across multiple
|
|
11
|
+
* objects (GAM Order + LineItems, Criteo campaign + line items + creatives)
|
|
12
|
+
* and computing one AdCP-typed status — is platform-specific and lives in
|
|
13
|
+
* adapter code, NOT here. The mapper answers "what does GAM's `READY` mean
|
|
14
|
+
* in AdCP terms?"; the adapter answers "if any LineItem is `DISAPPROVED`,
|
|
15
|
+
* the buy is `rejected`; if all are `DELIVERING`, the buy is `active`".
|
|
16
|
+
*
|
|
17
|
+
* Status: Preview / 6.0.
|
|
18
|
+
*
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
exports.identityStatusMappers = void 0;
|
|
23
|
+
/**
|
|
24
|
+
* Identity mappers — when the platform's native status strings already match
|
|
25
|
+
* AdCP's typed enums (most modern platforms do for `active` / `paused`),
|
|
26
|
+
* adopters use this instead of writing the obvious passthrough functions.
|
|
27
|
+
*
|
|
28
|
+
* Falls back to the AdCP default for unknown native values:
|
|
29
|
+
* - mediaBuy: `'pending_creatives'`
|
|
30
|
+
* - creative: `'pending_review'`
|
|
31
|
+
* - account: `'active'`
|
|
32
|
+
* - plan: `'active'`
|
|
33
|
+
*/
|
|
34
|
+
exports.identityStatusMappers = {
|
|
35
|
+
mediaBuy: native => (['pending_creatives', 'pending_start', 'active', 'paused', 'completed', 'rejected', 'canceled'].includes(native)
|
|
36
|
+
? native
|
|
37
|
+
: 'pending_creatives'),
|
|
38
|
+
creative: native => (['pending_review', 'approved', 'rejected', 'archived'].includes(native)
|
|
39
|
+
? native
|
|
40
|
+
: 'pending_review'),
|
|
41
|
+
account: native => (['active', 'pending_approval', 'rejected', 'payment_required', 'suspended', 'closed'].includes(native)
|
|
42
|
+
? native
|
|
43
|
+
: 'active'),
|
|
44
|
+
plan: native => (['active', 'exhausted', 'expired', 'paused'].includes(native) ? native : 'active'),
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=status-mappers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-mappers.js","sourceRoot":"","sources":["../../../../src/lib/server/decisioning/status-mappers.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AA4BH;;;;;;;;;;GAUG;AACU,QAAA,qBAAqB,GAAkB;IAClD,QAAQ,EAAE,MAAM,CAAC,EAAE,CACjB,CAAC,CAAC,mBAAmB,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/G,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,mBAAmB,CAAuB;IAChD,QAAQ,EAAE,MAAM,CAAC,EAAE,CACjB,CAAC,CAAC,gBAAgB,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtE,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,gBAAgB,CAAuB;IAC7C,OAAO,EAAE,MAAM,CAAC,EAAE,CAChB,CAAC,CAAC,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,kBAAkB,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrG,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,QAAQ,CAAsB;IACpC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAmB;CACtH,CAAC"}
|