@adcp/sdk 16.1.0 → 16.3.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/AGENTS.md +2 -0
- package/dist/lib/core/AgentClient.js +17 -1
- package/dist/lib/core/AgentClient.mjs +17 -1
- package/dist/lib/core/SingleAgentClient.js +13 -0
- package/dist/lib/core/SingleAgentClient.mjs +13 -0
- package/dist/lib/core/TaskExecutor.js +88 -13
- package/dist/lib/core/TaskExecutor.mjs +89 -14
- package/dist/lib/errors/index.d.mts +34 -0
- package/dist/lib/errors/index.d.ts +34 -0
- package/dist/lib/errors/index.js +11 -0
- package/dist/lib/errors/index.mjs +10 -0
- package/dist/lib/governance/authorization.d.mts +66 -0
- package/dist/lib/governance/authorization.d.ts +66 -0
- package/dist/lib/governance/authorization.js +181 -37
- package/dist/lib/governance/authorization.mjs +183 -36
- package/dist/lib/governance/index.d.mts +2 -2
- package/dist/lib/governance/index.d.ts +2 -2
- package/dist/lib/governance/index.js +4 -2
- package/dist/lib/governance/index.mjs +3 -1
- package/dist/lib/identity-3.3/index.d.mts +1 -0
- package/dist/lib/identity-3.3/index.d.ts +1 -0
- package/dist/lib/identity-3.3/index.js +3 -1
- package/dist/lib/identity-3.3/index.mjs +1 -0
- package/dist/lib/identity-3.3/jws-artifacts.d.mts +147 -0
- package/dist/lib/identity-3.3/jws-artifacts.d.ts +147 -0
- package/dist/lib/identity-3.3/jws-artifacts.js +258 -0
- package/dist/lib/identity-3.3/jws-artifacts.mjs +234 -0
- package/dist/lib/identity-3.3/revocation.d.mts +7 -0
- package/dist/lib/identity-3.3/revocation.d.ts +7 -0
- package/dist/lib/identity-3.3/revocation.js +13 -0
- package/dist/lib/identity-3.3/revocation.mjs +13 -0
- package/dist/lib/index.d.mts +3 -3
- package/dist/lib/index.d.ts +3 -3
- package/dist/lib/index.js +4 -0
- package/dist/lib/index.mjs +4 -0
- package/dist/lib/media-buy/compatibility.d.mts +1 -0
- package/dist/lib/media-buy/compatibility.d.ts +1 -0
- package/dist/lib/media-buy/compatibility.js +33 -10
- package/dist/lib/media-buy/compatibility.mjs +32 -14
- package/dist/lib/negotiation/buyer.js +11 -5
- package/dist/lib/negotiation/buyer.mjs +11 -5
- package/dist/lib/negotiation/types.d.mts +4 -2
- package/dist/lib/negotiation/types.d.ts +4 -2
- package/dist/lib/negotiation/verification.d.mts +15 -6
- package/dist/lib/negotiation/verification.d.ts +15 -6
- package/dist/lib/negotiation/verification.js +146 -27
- package/dist/lib/negotiation/verification.mjs +146 -28
- package/dist/lib/negotiation/version.d.mts +6 -0
- package/dist/lib/negotiation/version.d.ts +6 -0
- package/dist/lib/negotiation/version.js +60 -0
- package/dist/lib/negotiation/version.mjs +33 -0
- package/dist/lib/registry/types.generated.d.mts +24 -1
- package/dist/lib/registry/types.generated.d.ts +24 -1
- package/dist/lib/server/create-adcp-server.js +1 -1
- package/dist/lib/server/create-adcp-server.mjs +1 -1
- package/dist/lib/server/error-arm-tools.d.mts +10 -10
- package/dist/lib/server/error-arm-tools.d.ts +10 -10
- package/dist/lib/server/error-arm-tools.js +22 -58
- package/dist/lib/server/error-arm-tools.mjs +30 -65
- package/dist/lib/server/index.d.mts +2 -2
- package/dist/lib/server/index.d.ts +2 -2
- package/dist/lib/server/index.js +2 -0
- package/dist/lib/server/index.mjs +2 -0
- package/dist/lib/signing/web-bot-auth.js +5 -0
- package/dist/lib/signing/web-bot-auth.mjs +4 -0
- package/dist/lib/testing/compliance/comply.js +17 -0
- package/dist/lib/testing/compliance/comply.mjs +17 -0
- package/dist/lib/testing/index.d.mts +3 -0
- package/dist/lib/testing/index.d.ts +3 -0
- package/dist/lib/testing/index.js +44 -2
- package/dist/lib/testing/index.mjs +42 -0
- package/dist/lib/testing/storyboard/collection-selection.d.mts +259 -0
- package/dist/lib/testing/storyboard/collection-selection.d.ts +259 -0
- package/dist/lib/testing/storyboard/collection-selection.js +384 -0
- package/dist/lib/testing/storyboard/collection-selection.mjs +348 -0
- package/dist/lib/testing/storyboard/context.js +12 -6
- package/dist/lib/testing/storyboard/context.mjs +12 -6
- package/dist/lib/testing/storyboard/fixture-resolution.d.mts +39 -1
- package/dist/lib/testing/storyboard/fixture-resolution.d.ts +39 -1
- package/dist/lib/testing/storyboard/fixture-resolution.js +216 -12
- package/dist/lib/testing/storyboard/fixture-resolution.mjs +218 -12
- package/dist/lib/testing/storyboard/index.d.mts +9 -2
- package/dist/lib/testing/storyboard/index.d.ts +9 -2
- package/dist/lib/testing/storyboard/index.js +51 -2
- package/dist/lib/testing/storyboard/index.mjs +49 -1
- package/dist/lib/testing/storyboard/prepared-fixtures.d.mts +471 -0
- package/dist/lib/testing/storyboard/prepared-fixtures.d.ts +471 -0
- package/dist/lib/testing/storyboard/prepared-fixtures.js +434 -0
- package/dist/lib/testing/storyboard/prepared-fixtures.mjs +389 -0
- package/dist/lib/testing/storyboard/protected-context.d.mts +127 -0
- package/dist/lib/testing/storyboard/protected-context.d.ts +127 -0
- package/dist/lib/testing/storyboard/protected-context.js +301 -0
- package/dist/lib/testing/storyboard/protected-context.mjs +267 -0
- package/dist/lib/testing/storyboard/rejection-hints.js +13 -4
- package/dist/lib/testing/storyboard/rejection-hints.mjs +13 -4
- package/dist/lib/testing/storyboard/runner.d.mts +24 -0
- package/dist/lib/testing/storyboard/runner.d.ts +24 -0
- package/dist/lib/testing/storyboard/runner.js +1061 -105
- package/dist/lib/testing/storyboard/runner.mjs +1075 -106
- package/dist/lib/testing/storyboard/seeding.d.mts +15 -1
- package/dist/lib/testing/storyboard/seeding.d.ts +15 -1
- package/dist/lib/testing/storyboard/seeding.js +272 -12
- package/dist/lib/testing/storyboard/seeding.mjs +274 -13
- package/dist/lib/testing/storyboard/types.d.mts +207 -10
- package/dist/lib/testing/storyboard/types.d.ts +207 -10
- package/dist/lib/testing/storyboard/types.js +1 -1
- package/dist/lib/testing/storyboard/types.mjs +1 -1
- package/dist/lib/testing/storyboard/validations.d.mts +1 -1
- package/dist/lib/testing/storyboard/validations.d.ts +1 -1
- package/dist/lib/testing/storyboard/validations.js +95 -0
- package/dist/lib/testing/storyboard/validations.mjs +95 -0
- package/dist/lib/validation/bundled-schema-store.js +5 -0
- package/dist/lib/validation/bundled-schema-store.mjs +4 -0
- package/dist/lib/validation/schema-loader.js +19 -2
- package/dist/lib/validation/schema-loader.mjs +22 -3
- package/dist/lib/version.d.mts +3 -3
- package/dist/lib/version.d.ts +3 -3
- package/dist/lib/version.js +3 -3
- package/dist/lib/version.mjs +3 -3
- package/docs/TYPE-SUMMARY.md +2 -2
- package/docs/guides/COLLECTION-FIXTURE-FOUNDATION.md +850 -0
- package/docs/guides/PROPOSAL-TERMS-VERIFICATION.md +66 -0
- package/docs/llms.txt +4 -3
- package/docs/migration-14.x-rc-worksheet.md +4 -4
- package/docs/migration-agent-identity-3.3.md +51 -6
- package/package.json +6 -4
|
@@ -186,6 +186,19 @@ class OriginRevocationResolver {
|
|
|
186
186
|
}
|
|
187
187
|
return settled();
|
|
188
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* The most severe detail stored for a revoked key (R9: `keyCompromise` and
|
|
191
|
+
* the earliest `invalidity_date` win), or undefined when the key is not
|
|
192
|
+
* revoked. Reads the history store only; call {@link status} first to refresh.
|
|
193
|
+
* Throws {@link WebBotAuthUnavailableError} when the store fails.
|
|
194
|
+
*/
|
|
195
|
+
async detail(originUrl, keyid) {
|
|
196
|
+
try {
|
|
197
|
+
return await this.readStored((0, import_canonicalize.canonicalAgentOrigin)(originUrl), keyid);
|
|
198
|
+
} catch (error) {
|
|
199
|
+
throw new import_web_bot_auth.WebBotAuthUnavailableError("revocation_persistence_failed", error);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
189
202
|
async readStored(origin, keyid) {
|
|
190
203
|
try {
|
|
191
204
|
return await this.options.store.get(origin, keyid);
|
|
@@ -165,6 +165,19 @@ class OriginRevocationResolver {
|
|
|
165
165
|
}
|
|
166
166
|
return settled();
|
|
167
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* The most severe detail stored for a revoked key (R9: `keyCompromise` and
|
|
170
|
+
* the earliest `invalidity_date` win), or undefined when the key is not
|
|
171
|
+
* revoked. Reads the history store only; call {@link status} first to refresh.
|
|
172
|
+
* Throws {@link WebBotAuthUnavailableError} when the store fails.
|
|
173
|
+
*/
|
|
174
|
+
async detail(originUrl, keyid) {
|
|
175
|
+
try {
|
|
176
|
+
return await this.readStored(canonicalAgentOrigin(originUrl), keyid);
|
|
177
|
+
} catch (error) {
|
|
178
|
+
throw new WebBotAuthUnavailableError("revocation_persistence_failed", error);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
168
181
|
async readStored(origin, keyid) {
|
|
169
182
|
try {
|
|
170
183
|
return await this.options.store.get(origin, keyid);
|
package/dist/lib/index.d.mts
CHANGED
|
@@ -41,12 +41,12 @@ export type { GovernanceConfig, CampaignGovernanceConfig, GovernanceCheckResult,
|
|
|
41
41
|
export { GovernanceMiddleware } from './core/GovernanceMiddleware.mjs';
|
|
42
42
|
export { isGovernanceApproved, isGovernanceConditions, isGovernanceDenied, normalizeGovernanceVerdict, } from './core/GovernanceTypes.mjs';
|
|
43
43
|
export type { GovernanceDebugEntry } from './core/GovernanceMiddleware.mjs';
|
|
44
|
-
export { GOVERNANCE_AUTHORIZATION_CRITICAL_CLAIMS, GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceCommitment, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, buildGovernanceIntentRequest, buildGovernanceProposedCommitment, buildHumanReviewPlan, buildHumanOverride, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, getGovernanceEnforcementTasks, governancePurchaseTypeForTask, governanceTaskRequiresProposedCommitment, targetDeclaresGovernanceEnforcement, targetDeclaresLegacyGovernanceAwareness, validateGovernancePlan, verifyGovernanceAuthorization, createGovernanceAgentJwksResolver, REGULATED_HUMAN_REVIEW_CATEGORIES, ANNEX_III_POLICY_IDS, } from './governance/index.mjs';
|
|
44
|
+
export { GOVERNANCE_AUTHORIZATION_CRITICAL_CLAIMS, GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceCommitment, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, buildGovernanceIntentRequest, buildGovernanceProposedCommitment, buildHumanReviewPlan, buildHumanOverride, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, getGovernanceEnforcementTasks, governancePurchaseTypeForTask, governanceTaskRequiresProposedCommitment, targetDeclaresGovernanceEnforcement, targetDeclaresLegacyGovernanceAwareness, validateGovernancePlan, verifyGovernanceAuthorization, verifyHistoricalGovernanceContext, createGovernanceAgentJwksResolver, REGULATED_HUMAN_REVIEW_CATEGORIES, ANNEX_III_POLICY_IDS, } from './governance/index.mjs';
|
|
45
45
|
export { ssrfSafeFetch, decodeBodyAsJsonOrText, SSRF_TRANSIENT_CODES, SsrfRefusedError, isPrivateIp, isAlwaysBlocked, isLikelyPrivateUrl, type SsrfRefusedCode, type SsrfDnsLookup, type SsrfFetchOptions, type SsrfFetchResult, } from './net/index.mjs';
|
|
46
46
|
export { createCanonicalReferenceCache, createCanonicalReferenceResolver, canonicalReferenceCacheKey, resolveCanonicalReference, resolveFormatSchemaReference, resolvePlatformExtensionsReference, type CanonicalReference, type CanonicalReferenceCache, type CanonicalReferenceCacheOptions, type CanonicalReferenceError, type CanonicalReferenceErrorCode, type CanonicalReferenceFailureResult, type CanonicalReferenceKind, type CanonicalReferenceResolveOptions, type CanonicalReferenceResolvedResult, type CanonicalReferenceResolver, type CanonicalReferenceResolverOptions, type CanonicalReferenceResult, type CanonicalReferenceStatus, type ExternalRefDigestMap, type FormatSchemaReferenceResolvedResult, type FormatSchemaReferenceResult, type PlatformExtensionsReferenceResult, } from './canonical-references/index.mjs';
|
|
47
47
|
export { assessAcceptancePolicy, createAcceptancePolicyCatalogResolver, resolveAcceptancePolicyCatalog, resolveAcceptancePolicyProfiles, resolveVerifiedAcceptancePolicyProfiles, type AcceptancePolicyCatalog, type AcceptancePolicyCatalogErrorCode, type AcceptancePolicyCatalogFailure, type AcceptancePolicyCatalogIssue, type AcceptancePolicyCatalogResolver, type AcceptancePolicyCatalogResult, type AcceptancePolicyCatalogSuccess, type AcceptancePolicyDiscoveryCapability, type AcceptancePolicyProfile, type AcceptancePolicyProfileResolution, type AcceptancePolicyRegistryPolicy, type AcceptancePolicyRegistryResolver, type AcceptancePolicyReference, type AcceptancePolicyRequirement, type AcceptancePolicyRule, type AcceptancePolicySurface, type RegistryAcceptancePolicyProfileReference, type ResolveAcceptancePolicyCatalogOptions, type ResolveVerifiedAcceptancePolicyProfilesOptions, type ResolvedAcceptancePolicyDefault, type VerifiedAcceptancePolicyProfilesResult, type VerifiedAcceptancePolicyProfilesSuccess, } from './acceptance-policy/index.mjs';
|
|
48
48
|
export { type AcceptancePolicyAssessment, type AcceptancePolicyAssessmentDiagnostic, type AcceptancePolicyAssessmentDiagnosticCode, type AcceptancePolicyMatchedRule, type AcceptancePolicyOutcome, type AssessAcceptancePolicyInput, } from './acceptance-policy/evaluator.mjs';
|
|
49
|
-
export type { BuildGovernanceExecutionRequestInput, BuildGovernanceIntentRequestInput, BuildHumanReviewPlanInput, BuildHumanOverrideInput, DataSubjectContestation, GovernanceAuthorizationClaims, GovernanceAuthorizationCriticalClaim, GovernanceAuthorizationErrorCode, GovernanceAuthorizationFailure, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceEnforcementMode, GovernanceEnforcementTask, GovernancePlan, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, GovernanceValidationIssue, HumanOverride, InMemoryGovernanceReplayStoreOptions, PlanBudget, ReallocationAutonomy, VerifyGovernanceAuthorizationOptions, GovernanceBuyerIdentity, } from './governance/index.mjs';
|
|
49
|
+
export type { BuildGovernanceExecutionRequestInput, BuildGovernanceIntentRequestInput, BuildHumanReviewPlanInput, BuildHumanOverrideInput, DataSubjectContestation, GovernanceAuthorizationClaims, GovernanceAuthorizationCriticalClaim, GovernanceAuthorizationErrorCode, GovernanceAuthorizationFailure, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceEnforcementMode, GovernanceEnforcementTask, GovernancePlan, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, GovernanceValidationIssue, HumanOverride, InMemoryGovernanceReplayStoreOptions, PlanBudget, ReallocationAutonomy, VerifyGovernanceAuthorizationOptions, VerifyHistoricalGovernanceContextOptions, HistoricalGovernanceContextResult, GovernanceBuyerIdentity, } from './governance/index.mjs';
|
|
50
50
|
export type { BaseTaskEvent, ProtocolRequestEvent, ProtocolResponseEvent, TaskStatusEvent, ObjectEvent, TaskEvent, TaskEventCallbacks, } from './core/TaskEventTypes.mjs';
|
|
51
51
|
export { createOperationId } from './core/TaskEventTypes.mjs';
|
|
52
52
|
export type { AsyncHandlerConfig, WebhookMetadata, Activity, NotificationMetadata, MediaBuyDeliveryNotification, CreateMediaBuyStatusChangeHandler, UpdateMediaBuyStatusChangeHandler, SyncCreativesStatusChangeHandler, GetProductsStatusChangeHandler, ListProductsStatusChangeHandler, } from './core/AsyncHandler.mjs';
|
|
@@ -57,7 +57,7 @@ export * from './handlers/types.mjs';
|
|
|
57
57
|
export type { Storage, AtomicTakeStorage, DeferredTaskStorage, BatchStorage, PatternStorage, AgentCapabilities, ConversationState, DeferredTaskState, StorageConfig, StorageFactory, StorageMiddleware, } from './storage/interfaces.mjs';
|
|
58
58
|
export { MemoryStorage, createMemoryStorage, createMemoryStorageConfig } from './storage/MemoryStorage.mjs';
|
|
59
59
|
export { ADCPError, TaskTimeoutError, MaxClarificationError, DeferredTaskError, TaskAbortedError, AgentNotFoundError, UnsupportedTaskError, ProtocolError, ValidationError as ADCPValidationError, // Rename to avoid conflict
|
|
60
|
-
MissingInputHandlerError, InvalidContextError, ConfigurationError, AuthenticationCredentialsRejectedError, AuthenticationRequiredError, FeatureUnsupportedError, ProtocolFeatureUnsupportedError, UnsupportedBuyingModeError, AccountRequiredError, AccountPendingApprovalError, AccountAmbiguousError, BuyerSetupError, AccountNotFoundError, AccountSetupRequiredError, AccountPaymentRequiredError, AccountNotProvisionedError, SDK_ERROR_TO_PROTOCOL_ERROR_CODE, VersionUnsupportedError, IdempotencyConflictError, IdempotencyExpiredError, ResponseTooLargeError, ActionNotAllowedError, adcpErrorToTypedError, getClientPreflightAdcpError, isADCPError, isErrorOfType, extractErrorInfo, is401Error, mapSdkErrorCodeToProtocolErrorCode, } from './errors/index.mjs';
|
|
60
|
+
MissingInputHandlerError, InvalidContextError, ConfigurationError, AuthenticationCredentialsRejectedError, AuthenticationRequiredError, FeatureUnsupportedError, ProtocolFeatureUnsupportedError, UnsupportedBuyingModeError, AccountRequiredError, AccountPendingApprovalError, AccountAmbiguousError, BuyerSetupError, AccountNotFoundError, AccountSetupRequiredError, AccountPaymentRequiredError, AccountNotProvisionedError, SDK_ERROR_TO_PROTOCOL_ERROR_CODE, VersionUnsupportedError, IdempotencyConflictError, IdempotencyExpiredError, ResponseTooLargeError, ActionNotAllowedError, PreparedFixturesDeniedError, adcpErrorToTypedError, getClientPreflightAdcpError, isADCPError, isErrorOfType, extractErrorInfo, is401Error, mapSdkErrorCodeToProtocolErrorCode, } from './errors/index.mjs';
|
|
61
61
|
export type { OAuthMetadataInfo, ClientPreflightAdcpErrorInfo, ClientPreflightAdcpErrorRecovery, FeatureUnsupportedErrorOptions, ProtocolFeatureUnsupportedErrorOptions, ActionNotAllowedErrorDetails, ActionNotAllowedReasonValue, ActionNotAllowedAttemptedAction, ActionNotAllowedAvailableAction, ActionNotAllowedRecovery, } from './errors/index.mjs';
|
|
62
62
|
export type { ActionNotAllowedDetails, ActionNotAllowedReason, AvailableActionsResult, AvailableActionsSource, DecomposedUpdateMediaBuy, DecomposedUpdateMediaBuyMutation, LegacyCoarseAction, MediaBuyActionContext, MediaBuyActionId, MediaBuyActionMode, MediaBuyAvailableAction, MediaBuyMutationDirection, MediaBuyMutationScope, MediaBuyUpdateFieldAction, MediaBuyValidAction, ModeMismatchRecovery, PreflightAllowed, PreflightDenial, PreflightDenied, BuyerPropertyPolicy, NormalizedPolicyDomain, ProductPolicyProductLike, ProductPolicyResolvedProperty, ProductPropertyPolicyIdentifier, ProductPropertyPolicyDiagnostic, ProductPropertyPolicyDiagnosticCode, ProductPropertyPolicyDiagnosticSeverity, ProductPropertyPolicyMode, ProductPropertyPolicySelectorBehavior, ProductPropertyPolicyValidationResult, PreflightResult, ResolvedAction, SLAWindow, SlaWindow, StructuredOnlyMediaBuyAction, ResolvedTargetingInput, TargetingInputFor, ValidateProductsAgainstPropertyPolicyOptions, UpdateFieldEntry, UpdateMediaBuyRequestLike, } from './media-buy/index.mjs';
|
|
63
63
|
export { ACTIONS_BY_FIELD, LEGACY_COARSE_ACTIONS, STRUCTURED_ONLY_MEDIA_BUY_ACTIONS, UPDATE_FIELDS_BY_ACTION, applyTargetingInput, hasTargetingClears, resolveTargetingInput, canAddPackages, canCancel, canDecreaseBudget, canExtendFlight, canIncreaseBudget, canPause, canReallocateBudget, canRemoveCreative, canRemovePackages, canReplaceCreative, canResume, canShortenFlight, canUpdateCreativeAssignments, canUpdateFlightDates, canUpdateFrequencyCaps, canUpdatePacing, canUpdateTargeting, decomposeUpdateMediaBuy, findAvailableAction, getActionForMutation, getAvailableActions, getRollupParent, ProductPropertyPolicyError, normalizeDomainForPropertyPolicy, preflightUpdateMediaBuy, recoveryForModeMismatch, validateProductsAgainstPropertyPolicy, } from './media-buy/index.mjs';
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -41,12 +41,12 @@ export type { GovernanceConfig, CampaignGovernanceConfig, GovernanceCheckResult,
|
|
|
41
41
|
export { GovernanceMiddleware } from './core/GovernanceMiddleware';
|
|
42
42
|
export { isGovernanceApproved, isGovernanceConditions, isGovernanceDenied, normalizeGovernanceVerdict, } from './core/GovernanceTypes';
|
|
43
43
|
export type { GovernanceDebugEntry } from './core/GovernanceMiddleware';
|
|
44
|
-
export { GOVERNANCE_AUTHORIZATION_CRITICAL_CLAIMS, GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceCommitment, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, buildGovernanceIntentRequest, buildGovernanceProposedCommitment, buildHumanReviewPlan, buildHumanOverride, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, getGovernanceEnforcementTasks, governancePurchaseTypeForTask, governanceTaskRequiresProposedCommitment, targetDeclaresGovernanceEnforcement, targetDeclaresLegacyGovernanceAwareness, validateGovernancePlan, verifyGovernanceAuthorization, createGovernanceAgentJwksResolver, REGULATED_HUMAN_REVIEW_CATEGORIES, ANNEX_III_POLICY_IDS, } from './governance';
|
|
44
|
+
export { GOVERNANCE_AUTHORIZATION_CRITICAL_CLAIMS, GovernanceAuthorizationError, GovernanceReplayStoreAdapter, InMemoryGovernanceReplayStore, buildGovernanceCommitment, buildGovernanceExecutionCommitment, buildGovernanceExecutionRequest, buildGovernanceIntentRequest, buildGovernanceProposedCommitment, buildHumanReviewPlan, buildHumanOverride, computeGovernedPayloadHash, createGovernanceEnforcementMiddleware, getGovernanceEnforcementTasks, governancePurchaseTypeForTask, governanceTaskRequiresProposedCommitment, targetDeclaresGovernanceEnforcement, targetDeclaresLegacyGovernanceAwareness, validateGovernancePlan, verifyGovernanceAuthorization, verifyHistoricalGovernanceContext, createGovernanceAgentJwksResolver, REGULATED_HUMAN_REVIEW_CATEGORIES, ANNEX_III_POLICY_IDS, } from './governance';
|
|
45
45
|
export { ssrfSafeFetch, decodeBodyAsJsonOrText, SSRF_TRANSIENT_CODES, SsrfRefusedError, isPrivateIp, isAlwaysBlocked, isLikelyPrivateUrl, type SsrfRefusedCode, type SsrfDnsLookup, type SsrfFetchOptions, type SsrfFetchResult, } from './net';
|
|
46
46
|
export { createCanonicalReferenceCache, createCanonicalReferenceResolver, canonicalReferenceCacheKey, resolveCanonicalReference, resolveFormatSchemaReference, resolvePlatformExtensionsReference, type CanonicalReference, type CanonicalReferenceCache, type CanonicalReferenceCacheOptions, type CanonicalReferenceError, type CanonicalReferenceErrorCode, type CanonicalReferenceFailureResult, type CanonicalReferenceKind, type CanonicalReferenceResolveOptions, type CanonicalReferenceResolvedResult, type CanonicalReferenceResolver, type CanonicalReferenceResolverOptions, type CanonicalReferenceResult, type CanonicalReferenceStatus, type ExternalRefDigestMap, type FormatSchemaReferenceResolvedResult, type FormatSchemaReferenceResult, type PlatformExtensionsReferenceResult, } from './canonical-references';
|
|
47
47
|
export { assessAcceptancePolicy, createAcceptancePolicyCatalogResolver, resolveAcceptancePolicyCatalog, resolveAcceptancePolicyProfiles, resolveVerifiedAcceptancePolicyProfiles, type AcceptancePolicyCatalog, type AcceptancePolicyCatalogErrorCode, type AcceptancePolicyCatalogFailure, type AcceptancePolicyCatalogIssue, type AcceptancePolicyCatalogResolver, type AcceptancePolicyCatalogResult, type AcceptancePolicyCatalogSuccess, type AcceptancePolicyDiscoveryCapability, type AcceptancePolicyProfile, type AcceptancePolicyProfileResolution, type AcceptancePolicyRegistryPolicy, type AcceptancePolicyRegistryResolver, type AcceptancePolicyReference, type AcceptancePolicyRequirement, type AcceptancePolicyRule, type AcceptancePolicySurface, type RegistryAcceptancePolicyProfileReference, type ResolveAcceptancePolicyCatalogOptions, type ResolveVerifiedAcceptancePolicyProfilesOptions, type ResolvedAcceptancePolicyDefault, type VerifiedAcceptancePolicyProfilesResult, type VerifiedAcceptancePolicyProfilesSuccess, } from './acceptance-policy';
|
|
48
48
|
export { type AcceptancePolicyAssessment, type AcceptancePolicyAssessmentDiagnostic, type AcceptancePolicyAssessmentDiagnosticCode, type AcceptancePolicyMatchedRule, type AcceptancePolicyOutcome, type AssessAcceptancePolicyInput, } from './acceptance-policy/evaluator';
|
|
49
|
-
export type { BuildGovernanceExecutionRequestInput, BuildGovernanceIntentRequestInput, BuildHumanReviewPlanInput, BuildHumanOverrideInput, DataSubjectContestation, GovernanceAuthorizationClaims, GovernanceAuthorizationCriticalClaim, GovernanceAuthorizationErrorCode, GovernanceAuthorizationFailure, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceEnforcementMode, GovernanceEnforcementTask, GovernancePlan, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, GovernanceValidationIssue, HumanOverride, InMemoryGovernanceReplayStoreOptions, PlanBudget, ReallocationAutonomy, VerifyGovernanceAuthorizationOptions, GovernanceBuyerIdentity, } from './governance';
|
|
49
|
+
export type { BuildGovernanceExecutionRequestInput, BuildGovernanceIntentRequestInput, BuildHumanReviewPlanInput, BuildHumanOverrideInput, DataSubjectContestation, GovernanceAuthorizationClaims, GovernanceAuthorizationCriticalClaim, GovernanceAuthorizationErrorCode, GovernanceAuthorizationFailure, GovernanceAuthorizationResult, GovernanceAuthorizationSuccess, GovernanceCommitment, GovernanceEnforcementMiddleware, GovernanceEnforcementMiddlewareConfig, GovernanceEnforcementMiddlewareInput, GovernanceEnforcementMode, GovernanceEnforcementTask, GovernancePlan, GovernanceReplayStore, GovernanceReplayBinding, GovernanceRevocationResolver, GovernanceRevocationStatus, GovernanceValidationIssue, HumanOverride, InMemoryGovernanceReplayStoreOptions, PlanBudget, ReallocationAutonomy, VerifyGovernanceAuthorizationOptions, VerifyHistoricalGovernanceContextOptions, HistoricalGovernanceContextResult, GovernanceBuyerIdentity, } from './governance';
|
|
50
50
|
export type { BaseTaskEvent, ProtocolRequestEvent, ProtocolResponseEvent, TaskStatusEvent, ObjectEvent, TaskEvent, TaskEventCallbacks, } from './core/TaskEventTypes';
|
|
51
51
|
export { createOperationId } from './core/TaskEventTypes';
|
|
52
52
|
export type { AsyncHandlerConfig, WebhookMetadata, Activity, NotificationMetadata, MediaBuyDeliveryNotification, CreateMediaBuyStatusChangeHandler, UpdateMediaBuyStatusChangeHandler, SyncCreativesStatusChangeHandler, GetProductsStatusChangeHandler, ListProductsStatusChangeHandler, } from './core/AsyncHandler';
|
|
@@ -57,7 +57,7 @@ export * from './handlers/types';
|
|
|
57
57
|
export type { Storage, AtomicTakeStorage, DeferredTaskStorage, BatchStorage, PatternStorage, AgentCapabilities, ConversationState, DeferredTaskState, StorageConfig, StorageFactory, StorageMiddleware, } from './storage/interfaces';
|
|
58
58
|
export { MemoryStorage, createMemoryStorage, createMemoryStorageConfig } from './storage/MemoryStorage';
|
|
59
59
|
export { ADCPError, TaskTimeoutError, MaxClarificationError, DeferredTaskError, TaskAbortedError, AgentNotFoundError, UnsupportedTaskError, ProtocolError, ValidationError as ADCPValidationError, // Rename to avoid conflict
|
|
60
|
-
MissingInputHandlerError, InvalidContextError, ConfigurationError, AuthenticationCredentialsRejectedError, AuthenticationRequiredError, FeatureUnsupportedError, ProtocolFeatureUnsupportedError, UnsupportedBuyingModeError, AccountRequiredError, AccountPendingApprovalError, AccountAmbiguousError, BuyerSetupError, AccountNotFoundError, AccountSetupRequiredError, AccountPaymentRequiredError, AccountNotProvisionedError, SDK_ERROR_TO_PROTOCOL_ERROR_CODE, VersionUnsupportedError, IdempotencyConflictError, IdempotencyExpiredError, ResponseTooLargeError, ActionNotAllowedError, adcpErrorToTypedError, getClientPreflightAdcpError, isADCPError, isErrorOfType, extractErrorInfo, is401Error, mapSdkErrorCodeToProtocolErrorCode, } from './errors';
|
|
60
|
+
MissingInputHandlerError, InvalidContextError, ConfigurationError, AuthenticationCredentialsRejectedError, AuthenticationRequiredError, FeatureUnsupportedError, ProtocolFeatureUnsupportedError, UnsupportedBuyingModeError, AccountRequiredError, AccountPendingApprovalError, AccountAmbiguousError, BuyerSetupError, AccountNotFoundError, AccountSetupRequiredError, AccountPaymentRequiredError, AccountNotProvisionedError, SDK_ERROR_TO_PROTOCOL_ERROR_CODE, VersionUnsupportedError, IdempotencyConflictError, IdempotencyExpiredError, ResponseTooLargeError, ActionNotAllowedError, PreparedFixturesDeniedError, adcpErrorToTypedError, getClientPreflightAdcpError, isADCPError, isErrorOfType, extractErrorInfo, is401Error, mapSdkErrorCodeToProtocolErrorCode, } from './errors';
|
|
61
61
|
export type { OAuthMetadataInfo, ClientPreflightAdcpErrorInfo, ClientPreflightAdcpErrorRecovery, FeatureUnsupportedErrorOptions, ProtocolFeatureUnsupportedErrorOptions, ActionNotAllowedErrorDetails, ActionNotAllowedReasonValue, ActionNotAllowedAttemptedAction, ActionNotAllowedAvailableAction, ActionNotAllowedRecovery, } from './errors';
|
|
62
62
|
export type { ActionNotAllowedDetails, ActionNotAllowedReason, AvailableActionsResult, AvailableActionsSource, DecomposedUpdateMediaBuy, DecomposedUpdateMediaBuyMutation, LegacyCoarseAction, MediaBuyActionContext, MediaBuyActionId, MediaBuyActionMode, MediaBuyAvailableAction, MediaBuyMutationDirection, MediaBuyMutationScope, MediaBuyUpdateFieldAction, MediaBuyValidAction, ModeMismatchRecovery, PreflightAllowed, PreflightDenial, PreflightDenied, BuyerPropertyPolicy, NormalizedPolicyDomain, ProductPolicyProductLike, ProductPolicyResolvedProperty, ProductPropertyPolicyIdentifier, ProductPropertyPolicyDiagnostic, ProductPropertyPolicyDiagnosticCode, ProductPropertyPolicyDiagnosticSeverity, ProductPropertyPolicyMode, ProductPropertyPolicySelectorBehavior, ProductPropertyPolicyValidationResult, PreflightResult, ResolvedAction, SLAWindow, SlaWindow, StructuredOnlyMediaBuyAction, ResolvedTargetingInput, TargetingInputFor, ValidateProductsAgainstPropertyPolicyOptions, UpdateFieldEntry, UpdateMediaBuyRequestLike, } from './media-buy';
|
|
63
63
|
export { ACTIONS_BY_FIELD, LEGACY_COARSE_ACTIONS, STRUCTURED_ONLY_MEDIA_BUY_ACTIONS, UPDATE_FIELDS_BY_ACTION, applyTargetingInput, hasTargetingClears, resolveTargetingInput, canAddPackages, canCancel, canDecreaseBudget, canExtendFlight, canIncreaseBudget, canPause, canReallocateBudget, canRemoveCreative, canRemovePackages, canReplaceCreative, canResume, canShortenFlight, canUpdateCreativeAssignments, canUpdateFlightDates, canUpdateFrequencyCaps, canUpdatePacing, canUpdateTargeting, decomposeUpdateMediaBuy, findAvailableAction, getActionForMutation, getAvailableActions, getRollupParent, ProductPropertyPolicyError, normalizeDomainForPropertyPolicy, preflightUpdateMediaBuy, recoveryForModeMismatch, validateProductsAgainstPropertyPolicy, } from './media-buy';
|
package/dist/lib/index.js
CHANGED
|
@@ -153,6 +153,7 @@ __export(index_exports, {
|
|
|
153
153
|
PlacementPresentationReferenceSchema: () => import_schemas.PlacementPresentationReferenceSchema,
|
|
154
154
|
PostgresStateStore: () => import_server.PostgresStateStore,
|
|
155
155
|
PostgresTaskStore: () => import_server.PostgresTaskStore,
|
|
156
|
+
PreparedFixturesDeniedError: () => import_errors.PreparedFixturesDeniedError,
|
|
156
157
|
PreviewFetchError: () => import_substitution.PreviewFetchError,
|
|
157
158
|
ProductCache: () => import_product_cache.ProductCache,
|
|
158
159
|
ProductPropertyPolicyError: () => import_media_buy.ProductPropertyPolicyError,
|
|
@@ -714,6 +715,7 @@ __export(index_exports, {
|
|
|
714
715
|
vastAssetSlot: () => import_format_asset_slot_builders.vastAssetSlot,
|
|
715
716
|
vastGroupAsset: () => import_format_asset_slot_builders.vastGroupAsset,
|
|
716
717
|
verifyGovernanceAuthorization: () => import_governance.verifyGovernanceAuthorization,
|
|
718
|
+
verifyHistoricalGovernanceContext: () => import_governance.verifyHistoricalGovernanceContext,
|
|
717
719
|
verifyIntrospection: () => import_server.verifyIntrospection,
|
|
718
720
|
videoAsset: () => import_asset_builders.videoAsset,
|
|
719
721
|
videoAssetSlot: () => import_format_asset_slot_builders.videoAssetSlot,
|
|
@@ -997,6 +999,7 @@ function createAdCPClientFromEnv() {
|
|
|
997
999
|
PlacementPresentationReferenceSchema,
|
|
998
1000
|
PostgresStateStore,
|
|
999
1001
|
PostgresTaskStore,
|
|
1002
|
+
PreparedFixturesDeniedError,
|
|
1000
1003
|
PreviewFetchError,
|
|
1001
1004
|
ProductCache,
|
|
1002
1005
|
ProductPropertyPolicyError,
|
|
@@ -1558,6 +1561,7 @@ function createAdCPClientFromEnv() {
|
|
|
1558
1561
|
vastAssetSlot,
|
|
1559
1562
|
vastGroupAsset,
|
|
1560
1563
|
verifyGovernanceAuthorization,
|
|
1564
|
+
verifyHistoricalGovernanceContext,
|
|
1561
1565
|
verifyIntrospection,
|
|
1562
1566
|
videoAsset,
|
|
1563
1567
|
videoAssetSlot,
|
package/dist/lib/index.mjs
CHANGED
|
@@ -160,6 +160,7 @@ import {
|
|
|
160
160
|
targetDeclaresLegacyGovernanceAwareness,
|
|
161
161
|
validateGovernancePlan,
|
|
162
162
|
verifyGovernanceAuthorization,
|
|
163
|
+
verifyHistoricalGovernanceContext,
|
|
163
164
|
createGovernanceAgentJwksResolver,
|
|
164
165
|
REGULATED_HUMAN_REVIEW_CATEGORIES,
|
|
165
166
|
ANNEX_III_POLICY_IDS
|
|
@@ -234,6 +235,7 @@ import {
|
|
|
234
235
|
IdempotencyExpiredError,
|
|
235
236
|
ResponseTooLargeError,
|
|
236
237
|
ActionNotAllowedError,
|
|
238
|
+
PreparedFixturesDeniedError,
|
|
237
239
|
adcpErrorToTypedError,
|
|
238
240
|
getClientPreflightAdcpError,
|
|
239
241
|
isADCPError,
|
|
@@ -959,6 +961,7 @@ export {
|
|
|
959
961
|
PlacementPresentationReferenceSchema,
|
|
960
962
|
PostgresStateStore,
|
|
961
963
|
PostgresTaskStore,
|
|
964
|
+
PreparedFixturesDeniedError,
|
|
962
965
|
PreviewFetchError,
|
|
963
966
|
ProductCache,
|
|
964
967
|
ProductPropertyPolicyError,
|
|
@@ -1520,6 +1523,7 @@ export {
|
|
|
1520
1523
|
vastAssetSlot,
|
|
1521
1524
|
vastGroupAsset,
|
|
1522
1525
|
verifyGovernanceAuthorization,
|
|
1526
|
+
verifyHistoricalGovernanceContext,
|
|
1523
1527
|
verifyIntrospection,
|
|
1524
1528
|
videoAsset,
|
|
1525
1529
|
videoAssetSlot,
|
|
@@ -300,6 +300,7 @@ export declare class MediaBuyLifecycleCoordinator {
|
|
|
300
300
|
readonly negotiated_version: string;
|
|
301
301
|
readonly lifecycle: MediaBuyLifecycle;
|
|
302
302
|
readonly tools: ReadonlySet<string>;
|
|
303
|
+
private readonly refinementServedVersion?;
|
|
303
304
|
private readonly allowedLosses;
|
|
304
305
|
private readonly preferredLifecycle;
|
|
305
306
|
private readonly principalScope?;
|
|
@@ -300,6 +300,7 @@ export declare class MediaBuyLifecycleCoordinator {
|
|
|
300
300
|
readonly negotiated_version: string;
|
|
301
301
|
readonly lifecycle: MediaBuyLifecycle;
|
|
302
302
|
readonly tools: ReadonlySet<string>;
|
|
303
|
+
private readonly refinementServedVersion?;
|
|
303
304
|
private readonly allowedLosses;
|
|
304
305
|
private readonly preferredLifecycle;
|
|
305
306
|
private readonly principalScope?;
|
|
@@ -32,10 +32,11 @@ var import_jcs = require('../utils/jcs.js');
|
|
|
32
32
|
var import_error_extraction = require('../utils/error-extraction.js');
|
|
33
33
|
var import_capabilities = require('../utils/capabilities.js');
|
|
34
34
|
var import_tool_request_schemas = require('../utils/tool-request-schemas.js');
|
|
35
|
+
var import_version = require('../negotiation/version.js');
|
|
35
36
|
var import_verification = require('../negotiation/verification.js');
|
|
36
37
|
var import_response_unwrapper = require('../utils/response-unwrapper.js');
|
|
37
38
|
var import_errors = require('../errors/index.js');
|
|
38
|
-
var
|
|
39
|
+
var import_version2 = require('../version.js');
|
|
39
40
|
var import_abort = require('../protocols/abort.js');
|
|
40
41
|
var import_schema_validator = require('../validation/schema-validator.js');
|
|
41
42
|
var import_schema_validator2 = require('../validation/schema-validator.js');
|
|
@@ -755,11 +756,14 @@ function projectRequestProposals(data, lifecycle, negotiatedVersion2) {
|
|
|
755
756
|
Object.defineProperty(projected, PROJECTED_RESPONSE_RAW, { value: source, enumerable: false });
|
|
756
757
|
return projected;
|
|
757
758
|
}
|
|
758
|
-
function projectRefineProposals(data, lifecycle, refinements) {
|
|
759
|
+
function projectRefineProposals(data, lifecycle, refinements, adcpVersion, requestedVersion, servedAdcpVersion, discoveryCeiling) {
|
|
759
760
|
const source = compactWirePayload(data);
|
|
760
761
|
const proposalIds = refinements.map((refinement) => refinement.proposal_id);
|
|
761
762
|
if (lifecycle === "compact") {
|
|
762
|
-
(0, import_verification.assertRefineProposalsResponse)({ refinements }, source
|
|
763
|
+
(0, import_verification.assertRefineProposalsResponse)({ refinements, adcp_version: requestedVersion }, source, {
|
|
764
|
+
adcpVersion,
|
|
765
|
+
servedAdcpVersion: (0, import_version.applicableRefinementServedVersion)(servedAdcpVersion, requestedVersion, discoveryCeiling)
|
|
766
|
+
});
|
|
763
767
|
}
|
|
764
768
|
const base = proposalResponseBase(source);
|
|
765
769
|
const sourceResults = array(source.results);
|
|
@@ -778,10 +782,6 @@ function projectRefineProposals(data, lifecycle, refinements) {
|
|
|
778
782
|
}
|
|
779
783
|
const children = [...array(result.proposals), ...result.proposal === void 0 ? [] : [result.proposal]];
|
|
780
784
|
if (result.outcome === "revised" || result.outcome === "partial" || result.outcome === "finalized") {
|
|
781
|
-
const shape = (0, import_verification.validateRefineProposalsResponseShape)({ results: [result], products: [] });
|
|
782
|
-
if (!shape.ok) {
|
|
783
|
-
throw new TypeError(`refine_proposals result ${index} did not contain complete canonical proposal data.`);
|
|
784
|
-
}
|
|
785
785
|
const expectedStatus = result.outcome === "finalized" ? "committed" : "draft";
|
|
786
786
|
if (children.some((child) => record(child).proposal_status !== expectedStatus)) {
|
|
787
787
|
throw new TypeError(
|
|
@@ -990,6 +990,12 @@ class MediaBuyLifecycleCoordinator {
|
|
|
990
990
|
constructor(agent, capabilities, options) {
|
|
991
991
|
this.agent = agent;
|
|
992
992
|
this.negotiated_version = negotiatedVersion(capabilities, agent.getAdcpVersion());
|
|
993
|
+
if (capabilities._synthetic === false) {
|
|
994
|
+
this.refinementServedVersion = (0, import_version.applicableRefinementServedVersion)(
|
|
995
|
+
capabilities.servedVersion,
|
|
996
|
+
(0, import_version2.toReleasePrecisionVersion)(agent.getWireAdcpVersion())
|
|
997
|
+
);
|
|
998
|
+
}
|
|
993
999
|
this.tools = /* @__PURE__ */ new Set([...capabilities.mediaBuyLifecycleTools ?? [], ...capabilities.discoveredTools ?? []]);
|
|
994
1000
|
this.preferredLifecycle = options.preferredLifecycle ?? "auto";
|
|
995
1001
|
this.allowedLosses = new Set(options.allowedLosses ?? []);
|
|
@@ -1097,6 +1103,7 @@ class MediaBuyLifecycleCoordinator {
|
|
|
1097
1103
|
negotiated_version;
|
|
1098
1104
|
lifecycle;
|
|
1099
1105
|
tools;
|
|
1106
|
+
refinementServedVersion;
|
|
1100
1107
|
allowedLosses;
|
|
1101
1108
|
preferredLifecycle;
|
|
1102
1109
|
principalScope;
|
|
@@ -1938,7 +1945,7 @@ class MediaBuyLifecycleCoordinator {
|
|
|
1938
1945
|
`${operation} requested adcp_major_version ${String(input.adcp_major_version)}, but the negotiated established lane is ${this.negotiated_version}. No request was sent.`
|
|
1939
1946
|
);
|
|
1940
1947
|
}
|
|
1941
|
-
const expectedRelease = (0,
|
|
1948
|
+
const expectedRelease = (0, import_version2.toReleasePrecisionVersion)(this.negotiated_version);
|
|
1942
1949
|
if (input.adcp_version !== void 0 && (compareRelease(this.negotiated_version, "3.1") < 0 || input.adcp_version !== expectedRelease)) {
|
|
1943
1950
|
throw this.unsupported(
|
|
1944
1951
|
operation,
|
|
@@ -6430,7 +6437,15 @@ class MediaBuyLifecycleCoordinator {
|
|
|
6430
6437
|
);
|
|
6431
6438
|
const attemptEpoch2 = pendingRefinement2.attemptEpoch;
|
|
6432
6439
|
const dispatchOptions2 = retry2 ? { ...options, skipIdempotencyAutoInject: retry2.skipIdempotencyAutoInject } : options;
|
|
6433
|
-
const projectOnly2 = (data) => projectRefineProposals(
|
|
6440
|
+
const projectOnly2 = (data) => projectRefineProposals(
|
|
6441
|
+
data,
|
|
6442
|
+
lifecycle,
|
|
6443
|
+
params.refinements,
|
|
6444
|
+
this.agent.getAdcpVersion(),
|
|
6445
|
+
params.adcp_version ?? (0, import_version2.toReleasePrecisionVersion)(this.agent.getWireAdcpVersion()),
|
|
6446
|
+
this.refinementServedVersion,
|
|
6447
|
+
(0, import_version2.toReleasePrecisionVersion)(this.agent.getWireAdcpVersion())
|
|
6448
|
+
);
|
|
6434
6449
|
const projectAndSettle2 = (data) => {
|
|
6435
6450
|
try {
|
|
6436
6451
|
const projected = projectOnly2(data);
|
|
@@ -6608,7 +6623,15 @@ class MediaBuyLifecycleCoordinator {
|
|
|
6608
6623
|
...retry ? { ...options, skipIdempotencyAutoInject: retry.skipIdempotencyAutoInject } : options,
|
|
6609
6624
|
...this.legacyWireTaskOptions()
|
|
6610
6625
|
};
|
|
6611
|
-
const projectOnly = (data) => projectRefineProposals(
|
|
6626
|
+
const projectOnly = (data) => projectRefineProposals(
|
|
6627
|
+
data,
|
|
6628
|
+
lifecycle,
|
|
6629
|
+
params.refinements,
|
|
6630
|
+
this.agent.getAdcpVersion(),
|
|
6631
|
+
params.adcp_version ?? (0, import_version2.toReleasePrecisionVersion)(this.agent.getWireAdcpVersion()),
|
|
6632
|
+
this.refinementServedVersion,
|
|
6633
|
+
(0, import_version2.toReleasePrecisionVersion)(this.agent.getWireAdcpVersion())
|
|
6634
|
+
);
|
|
6612
6635
|
const projectAndSettle = (data) => {
|
|
6613
6636
|
try {
|
|
6614
6637
|
const projected = projectOnly(data);
|
|
@@ -16,12 +16,8 @@ import { canonicalize } from "../utils/jcs.mjs";
|
|
|
16
16
|
import { extractAdcpErrorInfo, extractCorrelationId } from "../utils/error-extraction.mjs";
|
|
17
17
|
import { assertValidIdempotencyReplayTtlSeconds } from "../utils/capabilities.mjs";
|
|
18
18
|
import { TOOL_REQUEST_SCHEMAS } from "../utils/tool-request-schemas.mjs";
|
|
19
|
-
import {
|
|
20
|
-
|
|
21
|
-
isStrictDateTime,
|
|
22
|
-
proposalTermsDigest,
|
|
23
|
-
validateRefineProposalsResponseShape
|
|
24
|
-
} from "../negotiation/verification.mjs";
|
|
19
|
+
import { applicableRefinementServedVersion } from "../negotiation/version.mjs";
|
|
20
|
+
import { assertRefineProposalsResponse, isStrictDateTime, proposalTermsDigest } from "../negotiation/verification.mjs";
|
|
25
21
|
import { isAdcpOperationSuccess, isTerminalAdcpError } from "../utils/response-unwrapper.mjs";
|
|
26
22
|
import { ConfigurationError } from "../errors/index.mjs";
|
|
27
23
|
import { toReleasePrecisionVersion } from "../version.mjs";
|
|
@@ -748,11 +744,14 @@ function projectRequestProposals(data, lifecycle, negotiatedVersion2) {
|
|
|
748
744
|
Object.defineProperty(projected, PROJECTED_RESPONSE_RAW, { value: source, enumerable: false });
|
|
749
745
|
return projected;
|
|
750
746
|
}
|
|
751
|
-
function projectRefineProposals(data, lifecycle, refinements) {
|
|
747
|
+
function projectRefineProposals(data, lifecycle, refinements, adcpVersion, requestedVersion, servedAdcpVersion, discoveryCeiling) {
|
|
752
748
|
const source = compactWirePayload(data);
|
|
753
749
|
const proposalIds = refinements.map((refinement) => refinement.proposal_id);
|
|
754
750
|
if (lifecycle === "compact") {
|
|
755
|
-
assertRefineProposalsResponse({ refinements }, source
|
|
751
|
+
assertRefineProposalsResponse({ refinements, adcp_version: requestedVersion }, source, {
|
|
752
|
+
adcpVersion,
|
|
753
|
+
servedAdcpVersion: applicableRefinementServedVersion(servedAdcpVersion, requestedVersion, discoveryCeiling)
|
|
754
|
+
});
|
|
756
755
|
}
|
|
757
756
|
const base = proposalResponseBase(source);
|
|
758
757
|
const sourceResults = array(source.results);
|
|
@@ -771,10 +770,6 @@ function projectRefineProposals(data, lifecycle, refinements) {
|
|
|
771
770
|
}
|
|
772
771
|
const children = [...array(result.proposals), ...result.proposal === void 0 ? [] : [result.proposal]];
|
|
773
772
|
if (result.outcome === "revised" || result.outcome === "partial" || result.outcome === "finalized") {
|
|
774
|
-
const shape = validateRefineProposalsResponseShape({ results: [result], products: [] });
|
|
775
|
-
if (!shape.ok) {
|
|
776
|
-
throw new TypeError(`refine_proposals result ${index} did not contain complete canonical proposal data.`);
|
|
777
|
-
}
|
|
778
773
|
const expectedStatus = result.outcome === "finalized" ? "committed" : "draft";
|
|
779
774
|
if (children.some((child) => record(child).proposal_status !== expectedStatus)) {
|
|
780
775
|
throw new TypeError(
|
|
@@ -983,6 +978,12 @@ class MediaBuyLifecycleCoordinator {
|
|
|
983
978
|
constructor(agent, capabilities, options) {
|
|
984
979
|
this.agent = agent;
|
|
985
980
|
this.negotiated_version = negotiatedVersion(capabilities, agent.getAdcpVersion());
|
|
981
|
+
if (capabilities._synthetic === false) {
|
|
982
|
+
this.refinementServedVersion = applicableRefinementServedVersion(
|
|
983
|
+
capabilities.servedVersion,
|
|
984
|
+
toReleasePrecisionVersion(agent.getWireAdcpVersion())
|
|
985
|
+
);
|
|
986
|
+
}
|
|
986
987
|
this.tools = /* @__PURE__ */ new Set([...capabilities.mediaBuyLifecycleTools ?? [], ...capabilities.discoveredTools ?? []]);
|
|
987
988
|
this.preferredLifecycle = options.preferredLifecycle ?? "auto";
|
|
988
989
|
this.allowedLosses = new Set(options.allowedLosses ?? []);
|
|
@@ -1090,6 +1091,7 @@ class MediaBuyLifecycleCoordinator {
|
|
|
1090
1091
|
negotiated_version;
|
|
1091
1092
|
lifecycle;
|
|
1092
1093
|
tools;
|
|
1094
|
+
refinementServedVersion;
|
|
1093
1095
|
allowedLosses;
|
|
1094
1096
|
preferredLifecycle;
|
|
1095
1097
|
principalScope;
|
|
@@ -6423,7 +6425,15 @@ class MediaBuyLifecycleCoordinator {
|
|
|
6423
6425
|
);
|
|
6424
6426
|
const attemptEpoch2 = pendingRefinement2.attemptEpoch;
|
|
6425
6427
|
const dispatchOptions2 = retry2 ? { ...options, skipIdempotencyAutoInject: retry2.skipIdempotencyAutoInject } : options;
|
|
6426
|
-
const projectOnly2 = (data) => projectRefineProposals(
|
|
6428
|
+
const projectOnly2 = (data) => projectRefineProposals(
|
|
6429
|
+
data,
|
|
6430
|
+
lifecycle,
|
|
6431
|
+
params.refinements,
|
|
6432
|
+
this.agent.getAdcpVersion(),
|
|
6433
|
+
params.adcp_version ?? toReleasePrecisionVersion(this.agent.getWireAdcpVersion()),
|
|
6434
|
+
this.refinementServedVersion,
|
|
6435
|
+
toReleasePrecisionVersion(this.agent.getWireAdcpVersion())
|
|
6436
|
+
);
|
|
6427
6437
|
const projectAndSettle2 = (data) => {
|
|
6428
6438
|
try {
|
|
6429
6439
|
const projected = projectOnly2(data);
|
|
@@ -6601,7 +6611,15 @@ class MediaBuyLifecycleCoordinator {
|
|
|
6601
6611
|
...retry ? { ...options, skipIdempotencyAutoInject: retry.skipIdempotencyAutoInject } : options,
|
|
6602
6612
|
...this.legacyWireTaskOptions()
|
|
6603
6613
|
};
|
|
6604
|
-
const projectOnly = (data) => projectRefineProposals(
|
|
6614
|
+
const projectOnly = (data) => projectRefineProposals(
|
|
6615
|
+
data,
|
|
6616
|
+
lifecycle,
|
|
6617
|
+
params.refinements,
|
|
6618
|
+
this.agent.getAdcpVersion(),
|
|
6619
|
+
params.adcp_version ?? toReleasePrecisionVersion(this.agent.getWireAdcpVersion()),
|
|
6620
|
+
this.refinementServedVersion,
|
|
6621
|
+
toReleasePrecisionVersion(this.agent.getWireAdcpVersion())
|
|
6622
|
+
);
|
|
6605
6623
|
const projectAndSettle = (data) => {
|
|
6606
6624
|
try {
|
|
6607
6625
|
const projected = projectOnly(data);
|
|
@@ -33,9 +33,9 @@ var import_idempotency = require('../utils/idempotency.js');
|
|
|
33
33
|
var import_version = require('../version.js');
|
|
34
34
|
var import_types = require('./types.js');
|
|
35
35
|
var import_verification = require('./verification.js');
|
|
36
|
+
var import_version2 = require('./version.js');
|
|
36
37
|
const MAX_PROPOSAL_REFINEMENTS = 25;
|
|
37
38
|
const MAX_PROPOSAL_ALTERNATIVES = 10;
|
|
38
|
-
const ADCP_32_RELEASE = /^3\.2(?:-[A-Za-z0-9]+(?:[.-][A-Za-z0-9]+)*)?$/;
|
|
39
39
|
function extractProposalRefinementSupport(source) {
|
|
40
40
|
const payload = unwrapCapabilityPayload(source);
|
|
41
41
|
if (!isRecord(payload)) fail("capabilities response must be an object", "capabilities");
|
|
@@ -95,8 +95,11 @@ function refinementDimensions(refinement) {
|
|
|
95
95
|
function validateRefineProposalsRequest(request, capabilities) {
|
|
96
96
|
if (!isRecord(request)) fail("request must be an object");
|
|
97
97
|
assertAllowedKeys(request, REQUEST_KEYS, "request");
|
|
98
|
-
if (
|
|
99
|
-
fail(
|
|
98
|
+
if (!(0, import_version2.isProposalRefinementVersion)(request.adcp_version)) {
|
|
99
|
+
fail(
|
|
100
|
+
`refine_proposals requires a release-precision adcp_version on AdCP 3.2 or 3.3; received ${(0, import_version2.describeRefinementVersion)(request.adcp_version)}`,
|
|
101
|
+
"adcp_version"
|
|
102
|
+
);
|
|
100
103
|
}
|
|
101
104
|
if (request.adcp_major_version !== 3) {
|
|
102
105
|
fail("refine_proposals requires adcp_major_version 3", "adcp_major_version");
|
|
@@ -345,8 +348,11 @@ function validateConstraints(refinement, base) {
|
|
|
345
348
|
}
|
|
346
349
|
function buildRefineProposalsRequest(input, capabilities, defaultAdcpVersion = import_version.ADCP_VERSION) {
|
|
347
350
|
if (!isRecord(input)) fail("request input must be an object");
|
|
348
|
-
if (input.adcp_version !== void 0 && !
|
|
349
|
-
fail(
|
|
351
|
+
if (input.adcp_version !== void 0 && !(0, import_version2.isProposalRefinementVersion)(input.adcp_version)) {
|
|
352
|
+
fail(
|
|
353
|
+
`refine_proposals requires a release-precision adcp_version on AdCP 3.2 or 3.3; received ${(0, import_version2.describeRefinementVersion)(input.adcp_version)}`,
|
|
354
|
+
"adcp_version"
|
|
355
|
+
);
|
|
350
356
|
}
|
|
351
357
|
if (input.adcp_major_version !== void 0 && input.adcp_major_version !== 3) {
|
|
352
358
|
fail("refine_proposals requires adcp_major_version 3", "adcp_major_version");
|
|
@@ -2,9 +2,9 @@ import { generateIdempotencyKey, isValidIdempotencyKey } from "../utils/idempote
|
|
|
2
2
|
import { ADCP_VERSION, toReleasePrecisionVersion } from "../version.mjs";
|
|
3
3
|
import { PROPOSAL_REFINEMENT_DIMENSIONS } from "./types.mjs";
|
|
4
4
|
import { assertRefineProposalsResponse, isStrictDateTime } from "./verification.mjs";
|
|
5
|
+
import { describeRefinementVersion, isProposalRefinementVersion } from "./version.mjs";
|
|
5
6
|
const MAX_PROPOSAL_REFINEMENTS = 25;
|
|
6
7
|
const MAX_PROPOSAL_ALTERNATIVES = 10;
|
|
7
|
-
const ADCP_32_RELEASE = /^3\.2(?:-[A-Za-z0-9]+(?:[.-][A-Za-z0-9]+)*)?$/;
|
|
8
8
|
function extractProposalRefinementSupport(source) {
|
|
9
9
|
const payload = unwrapCapabilityPayload(source);
|
|
10
10
|
if (!isRecord(payload)) fail("capabilities response must be an object", "capabilities");
|
|
@@ -64,8 +64,11 @@ function refinementDimensions(refinement) {
|
|
|
64
64
|
function validateRefineProposalsRequest(request, capabilities) {
|
|
65
65
|
if (!isRecord(request)) fail("request must be an object");
|
|
66
66
|
assertAllowedKeys(request, REQUEST_KEYS, "request");
|
|
67
|
-
if (
|
|
68
|
-
fail(
|
|
67
|
+
if (!isProposalRefinementVersion(request.adcp_version)) {
|
|
68
|
+
fail(
|
|
69
|
+
`refine_proposals requires a release-precision adcp_version on AdCP 3.2 or 3.3; received ${describeRefinementVersion(request.adcp_version)}`,
|
|
70
|
+
"adcp_version"
|
|
71
|
+
);
|
|
69
72
|
}
|
|
70
73
|
if (request.adcp_major_version !== 3) {
|
|
71
74
|
fail("refine_proposals requires adcp_major_version 3", "adcp_major_version");
|
|
@@ -314,8 +317,11 @@ function validateConstraints(refinement, base) {
|
|
|
314
317
|
}
|
|
315
318
|
function buildRefineProposalsRequest(input, capabilities, defaultAdcpVersion = ADCP_VERSION) {
|
|
316
319
|
if (!isRecord(input)) fail("request input must be an object");
|
|
317
|
-
if (input.adcp_version !== void 0 && !
|
|
318
|
-
fail(
|
|
320
|
+
if (input.adcp_version !== void 0 && !isProposalRefinementVersion(input.adcp_version)) {
|
|
321
|
+
fail(
|
|
322
|
+
`refine_proposals requires a release-precision adcp_version on AdCP 3.2 or 3.3; received ${describeRefinementVersion(input.adcp_version)}`,
|
|
323
|
+
"adcp_version"
|
|
324
|
+
);
|
|
319
325
|
}
|
|
320
326
|
if (input.adcp_major_version !== void 0 && input.adcp_major_version !== 3) {
|
|
321
327
|
fail("refine_proposals requires adcp_major_version 3", "adcp_major_version");
|
|
@@ -85,6 +85,8 @@ export interface FinalizeProposalRefinement {
|
|
|
85
85
|
}
|
|
86
86
|
export type ProposalRefinement = ReviseProposalRefinement | FinalizeProposalRefinement;
|
|
87
87
|
export type Adcp32Version = '3.2' | `3.2-${string}`;
|
|
88
|
+
/** Supported proposal-refinement release pins; patches belong to schema pins. */
|
|
89
|
+
export type ProposalRefinementVersion = Adcp32Version | '3.3' | `3.3-${string}`;
|
|
88
90
|
export interface RefineProposalsRequest {
|
|
89
91
|
idempotency_key: string;
|
|
90
92
|
refinements: ProposalRefinement[];
|
|
@@ -92,12 +94,12 @@ export interface RefineProposalsRequest {
|
|
|
92
94
|
context?: Record<string, unknown>;
|
|
93
95
|
governance_context?: string;
|
|
94
96
|
push_notification_config?: Record<string, unknown>;
|
|
95
|
-
adcp_version:
|
|
97
|
+
adcp_version: ProposalRefinementVersion;
|
|
96
98
|
adcp_major_version: 3;
|
|
97
99
|
}
|
|
98
100
|
export type RefineProposalsInput = Omit<RefineProposalsRequest, 'idempotency_key' | 'adcp_version' | 'adcp_major_version'> & {
|
|
99
101
|
idempotency_key?: string;
|
|
100
|
-
adcp_version?:
|
|
102
|
+
adcp_version?: ProposalRefinementVersion;
|
|
101
103
|
adcp_major_version?: 3;
|
|
102
104
|
};
|
|
103
105
|
export interface ProposalResolvedPricing {
|
|
@@ -85,6 +85,8 @@ export interface FinalizeProposalRefinement {
|
|
|
85
85
|
}
|
|
86
86
|
export type ProposalRefinement = ReviseProposalRefinement | FinalizeProposalRefinement;
|
|
87
87
|
export type Adcp32Version = '3.2' | `3.2-${string}`;
|
|
88
|
+
/** Supported proposal-refinement release pins; patches belong to schema pins. */
|
|
89
|
+
export type ProposalRefinementVersion = Adcp32Version | '3.3' | `3.3-${string}`;
|
|
88
90
|
export interface RefineProposalsRequest {
|
|
89
91
|
idempotency_key: string;
|
|
90
92
|
refinements: ProposalRefinement[];
|
|
@@ -92,12 +94,12 @@ export interface RefineProposalsRequest {
|
|
|
92
94
|
context?: Record<string, unknown>;
|
|
93
95
|
governance_context?: string;
|
|
94
96
|
push_notification_config?: Record<string, unknown>;
|
|
95
|
-
adcp_version:
|
|
97
|
+
adcp_version: ProposalRefinementVersion;
|
|
96
98
|
adcp_major_version: 3;
|
|
97
99
|
}
|
|
98
100
|
export type RefineProposalsInput = Omit<RefineProposalsRequest, 'idempotency_key' | 'adcp_version' | 'adcp_major_version'> & {
|
|
99
101
|
idempotency_key?: string;
|
|
100
|
-
adcp_version?:
|
|
102
|
+
adcp_version?: ProposalRefinementVersion;
|
|
101
103
|
adcp_major_version?: 3;
|
|
102
104
|
};
|
|
103
105
|
export interface ProposalResolvedPricing {
|
|
@@ -38,13 +38,22 @@ export declare function verifyProposalCommercialTerms(proposal: unknown, expecte
|
|
|
38
38
|
export declare function assertProposalCommercialTerms(proposal: unknown, expectedCommercialTerms: unknown, options?: VerifyProposalCommercialTermsOptions): void;
|
|
39
39
|
/** Strict RFC 3339 date-time accepted by the AdCP `format: date-time` contract. */
|
|
40
40
|
export declare function isStrictDateTime(value: unknown): value is string;
|
|
41
|
-
export declare function verifyRefineProposalsResponse(request: Pick<RefineProposalsRequest, 'refinements'
|
|
41
|
+
export declare function verifyRefineProposalsResponse(request: Pick<RefineProposalsRequest, 'refinements'> & Partial<Pick<RefineProposalsRequest, 'adcp_version'>>, response: unknown, options?: {
|
|
42
42
|
now?: Date;
|
|
43
|
+
adcpVersion?: string;
|
|
44
|
+
servedAdcpVersion?: string;
|
|
43
45
|
}): ProposalVerificationResult;
|
|
44
|
-
export declare function assertRefineProposalsResponse(request: Pick<RefineProposalsRequest, 'refinements'
|
|
46
|
+
export declare function assertRefineProposalsResponse(request: Pick<RefineProposalsRequest, 'refinements'> & Partial<Pick<RefineProposalsRequest, 'adcp_version'>>, response: unknown, options?: {
|
|
45
47
|
now?: Date;
|
|
48
|
+
adcpVersion?: string;
|
|
49
|
+
servedAdcpVersion?: string;
|
|
46
50
|
}): asserts response is RefineProposalsCompletedResponse;
|
|
47
|
-
/** Validate
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
/** Validate a completed or compact-submitted wire shape using the selected bundle.
|
|
52
|
+
* Pass adcpVersion when validating a negotiated contract other than the SDK pin. */
|
|
53
|
+
export declare function validateRefineProposalsResponseShape(response: unknown, options?: {
|
|
54
|
+
adcpVersion?: string;
|
|
55
|
+
}): ProposalVerificationResult;
|
|
56
|
+
/** Assert a selected completed or compact-submitted wire shape without source semantics. */
|
|
57
|
+
export declare function assertRefineProposalsResponseShape(response: unknown, options?: {
|
|
58
|
+
adcpVersion?: string;
|
|
59
|
+
}): asserts response is RefineProposalsResponse;
|
|
@@ -38,13 +38,22 @@ export declare function verifyProposalCommercialTerms(proposal: unknown, expecte
|
|
|
38
38
|
export declare function assertProposalCommercialTerms(proposal: unknown, expectedCommercialTerms: unknown, options?: VerifyProposalCommercialTermsOptions): void;
|
|
39
39
|
/** Strict RFC 3339 date-time accepted by the AdCP `format: date-time` contract. */
|
|
40
40
|
export declare function isStrictDateTime(value: unknown): value is string;
|
|
41
|
-
export declare function verifyRefineProposalsResponse(request: Pick<RefineProposalsRequest, 'refinements'
|
|
41
|
+
export declare function verifyRefineProposalsResponse(request: Pick<RefineProposalsRequest, 'refinements'> & Partial<Pick<RefineProposalsRequest, 'adcp_version'>>, response: unknown, options?: {
|
|
42
42
|
now?: Date;
|
|
43
|
+
adcpVersion?: string;
|
|
44
|
+
servedAdcpVersion?: string;
|
|
43
45
|
}): ProposalVerificationResult;
|
|
44
|
-
export declare function assertRefineProposalsResponse(request: Pick<RefineProposalsRequest, 'refinements'
|
|
46
|
+
export declare function assertRefineProposalsResponse(request: Pick<RefineProposalsRequest, 'refinements'> & Partial<Pick<RefineProposalsRequest, 'adcp_version'>>, response: unknown, options?: {
|
|
45
47
|
now?: Date;
|
|
48
|
+
adcpVersion?: string;
|
|
49
|
+
servedAdcpVersion?: string;
|
|
46
50
|
}): asserts response is RefineProposalsCompletedResponse;
|
|
47
|
-
/** Validate
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
/** Validate a completed or compact-submitted wire shape using the selected bundle.
|
|
52
|
+
* Pass adcpVersion when validating a negotiated contract other than the SDK pin. */
|
|
53
|
+
export declare function validateRefineProposalsResponseShape(response: unknown, options?: {
|
|
54
|
+
adcpVersion?: string;
|
|
55
|
+
}): ProposalVerificationResult;
|
|
56
|
+
/** Assert a selected completed or compact-submitted wire shape without source semantics. */
|
|
57
|
+
export declare function assertRefineProposalsResponseShape(response: unknown, options?: {
|
|
58
|
+
adcpVersion?: string;
|
|
59
|
+
}): asserts response is RefineProposalsResponse;
|