@happyvertical/smrt-core 0.57.32 → 0.57.33

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 CHANGED
@@ -592,7 +592,7 @@ file has run.
592
592
  | Export | Description |
593
593
  |--------|------------|
594
594
  | `DispatchBus` | Persistent message bus with wildcard subscriptions |
595
- | `createDispatchBus` | Factory function for DispatchBus |
595
+ | `createDispatchBus` | Factory function for DispatchBus; retries a transient connection failure at startup (`startupRetry`, default 5 attempts from 500 ms, `false` to disable) |
596
596
  | `Dispatch` | Dispatch record model |
597
597
  | `DispatchSubscription` | Persistent subscription model |
598
598
 
@@ -687,6 +687,7 @@ instead of matching messages.
687
687
  | `isAbortedTransactionError` | Statement issued inside an aborted PostgreSQL transaction (`25P02`) |
688
688
  | `isDeterministicDatabaseError` | A retry cannot change the outcome |
689
689
  | `isTransientDatabaseError` | Contention or availability; a retry may succeed |
690
+ | `isTransientConnectionError` | The connection itself dropped, was refused, or the server could not accept it yet (class `08`, `57P01`–`57P03`, `53300`, `ECONNREFUSED`, `ECONNRESET`, `ETIMEDOUT`, `EAI_AGAIN`); an unresolvable or unreachable host is not retried |
690
691
  | `DatabaseErrorKind` | Union of classification kinds |
691
692
  | `DatabaseErrorClassification` | Structured result of `classifyDatabaseError` |
692
693
 
@@ -16,6 +16,27 @@ byte cap with declared field types preserved; datetimes are RFC 3339 instants,
16
16
  identity fields are string/number/datetime-compatible, and JSON values are
17
17
  bounded by depth, container count, string size, and bytes before cloning.
18
18
 
19
+ ## Allowed field values (#4381)
20
+
21
+ A `string`, `number`, or `boolean` field may declare `values`: a closed set of
22
+ `{ value, label?, description? }` entries in declaration order, so an agent can
23
+ map "open" onto `status in [pending, in_progress]`. Values are host-declared
24
+ schema, never inferred from rows. `normalizeDataQuerySchema()` (via the
25
+ exported `normalizeDataQueryFieldValues()`) requires a non-empty, duplicate-free
26
+ list of at most `MAX_DATA_QUERY_FIELD_VALUES` (100) entries whose values match
27
+ the field type; value, label, and description text are bounded
28
+ (`MAX_DATA_QUERY_FIELD_VALUE_LENGTH` 256, `..._LABEL_LENGTH` 128,
29
+ `..._DESCRIPTION_LENGTH` 512) and reject Unicode control, format (bidi,
30
+ zero-width), surrogate, and line/paragraph-separator characters. Declared values
31
+ are enforced by default: non-null `eq`/`ne`/`in`/`notIn` filter values must be
32
+ members, or the request fails with `DATA_QUERY_VALUE_NOT_ALLOWED` and a message
33
+ listing the allowed values. The message and `details.allowedValues` both stop
34
+ at the first 20 values; `details.allowedValueCount` gives the full size.
35
+ `ne`/`notIn` are checked too: a misspelled value there would otherwise
36
+ silently match every row. `valuesEnforced: false` (valid only with `values`) marks the set advisory and
37
+ skips that check; the normalized schema keeps only the `false` form. Range and
38
+ `like` operators, result rows, and facets are never checked against the set.
39
+
19
40
  Only normalized `DataQueryResult` envelopes cross REST, MCP, WebMCP, and browser
20
41
  boundaries. Adapter-specific report/content context wraps the base envelope; it
21
42
  does not add unsafe fields or SQL-like controls.
package/dist/browser.d.ts CHANGED
@@ -47,9 +47,9 @@ export { broadcastCacheInvalidation, CACHE_INVALIDATION_CHANNEL, type Collection
47
47
  export * from "./collection-read-plan.js";
48
48
  export type { AiUsageConfig, GlobalSignalConfig, MetricsConfig, PubSubConfig, } from "./config.js";
49
49
  export { config } from "./config.js";
50
- export { canonicalizeDataQuery, createDataQueryFingerprint, DataQueryValidationError, DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema, } from "./data-query.js";
50
+ export { canonicalizeDataQuery, createDataQueryFingerprint, DataQueryValidationError, DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FIELD_VALUE_DESCRIPTION_LENGTH, MAX_DATA_QUERY_FIELD_VALUE_LABEL_LENGTH, MAX_DATA_QUERY_FIELD_VALUE_LENGTH, MAX_DATA_QUERY_FIELD_VALUES, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, normalizeDataQueryFieldValues, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema, } from "./data-query.js";
51
51
  export { type DatabaseConfig, isDatabaseInterface, type ResolveDatabaseOptions, resolveDatabase, } from "./database.js";
52
- export { classifyDatabaseError, classifyDialectMessage, type DatabaseErrorClassification, type DatabaseErrorKind, isAbortedTransactionError, isDeterministicDatabaseError, isNotNullViolationError, isTransientDatabaseError, isUniqueViolationError, } from "./db-errors.js";
52
+ export { classifyDatabaseError, classifyDialectMessage, type DatabaseErrorClassification, type DatabaseErrorKind, isAbortedTransactionError, isDeterministicDatabaseError, isNotNullViolationError, isTransientConnectionError, isTransientDatabaseError, isUniqueViolationError, } from "./db-errors.js";
53
53
  export * from "./decisions.js";
54
54
  export { applyPendingDecoratorRegistrations, type CompatibleMethodDecorator, type CompatibleMethodDecoratorContext, type CompatiblePropertyDecorator, type CompatiblePropertyDecoratorContext, type LegacyPropertyDecoratorTarget, registerCompatibleFieldDecorator, registerCompatibleMethodDecorator, } from "./decorators/compatibility.js";
55
55
  export { type CrossPackageRefOptions, crossPackageRef, type FieldOptions, type FieldUIHints, field, foreignKey, type Meta, type MethodOptions, manyToMany, meta, method, type NumericFieldOptions, oneToMany, type RelationshipFieldOptions, type TextFieldOptions, } from "./decorators/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/dist/browser.js CHANGED
@@ -3,7 +3,7 @@ import { DEFAULT_AI_COST_RATES, estimateAiUsageCost } from "./adapters/cost-rate
3
3
  import { MetricsAdapter } from "./adapters/metrics.js";
4
4
  import { PubSubAdapter } from "./adapters/pubsub.js";
5
5
  import "./adapters/index.js";
6
- import { classifyDatabaseError, classifyDialectMessage, isAbortedTransactionError, isDeterministicDatabaseError, isNotNullViolationError, isTransientDatabaseError, isUniqueViolationError } from "./db-errors.js";
6
+ import { classifyDatabaseError, classifyDialectMessage, isAbortedTransactionError, isDeterministicDatabaseError, isNotNullViolationError, isTransientConnectionError, isTransientDatabaseError, isUniqueViolationError } from "./db-errors.js";
7
7
  import { isEmbeddedDatabase, isPostgresDatabase, usesEmbeddedRevisionFallback, withEmbeddedWriteQueue, withEmbeddedWriteTransaction } from "./embedded-write-queue.js";
8
8
  import { SmrtError } from "./smrt-error.js";
9
9
  import { isSensitiveConnectionParam, redactDatabaseUrl, redactDatabaseUrlsInText } from "./utils/database-url.js";
@@ -54,7 +54,7 @@ import { auditChanges, auditSnapshot, getActiveAuditOptions, isAudited, requireA
54
54
  import { withAuditContext } from "./audit-context.js";
55
55
  import { filterVisibleChangeFeedEntries, getAuthorizedChangesSince, getAuthorizedTenantScopedChangesSince, hasChangeFeedEntryVisibilityHook, hasChangeFeedTableAuthorizerHook, isChangeFeedDenyAll, isChangeFeedEntryVisible, resolveAuthorizedChangeFeedTables, setChangeFeedAuthorizer, setChangeFeedEntryVisibility } from "./change-feed-authz.js";
56
56
  import { executeCollectionReadPlan } from "./collection-read-plan.js";
57
- import { DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DataQueryValidationError, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, canonicalizeDataQuery, createDataQueryFingerprint, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema } from "./data-query.js";
57
+ import { DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DataQueryValidationError, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FIELD_VALUES, MAX_DATA_QUERY_FIELD_VALUE_DESCRIPTION_LENGTH, MAX_DATA_QUERY_FIELD_VALUE_LABEL_LENGTH, MAX_DATA_QUERY_FIELD_VALUE_LENGTH, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, canonicalizeDataQuery, createDataQueryFingerprint, normalizeDataQueryFieldValues, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema } from "./data-query.js";
58
58
  import { crossPackageRef, field, foreignKey, manyToMany, meta, method, oneToMany } from "./decorators/index.js";
59
59
  import { Dispatch } from "./dispatch/models/Dispatch.js";
60
60
  import { DispatchCollection } from "./dispatch/collections/Dispatches.js";
@@ -92,4 +92,4 @@ import { DIAGNOSTICS_DEFAULT_LIMIT, SYSTEM_DIAGNOSTICS_TABLES, readDispatchHealt
92
92
  import { DEFAULT_RETENTION_POLICY, clearRetentionTasks, getRetentionTasks, pruneAiUsage, pruneExpiredContexts, pruneRunOnceClaims, registerRetentionTask, runRetentionSweep, unregisterRetentionTask } from "./system/retention.js";
93
93
  import "./system/browser.js";
94
94
  import "./tools/index.js";
95
- export { AIError, AiUsageCollector, AiUsagePersistenceHandler, CACHE_INVALIDATION_CHANNEL, CHANGE_FEED_CREDENTIAL_TABLES, CHANGE_FEED_INTERCEPTOR_NAME, CHANGE_FEED_TABLE, CHANGE_SIGNAL_CHANNEL, CRUD_OPERATIONS, ConfigurationError, ContentHasher, CosineSimilarity, DEFAULT_AI_COST_RATES, DEFAULT_CHANGES_LIMIT, DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DEFAULT_DISPLAY_LABEL_FIELDS, DEFAULT_EMBEDDING_CONFIG, DEFAULT_FACET_LIMIT, DEFAULT_LEARNING_CONFIG, DEFAULT_LIST_LIMIT, DEFAULT_LIST_ORDER_BY, DEFAULT_POSTGRES_TIMEOUTS, DEFAULT_RETENTION_POLICY, DIAGNOSTICS_DEFAULT_LIMIT, DataQueryValidationError, DatabaseError, Dispatch, DispatchBus, DispatchCollection, DispatchSubscription, DispatchSubscriptionCollection, EXTERNAL_AGENT_COUNTERS, EXTERNAL_AGENT_USAGE_OPERATION, EmbeddingProvider, EmbeddingStorage, EmbeddingUnavailableError, ErrorUtils, ExternalAgentUsageError, ExternalAgentUsageRecorder, FIELD_UI_FORMATS, FIELD_UI_FORMAT_TYPES, FIELD_UI_WIDGETS, FIELD_UI_WIDGET_TYPES, FilesystemError, GlobalInterceptors, IN_LIST_CHUNK_SIZE, LearningMemory, LiveSchemaParityError, MAX_CHANGES_LIMIT, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MAX_LIST_LIMIT, MAX_STI_READ_SCOPE_TYPES, MAX_SYNC_APPLY_BATCH_SIZE, MOCK_PROVIDER_OPTION, MetricsAdapter, NetworkError, ObjectRegistry, POSTGRES_REVISION_GUARD_EXPRESSION, POSTGRES_TIMEOUT_ENV_VARS, PubSubAdapter, QueryBoundsError, QueryOrderByError, RECIPE_DEMO_MODES, RELATIONSHIP_ROLES, RunOnceClaimError, RuntimeError, SMRT_COLLECTION_BASE_NAMES, SMRT_CUSTOM_ACTION_ERROR_METADATA_KEY, SMRT_SCHEMA_VERSION, SYNC_APPLY_ROUTE_SEGMENTS, SYNC_APPLY_UUID_PATTERN, SYSTEM_DIAGNOSTICS_TABLES, SYSTEM_TABLE_NAMES, SchemaComparer, SignalBus, SignalSanitizer, SmrtClass, SmrtCollection, SmrtError, SmrtHierarchical, SmrtJunction, SmrtJunctionBase, SmrtObject, SmrtPolymorphicAssociation, SmrtRecipe, TenantIsolationError, ValidationError, ValidationReport, ValidationUtils, appendChange, appendChanges, applyOneToManyChildAccessors, applyPendingDecoratorRegistrations, applyPostgresPermissions, applyPostgresRuntimeTimeouts, applySyncWritablePolicy, assertFiniteUnitInterval, assertPostgresSystemTimestampsCurrent, assertScopedPackageName, auditChanges, auditSnapshot, broadcastCacheInvalidation, buildCascadePlan, buildConnectSection, buildCustomActionInputSchema, buildCustomActionInvocationArgs, buildDefaultListOrderBy, buildGlossary, bumpChangeFeed, canonicalizeDataQuery, cascadeReferencesTo, checkLiveSchemaParity, childAccessorName, chunkArray, classifyDatabaseError, classifyDialectMessage, classifyMethodWireability, classifyParameterWireability, clearRetentionTasks, clone, coerceCustomActionArgument, collectForeignKeyOrphanCounts, config, convertTypeToJsonSchema, createClassNamePredicate, createDataQueryFingerprint, createDispatchBus, createFilesystemAdapter, createGeneratedCollectionAccess, createInterceptorContext, createManifestClassNamePredicate, createQualifiedName, createRecipeHelp, createSmrtClient, crossPackageRef, customActionParameterInputName, declareChangeFeedSensitiveTable, declaredTypeAcceptsDate, declaresRuntimeRestRoute, declaresRuntimeRestRouteShape, deriveRecipeDemo, describeDisplayLabel, detectEngine, displayLabelFieldProblem, drainChangeFeed, effectiveRecipeDemo, ensureBootstrapSystemTableCompatibility, ensureCacheInvalidationListener, ensureChangeFeedTable, ensureDeferredSystemTableCompatibility, ensureDispatchSubscriptionsSystemTableCompatibility, ensureDispatchSystemTableCompatibility, ensureJobEventsSystemTableCompatibility, ensureJobsSystemTableCompatibility, ensureLegacySystemTableCompatibility, ensureSystemTables, estimateAiUsageCost, executeCollectionReadPlan, executeDecision, executeToolCall, executeToolCalls, exposedCrudVerbs, extractFieldRefs, field, fieldTypeToJsonSchema, filterVisibleChangeFeedEntries, findCollectionWriteEscalations, findField, findSelectorFor, findSubclassExposureEscalations, foreignKey, formatToolResults, generateDDLForEngine, generateSchemaDiff, generateToolFromMethod, generateToolManifest, getActiveAuditOptions, getAdapterInfo, getAuthorizedChangesSince, getAuthorizedTenantScopedChangesSince, getCacheGeneration, getChangeFeedSensitiveTables, getChangesSince, getClassConfigResolvers, getClassName, getConfigResolver, getDatabaseEngine, getPackageFromQualifiedName, getRetentionTasks, getSQLFromDiff, getSystemTableShapes, getTableVersion, getTenantScopedChangesSince, hasActionableChanges, hasBrowserOption, hasChangeFeedEntryVisibilityHook, hasChangeFeedTableAuthorizerHook, helpToMarkdown, importOptionalDependency, inheritCollectionExposure, inheritSubclassExposure, inheritedCollectionSurface, invalidateCollectionCache, isAbortedTransactionError, isAdvisoryOnlyChange, isAudited, isChangeFeedDenyAll, isChangeFeedEntryVisible, isChangeFeedSensitiveTable, isCrudOperation, isCrudToolAction, isDatabaseInterface, isDeterministicDatabaseError, isEmbeddedDatabase, isFieldUIFormat, isFieldUIWidget, isFrameworkBaseClass, isFromPackage, isLazyConfigSentinel, isManualOrAdvisoryChange, isMockableProvider, isNotNullViolationError, isPostgresDatabase, isQualifiedName, isRelationshipRole, isScopedPackageName, isSensitiveConnectionParam, isServerProvider, isSmrtCollectionExtendsName, isStaleWrite, isTenantScopedClassResolved, isTransientDatabaseError, isType, isUniqueViolationError, isValid, listConfigResolvers, manyToMany, meta, method, migratePostgresSystemTimestamps, normalizeCustomActionFailure, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema, normalizeExternalAgentUsageReport, normalizeOnDelete, normalizeTypedHttpError, oneToMany, parse, parseHelp, parseQualifiedName, parseSyncApplyBatch, payloadMatchesRow, planForeignKeyCreation, planPostgresPermissions, planPostgresSystemTimestampMigrations, postgresRevisionCandidates, postgresRevisionCondition, processSyncApplyBatch, pruneAiUsage, pruneChangeFeed, pruneExpiredContexts, pruneRunOnceClaims, qualifiedNamesEqual, queryStringDecoderFor, readDispatchHealth, readJobHealth, readMethodDecoratorConfig, readMigrationStatus, readRecentChanges, readRegistryDrift, readScheduleHealth, readSystemDiagnostics, redactDatabaseUrl, redactDatabaseUrlsInText, registerChangeFeedWriter, registerCompatibleFieldDecorator, registerCompatibleMethodDecorator, registerConfigResolver, registerFilesystemAdapterFactory, registerOptionalDependency, registerRetentionTask, renderHelp, requireAuditOptions, resetChangeFeedWarnings, resetChangeSignals, resetCollectionCache, resetConfigResolvers, resetVerifiedTables, resolveApiMethodExposure, resolveAuthorizedChangeFeedTables, resolveCustomActionMetadata, resolveDatabase, resolveDbCacheKey, resolveDeclaredScopeMismatch, resolveDispatchTenantId, resolveDispatchTenantScope, resolveDisplayLabelField, resolveEffectiveActionMetadata, resolveGetStringFilter, resolveHelp, resolveLazyConfig, resolveListLimit, resolveListOffset, resolveOperationPermissionAlias, resolvePostgresTimeouts, runCascadeDelete, runRetentionSweep, runWithTenantGate, safeParse, safeStringify, setChangeFeedAuthorizer, setChangeFeedEntryVisibility, setDispatchTenantResolver, setTenantEntryPointRunner, setTenantScopedClassResolver, shouldIncludeMethod, smrt, smrt as smrtRegistry, stopCacheInvalidationListeners, stopChangeSignalListeners, stringify, subscribeToChangeSignals, summarizeExternalAgentUsage, surfaceOpensOperation, tableExists, toCustomActionBoolean, toCustomActionDate, toCustomActionNumber, toSnakeCase, unregisterChangeFeedWriter, unregisterConfigResolver, unregisterRetentionTask, usesEmbeddedRevisionFallback, validateHelp, validatePostgresPermissionContract, validateSyncApplyItem, validateToolCall, withAuditContext, withEmbeddedWriteQueue, withEmbeddedWriteTransaction, writeAudit };
95
+ export { AIError, AiUsageCollector, AiUsagePersistenceHandler, CACHE_INVALIDATION_CHANNEL, CHANGE_FEED_CREDENTIAL_TABLES, CHANGE_FEED_INTERCEPTOR_NAME, CHANGE_FEED_TABLE, CHANGE_SIGNAL_CHANNEL, CRUD_OPERATIONS, ConfigurationError, ContentHasher, CosineSimilarity, DEFAULT_AI_COST_RATES, DEFAULT_CHANGES_LIMIT, DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DEFAULT_DISPLAY_LABEL_FIELDS, DEFAULT_EMBEDDING_CONFIG, DEFAULT_FACET_LIMIT, DEFAULT_LEARNING_CONFIG, DEFAULT_LIST_LIMIT, DEFAULT_LIST_ORDER_BY, DEFAULT_POSTGRES_TIMEOUTS, DEFAULT_RETENTION_POLICY, DIAGNOSTICS_DEFAULT_LIMIT, DataQueryValidationError, DatabaseError, Dispatch, DispatchBus, DispatchCollection, DispatchSubscription, DispatchSubscriptionCollection, EXTERNAL_AGENT_COUNTERS, EXTERNAL_AGENT_USAGE_OPERATION, EmbeddingProvider, EmbeddingStorage, EmbeddingUnavailableError, ErrorUtils, ExternalAgentUsageError, ExternalAgentUsageRecorder, FIELD_UI_FORMATS, FIELD_UI_FORMAT_TYPES, FIELD_UI_WIDGETS, FIELD_UI_WIDGET_TYPES, FilesystemError, GlobalInterceptors, IN_LIST_CHUNK_SIZE, LearningMemory, LiveSchemaParityError, MAX_CHANGES_LIMIT, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FIELD_VALUES, MAX_DATA_QUERY_FIELD_VALUE_DESCRIPTION_LENGTH, MAX_DATA_QUERY_FIELD_VALUE_LABEL_LENGTH, MAX_DATA_QUERY_FIELD_VALUE_LENGTH, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, MAX_FACET_FIELDS, MAX_FACET_LIMIT, MAX_LIST_LIMIT, MAX_STI_READ_SCOPE_TYPES, MAX_SYNC_APPLY_BATCH_SIZE, MOCK_PROVIDER_OPTION, MetricsAdapter, NetworkError, ObjectRegistry, POSTGRES_REVISION_GUARD_EXPRESSION, POSTGRES_TIMEOUT_ENV_VARS, PubSubAdapter, QueryBoundsError, QueryOrderByError, RECIPE_DEMO_MODES, RELATIONSHIP_ROLES, RunOnceClaimError, RuntimeError, SMRT_COLLECTION_BASE_NAMES, SMRT_CUSTOM_ACTION_ERROR_METADATA_KEY, SMRT_SCHEMA_VERSION, SYNC_APPLY_ROUTE_SEGMENTS, SYNC_APPLY_UUID_PATTERN, SYSTEM_DIAGNOSTICS_TABLES, SYSTEM_TABLE_NAMES, SchemaComparer, SignalBus, SignalSanitizer, SmrtClass, SmrtCollection, SmrtError, SmrtHierarchical, SmrtJunction, SmrtJunctionBase, SmrtObject, SmrtPolymorphicAssociation, SmrtRecipe, TenantIsolationError, ValidationError, ValidationReport, ValidationUtils, appendChange, appendChanges, applyOneToManyChildAccessors, applyPendingDecoratorRegistrations, applyPostgresPermissions, applyPostgresRuntimeTimeouts, applySyncWritablePolicy, assertFiniteUnitInterval, assertPostgresSystemTimestampsCurrent, assertScopedPackageName, auditChanges, auditSnapshot, broadcastCacheInvalidation, buildCascadePlan, buildConnectSection, buildCustomActionInputSchema, buildCustomActionInvocationArgs, buildDefaultListOrderBy, buildGlossary, bumpChangeFeed, canonicalizeDataQuery, cascadeReferencesTo, checkLiveSchemaParity, childAccessorName, chunkArray, classifyDatabaseError, classifyDialectMessage, classifyMethodWireability, classifyParameterWireability, clearRetentionTasks, clone, coerceCustomActionArgument, collectForeignKeyOrphanCounts, config, convertTypeToJsonSchema, createClassNamePredicate, createDataQueryFingerprint, createDispatchBus, createFilesystemAdapter, createGeneratedCollectionAccess, createInterceptorContext, createManifestClassNamePredicate, createQualifiedName, createRecipeHelp, createSmrtClient, crossPackageRef, customActionParameterInputName, declareChangeFeedSensitiveTable, declaredTypeAcceptsDate, declaresRuntimeRestRoute, declaresRuntimeRestRouteShape, deriveRecipeDemo, describeDisplayLabel, detectEngine, displayLabelFieldProblem, drainChangeFeed, effectiveRecipeDemo, ensureBootstrapSystemTableCompatibility, ensureCacheInvalidationListener, ensureChangeFeedTable, ensureDeferredSystemTableCompatibility, ensureDispatchSubscriptionsSystemTableCompatibility, ensureDispatchSystemTableCompatibility, ensureJobEventsSystemTableCompatibility, ensureJobsSystemTableCompatibility, ensureLegacySystemTableCompatibility, ensureSystemTables, estimateAiUsageCost, executeCollectionReadPlan, executeDecision, executeToolCall, executeToolCalls, exposedCrudVerbs, extractFieldRefs, field, fieldTypeToJsonSchema, filterVisibleChangeFeedEntries, findCollectionWriteEscalations, findField, findSelectorFor, findSubclassExposureEscalations, foreignKey, formatToolResults, generateDDLForEngine, generateSchemaDiff, generateToolFromMethod, generateToolManifest, getActiveAuditOptions, getAdapterInfo, getAuthorizedChangesSince, getAuthorizedTenantScopedChangesSince, getCacheGeneration, getChangeFeedSensitiveTables, getChangesSince, getClassConfigResolvers, getClassName, getConfigResolver, getDatabaseEngine, getPackageFromQualifiedName, getRetentionTasks, getSQLFromDiff, getSystemTableShapes, getTableVersion, getTenantScopedChangesSince, hasActionableChanges, hasBrowserOption, hasChangeFeedEntryVisibilityHook, hasChangeFeedTableAuthorizerHook, helpToMarkdown, importOptionalDependency, inheritCollectionExposure, inheritSubclassExposure, inheritedCollectionSurface, invalidateCollectionCache, isAbortedTransactionError, isAdvisoryOnlyChange, isAudited, isChangeFeedDenyAll, isChangeFeedEntryVisible, isChangeFeedSensitiveTable, isCrudOperation, isCrudToolAction, isDatabaseInterface, isDeterministicDatabaseError, isEmbeddedDatabase, isFieldUIFormat, isFieldUIWidget, isFrameworkBaseClass, isFromPackage, isLazyConfigSentinel, isManualOrAdvisoryChange, isMockableProvider, isNotNullViolationError, isPostgresDatabase, isQualifiedName, isRelationshipRole, isScopedPackageName, isSensitiveConnectionParam, isServerProvider, isSmrtCollectionExtendsName, isStaleWrite, isTenantScopedClassResolved, isTransientConnectionError, isTransientDatabaseError, isType, isUniqueViolationError, isValid, listConfigResolvers, manyToMany, meta, method, migratePostgresSystemTimestamps, normalizeCustomActionFailure, normalizeDataQueryFieldValues, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema, normalizeExternalAgentUsageReport, normalizeOnDelete, normalizeTypedHttpError, oneToMany, parse, parseHelp, parseQualifiedName, parseSyncApplyBatch, payloadMatchesRow, planForeignKeyCreation, planPostgresPermissions, planPostgresSystemTimestampMigrations, postgresRevisionCandidates, postgresRevisionCondition, processSyncApplyBatch, pruneAiUsage, pruneChangeFeed, pruneExpiredContexts, pruneRunOnceClaims, qualifiedNamesEqual, queryStringDecoderFor, readDispatchHealth, readJobHealth, readMethodDecoratorConfig, readMigrationStatus, readRecentChanges, readRegistryDrift, readScheduleHealth, readSystemDiagnostics, redactDatabaseUrl, redactDatabaseUrlsInText, registerChangeFeedWriter, registerCompatibleFieldDecorator, registerCompatibleMethodDecorator, registerConfigResolver, registerFilesystemAdapterFactory, registerOptionalDependency, registerRetentionTask, renderHelp, requireAuditOptions, resetChangeFeedWarnings, resetChangeSignals, resetCollectionCache, resetConfigResolvers, resetVerifiedTables, resolveApiMethodExposure, resolveAuthorizedChangeFeedTables, resolveCustomActionMetadata, resolveDatabase, resolveDbCacheKey, resolveDeclaredScopeMismatch, resolveDispatchTenantId, resolveDispatchTenantScope, resolveDisplayLabelField, resolveEffectiveActionMetadata, resolveGetStringFilter, resolveHelp, resolveLazyConfig, resolveListLimit, resolveListOffset, resolveOperationPermissionAlias, resolvePostgresTimeouts, runCascadeDelete, runRetentionSweep, runWithTenantGate, safeParse, safeStringify, setChangeFeedAuthorizer, setChangeFeedEntryVisibility, setDispatchTenantResolver, setTenantEntryPointRunner, setTenantScopedClassResolver, shouldIncludeMethod, smrt, smrt as smrtRegistry, stopCacheInvalidationListeners, stopChangeSignalListeners, stringify, subscribeToChangeSignals, summarizeExternalAgentUsage, surfaceOpensOperation, tableExists, toCustomActionBoolean, toCustomActionDate, toCustomActionNumber, toSnakeCase, unregisterChangeFeedWriter, unregisterConfigResolver, unregisterRetentionTask, usesEmbeddedRevisionFallback, validateHelp, validatePostgresPermissionContract, validateSyncApplyItem, validateToolCall, withAuditContext, withEmbeddedWriteQueue, withEmbeddedWriteTransaction, writeAudit };
@@ -9,7 +9,7 @@
9
9
  * not execute SQL or resolve tenant/principal state; authenticated domain
10
10
  * adapters supply the schema and perform those responsibilities separately.
11
11
  */
12
- import type { DataQueryRequest, DataQueryResult, DataQuerySchema } from '@happyvertical/smrt-types';
12
+ import type { DataQueryAllowedValue, DataQueryFieldDescriptor, DataQueryRequest, DataQueryResult, DataQuerySchema } from '@happyvertical/smrt-types';
13
13
  import { ValidationError } from "./errors.js";
14
14
  /** Default and hard ceilings for normalized data-query input and output. */
15
15
  export declare const DEFAULT_DATA_QUERY_PAGE_LIMIT = 50;
@@ -27,12 +27,27 @@ export declare const MAX_DATA_QUERY_CURSOR_LENGTH = 2048;
27
27
  export declare const MAX_DATA_QUERY_JSON_DEPTH = 16;
28
28
  export declare const MAX_DATA_QUERY_JSON_CONTAINER_ITEMS = 1000;
29
29
  export declare const MAX_DATA_QUERY_JSON_STRING_LENGTH = 65536;
30
+ /**
31
+ * Bounds for host-declared allowed field values (#4381). The count matches
32
+ * {@link MAX_DATA_QUERY_IN_VALUES} so a whole declared set fits one `in`.
33
+ */
34
+ export declare const MAX_DATA_QUERY_FIELD_VALUES = 100;
35
+ export declare const MAX_DATA_QUERY_FIELD_VALUE_LENGTH = 256;
36
+ export declare const MAX_DATA_QUERY_FIELD_VALUE_LABEL_LENGTH = 128;
37
+ export declare const MAX_DATA_QUERY_FIELD_VALUE_DESCRIPTION_LENGTH = 512;
30
38
  /** A typed 400-class failure for malformed or policy-disallowed data queries. */
31
39
  export declare class DataQueryValidationError extends ValidationError {
32
40
  readonly status = 400;
33
41
  readonly publicMessage: string;
34
42
  constructor(message: string, code?: string, details?: Record<string, unknown>);
35
43
  }
44
+ /**
45
+ * Validate a field's host-declared allowed values (#4381): a non-empty,
46
+ * bounded, duplicate-free list whose values match the field type, with
47
+ * optional label/description text free of control and bidi characters.
48
+ * Declaration order is preserved. Throws {@link DataQueryValidationError}.
49
+ */
50
+ export declare function normalizeDataQueryFieldValues(value: unknown, type: DataQueryFieldDescriptor['type'], fieldId: string): DataQueryAllowedValue[];
36
51
  /** Validate and canonicalize trusted adapter query policy before use. */
37
52
  export declare function normalizeDataQuerySchema(value: unknown): DataQuerySchema;
38
53
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"data-query.d.ts","sourceRoot":"","sources":["../src/data-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAUV,gBAAgB,EAChB,eAAe,EAGf,eAAe,EAGhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAU,CAAC;AAG3C,4EAA4E;AAC5E,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAC/C,eAAO,MAAM,+BAA+B,UAAY,CAAC;AACzD,eAAO,MAAM,2BAA2B,WAAa,CAAC;AACtD,eAAO,MAAM,4BAA4B,SAAU,CAAC;AACpD,eAAO,MAAM,qBAAqB,UAAY,CAAC;AAC/C,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAClD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AACzD,eAAO,MAAM,iCAAiC,QAAS,CAAC;AAexD,iFAAiF;AACjF,qBAAa,wBAAyB,SAAQ,eAAe;IAC3D,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAG7B,OAAO,EAAE,MAAM,EACf,IAAI,SAAuB,EAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMpC;AAgWD,yEAAyE;AACzE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAiIxE;AA2UD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,OAAO,GACnB,gBAAgB,CAuGlB;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAI7E;AAED,4FAA4F;AAC5F,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,GACd,MAAM,CAER;AAuLD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,OAAO,EACrB,WAAW,EAAE,OAAO,GACnB,eAAe,CAuLjB"}
1
+ {"version":3,"file":"data-query.d.ts","sourceRoot":"","sources":["../src/data-query.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,qBAAqB,EAKrB,wBAAwB,EAKxB,gBAAgB,EAChB,eAAe,EAGf,eAAe,EAGhB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAU,CAAC;AAG3C,4EAA4E;AAC5E,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAC/C,eAAO,MAAM,+BAA+B,UAAY,CAAC;AACzD,eAAO,MAAM,2BAA2B,WAAa,CAAC;AACtD,eAAO,MAAM,4BAA4B,SAAU,CAAC;AACpD,eAAO,MAAM,qBAAqB,UAAY,CAAC;AAC/C,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAC7C,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAC5C,eAAO,MAAM,qBAAqB,KAAK,CAAC;AACxC,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,4BAA4B,OAAQ,CAAC;AAClD,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AACzD,eAAO,MAAM,iCAAiC,QAAS,CAAC;AACxD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,iCAAiC,MAAM,CAAC;AACrD,eAAO,MAAM,uCAAuC,MAAM,CAAC;AAC3D,eAAO,MAAM,6CAA6C,MAAM,CAAC;AA0BjE,iFAAiF;AACjF,qBAAa,wBAAyB,SAAQ,eAAe;IAC3D,QAAQ,CAAC,MAAM,OAAO;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;gBAG7B,OAAO,EAAE,MAAM,EACf,IAAI,SAAuB,EAC3B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMpC;AAuYD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,EACtC,OAAO,EAAE,MAAM,GACd,qBAAqB,EAAE,CAgEzB;AAsCD,yEAAyE;AACzE,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAiIxE;AA6UD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,OAAO,EACd,WAAW,EAAE,OAAO,GACnB,gBAAgB,CAuGlB;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAI7E;AAED,4FAA4F;AAC5F,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,OAAO,GACd,MAAM,CAER;AAuLD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,OAAO,EACrB,WAAW,EAAE,OAAO,GACnB,eAAe,CAuLjB"}
@@ -16,6 +16,25 @@ var MAX_DATA_QUERY_WARNINGS = 100;
16
16
  var MAX_DATA_QUERY_CURSOR_LENGTH = 2048;
17
17
  var MAX_DATA_QUERY_JSON_CONTAINER_ITEMS = 1e3;
18
18
  var MAX_DATA_QUERY_JSON_STRING_LENGTH = 65536;
19
+ /**
20
+ * Bounds for host-declared allowed field values (#4381). The count matches
21
+ * {@link MAX_DATA_QUERY_IN_VALUES} so a whole declared set fits one `in`.
22
+ */
23
+ var MAX_DATA_QUERY_FIELD_VALUES = 100;
24
+ var MAX_DATA_QUERY_FIELD_VALUE_LENGTH = 256;
25
+ var MAX_DATA_QUERY_FIELD_VALUE_LABEL_LENGTH = 128;
26
+ var MAX_DATA_QUERY_FIELD_VALUE_DESCRIPTION_LENGTH = 512;
27
+ /**
28
+ * Allowed values listed in a rejected-filter message and its
29
+ * `details.allowedValues` before truncation, so neither grows with the set.
30
+ */
31
+ var MAX_LISTED_ALLOWED_VALUES = 20;
32
+ /**
33
+ * Control (C0/C1/DEL), format (bidi overrides/isolates, zero-width, BOM),
34
+ * lone-surrogate, and line/paragraph-separator characters: none belongs in
35
+ * schema text an agent reads, and bidi controls can disguise a value.
36
+ */
37
+ var UNSAFE_SCHEMA_TEXT = /[\p{Cc}\p{Cf}\p{Cs}\p{Zl}\p{Zp}]/u;
19
38
  var FILTER_OPERATORS = /* @__PURE__ */ new Set([
20
39
  "eq",
21
40
  "ne",
@@ -231,7 +250,9 @@ function normalizeFieldDescriptor(value) {
231
250
  "projectable",
232
251
  "sortable",
233
252
  "facetable",
234
- "filterOperators"
253
+ "filterOperators",
254
+ "values",
255
+ "valuesEnforced"
235
256
  ], "Data query schema field");
236
257
  const id = stringValue(object.id, "Data query field id");
237
258
  const type = stringValue(object.type, `Data query field ${id} type`);
@@ -259,15 +280,88 @@ function normalizeFieldDescriptor(value) {
259
280
  const projectable = typeof object.projectable === "boolean" ? object.projectable : void 0;
260
281
  const sortable = typeof object.sortable === "boolean" ? object.sortable : void 0;
261
282
  const facetable = typeof object.facetable === "boolean" ? object.facetable : void 0;
283
+ const values = object.values === void 0 ? void 0 : normalizeDataQueryFieldValues(object.values, type, id);
284
+ if (object.valuesEnforced !== void 0) {
285
+ if (typeof object.valuesEnforced !== "boolean") return fail(`Data query field ${id} valuesEnforced must be boolean`);
286
+ if (!values) return fail(`Data query field ${id} valuesEnforced requires values`);
287
+ }
288
+ const advisory = values !== void 0 && object.valuesEnforced === false;
262
289
  return {
263
290
  id,
264
291
  type,
265
292
  ...projectable === void 0 ? {} : { projectable },
266
293
  ...sortable === void 0 ? {} : { sortable },
267
294
  ...facetable === void 0 ? {} : { facetable },
268
- ...filterOperators ? { filterOperators } : {}
295
+ ...filterOperators ? { filterOperators } : {},
296
+ ...values ? { values } : {},
297
+ ...advisory ? { valuesEnforced: false } : {}
269
298
  };
270
299
  }
300
+ function schemaText(value, label, maxLength) {
301
+ const text = stringValue(value, label, maxLength);
302
+ if (UNSAFE_SCHEMA_TEXT.test(text)) return fail(`${label} cannot contain control, format, or bidirectional characters`);
303
+ return text;
304
+ }
305
+ /**
306
+ * Validate a field's host-declared allowed values (#4381): a non-empty,
307
+ * bounded, duplicate-free list whose values match the field type, with
308
+ * optional label/description text free of control and bidi characters.
309
+ * Declaration order is preserved. Throws {@link DataQueryValidationError}.
310
+ */
311
+ function normalizeDataQueryFieldValues(value, type, fieldId) {
312
+ const label = `Data query field ${fieldId} values`;
313
+ if (type !== "string" && type !== "number" && type !== "boolean") return fail(`${label} are only supported on string, number, or boolean fields`);
314
+ if (!Array.isArray(value) || value.length === 0) return fail(`${label} must be a non-empty array`);
315
+ if (value.length > 100) return fail(`${label} cannot exceed 100 entries`);
316
+ const seen = /* @__PURE__ */ new Set();
317
+ return value.map((entry, index) => {
318
+ const entryLabel = `${label}[${index}]`;
319
+ const object = plainObject(entry, entryLabel);
320
+ exactKeys(object, [
321
+ "value",
322
+ "label",
323
+ "description"
324
+ ], entryLabel);
325
+ const raw = object.value;
326
+ let allowed;
327
+ if (type === "string") allowed = schemaText(raw, `${entryLabel} value`, 256);
328
+ else if (type === "number") {
329
+ if (typeof raw !== "number" || !Number.isFinite(raw)) return fail(`${entryLabel} value must be a finite number`);
330
+ allowed = raw;
331
+ } else {
332
+ if (typeof raw !== "boolean") return fail(`${entryLabel} value must be a boolean`);
333
+ allowed = raw;
334
+ }
335
+ const key = signature(allowed);
336
+ if (seen.has(key)) return fail(`${label} must be unique`);
337
+ seen.add(key);
338
+ const valueLabel = object.label === void 0 ? void 0 : schemaText(object.label, `${entryLabel} label`, 128);
339
+ const description = object.description === void 0 ? void 0 : schemaText(object.description, `${entryLabel} description`, 512);
340
+ return {
341
+ value: allowed,
342
+ ...valueLabel === void 0 ? {} : { label: valueLabel },
343
+ ...description === void 0 ? {} : { description }
344
+ };
345
+ });
346
+ }
347
+ /**
348
+ * Reject an equality-family filter value outside a field's enforced closed
349
+ * set with a message the caller can act on. `null` stays allowed, and an
350
+ * advisory set (`valuesEnforced: false`) accepts any value.
351
+ */
352
+ function assertDeclaredValue(scalar, descriptor, label) {
353
+ if (scalar === null || !descriptor.values || descriptor.valuesEnforced === false) return;
354
+ if (descriptor.values.some((entry) => entry.value === scalar)) return;
355
+ const allowed = descriptor.values.map((entry) => entry.value);
356
+ const shown = allowed.slice(0, MAX_LISTED_ALLOWED_VALUES);
357
+ const listed = shown.map((entry) => JSON.stringify(entry)).join(", ");
358
+ const more = allowed.length > MAX_LISTED_ALLOWED_VALUES ? `, and ${allowed.length - MAX_LISTED_ALLOWED_VALUES} more` : "";
359
+ fail(`${label} is not an allowed value for ${descriptor.id}; use one of: ${listed}${more}`, "DATA_QUERY_VALUE_NOT_ALLOWED", {
360
+ field: descriptor.id,
361
+ allowedValues: shown,
362
+ allowedValueCount: allowed.length
363
+ });
364
+ }
271
365
  /** Validate and canonicalize trusted adapter query policy before use. */
272
366
  function normalizeDataQuerySchema(value) {
273
367
  const object = plainObject(value, "Data query schema");
@@ -368,7 +462,12 @@ function normalizeFilter(value, fields, depth = 0, budget = { nodes: 0 }) {
368
462
  if (operator === "in" || operator === "notIn") {
369
463
  if (!Array.isArray(object.value) || object.value.length === 0) return fail(`Data query ${operator} value must be a non-empty array`);
370
464
  if (object.value.length > 100) return fail(`Data query ${operator} value cannot exceed 100 items`);
371
- const values = object.value.map((entry, index) => scalarForField(entry, descriptor, `Data query ${operator} value ${index}`));
465
+ const values = object.value.map((entry, index) => {
466
+ const entryLabel = `Data query ${operator} value ${index}`;
467
+ const scalar = scalarForField(entry, descriptor, entryLabel);
468
+ assertDeclaredValue(scalar, descriptor, entryLabel);
469
+ return scalar;
470
+ });
372
471
  return {
373
472
  kind: "condition",
374
473
  field,
@@ -378,6 +477,7 @@ function normalizeFilter(value, fields, depth = 0, budget = { nodes: 0 }) {
378
477
  }
379
478
  if (Array.isArray(object.value)) return fail(`Data query ${operator} value must be a scalar`);
380
479
  const scalar = scalarForField(object.value, descriptor, `Data query ${operator} value`);
480
+ if (operator === "eq" || operator === "ne") assertDeclaredValue(scalar, descriptor, `Data query ${operator} value`);
381
481
  if (operator === "like" && descriptor.type !== "string") return fail("Data query like is only available for string fields");
382
482
  if (operator === "like" && typeof scalar !== "string") return fail("Data query like value must be a string");
383
483
  if ([
@@ -806,6 +906,6 @@ function normalizeDataQueryResult(value, inputRequest, inputSchema) {
806
906
  return normalized;
807
907
  }
808
908
  //#endregion
809
- export { DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DataQueryValidationError, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_JSON_CONTAINER_ITEMS, MAX_DATA_QUERY_JSON_STRING_LENGTH, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, canonicalizeDataQuery, createDataQueryFingerprint, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema };
909
+ export { DEFAULT_DATA_QUERY_PAGE_LIMIT, DEFAULT_DATA_QUERY_RESULT_BYTES, DataQueryValidationError, MAX_DATA_QUERY_CURSOR_LENGTH, MAX_DATA_QUERY_FACETS, MAX_DATA_QUERY_FIELD_VALUES, MAX_DATA_QUERY_FIELD_VALUE_DESCRIPTION_LENGTH, MAX_DATA_QUERY_FIELD_VALUE_LABEL_LENGTH, MAX_DATA_QUERY_FIELD_VALUE_LENGTH, MAX_DATA_QUERY_FILTERS, MAX_DATA_QUERY_FILTER_DEPTH, MAX_DATA_QUERY_IN_VALUES, MAX_DATA_QUERY_JSON_CONTAINER_ITEMS, MAX_DATA_QUERY_JSON_STRING_LENGTH, MAX_DATA_QUERY_OFFSET, MAX_DATA_QUERY_PAGE_LIMIT, MAX_DATA_QUERY_REQUEST_BYTES, MAX_DATA_QUERY_RESULT_BYTES, MAX_DATA_QUERY_WARNINGS, canonicalizeDataQuery, createDataQueryFingerprint, normalizeDataQueryFieldValues, normalizeDataQueryRequest, normalizeDataQueryResult, normalizeDataQuerySchema };
810
910
 
811
911
  //# sourceMappingURL=data-query.js.map