@objectstack/spec 1.0.11 → 1.0.12
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 +41 -1
- package/dist/ai/index.d.mts +2 -1
- package/dist/ai/index.d.ts +2 -1
- package/dist/ai/index.js +2047 -1944
- package/dist/ai/index.js.map +1 -1
- package/dist/ai/index.mjs +2047 -1944
- package/dist/ai/index.mjs.map +1 -1
- package/dist/api/index.d.mts +3 -1
- package/dist/api/index.d.ts +3 -1
- package/dist/api/index.js +2599 -2292
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +2587 -2292
- package/dist/api/index.mjs.map +1 -1
- package/dist/automation/index.d.mts +2 -1
- package/dist/automation/index.d.ts +2 -1
- package/dist/automation/index.js +83 -0
- package/dist/automation/index.js.map +1 -1
- package/dist/automation/index.mjs +77 -0
- package/dist/automation/index.mjs.map +1 -1
- package/dist/contracts/index.d.mts +3 -2
- package/dist/contracts/index.d.ts +3 -2
- package/dist/data/index.d.mts +3 -2
- package/dist/data/index.d.ts +3 -2
- package/dist/data/index.js +658 -556
- package/dist/data/index.js.map +1 -1
- package/dist/data/index.mjs +656 -556
- package/dist/data/index.mjs.map +1 -1
- package/dist/{driver.zod-lfi00zVT.d.ts → driver.zod-CfGk9GYh.d.ts} +2164 -11
- package/dist/{driver.zod-BOM_Etco.d.mts → driver.zod-y1cX6R3c.d.mts} +2164 -11
- package/dist/hub/index.d.mts +1 -1
- package/dist/hub/index.d.ts +1 -1
- package/dist/hub/index.js +789 -724
- package/dist/hub/index.js.map +1 -1
- package/dist/hub/index.mjs +789 -724
- package/dist/hub/index.mjs.map +1 -1
- package/dist/{index-C67cfwmW.d.ts → index-B0Hf65bV.d.ts} +13 -5
- package/dist/{index-DLcySG7U.d.ts → index-B5pKM0My.d.ts} +335 -4370
- package/dist/{index-Os7lItRe.d.mts → index-BA022mg2.d.ts} +6178 -129
- package/dist/{index-B5-VbOKg.d.mts → index-BGeLoH2z.d.ts} +4251 -74
- package/dist/{index-CH5zloR3.d.ts → index-BwO__aqV.d.ts} +1 -1
- package/dist/{index-Dp7GFJ8V.d.mts → index-Cia3JPQ8.d.mts} +13 -5
- package/dist/{index-D12rNohm.d.mts → index-CpD1q1FP.d.ts} +35 -18
- package/dist/{index-Os7lItRe.d.ts → index-D5RSFPuB.d.mts} +6178 -129
- package/dist/{index-CU4m6noq.d.mts → index-DGjpaj0X.d.mts} +1 -1
- package/dist/{index-D12rNohm.d.ts → index-Dfn5VXl6.d.mts} +35 -18
- package/dist/{index-l6WIlmOD.d.mts → index-Dgybxlky.d.mts} +177 -158
- package/dist/{index-l6WIlmOD.d.ts → index-Dgybxlky.d.ts} +177 -158
- package/dist/{index-DLcySG7U.d.mts → index-Dpsk8PF4.d.mts} +335 -4370
- package/dist/{index-CyognKSZ.d.ts → index-DrNah5E0.d.ts} +1952 -6990
- package/dist/{index-DE_lJ11p.d.mts → index-OO84R20k.d.mts} +1952 -6990
- package/dist/{index-B5-VbOKg.d.ts → index-upA3Xt04.d.mts} +4251 -74
- package/dist/index.d.mts +8072 -1922
- package/dist/index.d.ts +8072 -1922
- package/dist/index.js +8563 -8249
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +8563 -8249
- package/dist/index.mjs.map +1 -1
- package/dist/integration/index.d.mts +1 -1
- package/dist/integration/index.d.ts +1 -1
- package/dist/kernel/index.d.mts +2 -1
- package/dist/kernel/index.d.ts +2 -1
- package/dist/kernel/index.js +884 -684
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/index.mjs +870 -684
- package/dist/kernel/index.mjs.map +1 -1
- package/dist/package-registry.zod-JMcOYNxM.d.mts +21119 -0
- package/dist/package-registry.zod-JMcOYNxM.d.ts +21119 -0
- package/dist/state-machine.zod-B-lFFSxQ.d.mts +285 -0
- package/dist/state-machine.zod-B-lFFSxQ.d.ts +285 -0
- package/dist/system/index.d.mts +2 -1
- package/dist/system/index.d.ts +2 -1
- package/dist/system/index.js +749 -651
- package/dist/system/index.js.map +1 -1
- package/dist/system/index.mjs +749 -651
- package/dist/system/index.mjs.map +1 -1
- package/dist/ui/index.d.mts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/json-schema/ai/Agent.json +499 -0
- package/json-schema/ai/DevOpsAgent.json +499 -0
- package/json-schema/ai/FeedbackLoop.json +2188 -186
- package/json-schema/ai/Resolution.json +2188 -186
- package/json-schema/api/ApiRoutes.json +4 -0
- package/json-schema/api/CompileManifestResponse.json +40 -10
- package/json-schema/api/DisablePackageRequest.json +18 -0
- package/json-schema/api/DisablePackageResponse.json +1521 -0
- package/json-schema/api/Discovery.json +4 -0
- package/json-schema/api/EnablePackageRequest.json +18 -0
- package/json-schema/api/EnablePackageResponse.json +1521 -0
- package/json-schema/api/GetDiscoveryResponse.json +4 -0
- package/json-schema/api/GetPackageRequest.json +18 -0
- package/json-schema/api/GetPackageResponse.json +1518 -0
- package/json-schema/api/InstallPackageRequest.json +1483 -0
- package/json-schema/api/InstallPackageResponse.json +1521 -0
- package/json-schema/api/ListPackagesRequest.json +42 -0
- package/json-schema/api/ListPackagesResponse.json +1525 -0
- package/json-schema/api/ObjectDefinitionResponse.json +1001 -0
- package/json-schema/api/ObjectStackProtocol.json +86 -1
- package/json-schema/api/RestApiConfig.json +5 -0
- package/json-schema/api/RestServerConfig.json +5 -0
- package/json-schema/api/UninstallPackageRequest.json +18 -0
- package/json-schema/api/UninstallPackageResponse.json +25 -0
- package/json-schema/automation/ActionRef.json +30 -0
- package/json-schema/automation/Event.json +24 -0
- package/json-schema/automation/Flow.json +1 -0
- package/json-schema/automation/FlowNode.json +1 -0
- package/json-schema/automation/FlowNodeAction.json +1 -0
- package/json-schema/automation/GuardRef.json +30 -0
- package/json-schema/automation/StateMachine.json +504 -0
- package/json-schema/automation/StateNode.json +324 -0
- package/json-schema/automation/Transition.json +73 -0
- package/json-schema/data/Object.json +1001 -0
- package/json-schema/data/ObjectExtension.json +2376 -0
- package/json-schema/data/ObjectOwnershipEnum.json +13 -0
- package/json-schema/hub/ComposerResponse.json +40 -10
- package/json-schema/kernel/DisablePackageRequest.json +18 -0
- package/json-schema/kernel/DisablePackageResponse.json +1521 -0
- package/json-schema/kernel/EnablePackageRequest.json +18 -0
- package/json-schema/kernel/EnablePackageResponse.json +1521 -0
- package/json-schema/kernel/EventBusConfig.json +15 -0
- package/json-schema/kernel/EventHandler.json +6 -0
- package/json-schema/kernel/EventPersistence.json +3 -0
- package/json-schema/kernel/EventRoute.json +3 -0
- package/json-schema/kernel/EventWebhookConfig.json +3 -0
- package/json-schema/kernel/GetPackageRequest.json +18 -0
- package/json-schema/kernel/GetPackageResponse.json +1518 -0
- package/json-schema/kernel/InstallPackageRequest.json +1483 -0
- package/json-schema/kernel/InstallPackageResponse.json +1521 -0
- package/json-schema/kernel/InstalledPackage.json +1509 -0
- package/json-schema/kernel/ListPackagesRequest.json +42 -0
- package/json-schema/kernel/ListPackagesResponse.json +1525 -0
- package/json-schema/kernel/Manifest.json +40 -10
- package/json-schema/kernel/PackageStatusEnum.json +16 -0
- package/json-schema/kernel/Plugin.json +5 -0
- package/json-schema/kernel/PluginContext.json +31 -7
- package/json-schema/kernel/PluginLifecycle.json +7 -1
- package/json-schema/kernel/RealTimeNotificationConfig.json +3 -0
- package/json-schema/kernel/UninstallPackageRequest.json +18 -0
- package/json-schema/kernel/UninstallPackageResponse.json +25 -0
- package/json-schema/system/ChangeSet.json +2188 -186
- package/json-schema/system/CreateObjectOperation.json +1001 -0
- package/json-schema/system/MigrationOperation.json +1001 -0
- package/package.json +29 -15
- package/prompts/create-new-project.md +37 -19
- package/dist/{index-I3piy4U4.d.mts → index-BmU_sD1f.d.mts} +8 -8
- package/dist/{index-CkhpsEUw.d.ts → index-BnXuc_HO.d.ts} +8 -8
- package/dist/{index-CIDI-8zR.d.mts → index-C_NTOcet.d.mts} +98 -98
- package/dist/{index-CIDI-8zR.d.ts → index-C_NTOcet.d.ts} +98 -98
package/dist/data/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/data/index.ts","../../src/data/query.zod.ts","../../src/data/filter.zod.ts","../../src/data/object.zod.ts","../../src/data/field.zod.ts","../../src/shared/identifiers.zod.ts","../../src/system/encryption.zod.ts","../../src/system/masking.zod.ts","../../src/data/validation.zod.ts","../../src/data/hook.zod.ts","../../src/data/mapping.zod.ts","../../src/data/data-engine.zod.ts","../../src/data/driver.zod.ts","../../src/data/driver-sql.zod.ts","../../src/data/driver-nosql.zod.ts","../../src/data/dataset.zod.ts","../../src/data/document.zod.ts","../../src/data/external-lookup.zod.ts","../../src/shared/mapping.zod.ts","../../src/data/datasource.zod.ts","../../src/data/analytics.zod.ts"],"sourcesContent":["export * from './query.zod';\nexport * from './filter.zod';\nexport * from './object.zod';\nexport * from './field.zod';\nexport * from './validation.zod';\nexport * from './hook.zod';\nexport * from './mapping.zod';\nexport * from './data-engine.zod';\nexport * from './driver.zod';\nexport * from './driver-sql.zod';\nexport * from './driver-nosql.zod';\n\nexport * from './dataset.zod';\n\n// Document Management Protocol\nexport * from './document.zod';\n\n// External Lookup Protocol\nexport * from './external-lookup.zod';\nexport * from './datasource.zod';\n\n// Analytics Protocol (Semantic Layer)\nexport * from './analytics.zod';\n\n","import { z } from 'zod';\nimport { FilterConditionSchema } from './filter.zod';\n\n/**\n * Sort Node\n * Represents \"Order By\".\n */\nexport const SortNodeSchema = z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc']).default('asc')\n});\n\n/**\n * Aggregation Function Enum\n * Standard aggregation functions for data analysis.\n * \n * Supported Functions:\n * - **count**: Count rows (SQL: COUNT(*) or COUNT(field))\n * - **sum**: Sum numeric values (SQL: SUM(field))\n * - **avg**: Average numeric values (SQL: AVG(field))\n * - **min**: Minimum value (SQL: MIN(field))\n * - **max**: Maximum value (SQL: MAX(field))\n * - **count_distinct**: Count unique values (SQL: COUNT(DISTINCT field))\n * - **array_agg**: Aggregate values into array (SQL: ARRAY_AGG(field))\n * - **string_agg**: Concatenate values (SQL: STRING_AGG(field, delimiter))\n * \n * Performance Considerations:\n * - COUNT(*) is typically faster than COUNT(field) as it doesn't check for nulls\n * - COUNT DISTINCT may require additional memory for tracking unique values\n * - Window aggregates (with OVER clause) can be more efficient than subqueries\n * - Large GROUP BY operations benefit from proper indexing on grouped fields\n * \n * @example\n * // SQL: SELECT region, SUM(amount) FROM sales GROUP BY region\n * {\n * object: 'sales',\n * fields: ['region'],\n * aggregations: [\n * { function: 'sum', field: 'amount', alias: 'total_sales' }\n * ],\n * groupBy: ['region']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT COUNT(Id) FROM Account\n * {\n * object: 'account',\n * aggregations: [\n * { function: 'count', alias: 'total_accounts' }\n * ]\n * }\n */\nexport const AggregationFunction = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'array_agg', 'string_agg'\n]);\n\n/**\n * Aggregation Node\n * Represents an aggregated field with function.\n * \n * Aggregations summarize data across groups of rows (GROUP BY).\n * Used with `groupBy` to create analytical queries.\n * \n * @example\n * // SQL: SELECT customer_id, COUNT(*), SUM(amount) FROM orders GROUP BY customer_id\n * {\n * object: 'order',\n * fields: ['customer_id'],\n * aggregations: [\n * { function: 'count', alias: 'order_count' },\n * { function: 'sum', field: 'amount', alias: 'total_amount' }\n * ],\n * groupBy: ['customer_id']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT LeadSource, COUNT(Id) FROM Lead GROUP BY LeadSource\n * {\n * object: 'lead',\n * fields: ['lead_source'],\n * aggregations: [\n * { function: 'count', alias: 'lead_count' }\n * ],\n * groupBy: ['lead_source']\n * }\n */\nexport const AggregationNodeSchema = z.object({\n function: AggregationFunction.describe('Aggregation function'),\n field: z.string().optional().describe('Field to aggregate (optional for COUNT(*))'),\n alias: z.string().describe('Result column alias'),\n distinct: z.boolean().optional().describe('Apply DISTINCT before aggregation'),\n filter: FilterConditionSchema.optional().describe('Filter/Condition to apply to the aggregation (FILTER WHERE clause)'),\n});\n\n/**\n * Join Type Enum\n * Standard SQL join types for combining tables.\n * \n * Join Types:\n * - **inner**: Returns only matching rows from both tables (SQL: INNER JOIN)\n * - **left**: Returns all rows from left table, matching rows from right (SQL: LEFT JOIN)\n * - **right**: Returns all rows from right table, matching rows from left (SQL: RIGHT JOIN)\n * - **full**: Returns all rows from both tables (SQL: FULL OUTER JOIN)\n * \n * @example\n * // SQL: SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * on: ['order.customer_id', '=', 'customer.id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL-style: Find all customers and their orders (if any)\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * on: ['customer.id', '=', 'order.customer_id']\n * }\n * ]\n * }\n */\nexport const JoinType = z.enum(['inner', 'left', 'right', 'full']);\n\n/**\n * Join Execution Strategy\n * Hints to the query engine on how to execute the join.\n * \n * Strategies:\n * - **auto**: Engine decides best strategy (Default).\n * - **database**: Push down join to the database (Requires same datasource).\n * - **hash**: Load both sets into memory and hash join (Cross-datasource, memory intensive).\n * - **loop**: Nested loop lookup (N+1 safe version). (Good for small right-side lookups).\n */\nexport const JoinStrategy = z.enum(['auto', 'database', 'hash', 'loop']);\n\n/**\n * Join Node\n * Represents table joins for combining data from multiple objects.\n * \n * Joins connect related data across multiple tables using ON conditions.\n * Supports both direct object joins and subquery joins.\n * \n * @example\n * // SQL: SELECT o.*, c.name FROM orders o INNER JOIN customers c ON o.customer_id = c.id\n * {\n * object: 'order',\n * fields: ['id', 'amount'],\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Multi-table join\n * // SELECT * FROM orders o\n * // INNER JOIN customers c ON o.customer_id = c.id\n * // LEFT JOIN shipments s ON o.id = s.order_id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * },\n * {\n * type: 'left',\n * object: 'shipment',\n * alias: 's',\n * on: ['order.id', '=', 's.order_id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT Name, (SELECT LastName FROM Contacts) FROM Account\n * {\n * object: 'account',\n * fields: ['name'],\n * joins: [\n * {\n * type: 'left',\n * object: 'contact',\n * on: ['account.id', '=', 'contact.account_id']\n * }\n * ]\n * }\n * \n * @example\n * // Subquery Join: Join with a filtered/aggregated dataset\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * alias: 'high_value_orders',\n * on: ['customer.id', '=', 'high_value_orders.customer_id'],\n * subquery: {\n * object: 'order',\n * fields: ['customer_id', 'total'],\n * filters: ['total', '>', 1000]\n * }\n * }\n * ]\n * }\n */\nexport const JoinNodeSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n type: JoinType.describe('Join type'),\n strategy: JoinStrategy.optional().describe('Execution strategy hint'),\n object: z.string().describe('Object/table to join'),\n alias: z.string().optional().describe('Table alias'),\n on: FilterConditionSchema.describe('Join condition'),\n subquery: z.lazy(() => QuerySchema).optional().describe('Subquery instead of object'),\n })\n);\n\n/**\n * Window Function Enum\n * Advanced analytical functions for row-based calculations.\n * \n * Window Functions:\n * - **row_number**: Sequential number within partition (SQL: ROW_NUMBER() OVER (...))\n * - **rank**: Rank with gaps for ties (SQL: RANK() OVER (...))\n * - **dense_rank**: Rank without gaps (SQL: DENSE_RANK() OVER (...))\n * - **percent_rank**: Relative rank as percentage (SQL: PERCENT_RANK() OVER (...))\n * - **lag**: Access previous row value (SQL: LAG(field) OVER (...))\n * - **lead**: Access next row value (SQL: LEAD(field) OVER (...))\n * - **first_value**: First value in window (SQL: FIRST_VALUE(field) OVER (...))\n * - **last_value**: Last value in window (SQL: LAST_VALUE(field) OVER (...))\n * - **sum/avg/count/min/max**: Aggregates over window (SQL: SUM(field) OVER (...))\n * \n * @example\n * // SQL: SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY amount DESC) as rank\n * // FROM orders\n * {\n * object: 'order',\n * fields: ['id', 'customer_id', 'amount'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'rank',\n * over: {\n * partitionBy: ['customer_id'],\n * orderBy: [{ field: 'amount', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Running total with SUM() OVER (...)\n * {\n * object: 'transaction',\n * fields: ['date', 'amount'],\n * windowFunctions: [\n * {\n * function: 'sum',\n * field: 'amount',\n * alias: 'running_total',\n * over: {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: 'UNBOUNDED PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunction = z.enum([\n 'row_number', 'rank', 'dense_rank', 'percent_rank',\n 'lag', 'lead', 'first_value', 'last_value',\n 'sum', 'avg', 'count', 'min', 'max'\n]);\n\n/**\n * Window Specification\n * Defines PARTITION BY and ORDER BY for window functions.\n * \n * Window specifications control how window functions compute values:\n * - **partitionBy**: Divide rows into groups (like GROUP BY but without collapsing rows)\n * - **orderBy**: Define order for ranking and offset functions\n * - **frame**: Specify which rows to include in aggregate calculations\n * \n * @example\n * // Partition by department, order by salary\n * {\n * partitionBy: ['department'],\n * orderBy: [{ field: 'salary', order: 'desc' }]\n * }\n * \n * @example\n * // Moving average with frame specification\n * {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: '6 PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n */\nexport const WindowSpecSchema = z.object({\n partitionBy: z.array(z.string()).optional().describe('PARTITION BY fields'),\n orderBy: z.array(SortNodeSchema).optional().describe('ORDER BY specification'),\n frame: z.object({\n type: z.enum(['rows', 'range']).optional(),\n start: z.string().optional().describe('Frame start (e.g., \"UNBOUNDED PRECEDING\", \"1 PRECEDING\")'),\n end: z.string().optional().describe('Frame end (e.g., \"CURRENT ROW\", \"1 FOLLOWING\")'),\n }).optional().describe('Window frame specification'),\n});\n\n/**\n * Window Function Node\n * Represents window function with OVER clause.\n * \n * Window functions perform calculations across a set of rows related to the current row,\n * without collapsing the result set (unlike GROUP BY aggregations).\n * \n * @example\n * // SQL: Top 3 products per category\n * // SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY sales DESC) as rank\n * // FROM products\n * {\n * object: 'product',\n * fields: ['name', 'category', 'sales'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'category_rank',\n * over: {\n * partitionBy: ['category'],\n * orderBy: [{ field: 'sales', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Year-over-year comparison with LAG\n * {\n * object: 'monthly_sales',\n * fields: ['month', 'revenue'],\n * windowFunctions: [\n * {\n * function: 'lag',\n * field: 'revenue',\n * alias: 'prev_year_revenue',\n * over: {\n * orderBy: [{ field: 'month', order: 'asc' }]\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunctionNodeSchema = z.object({\n function: WindowFunction.describe('Window function name'),\n field: z.string().optional().describe('Field to operate on (for aggregate window functions)'),\n alias: z.string().describe('Result column alias'),\n over: WindowSpecSchema.describe('Window specification (OVER clause)'),\n});\n\n/**\n * Field Selection Node\n * Represents \"Select\" attributes, including joins.\n */\nexport const FieldNodeSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n z.string(), // Primitive field: \"name\"\n z.object({\n field: z.string(), // Relationship field: \"owner\"\n fields: z.array(FieldNodeSchema).optional(), // Nested select: [\"name\", \"email\"]\n alias: z.string().optional()\n })\n ])\n);\n\n/**\n * Full-Text Search Configuration\n * Defines full-text search parameters for text queries.\n * \n * Supports:\n * - Multi-field search\n * - Relevance scoring\n * - Fuzzy matching\n * - Language-specific analyzers\n * \n * @example\n * {\n * query: \"John Smith\",\n * fields: [\"name\", \"email\", \"description\"],\n * fuzzy: true,\n * boost: { \"name\": 2.0, \"email\": 1.5 }\n * }\n */\nexport const FullTextSearchSchema = z.object({\n query: z.string().describe('Search query text'),\n fields: z.array(z.string()).optional().describe('Fields to search in (if not specified, searches all text fields)'),\n fuzzy: z.boolean().optional().default(false).describe('Enable fuzzy matching (tolerates typos)'),\n operator: z.enum(['and', 'or']).optional().default('or').describe('Logical operator between terms'),\n boost: z.record(z.string(), z.number()).optional().describe('Field-specific relevance boosting (field name -> boost factor)'),\n minScore: z.number().optional().describe('Minimum relevance score threshold'),\n language: z.string().optional().describe('Language for text analysis (e.g., \"en\", \"zh\", \"es\")'),\n highlight: z.boolean().optional().default(false).describe('Enable search result highlighting'),\n});\n\nexport type FullTextSearch = z.infer<typeof FullTextSearchSchema>;\n\n/**\n * Query AST Schema\n * The universal data retrieval contract defined in `ast-structure.mdx`.\n * \n * This schema represents ObjectQL - a universal query language that abstracts\n * SQL, NoSQL, and SaaS APIs into a single unified interface.\n * \n * Updates (v2):\n * - Aligned with modern ORM standards (Prisma/TypeORM)\n * - Added `cursor` based pagination support\n * - Renamed `top`/`skip` to `limit`/`offset`\n * - Unified filtering syntax with `FilterConditionSchema`\n * \n * Updates (v3):\n * - Added `search` parameter for full-text search (P2 requirement)\n * \n * @example\n * // Simple query: SELECT name, email FROM account WHERE status = 'active'\n * {\n * object: 'account',\n * fields: ['name', 'email'],\n * where: { status: 'active' }\n * }\n * \n * @example\n * // Pagination with Limit/Offset\n * {\n * object: 'post',\n * where: { published: true },\n * orderBy: [{ field: 'created_at', order: 'desc' }],\n * limit: 20,\n * offset: 40\n * }\n * \n * @example\n * // Full-text search\n * {\n * object: 'article',\n * search: {\n * query: \"machine learning\",\n * fields: [\"title\", \"content\"],\n * fuzzy: true,\n * boost: { \"title\": 2.0 }\n * },\n * limit: 10\n * }\n */\nconst BaseQuerySchema = z.object({\n /** Target Entity */\n object: z.string().describe('Object name (e.g. account)'),\n \n /** Select Clause */\n fields: z.array(FieldNodeSchema).optional().describe('Fields to retrieve'),\n \n /** Where Clause (Filtering) */\n where: FilterConditionSchema.optional().describe('Filtering criteria (WHERE)'),\n \n /** Full-Text Search */\n search: FullTextSearchSchema.optional().describe('Full-text search configuration ($search parameter)'),\n \n /** Order By Clause (Sorting) */\n orderBy: z.array(SortNodeSchema).optional().describe('Sorting instructions (ORDER BY)'),\n \n /** Pagination */\n limit: z.number().optional().describe('Max records to return (LIMIT)'),\n offset: z.number().optional().describe('Records to skip (OFFSET)'),\n top: z.number().optional().describe('Alias for limit (OData compatibility)'),\n cursor: z.record(z.string(), z.any()).optional().describe('Cursor for keyset pagination'),\n \n /** Joins */\n joins: z.array(JoinNodeSchema).optional().describe('Explicit Table Joins'),\n \n /** Aggregations */\n aggregations: z.array(AggregationNodeSchema).optional().describe('Aggregation functions'),\n \n /** Group By Clause */\n groupBy: z.array(z.string()).optional().describe('GROUP BY fields'),\n \n /** Having Clause */\n having: FilterConditionSchema.optional().describe('HAVING clause for aggregation filtering'),\n \n /** Window Functions */\n windowFunctions: z.array(WindowFunctionNodeSchema).optional().describe('Window functions with OVER clause'),\n \n /** Subquery flag */\n distinct: z.boolean().optional().describe('SELECT DISTINCT flag'),\n});\n\nexport type QueryAST = z.infer<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryAST>;\n};\n\nexport type QueryInput = z.input<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryInput>;\n};\n\nexport const QuerySchema: z.ZodType<QueryAST, z.ZodTypeDef, QueryInput> = BaseQuerySchema.extend({\n expand: z.lazy(() => z.record(z.string(), QuerySchema)).optional().describe('Recursive relation loading (nested queries)'),\n});\n\nexport type SortNode = z.infer<typeof SortNodeSchema>;\nexport type AggregationNode = z.infer<typeof AggregationNodeSchema>;\nexport type JoinNode = z.infer<typeof JoinNodeSchema>;\nexport type WindowFunctionNode = z.infer<typeof WindowFunctionNodeSchema>;\nexport type WindowSpec = z.infer<typeof WindowSpecSchema>;\n","import { z } from 'zod';\n\n/**\n * Unified Query DSL Specification\n * \n * Based on industry best practices from:\n * - Prisma ORM\n * - Strapi CMS\n * - TypeORM\n * - LoopBack Framework\n * \n * Version: 1.0.0\n * Status: Draft\n * \n * Objective: Define a JSON-based, database-agnostic query syntax standard\n * for data filtering interactions between frontend and backend APIs.\n * \n * Design Principles:\n * 1. Declarative: Frontend describes \"what data to get\", not \"how to query\"\n * 2. Database Agnostic: Syntax contains no database-specific directives\n * 3. Type Safe: Structure can be statically inferred by TypeScript\n * 4. Convention over Configuration: Implicit syntax for common queries\n */\n\n/**\n * Field Reference\n * Represents a reference to another field/column instead of a literal value.\n * Used for joins (ON clause) and cross-field comparisons.\n * \n * @example\n * // user.id = order.owner_id\n * { \"$eq\": { \"$field\": \"order.owner_id\" } }\n */\nexport const FieldReferenceSchema = z.object({\n $field: z.string().describe('Field Reference/Column Name')\n});\n\nexport type FieldReference = z.infer<typeof FieldReferenceSchema>;\n\n// ============================================================================\n// 3.1 Comparison Operators\n// ============================================================================\n\n/**\n * Comparison operators for equality and inequality checks.\n * Supported data types: Any\n */\nexport const EqualityOperatorSchema = z.object({\n /** Equal to (default) - SQL: = | MongoDB: $eq */\n $eq: z.any().optional(),\n \n /** Not equal to - SQL: <> or != | MongoDB: $ne */\n $ne: z.any().optional(),\n});\n\n/**\n * Comparison operators for numeric and date comparisons.\n * Supported data types: Number, Date\n */\nexport const ComparisonOperatorSchema = z.object({\n /** Greater than - SQL: > | MongoDB: $gt */\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Greater than or equal to - SQL: >= | MongoDB: $gte */\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than - SQL: < | MongoDB: $lt */\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than or equal to - SQL: <= | MongoDB: $lte */\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n});\n\n// ============================================================================\n// 3.2 Set & Range Operators\n// ============================================================================\n\n/**\n * Set operators for membership checks.\n */\nexport const SetOperatorSchema = z.object({\n /** In list - SQL: IN (?, ?, ?) | MongoDB: $in */\n $in: z.array(z.any()).optional(),\n \n /** Not in list - SQL: NOT IN (...) | MongoDB: $nin */\n $nin: z.array(z.any()).optional(),\n});\n\n/**\n * Range operator for interval checks (closed interval).\n * SQL: BETWEEN ? AND ? | MongoDB: $gte AND $lte\n */\nexport const RangeOperatorSchema = z.object({\n /** Between (inclusive) - takes [min, max] array */\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n});\n\n// ============================================================================\n// 3.3 String-Specific Operators\n// ============================================================================\n\n/**\n * String pattern matching operators.\n * Note: Case sensitivity should be handled at backend level.\n */\nexport const StringOperatorSchema = z.object({\n /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */\n $contains: z.string().optional(),\n \n /** Starts with prefix - SQL: LIKE ?% | MongoDB: $regex */\n $startsWith: z.string().optional(),\n \n /** Ends with suffix - SQL: LIKE %? | MongoDB: $regex */\n $endsWith: z.string().optional(),\n});\n\n// ============================================================================\n// 3.5 Special Operators\n// ============================================================================\n\n/**\n * Special check operators for null and existence.\n */\nexport const SpecialOperatorSchema = z.object({\n /** Is null check - SQL: IS NULL (true) / IS NOT NULL (false) | MongoDB: field: null */\n $null: z.boolean().optional(),\n \n /** Field exists check (primarily for NoSQL) - MongoDB: $exists */\n $exist: z.boolean().optional(),\n});\n\n// ============================================================================\n// Combined Field Operators\n// ============================================================================\n\n/**\n * All field-level operators combined.\n * These can be applied to individual fields in a filter.\n */\nexport const FieldOperatorsSchema = z.object({\n // Equality\n $eq: z.any().optional(),\n $ne: z.any().optional(),\n \n // Comparison (numeric/date)\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n // Set & Range\n $in: z.array(z.any()).optional(),\n $nin: z.array(z.any()).optional(),\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n \n // String-specific\n $contains: z.string().optional(),\n $startsWith: z.string().optional(),\n $endsWith: z.string().optional(),\n \n // Special\n $null: z.boolean().optional(),\n $exist: z.boolean().optional(),\n});\n\n// ============================================================================\n// 3.4 Logical Operators & Recursive Filter Structure\n// ============================================================================\n\n/**\n * Recursive filter type that supports:\n * 1. Implicit equality: { field: value }\n * 2. Explicit operators: { field: { $op: value } }\n * 3. Logical combinations: { $and: [...], $or: [...], $not: {...} }\n * 4. Nested relations: { relation: { field: value } }\n */\nexport type FilterCondition = {\n [key: string]: \n | any // Implicit equality: key: value\n | z.infer<typeof FieldOperatorsSchema> // Explicit operators: key: { $op: value }\n | FilterCondition; // Nested relation: key: { nested: ... }\n} & {\n /** Logical AND - combines all conditions that must be true */\n $and?: FilterCondition[];\n \n /** Logical OR - at least one condition must be true */\n $or?: FilterCondition[];\n \n /** Logical NOT - negates the condition */\n $not?: FilterCondition;\n};\n\n/**\n * Zod schema for recursive filter validation.\n * Uses z.lazy() to handle recursive structure.\n */\nexport const FilterConditionSchema: z.ZodType<FilterCondition> = z.lazy(() =>\n z.record(z.string(), z.any()).and(\n z.object({\n $and: z.array(FilterConditionSchema).optional(),\n $or: z.array(FilterConditionSchema).optional(),\n $not: FilterConditionSchema.optional(),\n })\n )\n);\n\n// ============================================================================\n// Query Filter Wrapper\n// ============================================================================\n\n/**\n * Top-level query filter wrapper.\n * This is typically used as the \"where\" clause in a query.\n * \n * @example\n * ```typescript\n * const filter: QueryFilter = {\n * where: {\n * status: \"active\", // Implicit equality\n * age: { $gte: 18 }, // Explicit operator\n * $or: [ // Logical combination\n * { role: \"admin\" },\n * { email: { $contains: \"@company.com\" } }\n * ],\n * profile: { // Nested relation\n * verified: true\n * }\n * }\n * }\n * ```\n */\nexport const QueryFilterSchema = z.object({\n where: FilterConditionSchema.optional(),\n});\n\n// ============================================================================\n// TypeScript Type Exports\n// ============================================================================\n\n/**\n * Type-safe filter operators for use in TypeScript.\n * \n * @example\n * ```typescript\n * type UserFilter = Filter<User>;\n * \n * const filter: UserFilter = {\n * age: { $gte: 18 },\n * email: { $contains: \"@example.com\" }\n * };\n * ```\n */\nexport type Filter<T = any> = {\n [K in keyof T]?: \n | T[K] // Implicit equality\n | {\n $eq?: T[K];\n $ne?: T[K];\n $gt?: T[K] extends number | Date ? T[K] : never;\n $gte?: T[K] extends number | Date ? T[K] : never;\n $lt?: T[K] extends number | Date ? T[K] : never;\n $lte?: T[K] extends number | Date ? T[K] : never;\n $in?: T[K][];\n $nin?: T[K][];\n $between?: T[K] extends number | Date ? [T[K], T[K]] : never;\n $contains?: T[K] extends string ? string : never;\n $startsWith?: T[K] extends string ? string : never;\n $endsWith?: T[K] extends string ? string : never;\n $null?: boolean;\n $exist?: boolean;\n }\n | (T[K] extends object ? Filter<T[K]> : never); // Nested relation\n} & {\n $and?: Filter<T>[];\n $or?: Filter<T>[];\n $not?: Filter<T>;\n};\n\n/**\n * Scalar types supported by the filter system.\n */\nexport type Scalar = string | number | boolean | Date | null;\n\n// Export inferred types\nexport type FieldOperators = z.infer<typeof FieldOperatorsSchema>;\nexport type QueryFilter = z.infer<typeof QueryFilterSchema>;\n\n// ============================================================================\n// Normalization Utilities (Internal Representation)\n// ============================================================================\n\n/**\n * Normalized filter AST structure.\n * This is the internal representation after converting all syntactic sugar\n * to explicit operators.\n * \n * Stage 1: Normalization Pass\n * Input: { age: 18, role: \"admin\" }\n * Output: { $and: [{ age: { $eq: 18 } }, { role: { $eq: \"admin\" } }] }\n * \n * This simplifies adapter implementation by providing a consistent structure.\n */\nexport const NormalizedFilterSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n $and: z.array(\n z.union([\n // Field condition: { field: { $op: value } }\n z.record(z.string(), FieldOperatorsSchema),\n // Nested logical group\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $or: z.array(\n z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $not: z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ]).optional(),\n })\n);\n\nexport type NormalizedFilter = z.infer<typeof NormalizedFilterSchema>;\n\n// ============================================================================\n// Constants & Metadata\n// ============================================================================\n\n/**\n * All supported operator keys.\n * Useful for validation and parsing.\n */\nexport const FILTER_OPERATORS = [\n // Equality\n '$eq', '$ne',\n // Comparison\n '$gt', '$gte', '$lt', '$lte',\n // Set & Range\n '$in', '$nin', '$between',\n // String\n '$contains', '$startsWith', '$endsWith',\n // Special\n '$null', '$exist',\n] as const;\n\n/**\n * Logical operator keys.\n */\nexport const LOGICAL_OPERATORS = ['$and', '$or', '$not'] as const;\n\n/**\n * All operator keys (field + logical).\n */\nexport const ALL_OPERATORS = [...FILTER_OPERATORS, ...LOGICAL_OPERATORS] as const;\n\nexport type FilterOperatorKey = typeof FILTER_OPERATORS[number];\nexport type LogicalOperatorKey = typeof LOGICAL_OPERATORS[number];\nexport type OperatorKey = typeof ALL_OPERATORS[number];\n","import { z } from 'zod';\nimport { FieldSchema } from './field.zod';\nimport { ValidationRuleSchema } from './validation.zod';\n\n/**\n * API Operations Enum\n */\nexport const ApiMethod = z.enum([\n 'get', 'list', // Read\n 'create', 'update', 'delete', // Write\n 'upsert', // Idempotent Write\n 'bulk', // Batch operations\n 'aggregate', // Analytics (count, sum)\n 'history', // Audit access\n 'search', // Search access\n 'restore', 'purge', // Trash management\n 'import', 'export', // Data portability\n]);\nexport type ApiMethod = z.infer<typeof ApiMethod>;\n\n/**\n * Capability Flags\n * Defines what system features are enabled for this object.\n * \n * Optimized based on industry standards (Salesforce, ServiceNow):\n * - Added `activities` (Tasks/Events)\n * - Added `mru` (Recent Items)\n * - Added `feeds` (Social/Chatter)\n * - Grouped API permissions\n * \n * @example\n * {\n * trackHistory: true,\n * searchable: true,\n * apiEnabled: true,\n * files: true\n * }\n */\nexport const ObjectCapabilities = z.object({\n /** Enable history tracking (Audit Trail) */\n trackHistory: z.boolean().default(false).describe('Enable field history tracking for audit compliance'),\n \n /** Enable global search indexing */\n searchable: z.boolean().default(true).describe('Index records for global search'),\n \n /** Enable REST/GraphQL API access */\n apiEnabled: z.boolean().default(true).describe('Expose object via automatic APIs'),\n\n /** \n * API Supported Operations\n * Granular control over API exposure.\n */\n apiMethods: z.array(ApiMethod).optional().describe('Whitelist of allowed API operations'),\n \n /** Enable standard attachments/files engine */\n files: z.boolean().default(false).describe('Enable file attachments and document management'),\n \n /** Enable social collaboration (Comments, Mentions, Feeds) */\n feeds: z.boolean().default(false).describe('Enable social feed, comments, and mentions (Chatter-like)'),\n \n /** Enable standard Activity suite (Tasks, Calendars, Events) */\n activities: z.boolean().default(false).describe('Enable standard tasks and events tracking'),\n \n /** Enable Recycle Bin / Soft Delete */\n trash: z.boolean().default(true).describe('Enable soft-delete with restore capability'),\n\n /** Enable \"Recently Viewed\" tracking */\n mru: z.boolean().default(true).describe('Track Most Recently Used (MRU) list for users'),\n \n /** Allow cloning records */\n clone: z.boolean().default(true).describe('Allow record deep cloning'),\n});\n\n/**\n * Schema for database indexes.\n * Enhanced with additional index types and configuration options\n * \n * @example\n * {\n * name: \"idx_account_name\",\n * fields: [\"name\"],\n * type: \"btree\",\n * unique: true\n * }\n */\nexport const IndexSchema = z.object({\n name: z.string().optional().describe('Index name (auto-generated if not provided)'),\n fields: z.array(z.string()).describe('Fields included in the index'),\n type: z.enum(['btree', 'hash', 'gin', 'gist', 'fulltext']).optional().default('btree').describe('Index algorithm type'),\n unique: z.boolean().optional().default(false).describe('Whether the index enforces uniqueness'),\n partial: z.string().optional().describe('Partial index condition (SQL WHERE clause for conditional indexes)'),\n});\n\n/**\n * Search Configuration\n * Defines how this object behaves in search results.\n * \n * @example\n * {\n * fields: [\"name\", \"email\", \"phone\"],\n * displayFields: [\"name\", \"title\"],\n * filters: [\"status = 'active'\"]\n * }\n */\nexport const SearchConfigSchema = z.object({\n fields: z.array(z.string()).describe('Fields to index for full-text search weighting'),\n displayFields: z.array(z.string()).optional().describe('Fields to display in search result cards'),\n filters: z.array(z.string()).optional().describe('Default filters for search results'),\n});\n\n/**\n * Multi-Tenancy Configuration Schema\n * Configures tenant isolation strategy for SaaS applications\n * \n * @example Shared database with tenant_id isolation\n * {\n * enabled: true,\n * strategy: 'shared',\n * tenantField: 'tenant_id',\n * crossTenantAccess: false\n * }\n */\nexport const TenancyConfigSchema = z.object({\n enabled: z.boolean().describe('Enable multi-tenancy for this object'),\n strategy: z.enum(['shared', 'isolated', 'hybrid']).describe('Tenant isolation strategy: shared (single DB, row-level), isolated (separate DB per tenant), hybrid (mix)'),\n tenantField: z.string().default('tenant_id').describe('Field name for tenant identifier'),\n crossTenantAccess: z.boolean().default(false).describe('Allow cross-tenant data access (with explicit permission)'),\n});\n\n/**\n * Soft Delete Configuration Schema\n * Implements recycle bin / trash functionality\n * \n * @example Standard soft delete with cascade\n * {\n * enabled: true,\n * field: 'deleted_at',\n * cascadeDelete: true\n * }\n */\nexport const SoftDeleteConfigSchema = z.object({\n enabled: z.boolean().describe('Enable soft delete (trash/recycle bin)'),\n field: z.string().default('deleted_at').describe('Field name for soft delete timestamp'),\n cascadeDelete: z.boolean().default(false).describe('Cascade soft delete to related records'),\n});\n\n/**\n * Versioning Configuration Schema\n * Implements record versioning and history tracking\n * \n * @example Snapshot versioning with 90-day retention\n * {\n * enabled: true,\n * strategy: 'snapshot',\n * retentionDays: 90,\n * versionField: 'version'\n * }\n */\nexport const VersioningConfigSchema = z.object({\n enabled: z.boolean().describe('Enable record versioning'),\n strategy: z.enum(['snapshot', 'delta', 'event-sourcing']).describe('Versioning strategy: snapshot (full copy), delta (changes only), event-sourcing (event log)'),\n retentionDays: z.number().min(1).optional().describe('Number of days to retain old versions (undefined = infinite)'),\n versionField: z.string().default('version').describe('Field name for version number/timestamp'),\n});\n\n/**\n * Partitioning Strategy Schema\n * Configures table partitioning for performance at scale\n * \n * @example Range partitioning by date (monthly)\n * {\n * enabled: true,\n * strategy: 'range',\n * key: 'created_at',\n * interval: '1 month'\n * }\n */\nexport const PartitioningConfigSchema = z.object({\n enabled: z.boolean().describe('Enable table partitioning'),\n strategy: z.enum(['range', 'hash', 'list']).describe('Partitioning strategy: range (date ranges), hash (consistent hashing), list (predefined values)'),\n key: z.string().describe('Field name to partition by'),\n interval: z.string().optional().describe('Partition interval for range strategy (e.g., \"1 month\", \"1 year\")'),\n}).refine((data) => {\n // If strategy is 'range', interval must be provided\n if (data.strategy === 'range' && !data.interval) {\n return false;\n }\n return true;\n}, {\n message: 'interval is required when strategy is \"range\"',\n});\n\n/**\n * Change Data Capture (CDC) Configuration Schema\n * Enables real-time data streaming to external systems\n * \n * @example Stream all changes to Kafka\n * {\n * enabled: true,\n * events: ['insert', 'update', 'delete'],\n * destination: 'kafka://events.objectstack'\n * }\n */\nexport const CDCConfigSchema = z.object({\n enabled: z.boolean().describe('Enable Change Data Capture'),\n events: z.array(z.enum(['insert', 'update', 'delete'])).describe('Event types to capture'),\n destination: z.string().describe('Destination endpoint (e.g., \"kafka://topic\", \"webhook://url\")'),\n});\n\n/**\n * Base Object Schema Definition\n * \n * The Blueprint of a Business Object.\n * Represents a table, a collection, or a virtual entity.\n * \n * @example\n * ```yaml\n * name: project_task\n * label: Project Task\n * icon: task\n * fields:\n * project:\n * type: lookup\n * reference: project\n * status:\n * type: select\n * options: [todo, in_progress, done]\n * enable:\n * trackHistory: true\n * files: true\n * ```\n */\nconst ObjectSchemaBase = z.object({\n /** \n * Identity & Metadata \n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine unique key (snake_case). Immutable.'),\n label: z.string().optional().describe('Human readable singular label (e.g. \"Account\")'),\n pluralLabel: z.string().optional().describe('Human readable plural label (e.g. \"Accounts\")'),\n description: z.string().optional().describe('Developer documentation / description'),\n icon: z.string().optional().describe('Icon name (Lucide/Material) for UI representation'),\n \n /**\n * Taxonomy & Organization\n */\n tags: z.array(z.string()).optional().describe('Categorization tags (e.g. \"sales\", \"system\", \"reference\")'),\n active: z.boolean().optional().default(true).describe('Is the object active and usable'),\n isSystem: z.boolean().optional().default(false).describe('Is system object (protected from deletion)'),\n abstract: z.boolean().optional().default(false).describe('Is abstract base object (cannot be instantiated)'),\n\n /** \n * Storage & Virtualization \n */\n datasource: z.string().optional().default('default').describe('Target Datasource ID. \"default\" is the primary DB.'),\n tableName: z.string().optional().describe('Physical table/collection name in the target datasource'),\n \n /** \n * Data Model \n */\n fields: z.record(z.string().regex(/^[a-z_][a-z0-9_]*$/, {\n message: 'Field names must be lowercase snake_case (e.g., \"first_name\", \"company\", \"annual_revenue\")',\n }), FieldSchema).describe('Field definitions map. Keys must be snake_case identifiers.'),\n indexes: z.array(IndexSchema).optional().describe('Database performance indexes'),\n \n /**\n * Advanced Data Management\n */\n \n // Multi-tenancy configuration\n tenancy: TenancyConfigSchema.optional().describe('Multi-tenancy configuration for SaaS applications'),\n \n // Soft delete configuration\n softDelete: SoftDeleteConfigSchema.optional().describe('Soft delete (trash/recycle bin) configuration'),\n \n // Versioning configuration\n versioning: VersioningConfigSchema.optional().describe('Record versioning and history tracking configuration'),\n \n // Partitioning strategy\n partitioning: PartitioningConfigSchema.optional().describe('Table partitioning configuration for performance'),\n \n // Change Data Capture\n cdc: CDCConfigSchema.optional().describe('Change Data Capture (CDC) configuration for real-time data streaming'),\n \n /**\n * Logic & Validation (Co-located)\n * Best Practice: Define rules close to data.\n */\n validations: z.array(ValidationRuleSchema).optional().describe('Object-level validation rules'),\n\n /** \n * Display & UI Hints (Data-Layer)\n */\n titleFormat: z.string().optional().describe('Title expression (e.g. \"{name} - {code}\"). Overrides nameField.'),\n compactLayout: z.array(z.string()).optional().describe('Primary fields for hover/cards/lookups'),\n \n /** \n * Search Engine Config \n */\n search: SearchConfigSchema.optional().describe('Search engine configuration'),\n \n /** \n * System Capabilities \n */\n enable: ObjectCapabilities.optional().describe('Enabled system features modules'),\n});\n\n/**\n * Enhanced ObjectSchema with Factory\n */\nexport const ObjectSchema = Object.assign(ObjectSchemaBase, {\n create: <T extends z.input<typeof ObjectSchemaBase>>(config: T) => config,\n});\n\nexport type ServiceObject = z.infer<typeof ObjectSchemaBase>;\nexport type ObjectCapabilities = z.infer<typeof ObjectCapabilities>;\nexport type ObjectIndex = z.infer<typeof IndexSchema>;\nexport type TenancyConfig = z.infer<typeof TenancyConfigSchema>;\nexport type SoftDeleteConfig = z.infer<typeof SoftDeleteConfigSchema>;\nexport type VersioningConfig = z.infer<typeof VersioningConfigSchema>;\nexport type PartitioningConfig = z.infer<typeof PartitioningConfigSchema>;\nexport type CDCConfig = z.infer<typeof CDCConfigSchema>;\n","import { z } from 'zod';\nimport { SystemIdentifierSchema } from '../shared/identifiers.zod';\nimport { EncryptionConfigSchema } from '../system/encryption.zod';\nimport { MaskingRuleSchema } from '../system/masking.zod';\n\n/**\n * Field Type Enum\n */\nexport const FieldType = z.enum([\n // Core Text\n 'text', 'textarea', 'email', 'url', 'phone', 'password',\n // Rich Content\n 'markdown', 'html', 'richtext',\n // Numbers\n 'number', 'currency', 'percent', \n // Date & Time\n 'date', 'datetime', 'time',\n // Logic\n 'boolean', 'toggle', // Toggle is a distinct UI from checkbox\n // Selection\n 'select', // Single select dropdown\n 'multiselect', // Multi select (often tags)\n 'radio', // Radio group\n 'checkboxes', // Checkbox group\n // Relational\n 'lookup', 'master_detail', // Dynamic reference\n 'tree', // Hierarchical reference\n // Media\n 'image', 'file', 'avatar', 'video', 'audio',\n // Calculated / System\n 'formula', 'summary', 'autonumber',\n // Enhanced Types\n 'location', // GPS coordinates\n 'address', // Structured address\n 'code', // Code editor (JSON/SQL/JS)\n 'json', // Structured JSON data\n 'color', // Color picker\n 'rating', // Star rating\n 'slider', // Numeric slider\n 'signature', // Digital signature\n 'qrcode', // QR code / Barcode\n 'progress', // Progress bar\n 'tags', // Simple tag list\n // AI/ML Types\n 'vector', // Vector embeddings for AI/ML (semantic search, RAG)\n]);\n\nexport type FieldType = z.infer<typeof FieldType>;\n\n/**\n * Select Option Schema\n * \n * Defines option values for select/picklist fields.\n * \n * **CRITICAL RULE**: The `value` field is a machine identifier that gets stored in the database.\n * It MUST be lowercase to avoid case-sensitivity issues in queries and comparisons.\n * \n * @example Good\n * { label: 'New', value: 'new' }\n * { label: 'In Progress', value: 'in_progress' }\n * { label: 'Closed Won', value: 'closed_won' }\n * \n * @example Bad (will be rejected)\n * { label: 'New', value: 'New' } // uppercase\n * { label: 'In Progress', value: 'In Progress' } // spaces and uppercase\n * { label: 'Closed Won', value: 'Closed_Won' } // mixed case\n */\nexport const SelectOptionSchema = z.object({\n label: z.string().describe('Display label (human-readable, any case allowed)'),\n value: SystemIdentifierSchema.describe('Stored value (lowercase machine identifier)'),\n color: z.string().optional().describe('Color code for badges/charts'),\n default: z.boolean().optional().describe('Is default option'),\n});\n\n/**\n * Location Coordinates Schema\n * GPS coordinates for location field type\n */\nexport const LocationCoordinatesSchema = z.object({\n latitude: z.number().min(-90).max(90).describe('Latitude coordinate'),\n longitude: z.number().min(-180).max(180).describe('Longitude coordinate'),\n altitude: z.number().optional().describe('Altitude in meters'),\n accuracy: z.number().optional().describe('Accuracy in meters'),\n});\n\n/**\n * Currency Configuration Schema\n * Configuration for currency field type supporting multi-currency\n * \n * Note: Currency codes are validated by length only (3 characters) to support:\n * - Standard ISO 4217 codes (USD, EUR, CNY, etc.)\n * - Cryptocurrency codes (BTC, ETH, etc.)\n * - Custom business-specific codes\n * Stricter validation can be implemented at the application layer based on business requirements.\n */\nexport const CurrencyConfigSchema = z.object({\n precision: z.number().int().min(0).max(10).default(2).describe('Decimal precision (default: 2)'),\n currencyMode: z.enum(['dynamic', 'fixed']).default('dynamic').describe('Currency mode: dynamic (user selectable) or fixed (single currency)'),\n defaultCurrency: z.string().length(3).default('CNY').describe('Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)'),\n});\n\n/**\n * Currency Value Schema\n * Runtime value structure for currency fields\n * \n * Note: Currency codes are validated by length only (3 characters) to support flexibility.\n * See CurrencyConfigSchema for details on currency code validation strategy.\n */\nexport const CurrencyValueSchema = z.object({\n value: z.number().describe('Monetary amount'),\n currency: z.string().length(3).describe('Currency code (ISO 4217)'),\n});\n\n/**\n * Address Schema\n * Structured address for address field type\n */\nexport const AddressSchema = z.object({\n street: z.string().optional().describe('Street address'),\n city: z.string().optional().describe('City name'),\n state: z.string().optional().describe('State/Province'),\n postalCode: z.string().optional().describe('Postal/ZIP code'),\n country: z.string().optional().describe('Country name or code'),\n countryCode: z.string().optional().describe('ISO country code (e.g., US, GB)'),\n formatted: z.string().optional().describe('Formatted address string'),\n});\n\n/**\n * Vector Configuration Schema\n * Configuration for vector field type supporting AI/ML embeddings\n * \n * Vector fields store numerical embeddings for semantic search, similarity matching,\n * and Retrieval-Augmented Generation (RAG) workflows.\n * \n * @example\n * // Text embeddings for semantic search\n * {\n * dimensions: 1536, // OpenAI text-embedding-ada-002\n * distanceMetric: 'cosine',\n * indexed: true\n * }\n * \n * @example\n * // Image embeddings with normalization\n * {\n * dimensions: 512, // ResNet-50\n * distanceMetric: 'euclidean',\n * normalized: true,\n * indexed: true\n * }\n */\nexport const VectorConfigSchema = z.object({\n dimensions: z.number().int().min(1).max(10000).describe('Vector dimensionality (e.g., 1536 for OpenAI embeddings)'),\n distanceMetric: z.enum(['cosine', 'euclidean', 'dotProduct', 'manhattan']).default('cosine').describe('Distance/similarity metric for vector search'),\n normalized: z.boolean().default(false).describe('Whether vectors are normalized (unit length)'),\n indexed: z.boolean().default(true).describe('Whether to create a vector index for fast similarity search'),\n indexType: z.enum(['hnsw', 'ivfflat', 'flat']).optional().describe('Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)'),\n});\n\n/**\n * File Attachment Configuration Schema\n * Configuration for file and attachment field types\n * \n * Provides comprehensive file upload capabilities with:\n * - File type restrictions (allowed/blocked)\n * - File size limits (min/max)\n * - Virus scanning integration\n * - Storage provider integration\n * - Image-specific features (dimensions, thumbnails)\n * \n * @example Basic file upload with size limit\n * {\n * maxSize: 10485760, // 10MB\n * allowedTypes: ['.pdf', '.docx', '.xlsx'],\n * virusScan: true\n * }\n * \n * @example Image upload with validation\n * {\n * maxSize: 5242880, // 5MB\n * allowedTypes: ['.jpg', '.jpeg', '.png', '.webp'],\n * imageValidation: {\n * maxWidth: 4096,\n * maxHeight: 4096,\n * generateThumbnails: true\n * }\n * }\n */\nexport const FileAttachmentConfigSchema = z.object({\n /** File Size Limits */\n minSize: z.number().min(0).optional().describe('Minimum file size in bytes'),\n maxSize: z.number().min(1).optional().describe('Maximum file size in bytes (e.g., 10485760 = 10MB)'),\n \n /** File Type Restrictions */\n allowedTypes: z.array(z.string()).optional().describe('Allowed file extensions (e.g., [\".pdf\", \".docx\", \".jpg\"])'),\n blockedTypes: z.array(z.string()).optional().describe('Blocked file extensions (e.g., [\".exe\", \".bat\", \".sh\"])'),\n allowedMimeTypes: z.array(z.string()).optional().describe('Allowed MIME types (e.g., [\"image/jpeg\", \"application/pdf\"])'),\n blockedMimeTypes: z.array(z.string()).optional().describe('Blocked MIME types'),\n \n /** Virus Scanning */\n virusScan: z.boolean().default(false).describe('Enable virus scanning for uploaded files'),\n virusScanProvider: z.enum(['clamav', 'virustotal', 'metadefender', 'custom']).optional().describe('Virus scanning service provider'),\n virusScanOnUpload: z.boolean().default(true).describe('Scan files immediately on upload'),\n quarantineOnThreat: z.boolean().default(true).describe('Quarantine files if threat detected'),\n \n /** Storage Configuration */\n storageProvider: z.string().optional().describe('Object storage provider name (references ObjectStorageConfig)'),\n storageBucket: z.string().optional().describe('Target bucket name'),\n storagePrefix: z.string().optional().describe('Storage path prefix (e.g., \"uploads/documents/\")'),\n \n /** Image-Specific Validation */\n imageValidation: z.object({\n minWidth: z.number().min(1).optional().describe('Minimum image width in pixels'),\n maxWidth: z.number().min(1).optional().describe('Maximum image width in pixels'),\n minHeight: z.number().min(1).optional().describe('Minimum image height in pixels'),\n maxHeight: z.number().min(1).optional().describe('Maximum image height in pixels'),\n aspectRatio: z.string().optional().describe('Required aspect ratio (e.g., \"16:9\", \"1:1\")'),\n generateThumbnails: z.boolean().default(false).describe('Auto-generate thumbnails'),\n thumbnailSizes: z.array(z.object({\n name: z.string().describe('Thumbnail variant name (e.g., \"small\", \"medium\", \"large\")'),\n width: z.number().min(1).describe('Thumbnail width in pixels'),\n height: z.number().min(1).describe('Thumbnail height in pixels'),\n crop: z.boolean().default(false).describe('Crop to exact dimensions'),\n })).optional().describe('Thumbnail size configurations'),\n preserveMetadata: z.boolean().default(false).describe('Preserve EXIF metadata'),\n autoRotate: z.boolean().default(true).describe('Auto-rotate based on EXIF orientation'),\n }).optional().describe('Image-specific validation rules'),\n \n /** Upload Behavior */\n allowMultiple: z.boolean().default(false).describe('Allow multiple file uploads (overrides field.multiple)'),\n allowReplace: z.boolean().default(true).describe('Allow replacing existing files'),\n allowDelete: z.boolean().default(true).describe('Allow deleting uploaded files'),\n requireUpload: z.boolean().default(false).describe('Require at least one file when field is required'),\n \n /** Metadata Extraction */\n extractMetadata: z.boolean().default(true).describe('Extract file metadata (name, size, type, etc.)'),\n extractText: z.boolean().default(false).describe('Extract text content from documents (OCR/parsing)'),\n \n /** Versioning */\n versioningEnabled: z.boolean().default(false).describe('Keep previous versions of replaced files'),\n maxVersions: z.number().min(1).optional().describe('Maximum number of versions to retain'),\n \n /** Access Control */\n publicRead: z.boolean().default(false).describe('Allow public read access to uploaded files'),\n presignedUrlExpiry: z.number().min(60).max(604800).default(3600).describe('Presigned URL expiration in seconds (default: 1 hour)'),\n}).refine((data) => {\n // Validate minSize is less than or equal to maxSize\n if (data.minSize !== undefined && data.maxSize !== undefined && data.minSize > data.maxSize) {\n return false;\n }\n return true;\n}, {\n message: 'minSize must be less than or equal to maxSize',\n}).refine((data) => {\n // Validate virusScanProvider requires virusScan to be enabled\n if (data.virusScanProvider !== undefined && data.virusScan !== true) {\n return false;\n }\n return true;\n}, {\n message: 'virusScanProvider requires virusScan to be enabled',\n});\n\n/**\n * Data Quality Rules Schema\n * Defines data quality validation and monitoring for fields\n * \n * @example Unique SSN field with completeness requirement\n * {\n * uniqueness: true,\n * completeness: 0.95, // 95% of records must have this field\n * accuracy: {\n * source: 'government_db',\n * threshold: 0.98\n * }\n * }\n */\nexport const DataQualityRulesSchema = z.object({\n /** Enforce uniqueness constraint */\n uniqueness: z.boolean().default(false).describe('Enforce unique values across all records'),\n \n /** Completeness ratio (0-1) indicating minimum percentage of non-null values */\n completeness: z.number().min(0).max(1).default(0).describe('Minimum ratio of non-null values (0-1, default: 0 = no requirement)'),\n \n /** Accuracy validation against authoritative source */\n accuracy: z.object({\n source: z.string().describe('Reference data source for validation (e.g., \"api.verify.com\", \"master_data\")'),\n threshold: z.number().min(0).max(1).describe('Minimum accuracy threshold (0-1, e.g., 0.95 = 95% match required)'),\n }).optional().describe('Accuracy validation configuration'),\n});\n\n/**\n * Computed Field Caching Schema\n * Configuration for caching computed/formula field results\n * \n * @example Cache product price with 1-hour TTL, invalidate on inventory changes\n * {\n * enabled: true,\n * ttl: 3600,\n * invalidateOn: ['inventory.quantity', 'pricing.discount']\n * }\n */\nexport const ComputedFieldCacheSchema = z.object({\n /** Enable caching for this computed field */\n enabled: z.boolean().describe('Enable caching for computed field results'),\n \n /** Time-to-live in seconds */\n ttl: z.number().min(0).describe('Cache TTL in seconds (0 = no expiration)'),\n \n /** Array of field paths that trigger cache invalidation when changed */\n invalidateOn: z.array(z.string()).describe('Field paths that invalidate cache (e.g., [\"inventory.quantity\", \"pricing.base_price\"])'),\n});\n\n/**\n * Field Schema - Best Practice Enterprise Pattern\n */\n/**\n * Field Definition Schema\n * Defines the properties, type, and behavior of a single field (column) on an object.\n * \n * @example Lookup Field\n * {\n * name: \"account_id\",\n * label: \"Account\",\n * type: \"lookup\",\n * reference: \"accounts\",\n * required: true\n * }\n * \n * @example Select Field\n * {\n * name: \"status\",\n * label: \"Status\",\n * type: \"select\",\n * options: [\n * { label: \"Open\", value: \"open\" },\n * { label: \"Closed\", value: \"closed\" }\n * ],\n * defaultValue: \"open\"\n * }\n */\nexport const FieldSchema = z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine name (snake_case)').optional(),\n label: z.string().optional().describe('Human readable label'),\n type: FieldType.describe('Field Data Type'),\n description: z.string().optional().describe('Tooltip/Help text'),\n format: z.string().optional().describe('Format string (e.g. email, phone)'),\n\n /** Database Constraints */\n required: z.boolean().default(false).describe('Is required'),\n searchable: z.boolean().default(false).describe('Is searchable'),\n multiple: z.boolean().default(false).describe('Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image.'),\n unique: z.boolean().default(false).describe('Is unique constraint'),\n defaultValue: z.any().optional().describe('Default value'),\n \n /** Text/String Constraints */\n maxLength: z.number().optional().describe('Max character length'),\n minLength: z.number().optional().describe('Min character length'),\n \n /** Number Constraints */\n precision: z.number().optional().describe('Total digits'),\n scale: z.number().optional().describe('Decimal places'),\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n\n /** Selection Options */\n options: z.array(SelectOptionSchema).optional().describe('Static options for select/multiselect'),\n\n /** Relationship Config */\n reference: z.string().optional().describe('Target Object Name'),\n referenceFilters: z.array(z.string()).optional().describe('Filters applied to lookup dialogs (e.g. \"active = true\")'),\n writeRequiresMasterRead: z.boolean().optional().describe('If true, user needs read access to master record to edit this field'),\n deleteBehavior: z.enum(['set_null', 'cascade', 'restrict']).optional().default('set_null').describe('What happens if referenced record is deleted'),\n\n /** Calculation */\n expression: z.string().optional().describe('Formula expression'),\n formula: z.string().optional().describe('Deprecated: Use expression'),\n summaryOperations: z.object({\n object: z.string(),\n field: z.string(),\n function: z.enum(['count', 'sum', 'min', 'max', 'avg'])\n }).optional().describe('Roll-up summary definition'),\n\n /** Enhanced Field Type Configurations */\n // Code field config\n language: z.string().optional().describe('Programming language for syntax highlighting (e.g., javascript, python, sql)'),\n theme: z.string().optional().describe('Code editor theme (e.g., dark, light, monokai)'),\n lineNumbers: z.boolean().optional().describe('Show line numbers in code editor'),\n \n // Rating field config\n maxRating: z.number().optional().describe('Maximum rating value (default: 5)'),\n allowHalf: z.boolean().optional().describe('Allow half-star ratings'),\n \n // Location field config\n displayMap: z.boolean().optional().describe('Display map widget for location field'),\n allowGeocoding: z.boolean().optional().describe('Allow address-to-coordinate conversion'),\n \n // Address field config\n addressFormat: z.enum(['us', 'uk', 'international']).optional().describe('Address format template'),\n \n // Color field config\n colorFormat: z.enum(['hex', 'rgb', 'rgba', 'hsl']).optional().describe('Color value format'),\n allowAlpha: z.boolean().optional().describe('Allow transparency/alpha channel'),\n presetColors: z.array(z.string()).optional().describe('Preset color options'),\n \n // Slider field config\n step: z.number().optional().describe('Step increment for slider (default: 1)'),\n showValue: z.boolean().optional().describe('Display current value on slider'),\n marks: z.record(z.string(), z.string()).optional().describe('Custom marks/labels at specific values (e.g., {0: \"Low\", 50: \"Medium\", 100: \"High\"})'),\n \n // QR Code / Barcode field config\n // Note: qrErrorCorrection is only applicable when barcodeFormat='qr'\n // Runtime validation should enforce this constraint\n barcodeFormat: z.enum(['qr', 'ean13', 'ean8', 'code128', 'code39', 'upca', 'upce']).optional().describe('Barcode format type'),\n qrErrorCorrection: z.enum(['L', 'M', 'Q', 'H']).optional().describe('QR code error correction level (L=7%, M=15%, Q=25%, H=30%). Only applicable when barcodeFormat is \"qr\"'),\n displayValue: z.boolean().optional().describe('Display human-readable value below barcode/QR code'),\n allowScanning: z.boolean().optional().describe('Enable camera scanning for barcode/QR code input'),\n\n // Currency field config\n currencyConfig: CurrencyConfigSchema.optional().describe('Configuration for currency field type'),\n\n // Vector field config\n vectorConfig: VectorConfigSchema.optional().describe('Configuration for vector field type (AI/ML embeddings)'),\n\n // File attachment field config\n fileAttachmentConfig: FileAttachmentConfigSchema.optional().describe('Configuration for file and attachment field types'),\n\n /** Enhanced Security & Compliance */\n // Encryption configuration\n encryptionConfig: EncryptionConfigSchema.optional().describe('Field-level encryption configuration for sensitive data (GDPR/HIPAA/PCI-DSS)'),\n \n // Data masking rules\n maskingRule: MaskingRuleSchema.optional().describe('Data masking rules for PII protection'),\n \n // Audit trail\n auditTrail: z.boolean().default(false).describe('Enable detailed audit trail for this field (tracks all changes with user and timestamp)'),\n \n /** Field Dependencies & Relationships */\n // Field dependencies\n dependencies: z.array(z.string()).optional().describe('Array of field names that this field depends on (for formulas, visibility rules, etc.)'),\n \n /** Computed Field Optimization */\n // Computed field caching\n cached: ComputedFieldCacheSchema.optional().describe('Caching configuration for computed/formula fields'),\n \n /** Data Quality & Governance */\n // Data quality rules\n dataQuality: DataQualityRulesSchema.optional().describe('Data quality validation and monitoring rules'),\n\n /** Security & Visibility */\n hidden: z.boolean().default(false).describe('Hidden from default UI'),\n readonly: z.boolean().default(false).describe('Read-only in UI'),\n encryption: z.boolean().default(false).describe('Deprecated: Use encryptionConfig for enhanced encryption features. Simple flag for backward compatibility.'),\n \n /** Indexing */\n index: z.boolean().default(false).describe('Create standard database index'),\n externalId: z.boolean().default(false).describe('Is external ID for upsert operations'),\n});\n\nexport type Field = z.infer<typeof FieldSchema>;\nexport type SelectOption = z.infer<typeof SelectOptionSchema>;\nexport type LocationCoordinates = z.infer<typeof LocationCoordinatesSchema>;\nexport type Address = z.infer<typeof AddressSchema>;\nexport type CurrencyConfig = z.infer<typeof CurrencyConfigSchema>;\nexport type CurrencyValue = z.infer<typeof CurrencyValueSchema>;\nexport type VectorConfig = z.infer<typeof VectorConfigSchema>;\nexport type FileAttachmentConfig = z.infer<typeof FileAttachmentConfigSchema>;\nexport type DataQualityRules = z.infer<typeof DataQualityRulesSchema>;\nexport type ComputedFieldCache = z.infer<typeof ComputedFieldCacheSchema>;\n\n/**\n * Field Factory Helper\n */\nexport type FieldInput = Omit<Partial<Field>, 'type'>;\n\nexport const Field = {\n text: (config: FieldInput = {}) => ({ type: 'text', ...config } as const),\n textarea: (config: FieldInput = {}) => ({ type: 'textarea', ...config } as const),\n number: (config: FieldInput = {}) => ({ type: 'number', ...config } as const),\n boolean: (config: FieldInput = {}) => ({ type: 'boolean', ...config } as const),\n date: (config: FieldInput = {}) => ({ type: 'date', ...config } as const),\n datetime: (config: FieldInput = {}) => ({ type: 'datetime', ...config } as const),\n currency: (config: FieldInput = {}) => ({ type: 'currency', ...config } as const),\n percent: (config: FieldInput = {}) => ({ type: 'percent', ...config } as const),\n url: (config: FieldInput = {}) => ({ type: 'url', ...config } as const),\n email: (config: FieldInput = {}) => ({ type: 'email', ...config } as const),\n phone: (config: FieldInput = {}) => ({ type: 'phone', ...config } as const),\n image: (config: FieldInput = {}) => ({ type: 'image', ...config } as const),\n file: (config: FieldInput = {}) => ({ type: 'file', ...config } as const),\n avatar: (config: FieldInput = {}) => ({ type: 'avatar', ...config } as const),\n formula: (config: FieldInput = {}) => ({ type: 'formula', ...config } as const),\n summary: (config: FieldInput = {}) => ({ type: 'summary', ...config } as const),\n autonumber: (config: FieldInput = {}) => ({ type: 'autonumber', ...config } as const),\n markdown: (config: FieldInput = {}) => ({ type: 'markdown', ...config } as const),\n html: (config: FieldInput = {}) => ({ type: 'html', ...config } as const),\n password: (config: FieldInput = {}) => ({ type: 'password', ...config } as const),\n \n /**\n * Select field helper with backward-compatible API\n * \n * Automatically converts option values to lowercase to enforce naming conventions.\n * \n * @example Old API (array first) - auto-converts to lowercase\n * Field.select(['High', 'Low'], { label: 'Priority' })\n * // Results in: [{ label: 'High', value: 'high' }, { label: 'Low', value: 'low' }]\n * \n * @example New API (config object) - enforces lowercase\n * Field.select({ options: [{label: 'High', value: 'high'}], label: 'Priority' })\n * \n * @example Multi-word values - converts to snake_case\n * Field.select(['In Progress', 'Closed Won'], { label: 'Status' })\n * // Results in: [{ label: 'In Progress', value: 'in_progress' }, { label: 'Closed Won', value: 'closed_won' }]\n */\n select: (optionsOrConfig: SelectOption[] | string[] | FieldInput & { options: SelectOption[] | string[] }, config?: FieldInput) => {\n // Helper function to convert string to lowercase snake_case\n const toSnakeCase = (str: string): string => {\n return str\n .toLowerCase()\n .replace(/\\s+/g, '_') // Replace spaces with underscores\n .replace(/[^a-z0-9_]/g, ''); // Remove invalid characters (keeping underscores only)\n };\n\n // Support both old and new signatures:\n // Old: Field.select(['a', 'b'], { label: 'X' })\n // New: Field.select({ options: [{label: 'A', value: 'a'}], label: 'X' })\n let options: SelectOption[];\n let finalConfig: FieldInput;\n \n if (Array.isArray(optionsOrConfig)) {\n // Old signature: array as first param\n options = optionsOrConfig.map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n finalConfig = config || {};\n } else {\n // New signature: config object with options\n options = (optionsOrConfig.options || []).map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n // Remove options from config to avoid confusion\n const { options: _, ...restConfig } = optionsOrConfig;\n finalConfig = restConfig;\n }\n \n return { type: 'select', options, ...finalConfig } as const;\n },\n\n \n lookup: (reference: string, config: FieldInput = {}) => ({ \n type: 'lookup', \n reference, \n ...config \n } as const),\n \n masterDetail: (reference: string, config: FieldInput = {}) => ({ \n type: 'master_detail', \n reference, \n ...config \n } as const),\n\n // Enhanced Field Type Helpers\n location: (config: FieldInput = {}) => ({ \n type: 'location', \n ...config \n } as const),\n \n address: (config: FieldInput = {}) => ({ \n type: 'address', \n ...config \n } as const),\n \n richtext: (config: FieldInput = {}) => ({ \n type: 'richtext', \n ...config \n } as const),\n \n code: (language?: string, config: FieldInput = {}) => ({ \n type: 'code', \n language,\n ...config \n } as const),\n \n color: (config: FieldInput = {}) => ({ \n type: 'color', \n ...config \n } as const),\n \n rating: (maxRating: number = 5, config: FieldInput = {}) => ({ \n type: 'rating', \n maxRating,\n ...config \n } as const),\n \n signature: (config: FieldInput = {}) => ({ \n type: 'signature', \n ...config \n } as const),\n \n slider: (config: FieldInput = {}) => ({ \n type: 'slider', \n ...config \n } as const),\n \n qrcode: (config: FieldInput = {}) => ({ \n type: 'qrcode', \n ...config \n } as const),\n \n vector: (dimensions: number, config: FieldInput = {}) => ({ \n type: 'vector', \n vectorConfig: {\n dimensions,\n distanceMetric: 'cosine' as const,\n normalized: false,\n indexed: true,\n ...config.vectorConfig\n },\n ...config \n } as const),\n};\n","import { z } from 'zod';\n\n/**\n * System Identifier Schema\n * \n * Universal naming convention for all machine identifiers (API Names) in ObjectStack.\n * Enforces lowercase with underscores or dots to ensure:\n * - Cross-platform compatibility (case-insensitive filesystems)\n * - URL-friendliness (no encoding needed)\n * - Database consistency (no collation issues)\n * - Security (no case-sensitivity bugs in permission checks)\n * \n * **Applies to all metadata that acts as a machine identifier:**\n * - Object names (tables/collections)\n * - Field names\n * - Role names\n * - Permission set names\n * - Action/trigger names\n * - Event keys\n * - App IDs\n * - Menu/page IDs\n * - Select option values\n * - Workflow names\n * - Webhook names\n * \n * **Naming Convention Summary:**\n * | Type | Pattern | Example |\n * |------|---------|---------|\n * | Machine ID | snake_case | `crm_account`, `btn_submit`, `role_admin` |\n * | Event keys | dot.notation | `user.login`, `order.created` |\n * | Labels | Any case | `Client Account`, `Submit Form` |\n * \n * @example Valid identifiers\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * - 'order.created' (for events)\n * - 'api_v2_endpoint'\n * \n * @example Invalid identifiers (will be rejected)\n * - 'Account' (uppercase)\n * - 'CrmAccount' (camelCase)\n * - 'crm-account' (kebab-case - use underscore instead)\n * - 'user profile' (spaces)\n */\nexport const SystemIdentifierSchema = z\n .string()\n .min(2, { message: 'System identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'System identifier must be lowercase, starting with a letter, and may contain letters, numbers, underscores, or dots (e.g., \"user_profile\" or \"order.created\")',\n })\n .describe('System identifier (lowercase with underscores or dots)');\n\n/**\n * Strict Snake Case Identifier\n * \n * More restrictive than SystemIdentifierSchema - only allows underscores (no dots).\n * Use this for identifiers that should NOT contain dots (e.g., database table/column names).\n * \n * @example Valid\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * \n * @example Invalid\n * - 'user.profile' (dots not allowed)\n * - 'UserProfile' (uppercase)\n */\nexport const SnakeCaseIdentifierSchema = z\n .string()\n .min(2, { message: 'Identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_]*$/, {\n message:\n 'Identifier must be lowercase snake_case, starting with a letter, and may contain only letters, numbers, and underscores (e.g., \"user_profile\")',\n })\n .describe('Snake case identifier (lowercase with underscores only)');\n\n/**\n * Event Name Identifier\n * \n * Specialized identifier for event names that encourages dot notation.\n * Used in event-driven systems, message queues, and webhooks.\n * \n * Pattern: `namespace.action` or `entity.event_type`\n * \n * @example Valid\n * - 'user.created'\n * - 'order.paid'\n * - 'user.login_success'\n * - 'alarm.high_cpu'\n * \n * @example Invalid\n * - 'UserCreated' (camelCase)\n * - 'user_created' (should use dots for namespacing)\n */\nexport const EventNameSchema = z\n .string()\n .min(3, { message: 'Event name must be at least 3 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'Event name must be lowercase with dots for namespacing (e.g., \"user.created\", \"order.paid\")',\n })\n .describe('Event name (lowercase with dot notation for namespacing)');\n\n/**\n * Type Exports\n */\nexport type SystemIdentifier = z.infer<typeof SystemIdentifierSchema>;\nexport type SnakeCaseIdentifier = z.infer<typeof SnakeCaseIdentifierSchema>;\nexport type EventName = z.infer<typeof EventNameSchema>;\n","import { z } from 'zod';\n\n/**\n * Field-level encryption protocol\n * GDPR/HIPAA/PCI-DSS compliant\n */\nexport const EncryptionAlgorithmSchema = z.enum([\n 'aes-256-gcm',\n 'aes-256-cbc',\n 'chacha20-poly1305',\n]);\n\nexport type EncryptionAlgorithm = z.infer<typeof EncryptionAlgorithmSchema>;\n\nexport const KeyManagementProviderSchema = z.enum([\n 'local',\n 'aws-kms',\n 'azure-key-vault',\n 'gcp-kms',\n 'hashicorp-vault',\n]);\n\nexport type KeyManagementProvider = z.infer<typeof KeyManagementProviderSchema>;\n\nexport const KeyRotationPolicySchema = z.object({\n enabled: z.boolean().default(false),\n frequencyDays: z.number().min(1).default(90),\n retainOldVersions: z.number().default(3),\n autoRotate: z.boolean().default(true),\n});\n\nexport type KeyRotationPolicy = z.infer<typeof KeyRotationPolicySchema>;\n\nexport const EncryptionConfigSchema = z.object({\n enabled: z.boolean().default(false),\n algorithm: EncryptionAlgorithmSchema.default('aes-256-gcm'),\n keyManagement: z.object({\n provider: KeyManagementProviderSchema,\n keyId: z.string().optional(),\n rotationPolicy: KeyRotationPolicySchema.optional(),\n }),\n scope: z.enum(['field', 'record', 'table', 'database']),\n deterministicEncryption: z.boolean().default(false).describe('Allows equality queries on encrypted data'),\n searchableEncryption: z.boolean().default(false).describe('Allows search on encrypted data'),\n});\n\nexport type EncryptionConfig = z.infer<typeof EncryptionConfigSchema>;\n\nexport const FieldEncryptionSchema = z.object({\n fieldName: z.string(),\n encryptionConfig: EncryptionConfigSchema,\n indexable: z.boolean().default(false),\n});\n\nexport type FieldEncryption = z.infer<typeof FieldEncryptionSchema>;\n","import { z } from 'zod';\n\n/**\n * Data masking protocol for PII protection\n */\nexport const MaskingStrategySchema = z.enum([\n 'redact', // Complete redaction: ****\n 'partial', // Partial masking: 138****5678\n 'hash', // Hash value: sha256(value)\n 'tokenize', // Tokenization: token-12345\n 'randomize', // Randomize: generate random value\n 'nullify', // Null value: null\n 'substitute', // Substitute with dummy data\n]);\n\nexport type MaskingStrategy = z.infer<typeof MaskingStrategySchema>;\n\nexport const MaskingRuleSchema = z.object({\n field: z.string(),\n strategy: MaskingStrategySchema,\n pattern: z.string().optional().describe('Regex pattern for partial masking'),\n preserveFormat: z.boolean().default(true),\n preserveLength: z.boolean().default(true),\n roles: z.array(z.string()).optional().describe('Roles that see masked data'),\n exemptRoles: z.array(z.string()).optional().describe('Roles that see unmasked data'),\n});\n\nexport type MaskingRule = z.infer<typeof MaskingRuleSchema>;\n\nexport const MaskingConfigSchema = z.object({\n enabled: z.boolean().default(false),\n rules: z.array(MaskingRuleSchema),\n auditUnmasking: z.boolean().default(true),\n});\n\nexport type MaskingConfig = z.infer<typeof MaskingConfigSchema>;\n","import { z } from 'zod';\n\n/**\n * # ObjectStack Validation Protocol\n * \n * This module defines the validation schema protocol for ObjectStack, providing a comprehensive\n * type-safe validation system similar to Salesforce's validation rules but with enhanced capabilities.\n * \n * ## Overview\n * \n * Validation rules are applied at the data layer to ensure data integrity and enforce business logic.\n * The system supports multiple validation types:\n * \n * 1. **Script Validation**: Formula-based validation using expressions\n * 2. **Uniqueness Validation**: Enforce unique constraints across fields\n * 3. **State Machine Validation**: Control allowed state transitions\n * 4. **Format Validation**: Validate field formats (email, URL, regex, etc.)\n * 5. **Cross-Field Validation**: Validate relationships between multiple fields\n * 6. **Async Validation**: Remote validation via API calls\n * 7. **Custom Validation**: User-defined validation functions\n * 8. **Conditional Validation**: Apply validations based on conditions\n * \n * ## Salesforce Comparison\n * \n * ObjectStack validation rules are inspired by Salesforce validation rules but enhanced:\n * - Salesforce: Formula-based validation with `Error Condition Formula`\n * - ObjectStack: Multiple validation types with composable rules\n * \n * Example Salesforce validation rule:\n * ```\n * Rule Name: Discount_Cannot_Exceed_40_Percent\n * Error Condition Formula: Discount_Percent__c > 0.40\n * Error Message: Discount cannot exceed 40%.\n * ```\n * \n * Equivalent ObjectStack rule:\n * ```typescript\n * {\n * type: 'script',\n * name: 'discount_cannot_exceed_40_percent',\n * condition: 'discount_percent > 0.40',\n * message: 'Discount cannot exceed 40%',\n * severity: 'error'\n * }\n * ```\n */\n\n/**\n * Base Validation Rule\n * \n * All validation rules extend from this base schema with common properties.\n * \n * ## Industry Standard Enhancements\n * - **Label/Description**: Essential for governance in large systems with thousands of rules.\n * - **Events**: granular control over validation timing (Context-aware validation).\n * - **Tags**: categorization for reporting and management.\n */\nconst BaseValidationSchema = z.object({\n // Identification\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique rule name (snake_case)'),\n label: z.string().optional().describe('Human-readable label for the rule listing'),\n description: z.string().optional().describe('Administrative notes explaining the business reason'),\n \n // Execution Control\n active: z.boolean().default(true),\n events: z.array(z.enum(['insert', 'update', 'delete'])).default(['insert', 'update']).describe('Validation contexts'),\n \n // Classification\n tags: z.array(z.string()).optional().describe('Categorization tags (e.g., \"compliance\", \"billing\")'),\n \n // Feedback\n severity: z.enum(['error', 'warning', 'info']).default('error'),\n message: z.string().describe('Error message to display to the user'),\n});\n\n/**\n * 1. Script/Expression Validation\n * Generic formula-based validation.\n */\nexport const ScriptValidationSchema = BaseValidationSchema.extend({\n type: z.literal('script'),\n condition: z.string().describe('Formula expression. If TRUE, validation fails. (e.g. amount < 0)'),\n});\n\n/**\n * 2. Uniqueness Validation\n * specialized optimized check for unique constraints.\n */\nexport const UniquenessValidationSchema = BaseValidationSchema.extend({\n type: z.literal('unique'),\n fields: z.array(z.string()).describe('Fields that must be combined unique'),\n scope: z.string().optional().describe('Formula condition for scope (e.g. active = true)'),\n caseSensitive: z.boolean().default(true),\n});\n\n/**\n * 3. State Machine Validation\n * State transition logic.\n */\nexport const StateMachineValidationSchema = BaseValidationSchema.extend({\n type: z.literal('state_machine'),\n field: z.string().describe('State field (e.g. status)'),\n transitions: z.record(z.string(), z.array(z.string())).describe('Map of { OldState: [AllowedNewStates] }'),\n});\n\n/**\n * 4. Value Format Validation\n * Regex or specialized formats.\n */\nexport const FormatValidationSchema = BaseValidationSchema.extend({\n type: z.literal('format'),\n field: z.string(),\n regex: z.string().optional(),\n format: z.enum(['email', 'url', 'phone', 'json']).optional(),\n});\n\n/**\n * 5. Cross-Field Validation\n * Validates relationships between multiple fields.\n * \n * ## Use Cases\n * - Date range validations (end_date > start_date)\n * - Amount comparisons (discount < total)\n * - Complex business rules involving multiple fields\n * \n * ## Salesforce Examples\n * \n * ### Example 1: Close Date Must Be In Current or Future Month\n * **Salesforce Formula:**\n * ```\n * MONTH(CloseDate) < MONTH(TODAY()) ||\n * YEAR(CloseDate) < YEAR(TODAY())\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'close_date_future',\n * condition: 'MONTH(close_date) >= MONTH(TODAY()) AND YEAR(close_date) >= YEAR(TODAY())',\n * fields: ['close_date'],\n * message: 'Close Date must be in the current or a future month'\n * }\n * ```\n * \n * ### Example 2: Discount Validation\n * **Salesforce Formula:**\n * ```\n * Discount__c > (Amount__c * 0.40)\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'discount_limit',\n * condition: 'discount > (amount * 0.40)',\n * fields: ['discount', 'amount'],\n * message: 'Discount cannot exceed 40% of the amount'\n * }\n * ```\n * \n * ### Example 3: Opportunity Must Have Products\n * **Salesforce Formula:**\n * ```\n * ISBLANK(Products__c) && ISPICKVAL(StageName, \"Closed Won\")\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'products_required_for_won',\n * condition: 'products = null AND stage = \"closed_won\"',\n * fields: ['products', 'stage'],\n * message: 'Opportunity must have products to be marked as Closed Won'\n * }\n * ```\n */\nexport const CrossFieldValidationSchema = BaseValidationSchema.extend({\n type: z.literal('cross_field'),\n condition: z.string().describe('Formula expression comparing fields (e.g. \"end_date > start_date\")'),\n fields: z.array(z.string()).describe('Fields involved in the validation'),\n});\n\n/**\n * 6. JSON Structure Validation\n * Validates JSON fields against a JSON Schema.\n * \n * ## Use Cases\n * - Validating configuration objects stored in JSON fields\n * - Enforcing API payload structures\n * - Complex nested data validation\n */\nexport const JSONValidationSchema = BaseValidationSchema.extend({\n type: z.literal('json_schema'),\n field: z.string().describe('JSON field to validate'),\n schema: z.record(z.string(), z.any()).describe('JSON Schema object definition'),\n});\n\n/**\n * 7. Async Validation\n * Remote validation via API call or database query.\n * \n * ## Use Cases\n * \n * ### 1. Email Uniqueness Check\n * Check if an email address is already registered in the system.\n * ```typescript\n * {\n * type: 'async',\n * name: 'unique_email',\n * field: 'email',\n * validatorUrl: '/api/users/check-email',\n * message: 'This email address is already registered',\n * debounce: 500, // Wait 500ms after user stops typing\n * timeout: 3000\n * }\n * ```\n * \n * ### 2. Username Availability\n * Verify username is available before form submission.\n * ```typescript\n * {\n * type: 'async',\n * name: 'username_available',\n * field: 'username',\n * validatorUrl: '/api/users/check-username',\n * message: 'This username is already taken',\n * debounce: 300,\n * timeout: 2000\n * }\n * ```\n * \n * ### 3. Tax ID Validation\n * Validate tax ID with government API (e.g., IRS, HMRC).\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_tax_id',\n * field: 'tax_id',\n * validatorFunction: 'validateTaxIdWithIRS',\n * message: 'Invalid Tax ID number',\n * timeout: 10000, // Government APIs may be slow\n * params: { country: 'US', format: 'EIN' }\n * }\n * ```\n * \n * ### 4. Credit Card Validation\n * Verify credit card with payment gateway without charging.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_card',\n * field: 'card_number',\n * validatorUrl: 'https://api.stripe.com/v1/tokens/validate',\n * message: 'Invalid credit card number',\n * timeout: 5000,\n * params: { \n * mode: 'validate_only',\n * checkFunds: false \n * }\n * }\n * ```\n * \n * ### 5. Address Validation\n * Validate and standardize addresses using geocoding services.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_address',\n * field: 'street_address',\n * validatorFunction: 'validateAddressWithGoogleMaps',\n * message: 'Unable to verify address',\n * timeout: 4000,\n * params: {\n * includeFields: ['city', 'state', 'zip'],\n * strictMode: true,\n * country: 'US'\n * }\n * }\n * ```\n * \n * ### 6. Domain Name Availability\n * Check if domain name is available for registration.\n * ```typescript\n * {\n * type: 'async',\n * name: 'domain_available',\n * field: 'domain_name',\n * validatorUrl: '/api/domains/check-availability',\n * message: 'This domain is already taken or reserved',\n * debounce: 500,\n * timeout: 2000\n * }\n * ```\n * \n * ### 7. Coupon Code Validation\n * Verify coupon code is valid and not expired.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_coupon',\n * field: 'coupon_code',\n * validatorUrl: '/api/coupons/validate',\n * message: 'Invalid or expired coupon code',\n * timeout: 2000,\n * params: {\n * checkExpiration: true,\n * checkUsageLimit: true,\n * userId: '{{current_user_id}}'\n * }\n * }\n * ```\n */\nexport const AsyncValidationSchema = BaseValidationSchema.extend({\n type: z.literal('async'),\n field: z.string().describe('Field to validate'),\n validatorUrl: z.string().optional().describe('External API endpoint for validation'),\n method: z.enum(['GET', 'POST']).default('GET').describe('HTTP method for external call'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom headers for the request'),\n validatorFunction: z.string().optional().describe('Reference to custom validator function'),\n timeout: z.number().optional().default(5000).describe('Timeout in milliseconds'),\n debounce: z.number().optional().describe('Debounce delay in milliseconds'),\n params: z.record(z.string(), z.any()).optional().describe('Additional parameters to pass to validator'),\n});\n\n/**\n * 8. Custom Validator Function\n * User-defined validation logic with code reference.\n */\nexport const CustomValidatorSchema = BaseValidationSchema.extend({\n type: z.literal('custom'),\n handler: z.string().describe('Name of the custom validation function registered in the system'),\n params: z.record(z.string(), z.any()).optional().describe('Parameters passed to the custom handler'),\n});\n\n/**\n * 9. Master Validation Rule Schema\n */\nexport const ValidationRuleSchema: z.ZodType<any> = z.lazy(() =>\n z.discriminatedUnion('type', [\n ScriptValidationSchema,\n UniquenessValidationSchema,\n StateMachineValidationSchema,\n FormatValidationSchema,\n CrossFieldValidationSchema,\n JSONValidationSchema,\n AsyncValidationSchema,\n CustomValidatorSchema,\n ConditionalValidationSchema,\n ])\n);\n\n/**\n * 8. Conditional Validation\n * Validation that only applies when a condition is met.\n * \n * ## Overview\n * Conditional validations follow the pattern: \"Validate X only if Y is true\"\n * This allows for context-aware validation rules that adapt to different scenarios.\n * \n * ## Use Cases\n * \n * ### 1. Validate Based on Record Type\n * Apply different validation rules based on the type of record.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'enterprise_approval_required',\n * when: 'account_type = \"enterprise\"',\n * message: 'Enterprise validation',\n * then: {\n * type: 'script',\n * name: 'require_approval',\n * message: 'Enterprise accounts require manager approval',\n * condition: 'approval_status = null'\n * }\n * }\n * ```\n * \n * ### 2. Conditional Field Requirements\n * Require certain fields only when specific conditions are met.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'shipping_address_when_required',\n * when: 'requires_shipping = true',\n * message: 'Shipping validation',\n * then: {\n * type: 'script',\n * name: 'shipping_address_required',\n * message: 'Shipping address is required for physical products',\n * condition: 'shipping_address = null OR shipping_address = \"\"'\n * }\n * }\n * ```\n * \n * ### 3. Amount-Based Validation\n * Apply different rules based on transaction amount.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'high_value_approval',\n * when: 'order_total > 10000',\n * message: 'High value order validation',\n * then: {\n * type: 'script',\n * name: 'manager_approval_required',\n * message: 'Orders over $10,000 require manager approval',\n * condition: 'manager_approval_id = null'\n * },\n * otherwise: {\n * type: 'script',\n * name: 'standard_validation',\n * message: 'Payment method is required',\n * condition: 'payment_method = null'\n * }\n * }\n * ```\n * \n * ### 4. Regional Compliance\n * Apply region-specific validation rules.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'regional_compliance',\n * when: 'region = \"EU\"',\n * message: 'EU compliance validation',\n * then: {\n * type: 'script',\n * name: 'gdpr_consent',\n * message: 'GDPR consent is required for EU customers',\n * condition: 'gdpr_consent_given = false'\n * },\n * otherwise: {\n * type: 'script',\n * name: 'tos_acceptance',\n * message: 'Terms of Service acceptance required',\n * condition: 'tos_accepted = false'\n * }\n * }\n * ```\n * \n * ### 5. Nested Conditional Validation\n * Create complex validation logic with nested conditions.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'country_state_validation',\n * when: 'country = \"US\"',\n * message: 'US-specific validation',\n * then: {\n * type: 'conditional',\n * name: 'california_validation',\n * when: 'state = \"CA\"',\n * message: 'California-specific validation',\n * then: {\n * type: 'script',\n * name: 'ca_tax_id_required',\n * message: 'California requires a valid tax ID',\n * condition: 'tax_id = null OR NOT(REGEX(tax_id, \"^\\\\d{2}-\\\\d{7}$\"))'\n * }\n * }\n * }\n * ```\n * \n * ### 6. Tax Validation for Taxable Items\n * Only validate tax fields when the item is taxable.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'tax_field_validation',\n * when: 'is_taxable = true',\n * message: 'Tax validation',\n * then: {\n * type: 'script',\n * name: 'tax_code_required',\n * message: 'Tax code is required for taxable items',\n * condition: 'tax_code = null OR tax_code = \"\"'\n * }\n * }\n * ```\n * \n * ### 7. Role-Based Validation\n * Apply validation based on user role.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'role_based_approval_limit',\n * when: 'user_role = \"manager\"',\n * message: 'Manager approval limits',\n * then: {\n * type: 'script',\n * name: 'manager_limit',\n * message: 'Managers can approve up to $50,000',\n * condition: 'approval_amount > 50000'\n * }\n * }\n * ```\n * \n * ## Salesforce Pattern Comparison\n * \n * Salesforce doesn't have explicit \"conditional validation\" rules but achieves similar\n * behavior using formula logic. ObjectStack makes this pattern explicit and composable.\n * \n * **Salesforce Approach:**\n * ```\n * IF(\n * ISPICKVAL(Type, \"Enterprise\"),\n * AND(Amount > 100000, ISBLANK(Approval__c)),\n * FALSE\n * )\n * ```\n * \n * **ObjectStack Approach:**\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'enterprise_high_value',\n * when: 'type = \"enterprise\"',\n * then: {\n * type: 'cross_field',\n * name: 'amount_approval',\n * condition: 'amount > 100000 AND approval = null',\n * fields: ['amount', 'approval']\n * }\n * }\n * ```\n */\nexport const ConditionalValidationSchema = BaseValidationSchema.extend({\n type: z.literal('conditional'),\n when: z.string().describe('Condition formula (e.g. \"type = \\'enterprise\\'\")'),\n then: ValidationRuleSchema.describe('Validation rule to apply when condition is true'),\n otherwise: ValidationRuleSchema.optional().describe('Validation rule to apply when condition is false'),\n});\n\nexport type ValidationRule = z.infer<typeof ValidationRuleSchema>;\nexport type ScriptValidation = z.infer<typeof ScriptValidationSchema>;\nexport type UniquenessValidation = z.infer<typeof UniquenessValidationSchema>;\nexport type StateMachineValidation = z.infer<typeof StateMachineValidationSchema>;\nexport type FormatValidation = z.infer<typeof FormatValidationSchema>;\nexport type CrossFieldValidation = z.infer<typeof CrossFieldValidationSchema>;\nexport type JSONValidation = z.infer<typeof JSONValidationSchema>;\nexport type AsyncValidation = z.infer<typeof AsyncValidationSchema>;\nexport type CustomValidation = z.infer<typeof CustomValidatorSchema>;\nexport type ConditionalValidation = z.infer<typeof ConditionalValidationSchema>;","import { z } from 'zod';\n\n/**\n * Hook Lifecycle Events\n * Defines the interception points in the ObjectQL execution pipeline.\n */\nexport const HookEvent = z.enum([\n // Read Operations\n 'beforeFind', 'afterFind',\n 'beforeFindOne', 'afterFindOne',\n 'beforeCount', 'afterCount',\n 'beforeAggregate', 'afterAggregate',\n\n // Write Operations\n 'beforeInsert', 'afterInsert',\n 'beforeUpdate', 'afterUpdate',\n 'beforeDelete', 'afterDelete',\n \n // Bulk Operations (Query-based)\n 'beforeUpdateMany', 'afterUpdateMany',\n 'beforeDeleteMany', 'afterDeleteMany',\n]);\n\n/**\n * Hook Definition Schema\n * \n * Hooks serve as the \"Logic Layer\" in ObjectStack, allowing developers to \n * inject custom code during the data access lifecycle.\n * \n * Use cases:\n * - Data Enrichment (Default values, Calculated fields)\n * - Validation (Complex business rules)\n * - Side Effects (Sending emails, Syncing to external systems)\n * - Security (Filtering data based on context)\n */\nexport const HookSchema = z.object({\n /**\n * Unique identifier for the hook\n * Required for debugging and overriding.\n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Hook unique name (snake_case)'),\n\n /**\n * Human readable label\n */\n label: z.string().optional().describe('Description of what this hook does'),\n\n /**\n * Target Object(s)\n * can be:\n * - Single object: \"account\"\n * - List of objects: [\"account\", \"contact\"]\n * - Wildcard: \"*\" (All objects)\n */\n object: z.union([z.string(), z.array(z.string())]).describe('Target object(s)'),\n\n /**\n * Events to subscribe to\n * Combinations of timing (before/after) and action (find/insert/update/delete/etc)\n */\n events: z.array(HookEvent).describe('Lifecycle events'),\n\n /**\n * Handler Logic\n * Reference to a registered function in the plugin system OR a direct function (runtime only).\n */\n handler: z.union([z.string(), z.any()]).optional().describe('Function handler name or direct function'),\n\n /**\n * Execution Order\n * Lower numbers run first.\n * - System Hooks: 0-99\n * - App Hooks: 100-999\n * - User Hooks: 1000+\n */\n priority: z.number().default(100).describe('Execution priority'),\n\n /**\n * Async / Background Execution\n * If true, the hook runs in the background and does not block the transaction.\n * Only applicable for 'after*' events.\n * Default: false (Blocking)\n */\n async: z.boolean().default(false).describe('Run specifically as fire-and-forget'),\n\n /**\n * Error Policy\n * What to do if the hook throws an exception?\n * - abort: Rollback transaction (if blocking)\n * - log: Log error and continue\n */\n onError: z.enum(['abort', 'log']).default('abort').describe('Error handling strategy'),\n});\n\n/**\n * Hook Runtime Context\n * Defines what is available to the hook handler during execution.\n * \n * Best Practices:\n * - **Immutability**: `object`, `event`, `id` are immutable.\n * - **Mutability**: `input` and `result` are mutable to allow transformation.\n * - **Encapsulation**: `session` isolates auth info; `transaction` ensures atomicity.\n */\nexport const HookContextSchema = z.object({\n /** Tracing ID */\n id: z.string().optional().describe('Unique execution ID for tracing'),\n\n /** Target Object Name */\n object: z.string(),\n \n /** Current Lifecycle Event */\n event: HookEvent,\n\n /** \n * Input Parameters (Mutable)\n * Modify this to change the behavior of the operation.\n * \n * - find: { query: QueryAST, options: DriverOptions }\n * - insert: { doc: Record, options: DriverOptions }\n * - update: { id: ID, doc: Record, options: DriverOptions }\n * - delete: { id: ID, options: DriverOptions }\n * - updateMany: { query: QueryAST, doc: Record, options: DriverOptions }\n * - deleteMany: { query: QueryAST, options: DriverOptions }\n */\n input: z.record(z.string(), z.any()).describe('Mutable input parameters'),\n\n /** \n * Operation Result (Mutable)\n * Available in 'after*' events. Modify this to transform the output.\n */\n result: z.any().optional().describe('Operation result (After hooks only)'),\n\n /**\n * Data Snapshot\n * The state of the record BEFORE the operation (for update/delete).\n */\n previous: z.record(z.string(), z.any()).optional().describe('Record state before operation'),\n\n /**\n * Execution Session\n * Contains authentication and tenancy information.\n */\n session: z.object({\n userId: z.string().optional(),\n tenantId: z.string().optional(),\n roles: z.array(z.string()).optional(),\n accessToken: z.string().optional(),\n }).optional().describe('Current session context'),\n \n /**\n * Transaction Handle\n * If the operation is part of a transaction, use this handle for side-effects.\n */\n transaction: z.any().optional().describe('Database transaction handle'),\n\n /**\n * Engine Access\n * Reference to the ObjectQL engine for performing side effects.\n */\n ql: z.any().describe('ObjectQL Engine Reference'),\n});\n\nexport type Hook = z.input<typeof HookSchema>;\nexport type ResolvedHook = z.output<typeof HookSchema>;\nexport type HookEventType = z.infer<typeof HookEvent>;\nexport type HookContext = z.infer<typeof HookContextSchema>;\n","import { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { QuerySchema } from './query.zod';\n\n/**\n * Transformation Logic\n * Built-in helpers for converting data during import.\n */\nexport const TransformType = z.enum([\n 'none', // Direct copy\n 'constant', // Use a hardcoded value\n 'lookup', // Resolve FK (Name -> ID)\n 'split', // \"John Doe\" -> [\"John\", \"Doe\"]\n 'join', // [\"John\", \"Doe\"] -> \"John Doe\"\n 'javascript', // Custom script (Review security!)\n 'map' // Value mapping (e.g. \"Active\" -> \"active\")\n]);\n\n/**\n * Field Mapping Item\n */\nexport const FieldMappingSchema = z.object({\n /** Source Column */\n source: z.union([z.string(), z.array(z.string())]).describe('Source column header(s)'),\n \n /** Target Field */\n target: z.union([z.string(), z.array(z.string())]).describe('Target object field(s)'),\n \n /** Transformation */\n transform: TransformType.default('none'),\n \n /** Configuration for transform */\n params: z.object({\n // Constant\n value: z.any().optional(),\n \n // Lookup\n object: z.string().optional(), // Lookup Object\n fromField: z.string().optional(), // Match on (e.g. \"name\")\n toField: z.string().optional(), // Value to take (e.g. \"_id\")\n autoCreate: z.boolean().optional(), // Create if missing\n \n // Map\n valueMap: z.record(z.string(), z.any()).optional(), // { \"Open\": \"draft\" }\n \n // Split/Join\n separator: z.string().optional()\n }).optional()\n});\n\n/**\n * Data Mapping Schema\n * Defines a reusable data mapping configuration for ETL operations.\n * \n * **NAMING CONVENTION:**\n * Mapping names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good mapping names\n * - 'salesforce_to_crm'\n * - 'csv_import_contacts'\n * - 'api_sync_orders'\n * \n * @example Bad mapping names (will be rejected)\n * - 'SalesforceToCRM' (PascalCase)\n * - 'CSV Import' (spaces)\n */\nexport const MappingSchema = z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Mapping unique name (lowercase snake_case)'),\n label: z.string().optional(),\n \n /** Scope */\n sourceFormat: z.enum(['csv', 'json', 'xml', 'sql']).default('csv'),\n targetObject: z.string().describe('Target Object Name'),\n \n /** Column Mappings */\n fieldMapping: z.array(FieldMappingSchema),\n \n /** Upsert Logic */\n mode: z.enum(['insert', 'update', 'upsert']).default('insert'),\n upsertKey: z.array(z.string()).optional().describe('Fields to match for upsert (e.g. email)'),\n \n /** Extract Logic (For Export) */\n extractQuery: QuerySchema.optional().describe('Query to run for export only'),\n \n /** Error Handling */\n errorPolicy: z.enum(['skip', 'abort', 'retry']).default('skip'),\n batchSize: z.number().default(1000)\n});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n","import { z } from 'zod';\nimport { FilterConditionSchema } from './filter.zod';\nimport { SortNodeSchema } from './query.zod';\n\n/**\n * Data Engine Protocol\n * \n * Defines the standard interface for data persistence engines in ObjectStack.\n * This protocol abstracts the underlying storage mechanism (SQL, NoSQL, API, Memory),\n * allowing the ObjectQL engine to execute standardized CRUD and Aggregation operations\n * regardless of where the data resides.\n * \n * The Data Engine acts as the \"Driver\" layer in the Hexagonal Architecture.\n */\n\n// ==========================================================================\n// 1. Shared Definitions\n// ==========================================================================\n\n/**\n * Data Engine Query filter conditions\n * Supports simple key-value map or complex Logic/Field expressions (DSL)\n */\nexport const DataEngineFilterSchema = z.union([\n z.record(z.string(), z.any()),\n FilterConditionSchema\n]).describe('Data Engine query filter conditions');\n\n/**\n * Sort order definition\n * Supports:\n * - { name: 'asc' }\n * - { name: 1 }\n * - [{ field: 'name', order: 'asc' }]\n */\nexport const DataEngineSortSchema = z.union([\n z.record(z.string(), z.enum(['asc', 'desc'])), \n z.record(z.string(), z.union([z.literal(1), z.literal(-1)])),\n z.array(SortNodeSchema)\n]).describe('Sort order definition');\n\n// ==========================================================================\n// 2. method: FIND\n// ==========================================================================\n\nexport const DataEngineQueryOptionsSchema = z.object({\n /** Filter conditions (WHERE) */\n filter: DataEngineFilterSchema.optional(),\n \n /** Fields to select (SELECT) */\n select: z.array(z.string()).optional(),\n \n /** Sort order (ORDER BY) */\n sort: DataEngineSortSchema.optional(),\n \n /** Limit number of results (LIMIT) */\n limit: z.number().int().min(1).optional(),\n \n /** Skip number of results (OFFSET) */\n skip: z.number().int().min(0).optional(),\n \n /** \n * Maximum number of results (OData style)\n * Takes precedence over limit if both specified\n */\n top: z.number().int().min(1).optional(),\n\n /**\n * Include related records (JOIN/Populate)\n * List of relationship field names to expand\n */\n populate: z.array(z.string()).optional(),\n}).describe('Query options for IDataEngine.find() operations');\n\n// ==========================================================================\n// 3. method: INSERT\n// ==========================================================================\n\nexport const DataEngineInsertOptionsSchema = z.object({\n /** \n * Return the inserted record(s)? \n * Some drivers support RETURNING clause for efficiency.\n * Default: true\n */\n returning: z.boolean().default(true).optional(),\n}).describe('Options for DataEngine.insert operations');\n\n// ==========================================================================\n// 4. method: UPDATE\n// ==========================================================================\n\nexport const DataEngineUpdateOptionsSchema = z.object({\n /** Filter conditions to identify records to update */\n filter: DataEngineFilterSchema.optional(),\n \n /** \n * Perform an upsert? \n * If true, insert if not found.\n */\n upsert: z.boolean().default(false).optional(),\n \n /**\n * Update multiple records?\n * If false, only the first match is updated.\n * Default: false\n */\n multi: z.boolean().default(false).optional(),\n \n /** \n * Return the updated record(s)? \n * Default: false (returns update count/status)\n */\n returning: z.boolean().default(false).optional(),\n}).describe('Options for DataEngine.update operations');\n\n// ==========================================================================\n// 5. method: DELETE\n// ==========================================================================\n\nexport const DataEngineDeleteOptionsSchema = z.object({\n /** Filter conditions to identify records to delete */\n filter: DataEngineFilterSchema.optional(),\n \n /**\n * Delete multiple records?\n * If false, only the first match is deleted.\n * Default: false\n */\n multi: z.boolean().default(false).optional(),\n}).describe('Options for DataEngine.delete operations');\n\n// ==========================================================================\n// 6. method: AGGREGATE\n// ==========================================================================\n\nexport const DataEngineAggregateOptionsSchema = z.object({\n /** Filter conditions (WHERE) */\n filter: DataEngineFilterSchema.optional(),\n \n /** Group By fields */\n groupBy: z.array(z.string()).optional(),\n \n /** \n * Aggregation definitions \n * e.g. [{ field: 'amount', method: 'sum', alias: 'total' }]\n */\n aggregations: z.array(z.object({\n field: z.string(),\n method: z.enum(['count', 'sum', 'avg', 'min', 'max', 'count_distinct']),\n alias: z.string().optional()\n })).optional(),\n}).describe('Options for DataEngine.aggregate operations');\n\n// ==========================================================================\n// 7. method: COUNT\n// ==========================================================================\n\nexport const DataEngineCountOptionsSchema = z.object({\n /** Filter conditions */\n filter: DataEngineFilterSchema.optional(),\n}).describe('Options for DataEngine.count operations');\n\n// ==========================================================================\n// 8. Definition (Contract)\n// ==========================================================================\n\nexport const DataEngineContractSchema = z.object({\n find: z.function()\n .args(z.string(), DataEngineQueryOptionsSchema.optional())\n .returns(z.promise(z.array(z.any()))),\n \n findOne: z.function()\n .args(z.string(), DataEngineQueryOptionsSchema.optional())\n .returns(z.promise(z.any())),\n \n insert: z.function()\n .args(z.string(), z.union([z.record(z.string(), z.any()), z.array(z.record(z.string(), z.any()))]), DataEngineInsertOptionsSchema.optional())\n .returns(z.promise(z.any())),\n \n update: z.function()\n .args(z.string(), z.record(z.string(), z.any()), DataEngineUpdateOptionsSchema.optional())\n .returns(z.promise(z.any())),\n \n delete: z.function()\n .args(z.string(), DataEngineDeleteOptionsSchema.optional())\n .returns(z.promise(z.any())),\n \n count: z.function()\n .args(z.string(), DataEngineCountOptionsSchema.optional())\n .returns(z.promise(z.number())),\n \n aggregate: z.function()\n .args(z.string(), DataEngineAggregateOptionsSchema)\n .returns(z.promise(z.array(z.any())))\n}).describe('Standard Data Engine Contract');\n\n// ==========================================================================\n// 9. Virtualization & RPC Protocol\n// ==========================================================================\n\n/**\n * Data Engine RPC Request (Virtual ObjectQL)\n * \n * This schema defines the serialized format for executing Data Engine operations\n * via HTTP, Message Queue, or Plugin boundaries.\n * \n * It enables \"Virtual Data Engines\" where the implementation resides in a \n * separate microservice or plugin.\n */\n\nexport const DataEngineFindRequestSchema = z.object({\n method: z.literal('find'),\n object: z.string(),\n query: DataEngineQueryOptionsSchema.optional()\n});\n\nexport const DataEngineFindOneRequestSchema = z.object({\n method: z.literal('findOne'),\n object: z.string(),\n query: DataEngineQueryOptionsSchema.optional()\n});\n\nexport const DataEngineInsertRequestSchema = z.object({\n method: z.literal('insert'),\n object: z.string(),\n data: z.union([z.record(z.string(), z.any()), z.array(z.record(z.string(), z.any()))]),\n options: DataEngineInsertOptionsSchema.optional()\n});\n\nexport const DataEngineUpdateRequestSchema = z.object({\n method: z.literal('update'),\n object: z.string(),\n data: z.record(z.string(), z.any()),\n id: z.any().optional().describe('ID for single update, or use filter in options'),\n options: DataEngineUpdateOptionsSchema.optional()\n});\n\nexport const DataEngineDeleteRequestSchema = z.object({\n method: z.literal('delete'),\n object: z.string(),\n id: z.any().optional().describe('ID for single delete, or use filter in options'),\n options: DataEngineDeleteOptionsSchema.optional()\n});\n\nexport const DataEngineCountRequestSchema = z.object({\n method: z.literal('count'),\n object: z.string(),\n query: DataEngineCountOptionsSchema.optional()\n});\n\nexport const DataEngineAggregateRequestSchema = z.object({\n method: z.literal('aggregate'),\n object: z.string(),\n query: DataEngineAggregateOptionsSchema\n});\n\n/**\n * Data Engine Execute Request (Raw Command)\n * Execute a raw command/query native to the driver (e.g. SQL, Shell, Remote API).\n */\nexport const DataEngineExecuteRequestSchema = z.object({\n method: z.literal('execute'),\n /** The abstract command (string SQL, or JSON object) */\n command: z.any(),\n /** Optional options */\n options: z.record(z.string(), z.any()).optional()\n});\n\n/**\n * Data Engine Vector Find Request (AI/RAG)\n * Perform a similarity search using vector embeddings.\n */\nexport const DataEngineVectorFindRequestSchema = z.object({\n method: z.literal('vectorFind'),\n object: z.string(),\n /** The vector embedding to search for */\n vector: z.array(z.number()),\n /** Optional pre-filter (Metadata filtering) */\n filter: DataEngineFilterSchema.optional(),\n /** Fields to select */\n select: z.array(z.string()).optional(),\n /** Number of results */\n limit: z.number().int().default(5).optional(),\n /** Minimum similarity score (0-1) or distance threshold */\n threshold: z.number().optional()\n});\n\n/**\n * Data Engine Batch Request\n * Execute multiple operations in a single transaction/request efficiently.\n */\nexport const DataEngineBatchRequestSchema = z.object({\n method: z.literal('batch'),\n requests: z.array(z.discriminatedUnion('method', [\n DataEngineFindRequestSchema,\n DataEngineFindOneRequestSchema,\n DataEngineInsertRequestSchema,\n DataEngineUpdateRequestSchema,\n DataEngineDeleteRequestSchema,\n DataEngineCountRequestSchema,\n DataEngineAggregateRequestSchema,\n DataEngineExecuteRequestSchema,\n DataEngineVectorFindRequestSchema\n ])),\n /** \n * Transaction Mode\n * - true: All or nothing (Atomic)\n * - false: Best effort, continue on error\n */\n transaction: z.boolean().default(true).optional()\n});\n\n/**\n * Unified Data Engine Request Union\n * Use this to validate any incoming \"Virtual ObjectQL\" request.\n */\nexport const DataEngineRequestSchema = z.discriminatedUnion('method', [\n DataEngineFindRequestSchema,\n DataEngineFindOneRequestSchema,\n DataEngineInsertRequestSchema,\n DataEngineUpdateRequestSchema,\n DataEngineDeleteRequestSchema,\n DataEngineCountRequestSchema,\n DataEngineAggregateRequestSchema,\n DataEngineBatchRequestSchema,\n DataEngineExecuteRequestSchema,\n DataEngineVectorFindRequestSchema\n]).describe('Virtual ObjectQL Request Protocol');\n\n// ==========================================================================\n// 10. Type Exports\n// ==========================================================================\n\nexport type DataEngineFilter = z.infer<typeof DataEngineFilterSchema>;\nexport type DataEngineSort = z.infer<typeof DataEngineSortSchema>;\nexport type DataEngineQueryOptions = z.infer<typeof DataEngineQueryOptionsSchema>;\nexport type DataEngineInsertOptions = z.infer<typeof DataEngineInsertOptionsSchema>;\nexport type DataEngineUpdateOptions = z.infer<typeof DataEngineUpdateOptionsSchema>;\nexport type DataEngineDeleteOptions = z.infer<typeof DataEngineDeleteOptionsSchema>;\nexport type DataEngineAggregateOptions = z.infer<typeof DataEngineAggregateOptionsSchema>;\nexport type DataEngineCountOptions = z.infer<typeof DataEngineCountOptionsSchema>;\nexport type DataEngineRequest = z.infer<typeof DataEngineRequestSchema>;\n","import { z } from 'zod';\nimport { QuerySchema } from '../data/query.zod';\n\n/**\n * Common Driver Options\n * Passed to most driver methods to control behavior (transactions, timeouts, etc.)\n */\nexport const DriverOptionsSchema = z.object({\n /**\n * Transaction handle/identifier.\n * If provided, the operation must run within this transaction.\n */\n transaction: z.any().optional().describe('Transaction handle'),\n\n /**\n * Operation timeout in milliseconds.\n */\n timeout: z.number().optional().describe('Timeout in ms'),\n\n /**\n * Whether to bypass cache and force a fresh read.\n */\n skipCache: z.boolean().optional().describe('Bypass cache'),\n\n /**\n * Distributed Tracing Context.\n * Used for passing OpenTelemetry span context or request IDs for observability.\n */\n traceContext: z.record(z.string(), z.string()).optional().describe('OpenTelemetry context or request ID'),\n\n /**\n * Tenant Identifier.\n * For multi-tenant databases (row-level security or schema-per-tenant).\n */\n tenantId: z.string().optional().describe('Tenant Isolation identifier'),\n});\n\n/**\n * Driver Capabilities Schema\n * \n * Defines what features a database driver supports.\n * This allows ObjectQL to adapt its behavior based on underlying database capabilities.\n * Enhanced with granular capability flags for better feature detection.\n */\nexport const DriverCapabilitiesSchema = z.object({\n // ============================================================================\n // Basic CRUD Operations\n // ============================================================================\n \n /**\n * Whether the driver supports create operations.\n */\n create: z.boolean().default(true).describe('Supports CREATE operations'),\n \n /**\n * Whether the driver supports read operations.\n */\n read: z.boolean().default(true).describe('Supports READ operations'),\n \n /**\n * Whether the driver supports update operations.\n */\n update: z.boolean().default(true).describe('Supports UPDATE operations'),\n \n /**\n * Whether the driver supports delete operations.\n */\n delete: z.boolean().default(true).describe('Supports DELETE operations'),\n\n // ============================================================================\n // Bulk Operations\n // ============================================================================\n \n /**\n * Whether the driver supports bulk create operations.\n */\n bulkCreate: z.boolean().default(false).describe('Supports bulk CREATE operations'),\n \n /**\n * Whether the driver supports bulk update operations.\n */\n bulkUpdate: z.boolean().default(false).describe('Supports bulk UPDATE operations'),\n \n /**\n * Whether the driver supports bulk delete operations.\n */\n bulkDelete: z.boolean().default(false).describe('Supports bulk DELETE operations'),\n\n // ============================================================================\n // Transaction & Connection Management\n // ============================================================================\n \n /**\n * Whether the driver supports database transactions.\n * If true, beginTransaction, commit, and rollback must be implemented.\n */\n transactions: z.boolean().default(false).describe('Supports ACID transactions'),\n \n /**\n * Whether the driver supports savepoints within transactions.\n */\n savepoints: z.boolean().default(false).describe('Supports transaction savepoints'),\n \n /**\n * Supported transaction isolation levels.\n */\n isolationLevels: z.array(z.enum([\n 'read-uncommitted',\n 'read-committed',\n 'repeatable-read',\n 'serializable',\n ])).optional().describe('Supported transaction isolation levels'),\n\n // ============================================================================\n // Query Operations\n // ============================================================================\n \n /**\n * Whether the driver supports WHERE clause filters.\n * If false, ObjectQL will fetch all records and filter in memory.\n * \n * Example: Memory driver might not support complex filter conditions.\n */\n queryFilters: z.boolean().default(true).describe('Supports WHERE clause filtering'),\n\n /**\n * Whether the driver supports aggregation functions (COUNT, SUM, AVG, etc.).\n * If false, ObjectQL will compute aggregations in memory.\n */\n queryAggregations: z.boolean().default(false).describe('Supports GROUP BY and aggregation functions'),\n\n /**\n * Whether the driver supports ORDER BY sorting.\n * If false, ObjectQL will sort results in memory.\n */\n querySorting: z.boolean().default(true).describe('Supports ORDER BY sorting'),\n\n /**\n * Whether the driver supports LIMIT/OFFSET pagination.\n * If false, ObjectQL will fetch all records and paginate in memory.\n */\n queryPagination: z.boolean().default(true).describe('Supports LIMIT/OFFSET pagination'),\n\n /**\n * Whether the driver supports window functions (ROW_NUMBER, RANK, LAG, LEAD, etc.).\n * If false, ObjectQL will compute window functions in memory.\n */\n queryWindowFunctions: z.boolean().default(false).describe('Supports window functions with OVER clause'),\n\n /**\n * Whether the driver supports subqueries (nested SELECT statements).\n * If false, ObjectQL will execute queries separately and combine results.\n */\n querySubqueries: z.boolean().default(false).describe('Supports subqueries'),\n \n /**\n * Whether the driver supports Common Table Expressions (WITH clause).\n */\n queryCTE: z.boolean().default(false).describe('Supports Common Table Expressions (WITH clause)'),\n\n /**\n * Whether the driver supports SQL-style joins.\n * If false, ObjectQL will fetch related data separately and join in memory.\n */\n joins: z.boolean().default(false).describe('Supports SQL joins'),\n\n // ============================================================================\n // Advanced Features\n // ============================================================================\n \n /**\n * Whether the driver supports full-text search.\n * If true, text search queries can be pushed to the database.\n */\n fullTextSearch: z.boolean().default(false).describe('Supports full-text search'),\n \n /**\n * Whether the driver supports JSON querying capabilities.\n */\n jsonQuery: z.boolean().default(false).describe('Supports JSON field querying'),\n \n /**\n * Whether the driver supports geospatial queries.\n */\n geospatialQuery: z.boolean().default(false).describe('Supports geospatial queries'),\n \n /**\n * Whether the driver supports streaming large result sets.\n */\n streaming: z.boolean().default(false).describe('Supports result streaming (cursors/iterators)'),\n\n /**\n * Whether the driver supports JSON field types.\n * If false, JSON data will be serialized as strings.\n */\n jsonFields: z.boolean().default(false).describe('Supports JSON field types'),\n\n /**\n * Whether the driver supports array field types.\n * If false, arrays will be stored as JSON strings or in separate tables.\n */\n arrayFields: z.boolean().default(false).describe('Supports array field types'),\n\n /**\n * Whether the driver supports vector embeddings and similarity search.\n * Required for RAG (Retrieval-Augmented Generation) and AI features.\n */\n vectorSearch: z.boolean().default(false).describe('Supports vector embeddings and similarity search'),\n\n /**\n * Whether the driver supports geospatial queries.\n * @deprecated Use geospatialQuery instead\n */\n geoSpatial: z.boolean().default(false).describe('Supports geospatial queries (deprecated: use geospatialQuery)'),\n\n // ============================================================================\n // Schema Management\n // ============================================================================\n \n /**\n * Whether the driver supports automatic schema synchronization.\n */\n schemaSync: z.boolean().default(false).describe('Supports automatic schema synchronization'),\n \n /**\n * Whether the driver supports database migrations.\n */\n migrations: z.boolean().default(false).describe('Supports database migrations'),\n \n /**\n * Whether the driver supports index management.\n */\n indexes: z.boolean().default(false).describe('Supports index creation and management'),\n\n // ============================================================================\n // Performance & Optimization\n // ============================================================================\n \n /**\n * Whether the driver supports connection pooling.\n */\n connectionPooling: z.boolean().default(false).describe('Supports connection pooling'),\n \n /**\n * Whether the driver supports prepared statements.\n */\n preparedStatements: z.boolean().default(false).describe('Supports prepared statements (SQL injection prevention)'),\n \n /**\n * Whether the driver supports query result caching.\n */\n queryCache: z.boolean().default(false).describe('Supports query result caching'),\n}).refine((data) => {\n // Ensure deprecated geoSpatial and new geospatialQuery are consistent if both are provided\n if (data.geoSpatial !== undefined && data.geospatialQuery !== undefined && data.geoSpatial !== data.geospatialQuery) {\n return false;\n }\n return true;\n}, {\n message: 'Deprecated geoSpatial and geospatialQuery must have the same value if both are provided',\n});\n\n/**\n * Unified Database Driver Interface\n * \n * This is the contract that all storage adapters (Postgres, Mongo, Excel, Salesforce) must implement.\n * It abstracts the underlying engine, enabling ObjectStack to be \"Database Agnostic\".\n */\nexport const DriverInterfaceSchema = z.object({\n /**\n * Driver name (e.g., 'postgresql', 'mongodb', 'rest_api').\n */\n name: z.string().describe('Driver unique name'),\n\n /**\n * Driver version.\n */\n version: z.string().describe('Driver version'),\n\n /**\n * Capabilities descriptor.\n */\n supports: DriverCapabilitiesSchema,\n\n // ============================================================================\n // Lifecycle Management\n // ============================================================================\n\n /**\n * Initialize connection pool or authenticate.\n */\n connect: z.function()\n .args()\n .returns(z.promise(z.void()))\n .describe('Establish connection'),\n\n /**\n * Close connections and cleanup resources.\n */\n disconnect: z.function()\n .args()\n .returns(z.promise(z.void()))\n .describe('Close connection'),\n\n /**\n * Check connection health.\n * @returns true if healthy, false otherwise.\n */\n checkHealth: z.function()\n .args()\n .returns(z.promise(z.boolean()))\n .describe('Health check'),\n \n /**\n * Get Connection Pool Statistics.\n * Useful for monitoring database load.\n */\n getPoolStats: z.function()\n .args()\n .returns(z.object({\n total: z.number(),\n idle: z.number(),\n active: z.number(),\n waiting: z.number(),\n }).optional())\n .optional()\n .describe('Get connection pool statistics'),\n\n // ============================================================================\n // Raw Execution (Escape Hatch)\n // ============================================================================\n\n /**\n * Execute a raw command/query native to the driver.\n * Useful for complex reports, stored procedures, or DDL not covered by standard sync.\n * \n * @param command - The raw command (e.g., SQL string, shell command, or remote API payload).\n * @param parameters - Optional array of bound parameters for safe execution (prevention of injection).\n * @param options - Driver options (transaction context, timeout).\n * @returns Promise resolving to the raw result from the driver.\n * \n * @example\n * // SQL Driver\n * await driver.execute('SELECT * FROM complex_view WHERE id = ?', [123]);\n * \n * // Mongo Driver\n * await driver.execute({ aggregate: 'orders', pipeline: [...] });\n */\n execute: z.function()\n .args(z.any(), z.array(z.any()).optional(), DriverOptionsSchema.optional())\n .returns(z.promise(z.any()))\n .describe('Execute raw command'),\n\n // ============================================================================\n // CRUD Operations\n // ============================================================================\n\n /**\n * Find multiple records matching the structured query.\n * Parsing the QueryAST is the responsibility of the driver implementation.\n * \n * @param object - The name of the object/table to query (e.g. 'account').\n * @param query - The structured QueryAST (filters, sorts, joins, pagination).\n * @param options - Driver options.\n * @returns Array of records.\n * \n * @example\n * await driver.find('account', {\n * filters: [['status', '=', 'active'], 'and', ['amount', '>', 500]],\n * sort: [{ field: 'created_at', order: 'desc' }],\n * top: 10\n * });\n * @returns Array of records.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n find: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.promise(z.array(z.record(z.string(), z.any()))))\n .describe('Find records'),\n\n /**\n * Stream records matching the structured query.\n * Optimized for large datasets to avoid memory overflow.\n * \n * @param object - The name of the object.\n * @param query - The structured QueryAST.\n * @param options - Driver options.\n * @returns AsyncIterable/ReadableStream of records.\n */\n findStream: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.any())\n .describe('Stream records (AsyncIterable)'),\n\n /**\n * Find a single record by query.\n * Similar to find(), but returns only the first match or null.\n * \n * @param object - The name of the object.\n * @param query - QueryAST.\n * @param options - Driver options.\n * @returns The record or null.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n findOne: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.promise(z.record(z.string(), z.any()).nullable()))\n .describe('Find one record'),\n\n /**\n * Create a new record.\n * \n * @param object - The object name.\n * @param data - Key-value map of field data.\n * @param options - Driver options.\n * @returns The created record, including server-generated fields (id, created_at, etc.).\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n create: z.function()\n .args(z.string(), z.record(z.string(), z.any()), DriverOptionsSchema.optional())\n .returns(z.promise(z.record(z.string(), z.any())))\n .describe('Create record'),\n\n /**\n * Update an existing record by ID.\n * \n * @param object - The object name.\n * @param id - The unique identifier of the record.\n * @param data - The fields to update.\n * @param options - Driver options.\n * @returns The updated record.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n update: z.function()\n .args(z.string(), z.string().or(z.number()), z.record(z.string(), z.any()), DriverOptionsSchema.optional())\n .returns(z.promise(z.record(z.string(), z.any())))\n .describe('Update record'),\n\n /**\n * Upsert (Update or Insert) a record.\n * \n * @param object - The object name.\n * @param data - The data to upsert.\n * @param conflictKeys - Fields to check for conflict (uniqueness).\n * @param options - Driver options.\n * @returns The created or updated record.\n */\n upsert: z.function()\n .args(z.string(), z.record(z.string(), z.any()), z.array(z.string()).optional(), DriverOptionsSchema.optional())\n .returns(z.promise(z.record(z.string(), z.any())))\n .describe('Upsert record'),\n\n /**\n * Delete a record by ID.\n * \n * @param object - The object name.\n * @param id - The unique identifier of the record.\n * @param options - Driver options.\n * @returns True if deleted, false if not found.\n */\n delete: z.function()\n .args(z.string(), z.string().or(z.number()), DriverOptionsSchema.optional())\n .returns(z.promise(z.boolean()))\n .describe('Delete record'),\n\n /**\n * Count records matching a query.\n * \n * @param object - The object name.\n * @param query - Optional filtering criteria.\n * @param options - Driver options.\n * @returns Total count.\n */\n count: z.function()\n .args(z.string(), QuerySchema.optional(), DriverOptionsSchema.optional())\n .returns(z.promise(z.number()))\n .describe('Count records'),\n\n // ============================================================================\n // Bulk Operations\n // ============================================================================\n\n /**\n * Create multiple records in a single batch.\n * Optimized for performance.\n * \n * @param object - The object name.\n * @param dataArray - Array of record data.\n * @returns Array of created records.\n */\n bulkCreate: z.function()\n .args(z.string(), z.array(z.record(z.string(), z.any())), DriverOptionsSchema.optional())\n .returns(z.promise(z.array(z.record(z.string(), z.any())))),\n\n /**\n * Update multiple records in a single batch.\n * \n * @param object - The object name.\n * @param updates - Array of objects containing {id, data}.\n * @returns Array of updated records.\n */\n bulkUpdate: z.function()\n .args(z.string(), z.array(z.object({ id: z.string().or(z.number()), data: z.record(z.string(), z.any()) })), DriverOptionsSchema.optional())\n .returns(z.promise(z.array(z.record(z.string(), z.any())))),\n\n /**\n * Delete multiple records in a single batch.\n * \n * @param object - The object name.\n * @param ids - Array of record IDs.\n */\n bulkDelete: z.function()\n .args(z.string(), z.array(z.string().or(z.number())), DriverOptionsSchema.optional())\n .returns(z.promise(z.void())),\n\n /**\n * Update multiple records matching a query.\n * Direct database push-down. DOES NOT trigger per-record hooks.\n * \n * @param object - The object name.\n * @param query - The filtering criteria.\n * @param data - The data to update.\n * @returns Count of modified records.\n */\n updateMany: z.function()\n .args(z.string(), QuerySchema, z.record(z.string(), z.any()), DriverOptionsSchema.optional())\n .returns(z.promise(z.number()))\n .optional(),\n\n /**\n * Delete multiple records matching a query.\n * Direct database push-down. DOES NOT trigger per-record hooks.\n * \n * @param object - The object name.\n * @param query - The filtering criteria.\n * @returns Count of deleted records.\n */\n deleteMany: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.promise(z.number()))\n .optional(),\n\n // ============================================================================\n // Transaction Management\n // ============================================================================\n\n /**\n * Begin a new database transaction.\n * @param options - Isolation level and other settings.\n * @returns A transaction handle to be passed to subsequent operations via `options.transaction`.\n */\n beginTransaction: z.function()\n .args(z.object({\n isolationLevel: z.enum(['READ UNCOMMITTED', 'READ COMMITTED', 'REPEATABLE READ', 'SERIALIZABLE', 'SNAPSHOT']).optional()\n }).optional())\n .returns(z.promise(z.any()))\n .describe('Start transaction'),\n\n /**\n * Commit the transaction.\n * @param transaction - The transaction handle.\n */\n commit: z.function()\n .args(z.any())\n .returns(z.promise(z.void()))\n .describe('Commit transaction'),\n\n /**\n * Rollback the transaction.\n * @param transaction - The transaction handle.\n */\n rollback: z.function()\n .args(z.any())\n .returns(z.promise(z.void()))\n .describe('Rollback transaction'),\n\n // ============================================================================\n // Schema Management\n // ============================================================================\n\n /**\n * Synchronize the database schema with the Object definition.\n * This is an idempotent operation: it should create tables if missing, \n * add columns if missing, and update indexes.\n * \n * @param object - The object name.\n * @param schema - The full Object Schema (fields, indexes, etc).\n * @param options - Driver options.\n */\n syncSchema: z.function()\n .args(z.string(), z.any(), DriverOptionsSchema.optional())\n .returns(z.promise(z.void()))\n .describe('Sync object schema to DB'),\n \n /**\n * Drop the underlying table or collection for an object.\n * WARNING: Destructive operation.\n * \n * @param object - The object name.\n */\n dropTable: z.function()\n .args(z.string(), DriverOptionsSchema.optional())\n .returns(z.promise(z.void())),\n\n /**\n * Analyze query performance.\n * Returns execution plan without executing the query (where possible).\n * \n * @param object - The object name.\n * @param query - The query to explain.\n * @returns The execution plan details.\n */\n explain: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.promise(z.any()))\n .optional(),\n});\n\n/**\n * Connection Pool Configuration Schema\n * Manages database connection pooling for performance\n */\nexport const PoolConfigSchema = z.object({\n min: z.number().min(0).default(2).describe('Minimum number of connections in pool'),\n max: z.number().min(1).default(10).describe('Maximum number of connections in pool'),\n idleTimeoutMillis: z.number().min(0).default(30000).describe('Time in ms before idle connection is closed'),\n connectionTimeoutMillis: z.number().min(0).default(5000).describe('Time in ms to wait for available connection'),\n});\n\n/**\n * Driver Configuration Schema\n * Base configuration for database drivers\n */\nexport const DriverConfigSchema = z.object({\n name: z.string().describe('Driver instance name'),\n type: z.enum(['sql', 'nosql', 'cache', 'search', 'graph', 'timeseries']).describe('Driver type category'),\n capabilities: DriverCapabilitiesSchema.describe('Driver capability flags'),\n connectionString: z.string().optional().describe('Database connection string (driver-specific format)'),\n poolConfig: PoolConfigSchema.optional().describe('Connection pool configuration'),\n});\n\n/**\n * TypeScript types\n */\nexport type DriverOptions = z.infer<typeof DriverOptionsSchema>;\nexport type DriverCapabilities = z.infer<typeof DriverCapabilitiesSchema>;\nexport type DriverInterface = z.infer<typeof DriverInterfaceSchema>;\nexport type DriverConfig = z.infer<typeof DriverConfigSchema>;\nexport type PoolConfig = z.infer<typeof PoolConfigSchema>;\n","import { z } from 'zod';\nimport { DriverConfigSchema } from './driver.zod';\n\n/**\n * SQL Dialect Enumeration\n * Supported SQL database dialects\n */\nexport const SQLDialectSchema = z.enum([\n 'postgresql',\n 'mysql',\n 'sqlite',\n 'mssql',\n 'oracle',\n 'mariadb',\n]);\n\nexport type SQLDialect = z.infer<typeof SQLDialectSchema>;\n\n/**\n * Data Type Mapping Schema\n * Maps ObjectStack field types to SQL-specific data types\n * \n * @example PostgreSQL data type mapping\n * {\n * text: 'VARCHAR(255)',\n * number: 'NUMERIC',\n * boolean: 'BOOLEAN',\n * date: 'DATE',\n * datetime: 'TIMESTAMP',\n * json: 'JSONB',\n * uuid: 'UUID',\n * binary: 'BYTEA'\n * }\n */\nexport const DataTypeMappingSchema = z.object({\n text: z.string().describe('SQL type for text fields (e.g., VARCHAR, TEXT)'),\n number: z.string().describe('SQL type for number fields (e.g., NUMERIC, DECIMAL, INT)'),\n boolean: z.string().describe('SQL type for boolean fields (e.g., BOOLEAN, BIT)'),\n date: z.string().describe('SQL type for date fields (e.g., DATE)'),\n datetime: z.string().describe('SQL type for datetime fields (e.g., TIMESTAMP, DATETIME)'),\n json: z.string().optional().describe('SQL type for JSON fields (e.g., JSON, JSONB)'),\n uuid: z.string().optional().describe('SQL type for UUID fields (e.g., UUID, CHAR(36))'),\n binary: z.string().optional().describe('SQL type for binary fields (e.g., BLOB, BYTEA)'),\n});\n\nexport type DataTypeMapping = z.infer<typeof DataTypeMappingSchema>;\n\n/**\n * SSL Configuration Schema\n * SSL/TLS connection configuration for secure database connections\n * \n * @example PostgreSQL SSL configuration\n * {\n * rejectUnauthorized: true,\n * ca: '/path/to/ca-cert.pem',\n * cert: '/path/to/client-cert.pem',\n * key: '/path/to/client-key.pem'\n * }\n */\nexport const SSLConfigSchema = z.object({\n rejectUnauthorized: z.boolean().default(true).describe('Reject connections with invalid certificates'),\n ca: z.string().optional().describe('CA certificate file path or content'),\n cert: z.string().optional().describe('Client certificate file path or content'),\n key: z.string().optional().describe('Client private key file path or content'),\n}).refine((data) => {\n // If cert is provided, key must also be provided, and vice versa\n const hasCert = data.cert !== undefined;\n const hasKey = data.key !== undefined;\n return hasCert === hasKey;\n}, {\n message: 'Client certificate (cert) and private key (key) must be provided together',\n});\n\nexport type SSLConfig = z.infer<typeof SSLConfigSchema>;\n\n/**\n * SQL Driver Configuration Schema\n * Extended driver configuration specific to SQL databases\n * \n * @example PostgreSQL driver configuration\n * {\n * name: 'primary-db',\n * type: 'sql',\n * dialect: 'postgresql',\n * connectionString: 'postgresql://user:pass@localhost:5432/mydb',\n * dataTypeMapping: {\n * text: 'VARCHAR(255)',\n * number: 'NUMERIC',\n * boolean: 'BOOLEAN',\n * date: 'DATE',\n * datetime: 'TIMESTAMP',\n * json: 'JSONB',\n * uuid: 'UUID',\n * binary: 'BYTEA'\n * },\n * ssl: true,\n * sslConfig: {\n * rejectUnauthorized: true,\n * ca: '/etc/ssl/certs/ca.pem'\n * },\n * poolConfig: {\n * min: 2,\n * max: 10,\n * idleTimeoutMillis: 30000,\n * connectionTimeoutMillis: 5000\n * },\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: true,\n * bulkDelete: true,\n * transactions: true,\n * savepoints: true,\n * isolationLevels: ['read-committed', 'repeatable-read', 'serializable'],\n * queryFilters: true,\n * queryAggregations: true,\n * querySorting: true,\n * queryPagination: true,\n * queryWindowFunctions: true,\n * querySubqueries: true,\n * queryCTE: true,\n * joins: true,\n * fullTextSearch: true,\n * jsonQuery: true,\n * geospatialQuery: false,\n * streaming: true,\n * jsonFields: true,\n * arrayFields: true,\n * vectorSearch: true,\n * geoSpatial: false,\n * schemaSync: true,\n * migrations: true,\n * indexes: true,\n * connectionPooling: true,\n * preparedStatements: true,\n * queryCache: false\n * }\n * }\n */\nexport const SQLDriverConfigSchema = DriverConfigSchema.extend({\n type: z.literal('sql').describe('Driver type must be \"sql\"'),\n dialect: SQLDialectSchema.describe('SQL database dialect'),\n dataTypeMapping: DataTypeMappingSchema.describe('SQL data type mapping configuration'),\n ssl: z.boolean().default(false).describe('Enable SSL/TLS connection'),\n sslConfig: SSLConfigSchema.optional().describe('SSL/TLS configuration (required when ssl is true)'),\n}).refine((data) => {\n // If ssl is enabled, sslConfig must be provided\n if (data.ssl && !data.sslConfig) {\n return false;\n }\n return true;\n}, {\n message: 'sslConfig is required when ssl is true',\n});\n\nexport type SQLDriverConfig = z.infer<typeof SQLDriverConfigSchema>;\n","import { z } from 'zod';\nimport { DriverConfigSchema } from './driver.zod';\n\n/**\n * NoSQL Database Type Enumeration\n * Supported NoSQL database types\n */\nexport const NoSQLDatabaseTypeSchema = z.enum([\n 'mongodb',\n 'couchdb',\n 'dynamodb',\n 'cassandra',\n 'redis',\n 'elasticsearch',\n 'neo4j',\n 'orientdb',\n]);\n\nexport type NoSQLDatabaseType = z.infer<typeof NoSQLDatabaseTypeSchema>;\n\n/**\n * NoSQL Query Operation Types\n * Different types of operations supported by NoSQL databases\n */\nexport const NoSQLOperationTypeSchema = z.enum([\n 'find', // Query documents/records\n 'findOne', // Get single document\n 'insert', // Insert document\n 'update', // Update document\n 'delete', // Delete document\n 'aggregate', // Aggregation pipeline\n 'mapReduce', // MapReduce operation\n 'count', // Count documents\n 'distinct', // Get distinct values\n 'createIndex', // Create index\n 'dropIndex', // Drop index\n]);\n\nexport type NoSQLOperationType = z.infer<typeof NoSQLOperationTypeSchema>;\n\n/**\n * NoSQL Consistency Level\n * Consistency guarantees for distributed NoSQL databases\n * \n * Consistency levels (from strongest to weakest):\n * - **all**: All replicas must respond (strongest consistency, lowest availability)\n * - **quorum**: Majority of replicas must respond (balanced)\n * - **one**: Any single replica responds (weakest consistency, highest availability)\n * - **local_quorum**: Majority of replicas in local datacenter\n * - **each_quorum**: Quorum of replicas in each datacenter\n * - **eventual**: Eventual consistency (highest availability, weakest consistency)\n */\nexport const ConsistencyLevelSchema = z.enum([\n 'all',\n 'quorum',\n 'one',\n 'local_quorum',\n 'each_quorum',\n 'eventual',\n]);\n\nexport type ConsistencyLevel = z.infer<typeof ConsistencyLevelSchema>;\n\n/**\n * NoSQL Index Type\n * Types of indexes supported by NoSQL databases\n */\nexport const NoSQLIndexTypeSchema = z.enum([\n 'single', // Single field index\n 'compound', // Multiple fields index\n 'unique', // Unique constraint\n 'text', // Full-text search index\n 'geospatial', // Geospatial index (2d, 2dsphere)\n 'hashed', // Hashed index for sharding\n 'ttl', // Time-to-live index (auto-deletion)\n 'sparse', // Sparse index (only indexed documents with field)\n]);\n\nexport type NoSQLIndexType = z.infer<typeof NoSQLIndexTypeSchema>;\n\n/**\n * NoSQL Sharding Configuration\n * Configuration for horizontal partitioning across multiple nodes\n */\nexport const ShardingConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable sharding'),\n shardKey: z.string().optional().describe('Field to use as shard key'),\n shardingStrategy: z.enum(['hash', 'range', 'zone']).optional().describe('Sharding strategy'),\n numShards: z.number().int().positive().optional().describe('Number of shards'),\n});\n\nexport type ShardingConfig = z.infer<typeof ShardingConfigSchema>;\n\n/**\n * NoSQL Replication Configuration\n * Configuration for data replication across nodes\n */\nexport const ReplicationConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable replication'),\n replicaSetName: z.string().optional().describe('Replica set name'),\n replicas: z.number().int().positive().optional().describe('Number of replicas'),\n readPreference: z.enum(['primary', 'primaryPreferred', 'secondary', 'secondaryPreferred', 'nearest'])\n .optional()\n .describe('Read preference for replica set'),\n writeConcern: z.enum(['majority', 'acknowledged', 'unacknowledged'])\n .optional()\n .describe('Write concern level'),\n});\n\nexport type ReplicationConfig = z.infer<typeof ReplicationConfigSchema>;\n\n/**\n * Document Schema Validation\n * Schema validation rules for document-based NoSQL databases\n */\nexport const DocumentSchemaValidationSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable schema validation'),\n validationLevel: z.enum(['strict', 'moderate', 'off']).optional().describe('Validation strictness'),\n validationAction: z.enum(['error', 'warn']).optional().describe('Action on validation failure'),\n jsonSchema: z.record(z.string(), z.any()).optional().describe('JSON Schema for validation'),\n});\n\nexport type DocumentSchemaValidation = z.infer<typeof DocumentSchemaValidationSchema>;\n\n/**\n * NoSQL Data Type Mapping Schema\n * Maps ObjectStack field types to NoSQL-specific data types\n * \n * @example MongoDB data type mapping\n * {\n * text: 'string',\n * number: 'double',\n * boolean: 'bool',\n * date: 'date',\n * datetime: 'date',\n * json: 'object',\n * uuid: 'string',\n * binary: 'binData',\n * array: 'array',\n * objectId: 'objectId'\n * }\n */\nexport const NoSQLDataTypeMappingSchema = z.object({\n text: z.string().describe('NoSQL type for text fields'),\n number: z.string().describe('NoSQL type for number fields'),\n boolean: z.string().describe('NoSQL type for boolean fields'),\n date: z.string().describe('NoSQL type for date fields'),\n datetime: z.string().describe('NoSQL type for datetime fields'),\n json: z.string().optional().describe('NoSQL type for JSON/object fields'),\n uuid: z.string().optional().describe('NoSQL type for UUID fields'),\n binary: z.string().optional().describe('NoSQL type for binary fields'),\n array: z.string().optional().describe('NoSQL type for array fields'),\n objectId: z.string().optional().describe('NoSQL type for ObjectID fields (MongoDB)'),\n geopoint: z.string().optional().describe('NoSQL type for geospatial point fields'),\n});\n\nexport type NoSQLDataTypeMapping = z.infer<typeof NoSQLDataTypeMappingSchema>;\n\n/**\n * NoSQL Driver Configuration Schema\n * Extended driver configuration specific to NoSQL databases\n * \n * @example MongoDB driver configuration\n * {\n * name: 'primary-mongo',\n * type: 'nosql',\n * databaseType: 'mongodb',\n * connectionString: 'mongodb://user:pass@localhost:27017/mydb',\n * dataTypeMapping: {\n * text: 'string',\n * number: 'double',\n * boolean: 'bool',\n * date: 'date',\n * datetime: 'date',\n * json: 'object',\n * uuid: 'string',\n * binary: 'binData',\n * array: 'array',\n * objectId: 'objectId'\n * },\n * consistency: 'quorum',\n * replication: {\n * enabled: true,\n * replicaSetName: 'rs0',\n * replicas: 3,\n * readPreference: 'primaryPreferred',\n * writeConcern: 'majority'\n * },\n * sharding: {\n * enabled: true,\n * shardKey: '_id',\n * shardingStrategy: 'hash',\n * numShards: 4\n * },\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: true,\n * bulkDelete: true,\n * transactions: true,\n * savepoints: false,\n * queryFilters: true,\n * queryAggregations: true,\n * querySorting: true,\n * queryPagination: true,\n * queryWindowFunctions: false,\n * querySubqueries: false,\n * queryCTE: false,\n * joins: false,\n * fullTextSearch: true,\n * jsonQuery: true,\n * geospatialQuery: true,\n * streaming: true,\n * jsonFields: true,\n * arrayFields: true,\n * vectorSearch: false,\n * schemaSync: true,\n * migrations: false,\n * indexes: true,\n * connectionPooling: true,\n * preparedStatements: false,\n * queryCache: false\n * }\n * }\n * \n * @example DynamoDB driver configuration\n * {\n * name: 'dynamodb-main',\n * type: 'nosql',\n * databaseType: 'dynamodb',\n * region: 'us-east-1',\n * accessKeyId: 'AKIAIOSFODNN7EXAMPLE',\n * secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',\n * consistency: 'eventual',\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: false,\n * bulkDelete: false,\n * transactions: true,\n * queryFilters: true,\n * queryAggregations: false,\n * querySorting: true,\n * queryPagination: true,\n * fullTextSearch: false,\n * jsonQuery: true,\n * indexes: true\n * }\n * }\n */\nexport const NoSQLDriverConfigSchema = DriverConfigSchema.extend({\n type: z.literal('nosql').describe('Driver type must be \"nosql\"'),\n databaseType: NoSQLDatabaseTypeSchema.describe('Specific NoSQL database type'),\n dataTypeMapping: NoSQLDataTypeMappingSchema.describe('NoSQL data type mapping configuration'),\n \n /**\n * Consistency level for reads/writes\n */\n consistency: ConsistencyLevelSchema.optional().describe('Consistency level for operations'),\n \n /**\n * Replication configuration\n */\n replication: ReplicationConfigSchema.optional().describe('Replication configuration'),\n \n /**\n * Sharding configuration\n */\n sharding: ShardingConfigSchema.optional().describe('Sharding configuration'),\n \n /**\n * Schema validation rules (for document databases)\n */\n schemaValidation: DocumentSchemaValidationSchema.optional().describe('Document schema validation'),\n \n /**\n * AWS Region (for DynamoDB, DocumentDB, etc.)\n */\n region: z.string().optional().describe('AWS region (for managed NoSQL services)'),\n \n /**\n * AWS Access Key ID (for DynamoDB, DocumentDB, etc.)\n */\n accessKeyId: z.string().optional().describe('AWS access key ID'),\n \n /**\n * AWS Secret Access Key (for DynamoDB, DocumentDB, etc.)\n */\n secretAccessKey: z.string().optional().describe('AWS secret access key'),\n \n /**\n * Time-to-live (TTL) field name\n * Automatically delete documents after a specified time\n */\n ttlField: z.string().optional().describe('Field name for TTL (auto-deletion)'),\n \n /**\n * Maximum document size in bytes\n */\n maxDocumentSize: z.number().int().positive().optional().describe('Maximum document size in bytes'),\n \n /**\n * Collection/Table name prefix\n * Useful for multi-tenancy or environment isolation\n */\n collectionPrefix: z.string().optional().describe('Prefix for collection/table names'),\n});\n\nexport type NoSQLDriverConfig = z.infer<typeof NoSQLDriverConfigSchema>;\n\n/**\n * NoSQL Query Options\n * Additional options for NoSQL queries\n */\nexport const NoSQLQueryOptionsSchema = z.object({\n /**\n * Consistency level for this query\n */\n consistency: ConsistencyLevelSchema.optional().describe('Consistency level override'),\n \n /**\n * Read from secondary replicas\n */\n readFromSecondary: z.boolean().optional().describe('Allow reading from secondary replicas'),\n \n /**\n * Projection (fields to include/exclude)\n */\n projection: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional().describe('Field projection'),\n \n /**\n * Query timeout in milliseconds\n */\n timeout: z.number().int().positive().optional().describe('Query timeout (ms)'),\n \n /**\n * Use cursor for large result sets\n */\n useCursor: z.boolean().optional().describe('Use cursor instead of loading all results'),\n \n /**\n * Batch size for cursor iteration\n */\n batchSize: z.number().int().positive().optional().describe('Cursor batch size'),\n \n /**\n * Enable query profiling\n */\n profile: z.boolean().optional().describe('Enable query profiling'),\n \n /**\n * Use hinted index\n */\n hint: z.string().optional().describe('Index hint for query optimization'),\n});\n\nexport type NoSQLQueryOptions = z.infer<typeof NoSQLQueryOptionsSchema>;\n\n/**\n * NoSQL Aggregation Pipeline Stage\n * Represents a single stage in an aggregation pipeline (MongoDB-style)\n */\nexport const AggregationStageSchema = z.object({\n /**\n * Stage operator (e.g., $match, $group, $sort, $project)\n */\n operator: z.string().describe('Aggregation operator (e.g., $match, $group, $sort)'),\n \n /**\n * Stage parameters/options\n */\n options: z.record(z.string(), z.any()).describe('Stage-specific options'),\n});\n\nexport type AggregationStage = z.infer<typeof AggregationStageSchema>;\n\n/**\n * NoSQL Aggregation Pipeline\n * Sequence of aggregation stages for complex data transformations\n */\nexport const AggregationPipelineSchema = z.object({\n /**\n * Collection/Table to aggregate\n */\n collection: z.string().describe('Collection/table name'),\n \n /**\n * Pipeline stages\n */\n stages: z.array(AggregationStageSchema).describe('Aggregation pipeline stages'),\n \n /**\n * Additional options\n */\n options: NoSQLQueryOptionsSchema.optional().describe('Query options'),\n});\n\nexport type AggregationPipeline = z.infer<typeof AggregationPipelineSchema>;\n\n/**\n * NoSQL Index Definition\n * Definition for creating indexes in NoSQL databases\n */\nexport const NoSQLIndexSchema = z.object({\n /**\n * Index name\n */\n name: z.string().describe('Index name'),\n \n /**\n * Index type\n */\n type: NoSQLIndexTypeSchema.describe('Index type'),\n \n /**\n * Fields to index\n * For compound indexes, order matters\n */\n fields: z.array(z.object({\n field: z.string().describe('Field name'),\n order: z.enum(['asc', 'desc', 'text', '2dsphere']).optional().describe('Index order or type'),\n })).describe('Fields to index'),\n \n /**\n * Unique constraint\n */\n unique: z.boolean().default(false).describe('Enforce uniqueness'),\n \n /**\n * Sparse index (only index documents with the field)\n */\n sparse: z.boolean().default(false).describe('Sparse index'),\n \n /**\n * TTL in seconds (for TTL indexes)\n */\n expireAfterSeconds: z.number().int().positive().optional().describe('TTL in seconds'),\n \n /**\n * Partial index filter\n */\n partialFilterExpression: z.record(z.string(), z.any()).optional().describe('Partial index filter'),\n \n /**\n * Background index creation\n */\n background: z.boolean().default(false).describe('Create index in background'),\n});\n\nexport type NoSQLIndex = z.infer<typeof NoSQLIndexSchema>;\n\n/**\n * NoSQL Transaction Options\n * Options for NoSQL transactions (where supported)\n */\nexport const NoSQLTransactionOptionsSchema = z.object({\n /**\n * Read concern level\n */\n readConcern: z.enum(['local', 'majority', 'linearizable', 'snapshot']).optional().describe('Read concern level'),\n \n /**\n * Write concern level\n */\n writeConcern: z.enum(['majority', 'acknowledged', 'unacknowledged']).optional().describe('Write concern level'),\n \n /**\n * Read preference\n */\n readPreference: z.enum(['primary', 'primaryPreferred', 'secondary', 'secondaryPreferred', 'nearest'])\n .optional()\n .describe('Read preference'),\n \n /**\n * Transaction timeout in milliseconds\n */\n maxCommitTimeMS: z.number().int().positive().optional().describe('Transaction commit timeout (ms)'),\n});\n\nexport type NoSQLTransactionOptions = z.infer<typeof NoSQLTransactionOptionsSchema>;\n","import { z } from 'zod';\n\n/**\n * Data Import Strategy\n * Defines how the engine handles existing records.\n */\nexport const DatasetMode = z.enum([\n 'insert', // Try to insert, fail on duplicate\n 'update', // Only update found records, ignore new\n 'upsert', // Create new or Update existing (Standard)\n 'replace', // Delete ALL records in object then insert (Dangerous - use for cache tables)\n 'ignore' // Try to insert, silently skip duplicates\n]);\n\n/**\n * Dataset Schema (Seed Data / Fixtures)\n * \n * Standardized format for transporting data.\n * Used for:\n * 1. System Bootstrapping (Admin accounts, Standard Roles)\n * 2. Reference Data (Countries, Currencies)\n * 3. Demo/Test Data\n */\nexport const DatasetSchema = z.object({\n /** \n * Target Object \n * The machine name of the object to populate.\n */\n object: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Target Object Name'),\n\n /** \n * Idempotency Key (The \"Upsert\" Key)\n * The field used to check if a record already exists.\n * Best Practice: Use a natural key like 'code', 'slug', 'username' or 'external_id'.\n * Standard: '_id' (internal ID) is rarely used for portable seed data.\n */\n externalId: z.string().default('name').describe('Field match for uniqueness check'),\n\n /** \n * Import Strategy\n */\n mode: DatasetMode.default('upsert').describe('Conflict resolution strategy'),\n\n /**\n * Environment Scope\n * - 'all': Always load\n * - 'dev': Only for development/demo\n * - 'test': Only for CI/CD tests\n */\n env: z.array(z.enum(['prod', 'dev', 'test'])).default(['prod', 'dev', 'test']).describe('Applicable environments'),\n\n /** \n * The Payload\n * Array of raw JSON objects matching the Object Schema.\n */\n records: z.array(z.record(z.string(), z.any())).describe('Data records'),\n});\n\nexport type Dataset = z.infer<typeof DatasetSchema>;\nexport type DatasetImportMode = z.infer<typeof DatasetMode>;\n","import { z } from 'zod';\n\n/**\n * Document Version Schema\n * \n * Represents a single version of a document in a version-controlled system.\n * Each version is immutable and maintains its own metadata and download URL.\n * \n * @example\n * ```json\n * {\n * \"versionNumber\": 2,\n * \"createdAt\": 1704067200000,\n * \"createdBy\": \"user_123\",\n * \"size\": 2048576,\n * \"checksum\": \"a1b2c3d4e5f6\",\n * \"downloadUrl\": \"https://storage.example.com/docs/v2/file.pdf\",\n * \"isLatest\": true\n * }\n * ```\n */\nexport const DocumentVersionSchema = z.object({\n /**\n * Sequential version number (increments with each new version)\n */\n versionNumber: z.number().describe('Version number'),\n\n /**\n * Timestamp when this version was created (Unix milliseconds)\n */\n createdAt: z.number().describe('Creation timestamp'),\n\n /**\n * User ID who created this version\n */\n createdBy: z.string().describe('Creator user ID'),\n\n /**\n * File size in bytes\n */\n size: z.number().describe('File size in bytes'),\n\n /**\n * Checksum/hash of the file content (for integrity verification)\n */\n checksum: z.string().describe('File checksum'),\n\n /**\n * URL to download this specific version\n */\n downloadUrl: z.string().url().describe('Download URL'),\n\n /**\n * Whether this is the latest version\n * @default false\n */\n isLatest: z.boolean().optional().default(false).describe('Is latest version'),\n});\n\n/**\n * Document Template Schema\n * \n * Defines a reusable document template with dynamic placeholders.\n * Templates can be used to generate documents with variable content.\n * \n * @example\n * ```json\n * {\n * \"id\": \"contract-template\",\n * \"name\": \"Service Agreement\",\n * \"description\": \"Standard service agreement template\",\n * \"fileUrl\": \"https://example.com/templates/contract.docx\",\n * \"fileType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n * \"placeholders\": [\n * {\n * \"key\": \"client_name\",\n * \"label\": \"Client Name\",\n * \"type\": \"text\",\n * \"required\": true\n * },\n * {\n * \"key\": \"contract_date\",\n * \"label\": \"Contract Date\",\n * \"type\": \"date\",\n * \"required\": true\n * }\n * ]\n * }\n * ```\n */\nexport const DocumentTemplateSchema = z.object({\n /**\n * Unique identifier for the template\n */\n id: z.string().describe('Template ID'),\n\n /**\n * Human-readable name of the template\n */\n name: z.string().describe('Template name'),\n\n /**\n * Optional description of the template's purpose\n */\n description: z.string().optional().describe('Template description'),\n\n /**\n * URL to the template file\n */\n fileUrl: z.string().url().describe('Template file URL'),\n\n /**\n * MIME type of the template file\n */\n fileType: z.string().describe('File MIME type'),\n\n /**\n * List of dynamic placeholders in the template\n */\n placeholders: z.array(z.object({\n /**\n * Placeholder identifier (used in template)\n */\n key: z.string().describe('Placeholder key'),\n\n /**\n * Human-readable label for the placeholder\n */\n label: z.string().describe('Placeholder label'),\n\n /**\n * Data type of the placeholder value\n */\n type: z.enum(['text', 'number', 'date', 'image']).describe('Placeholder type'),\n\n /**\n * Whether this placeholder must be filled\n * @default false\n */\n required: z.boolean().optional().default(false).describe('Is required'),\n })).describe('Template placeholders'),\n});\n\n/**\n * E-Signature Configuration Schema\n * \n * Configuration for electronic signature workflows.\n * Supports integration with popular e-signature providers.\n * \n * @example\n * ```json\n * {\n * \"provider\": \"docusign\",\n * \"enabled\": true,\n * \"signers\": [\n * {\n * \"email\": \"client@example.com\",\n * \"name\": \"John Doe\",\n * \"role\": \"Client\",\n * \"order\": 1\n * },\n * {\n * \"email\": \"manager@example.com\",\n * \"name\": \"Jane Smith\",\n * \"role\": \"Manager\",\n * \"order\": 2\n * }\n * ],\n * \"expirationDays\": 30,\n * \"reminderDays\": 7\n * }\n * ```\n */\nexport const ESignatureConfigSchema = z.object({\n /**\n * E-signature service provider\n */\n provider: z.enum(['docusign', 'adobe-sign', 'hellosign', 'custom']).describe('E-signature provider'),\n\n /**\n * Whether e-signature is enabled for this document\n * @default false\n */\n enabled: z.boolean().optional().default(false).describe('E-signature enabled'),\n\n /**\n * List of signers in signing order\n */\n signers: z.array(z.object({\n /**\n * Signer's email address\n */\n email: z.string().email().describe('Signer email'),\n\n /**\n * Signer's full name\n */\n name: z.string().describe('Signer name'),\n\n /**\n * Signer's role in the document\n */\n role: z.string().describe('Signer role'),\n\n /**\n * Signing order (lower numbers sign first)\n */\n order: z.number().describe('Signing order'),\n })).describe('Document signers'),\n\n /**\n * Days until signature request expires\n * @default 30\n */\n expirationDays: z.number().optional().default(30).describe('Expiration days'),\n\n /**\n * Days between reminder emails\n * @default 7\n */\n reminderDays: z.number().optional().default(7).describe('Reminder interval days'),\n});\n\n/**\n * Document Schema\n * \n * Comprehensive document management protocol supporting versioning,\n * templates, e-signatures, and access control.\n * \n * @example\n * ```json\n * {\n * \"id\": \"doc_123\",\n * \"name\": \"Service Agreement 2024\",\n * \"description\": \"Annual service agreement\",\n * \"fileType\": \"application/pdf\",\n * \"fileSize\": 1048576,\n * \"category\": \"contracts\",\n * \"tags\": [\"legal\", \"2024\", \"services\"],\n * \"versioning\": {\n * \"enabled\": true,\n * \"versions\": [\n * {\n * \"versionNumber\": 1,\n * \"createdAt\": 1704067200000,\n * \"createdBy\": \"user_123\",\n * \"size\": 1048576,\n * \"checksum\": \"abc123\",\n * \"downloadUrl\": \"https://example.com/docs/v1.pdf\",\n * \"isLatest\": true\n * }\n * ],\n * \"majorVersion\": 1,\n * \"minorVersion\": 0\n * },\n * \"access\": {\n * \"isPublic\": false,\n * \"sharedWith\": [\"user_456\", \"team_789\"],\n * \"expiresAt\": 1735689600000\n * },\n * \"metadata\": {\n * \"author\": \"John Doe\",\n * \"department\": \"Legal\"\n * }\n * }\n * ```\n */\nexport const DocumentSchema = z.object({\n /**\n * Unique document identifier\n */\n id: z.string().describe('Document ID'),\n\n /**\n * Document name\n */\n name: z.string().describe('Document name'),\n\n /**\n * Optional document description\n */\n description: z.string().optional().describe('Document description'),\n\n /**\n * MIME type of the document\n */\n fileType: z.string().describe('File MIME type'),\n\n /**\n * File size in bytes\n */\n fileSize: z.number().describe('File size in bytes'),\n\n /**\n * Document category for organization\n */\n category: z.string().optional().describe('Document category'),\n\n /**\n * Tags for searchability and organization\n */\n tags: z.array(z.string()).optional().describe('Document tags'),\n\n /**\n * Version control configuration\n */\n versioning: z.object({\n /**\n * Whether versioning is enabled\n */\n enabled: z.boolean().describe('Versioning enabled'),\n\n /**\n * List of all document versions\n */\n versions: z.array(DocumentVersionSchema).describe('Version history'),\n\n /**\n * Current major version number\n */\n majorVersion: z.number().describe('Major version'),\n\n /**\n * Current minor version number\n */\n minorVersion: z.number().describe('Minor version'),\n }).optional().describe('Version control'),\n\n /**\n * Template configuration (if document is generated from template)\n */\n template: DocumentTemplateSchema.optional().describe('Document template'),\n\n /**\n * E-signature configuration\n */\n eSignature: ESignatureConfigSchema.optional().describe('E-signature config'),\n\n /**\n * Access control settings\n */\n access: z.object({\n /**\n * Whether document is publicly accessible\n * @default false\n */\n isPublic: z.boolean().optional().default(false).describe('Public access'),\n\n /**\n * List of user/team IDs with access\n */\n sharedWith: z.array(z.string()).optional().describe('Shared with'),\n\n /**\n * Timestamp when access expires (Unix milliseconds)\n */\n expiresAt: z.number().optional().describe('Access expiration'),\n }).optional().describe('Access control'),\n\n /**\n * Custom metadata fields\n */\n metadata: z.record(z.string(), z.any()).optional().describe('Custom metadata'),\n});\n\n// Type exports\nexport type Document = z.infer<typeof DocumentSchema>;\nexport type DocumentVersion = z.infer<typeof DocumentVersionSchema>;\nexport type DocumentTemplate = z.infer<typeof DocumentTemplateSchema>;\nexport type ESignatureConfig = z.infer<typeof ESignatureConfigSchema>;\n","import { z } from 'zod';\nimport { FieldMappingSchema as BaseFieldMappingSchema } from '../shared/mapping.zod';\n\n/**\n * External Data Source Schema\n * \n * Configuration for connecting to external data systems.\n * Similar to Salesforce External Objects for real-time data integration.\n * \n * @example\n * ```json\n * {\n * \"id\": \"salesforce-accounts\",\n * \"name\": \"Salesforce Account Data\",\n * \"type\": \"rest-api\",\n * \"endpoint\": \"https://api.salesforce.com/services/data/v58.0\",\n * \"authentication\": {\n * \"type\": \"oauth2\",\n * \"config\": {\n * \"clientId\": \"...\",\n * \"clientSecret\": \"...\",\n * \"tokenUrl\": \"https://login.salesforce.com/services/oauth2/token\"\n * }\n * }\n * }\n * ```\n */\nexport const ExternalDataSourceSchema = z.object({\n /**\n * Unique identifier for the external data source\n */\n id: z.string().describe('Data source ID'),\n\n /**\n * Human-readable name of the data source\n */\n name: z.string().describe('Data source name'),\n\n /**\n * Protocol type for connecting to the data source\n */\n type: z.enum(['odata', 'rest-api', 'graphql', 'custom']).describe('Protocol type'),\n\n /**\n * Base URL endpoint for the external system\n */\n endpoint: z.string().url().describe('API endpoint URL'),\n\n /**\n * Authentication configuration\n */\n authentication: z.object({\n /**\n * Authentication method\n */\n type: z.enum(['oauth2', 'api-key', 'basic', 'none']).describe('Auth type'),\n\n /**\n * Authentication-specific configuration\n * Structure varies based on auth type\n */\n config: z.record(z.string(), z.any()).describe('Auth configuration'),\n }).describe('Authentication'),\n});\n\n/**\n * Field Mapping Schema for External Lookups\n * \n * Extends the base field mapping with external lookup specific features.\n * Uses the canonical field mapping protocol from shared/mapping.zod.ts.\n * \n * @see {@link BaseFieldMappingSchema} for the base field mapping schema\n * \n * @example\n * ```json\n * {\n * \"source\": \"AccountName\",\n * \"target\": \"name\",\n * \"readonly\": true\n * }\n * ```\n */\nexport const ExternalFieldMappingSchema = BaseFieldMappingSchema.extend({\n /**\n * Field data type\n */\n type: z.string().optional().describe('Field type'),\n\n /**\n * Whether the field is read-only\n * @default true\n */\n readonly: z.boolean().optional().default(true).describe('Read-only field'),\n});\n\n/**\n * External Lookup Schema\n * \n * Real-time data lookup protocol for external systems.\n * Enables querying external data sources without replication.\n * Inspired by Salesforce External Objects and OData protocols.\n * \n * @example\n * ```json\n * {\n * \"fieldName\": \"external_account\",\n * \"dataSource\": {\n * \"id\": \"salesforce-api\",\n * \"name\": \"Salesforce\",\n * \"type\": \"rest-api\",\n * \"endpoint\": \"https://api.salesforce.com/services/data/v58.0\",\n * \"authentication\": {\n * \"type\": \"oauth2\",\n * \"config\": {\"clientId\": \"...\"}\n * }\n * },\n * \"query\": {\n * \"endpoint\": \"/sobjects/Account\",\n * \"method\": \"GET\",\n * \"parameters\": {\"limit\": 100}\n * },\n * \"fieldMappings\": [\n * {\n * \"externalField\": \"Name\",\n * \"localField\": \"account_name\",\n * \"type\": \"text\",\n * \"readonly\": true\n * }\n * ],\n * \"caching\": {\n * \"enabled\": true,\n * \"ttl\": 300,\n * \"strategy\": \"ttl\"\n * },\n * \"fallback\": {\n * \"enabled\": true,\n * \"showError\": true\n * },\n * \"rateLimit\": {\n * \"requestsPerSecond\": 10,\n * \"burstSize\": 20\n * }\n * }\n * ```\n */\nexport const ExternalLookupSchema = z.object({\n /**\n * Name of the field that uses external lookup\n */\n fieldName: z.string().describe('Field name'),\n\n /**\n * External data source configuration\n */\n dataSource: ExternalDataSourceSchema.describe('External data source'),\n\n /**\n * Query configuration for fetching external data\n */\n query: z.object({\n /**\n * API endpoint path (relative to base endpoint)\n */\n endpoint: z.string().describe('Query endpoint path'),\n\n /**\n * HTTP method for the query\n * @default 'GET'\n */\n method: z.enum(['GET', 'POST']).optional().default('GET').describe('HTTP method'),\n\n /**\n * Query parameters or request body\n */\n parameters: z.record(z.string(), z.any()).optional().describe('Query parameters'),\n }).describe('Query configuration'),\n\n /**\n * Mapping between external and local fields\n */\n fieldMappings: z.array(ExternalFieldMappingSchema).describe('Field mappings'),\n\n /**\n * Cache configuration for external data\n */\n caching: z.object({\n /**\n * Whether caching is enabled\n * @default true\n */\n enabled: z.boolean().optional().default(true).describe('Cache enabled'),\n\n /**\n * Time-to-live in seconds\n * @default 300\n */\n ttl: z.number().optional().default(300).describe('Cache TTL (seconds)'),\n\n /**\n * Cache eviction strategy\n * @default 'ttl'\n */\n strategy: z.enum(['lru', 'lfu', 'ttl']).optional().default('ttl').describe('Cache strategy'),\n }).optional().describe('Caching configuration'),\n\n /**\n * Fallback behavior when external system is unavailable\n */\n fallback: z.object({\n /**\n * Whether fallback is enabled\n * @default true\n */\n enabled: z.boolean().optional().default(true).describe('Fallback enabled'),\n\n /**\n * Default value to use when external system fails\n */\n defaultValue: z.any().optional().describe('Default fallback value'),\n\n /**\n * Whether to show error message to user\n * @default true\n */\n showError: z.boolean().optional().default(true).describe('Show error to user'),\n }).optional().describe('Fallback configuration'),\n\n /**\n * Rate limiting to prevent overwhelming external system\n */\n rateLimit: z.object({\n /**\n * Maximum requests per second\n */\n requestsPerSecond: z.number().describe('Requests per second limit'),\n\n /**\n * Burst size for handling spikes\n */\n burstSize: z.number().optional().describe('Burst size'),\n }).optional().describe('Rate limiting'),\n});\n\n// Type exports\nexport type ExternalLookup = z.infer<typeof ExternalLookupSchema>;\nexport type ExternalDataSource = z.infer<typeof ExternalDataSourceSchema>;\nexport type ExternalFieldMapping = z.infer<typeof ExternalFieldMappingSchema>;\n","import { z } from 'zod';\n\n/**\n * Base Field Mapping Protocol\n * \n * Shared by: ETL, Sync, Connector, External Lookup\n * \n * This module provides the canonical field mapping schema used across\n * ObjectStack for data transformation and synchronization.\n * \n * **Use Cases:**\n * - ETL pipelines (data/mapping.zod.ts)\n * - Data synchronization (automation/sync.zod.ts)\n * - Integration connectors (integration/connector.zod.ts)\n * - External lookups (data/external-lookup.zod.ts)\n * \n * @example Basic field mapping\n * ```typescript\n * const mapping: FieldMapping = {\n * source: 'external_user_id',\n * target: 'user_id',\n * };\n * ```\n * \n * @example With transformation\n * ```typescript\n * const mapping: FieldMapping = {\n * source: 'user_name',\n * target: 'name',\n * transform: { type: 'cast', targetType: 'string' },\n * defaultValue: 'Unknown'\n * };\n * ```\n */\n\n/**\n * Transform Type Schema\n * \n * Defines the type of transformation to apply to a field value.\n * Implementations can extend this for domain-specific transforms.\n */\nexport const TransformTypeSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('constant'),\n value: z.any().describe('Constant value to use'),\n }).describe('Set a constant value'),\n \n z.object({\n type: z.literal('cast'),\n targetType: z.enum(['string', 'number', 'boolean', 'date']).describe('Target data type'),\n }).describe('Cast to a specific data type'),\n \n z.object({\n type: z.literal('lookup'),\n table: z.string().describe('Lookup table name'),\n keyField: z.string().describe('Field to match on'),\n valueField: z.string().describe('Field to retrieve'),\n }).describe('Lookup value from another table'),\n \n z.object({\n type: z.literal('javascript'),\n expression: z.string().describe('JavaScript expression (e.g., \"value.toUpperCase()\")'),\n }).describe('Custom JavaScript transformation'),\n \n z.object({\n type: z.literal('map'),\n mappings: z.record(z.string(), z.any()).describe('Value mappings (e.g., {\"Active\": \"active\"})'),\n }).describe('Map values using a dictionary'),\n]);\n\nexport type TransformType = z.infer<typeof TransformTypeSchema>;\n\n/**\n * Field Mapping Schema\n * \n * Base schema for mapping fields between source and target systems.\n * \n * **NAMING CONVENTION:**\n * - source: Field name in the source system\n * - target: Field name in the target system (should be snake_case for ObjectStack)\n * \n * @example\n * ```typescript\n * {\n * source: 'FirstName',\n * target: 'first_name',\n * transform: { type: 'cast', targetType: 'string' },\n * defaultValue: ''\n * }\n * ```\n */\nexport const FieldMappingSchema = z.object({\n /**\n * Source field name\n */\n source: z.string().describe('Source field name'),\n \n /**\n * Target field name (should be snake_case for ObjectStack)\n */\n target: z.string().describe('Target field name'),\n \n /**\n * Transformation to apply\n */\n transform: TransformTypeSchema.optional().describe('Transformation to apply'),\n \n /**\n * Default value if source is null/undefined\n */\n defaultValue: z.any().optional().describe('Default if source is null/undefined'),\n});\n\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n","import { z } from 'zod';\n\n\n/**\n * Driver Identifier\n * Can be a built-in driver or a plugin-contributed driver (e.g., \"com.vendor.snowflake\").\n */\nexport const DriverType = z.string().describe('Underlying driver identifier');\n\n/**\n * Driver Definition Schema\n * Metadata describing a Database Driver.\n * Plugins use this to register new connectivity options.\n */\nexport const DriverDefinitionSchema = z.object({\n id: z.string().describe('Unique driver identifier (e.g. \"postgres\")'),\n label: z.string().describe('Display label (e.g. \"PostgreSQL\")'),\n description: z.string().optional(),\n icon: z.string().optional(),\n \n /**\n * Configuration Schema (JSON Schema)\n * Describes the structure of the `config` object needed for this driver.\n * Used by the UI to generate the connection form.\n */\n configSchema: z.record(z.string(), z.any()).describe('JSON Schema for connection configuration'),\n \n /**\n * Default Capabilities\n * What this driver supports out-of-the-box.\n */\n capabilities: z.lazy(() => DatasourceCapabilities).optional(),\n});\n\n/**\n * Datasource Capabilities Schema\n * Declares what this datasource naturally supports.\n * The ObjectQL engine uses this to determine what logic to push down\n * and what to compute in memory.\n */\nexport const DatasourceCapabilities = z.object({\n // ============================================================================\n // Transaction & Connection Management\n // ============================================================================\n \n /** Can handle ACID transactions? */\n transactions: z.boolean().default(false),\n \n // ============================================================================\n // Query Operations\n // ============================================================================\n \n /** Can execute WHERE clause filters natively? */\n queryFilters: z.boolean().default(false),\n \n /** Can perform aggregation (group by, sum, avg)? */\n queryAggregations: z.boolean().default(false),\n \n /** Can perform ORDER BY sorting? */\n querySorting: z.boolean().default(false),\n \n /** Can perform LIMIT/OFFSET pagination? */\n queryPagination: z.boolean().default(false),\n \n /** Can perform window functions? */\n queryWindowFunctions: z.boolean().default(false),\n \n /** Can perform subqueries? */\n querySubqueries: z.boolean().default(false),\n \n /** Can execute SQL-like joins natively? */\n joins: z.boolean().default(false),\n \n // ============================================================================\n // Advanced Features\n // ============================================================================\n \n /** Can perform full-text search? */\n fullTextSearch: z.boolean().default(false),\n \n /** Is read-only? */\n readOnly: z.boolean().default(false),\n \n /** Is scheme-less (needs schema inference)? */\n dynamicSchema: z.boolean().default(false),\n});\n\n/**\n * Datasource Schema\n * Represents a connection to an external data store.\n */\nexport const DatasourceSchema = z.object({\n /** Machine Name */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique datasource identifier'),\n \n /** Human Label */\n label: z.string().optional().describe('Display label'),\n \n /** Driver */\n driver: DriverType.describe('Underlying driver type'),\n \n /** \n * Connection Configuration \n * Specific to the driver (e.g., host, port, user, password, bucket, etc.)\n * Stored securely (passwords usually interpolated from ENV).\n */\n config: z.record(z.string(), z.any()).describe('Driver specific configuration'),\n \n /**\n * Connection Pool Configuration\n * Standard connection pooling settings.\n */\n pool: z.object({\n min: z.number().default(0).describe('Minimum connections'),\n max: z.number().default(10).describe('Maximum connections'),\n idleTimeoutMillis: z.number().default(30000).describe('Idle timeout'),\n connectionTimeoutMillis: z.number().default(3000).describe('Connection establishment timeout'),\n }).optional().describe('Connection pool settings'),\n\n /**\n * Read Replicas\n * Optional list of duplicate configurations for read-only operations.\n * Useful for scaling read throughput.\n */\n readReplicas: z.array(z.record(z.string(), z.any())).optional().describe('Read-only replica configurations'),\n\n /**\n * Capability Overrides\n * Manually override what the driver claims to support.\n */\n capabilities: DatasourceCapabilities.optional().describe('Capability overrides'),\n \n /** Description */\n description: z.string().optional().describe('Internal description'),\n \n /** Is enabled? */\n active: z.boolean().default(true).describe('Is datasource enabled'),\n});\n\nexport type Datasource = z.infer<typeof DatasourceSchema>;\nexport type DatasourceConfig = z.infer<typeof DatasourceCapabilities>;\n","import { z } from 'zod';\n\n/**\n * Analytics/Semantic Layer Protocol\n * \n * Defines the \"Business Logic\" for data analysis.\n * Inspired by Cube.dev, LookML, and dbt MetricFlow.\n * \n * This layer decouples the \"Physical Data\" (Tables/Columns) from the \n * \"Business Data\" (Metrics/Dimensions).\n */\n\n/**\n * Metric Type\n * The mathematical operation to perform.\n */\nexport const MetricType = z.enum([\n 'count', \n 'sum', \n 'avg', \n 'min', \n 'max', \n 'count_distinct', \n 'number', // Custom SQL expression returning a number\n 'string', // Custom SQL expression returning a string\n 'boolean' // Custom SQL expression returning a boolean\n]);\n\n/**\n * Dimension Type\n * The nature of the grouping field.\n */\nexport const DimensionType = z.enum([\n 'string', \n 'number', \n 'boolean', \n 'time', \n 'geo'\n]);\n\n/**\n * Time Interval for Time Dimensions\n */\nexport const TimeUpdateInterval = z.enum([\n 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'\n]);\n\n/**\n * Metric Schema\n * A quantitative measurement (e.g., \"Total Revenue\", \"Average Order Value\").\n */\nexport const MetricSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique metric ID'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n \n type: MetricType,\n \n /** Source Calculation */\n sql: z.string().describe('SQL expression or field reference'),\n \n /** Filtering for this specific metric (e.g. \"Revenue from Premium Users\") */\n filters: z.array(z.object({\n sql: z.string()\n })).optional(),\n \n /** Format for display (e.g. \"currency\", \"percent\") */\n format: z.string().optional(),\n});\n\n/**\n * Dimension Schema\n * A categorical attribute to group by (e.g., \"Product Category\", \"Order Date\").\n */\nexport const DimensionSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique dimension ID'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n \n type: DimensionType,\n \n /** Source Column */\n sql: z.string().describe('SQL expression or column reference'),\n \n /** For Time Dimensions: Supported Granularities */\n granularities: z.array(TimeUpdateInterval).optional(),\n});\n\n/**\n * Join Schema\n * Defines how this cube relates to others.\n */\nexport const CubeJoinSchema = z.object({\n name: z.string().describe('Target cube name'),\n relationship: z.enum(['one_to_one', 'one_to_many', 'many_to_one']).default('many_to_one'),\n sql: z.string().describe('Join condition (ON clause)'),\n});\n\n/**\n * Cube Schema\n * A logical data model representing a business entity or process for analysis.\n * Maps physical tables to business metrics and dimensions.\n */\nexport const CubeSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Cube name (snake_case)'),\n title: z.string().optional(),\n description: z.string().optional(),\n \n /** Physical Data Source */\n sql: z.string().describe('Base SQL statement or Table Name'),\n \n /** Semantic Definitions */\n measures: z.record(z.string(), MetricSchema).describe('Quantitative metrics'),\n dimensions: z.record(z.string(), DimensionSchema).describe('Qualitative attributes'),\n \n /** Relationships */\n joins: z.record(z.string(), CubeJoinSchema).optional(),\n \n /** Pre-aggregations / Caching */\n refreshKey: z.object({\n every: z.string().optional(), // e.g. \"1 hour\"\n sql: z.string().optional(), // SQL to check for data changes\n }).optional(),\n \n /** Access Control */\n public: z.boolean().default(false),\n});\n\n/**\n * Analytics Query Schema\n * The request format for the Analytics API.\n */\nexport const AnalyticsQuerySchema = z.object({\n measures: z.array(z.string()).describe('List of metrics to calculate'),\n dimensions: z.array(z.string()).optional().describe('List of dimensions to group by'),\n \n filters: z.array(z.object({\n member: z.string().describe('Dimension or Measure'),\n operator: z.enum(['equals', 'notEquals', 'contains', 'notContains', 'gt', 'gte', 'lt', 'lte', 'set', 'notSet', 'inDateRange']),\n values: z.array(z.string()).optional(),\n })).optional(),\n \n timeDimensions: z.array(z.object({\n dimension: z.string(),\n granularity: TimeUpdateInterval.optional(),\n dateRange: z.union([\n z.string(), // \"Last 7 days\"\n z.array(z.string()) // [\"2023-01-01\", \"2023-01-31\"]\n ]).optional(),\n })).optional(),\n \n order: z.record(z.string(), z.enum(['asc', 'desc'])).optional(),\n \n limit: z.number().optional(),\n offset: z.number().optional(),\n \n timezone: z.string().default('UTC'),\n});\n\nexport type Metric = z.infer<typeof MetricSchema>;\nexport type Dimension = z.infer<typeof DimensionSchema>;\nexport type Cube = z.infer<typeof CubeSchema>;\nexport type AnalyticsQuery = z.infer<typeof AnalyticsQuerySchema>;\n"],"mappings":"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","names":["import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","FieldMappingSchema","FieldMappingSchema","import_zod","import_zod"]}
|
|
1
|
+
{"version":3,"sources":["../../src/data/index.ts","../../src/data/query.zod.ts","../../src/data/filter.zod.ts","../../src/data/object.zod.ts","../../src/data/field.zod.ts","../../src/shared/identifiers.zod.ts","../../src/system/encryption.zod.ts","../../src/system/masking.zod.ts","../../src/data/validation.zod.ts","../../src/automation/state-machine.zod.ts","../../src/data/hook.zod.ts","../../src/data/mapping.zod.ts","../../src/data/data-engine.zod.ts","../../src/data/driver.zod.ts","../../src/data/driver-sql.zod.ts","../../src/data/driver-nosql.zod.ts","../../src/data/dataset.zod.ts","../../src/data/document.zod.ts","../../src/data/external-lookup.zod.ts","../../src/shared/mapping.zod.ts","../../src/data/datasource.zod.ts","../../src/data/analytics.zod.ts"],"sourcesContent":["export * from './query.zod';\nexport * from './filter.zod';\nexport * from './object.zod';\nexport * from './field.zod';\nexport * from './validation.zod';\nexport * from './hook.zod';\nexport * from './mapping.zod';\nexport * from './data-engine.zod';\nexport * from './driver.zod';\nexport * from './driver-sql.zod';\nexport * from './driver-nosql.zod';\n\nexport * from './dataset.zod';\n\n// Document Management Protocol\nexport * from './document.zod';\n\n// External Lookup Protocol\nexport * from './external-lookup.zod';\nexport * from './datasource.zod';\n\n// Analytics Protocol (Semantic Layer)\nexport * from './analytics.zod';\n\n","import { z } from 'zod';\nimport { FilterConditionSchema } from './filter.zod';\n\n/**\n * Sort Node\n * Represents \"Order By\".\n */\nexport const SortNodeSchema = z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc']).default('asc')\n});\n\n/**\n * Aggregation Function Enum\n * Standard aggregation functions for data analysis.\n * \n * Supported Functions:\n * - **count**: Count rows (SQL: COUNT(*) or COUNT(field))\n * - **sum**: Sum numeric values (SQL: SUM(field))\n * - **avg**: Average numeric values (SQL: AVG(field))\n * - **min**: Minimum value (SQL: MIN(field))\n * - **max**: Maximum value (SQL: MAX(field))\n * - **count_distinct**: Count unique values (SQL: COUNT(DISTINCT field))\n * - **array_agg**: Aggregate values into array (SQL: ARRAY_AGG(field))\n * - **string_agg**: Concatenate values (SQL: STRING_AGG(field, delimiter))\n * \n * Performance Considerations:\n * - COUNT(*) is typically faster than COUNT(field) as it doesn't check for nulls\n * - COUNT DISTINCT may require additional memory for tracking unique values\n * - Window aggregates (with OVER clause) can be more efficient than subqueries\n * - Large GROUP BY operations benefit from proper indexing on grouped fields\n * \n * @example\n * // SQL: SELECT region, SUM(amount) FROM sales GROUP BY region\n * {\n * object: 'sales',\n * fields: ['region'],\n * aggregations: [\n * { function: 'sum', field: 'amount', alias: 'total_sales' }\n * ],\n * groupBy: ['region']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT COUNT(Id) FROM Account\n * {\n * object: 'account',\n * aggregations: [\n * { function: 'count', alias: 'total_accounts' }\n * ]\n * }\n */\nexport const AggregationFunction = z.enum([\n 'count', 'sum', 'avg', 'min', 'max',\n 'count_distinct', 'array_agg', 'string_agg'\n]);\n\n/**\n * Aggregation Node\n * Represents an aggregated field with function.\n * \n * Aggregations summarize data across groups of rows (GROUP BY).\n * Used with `groupBy` to create analytical queries.\n * \n * @example\n * // SQL: SELECT customer_id, COUNT(*), SUM(amount) FROM orders GROUP BY customer_id\n * {\n * object: 'order',\n * fields: ['customer_id'],\n * aggregations: [\n * { function: 'count', alias: 'order_count' },\n * { function: 'sum', field: 'amount', alias: 'total_amount' }\n * ],\n * groupBy: ['customer_id']\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT LeadSource, COUNT(Id) FROM Lead GROUP BY LeadSource\n * {\n * object: 'lead',\n * fields: ['lead_source'],\n * aggregations: [\n * { function: 'count', alias: 'lead_count' }\n * ],\n * groupBy: ['lead_source']\n * }\n */\nexport const AggregationNodeSchema = z.object({\n function: AggregationFunction.describe('Aggregation function'),\n field: z.string().optional().describe('Field to aggregate (optional for COUNT(*))'),\n alias: z.string().describe('Result column alias'),\n distinct: z.boolean().optional().describe('Apply DISTINCT before aggregation'),\n filter: FilterConditionSchema.optional().describe('Filter/Condition to apply to the aggregation (FILTER WHERE clause)'),\n});\n\n/**\n * Join Type Enum\n * Standard SQL join types for combining tables.\n * \n * Join Types:\n * - **inner**: Returns only matching rows from both tables (SQL: INNER JOIN)\n * - **left**: Returns all rows from left table, matching rows from right (SQL: LEFT JOIN)\n * - **right**: Returns all rows from right table, matching rows from left (SQL: RIGHT JOIN)\n * - **full**: Returns all rows from both tables (SQL: FULL OUTER JOIN)\n * \n * @example\n * // SQL: SELECT * FROM orders INNER JOIN customers ON orders.customer_id = customers.id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * on: ['order.customer_id', '=', 'customer.id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL-style: Find all customers and their orders (if any)\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * on: ['customer.id', '=', 'order.customer_id']\n * }\n * ]\n * }\n */\nexport const JoinType = z.enum(['inner', 'left', 'right', 'full']);\n\n/**\n * Join Execution Strategy\n * Hints to the query engine on how to execute the join.\n * \n * Strategies:\n * - **auto**: Engine decides best strategy (Default).\n * - **database**: Push down join to the database (Requires same datasource).\n * - **hash**: Load both sets into memory and hash join (Cross-datasource, memory intensive).\n * - **loop**: Nested loop lookup (N+1 safe version). (Good for small right-side lookups).\n */\nexport const JoinStrategy = z.enum(['auto', 'database', 'hash', 'loop']);\n\n/**\n * Join Node\n * Represents table joins for combining data from multiple objects.\n * \n * Joins connect related data across multiple tables using ON conditions.\n * Supports both direct object joins and subquery joins.\n * \n * @example\n * // SQL: SELECT o.*, c.name FROM orders o INNER JOIN customers c ON o.customer_id = c.id\n * {\n * object: 'order',\n * fields: ['id', 'amount'],\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Multi-table join\n * // SELECT * FROM orders o\n * // INNER JOIN customers c ON o.customer_id = c.id\n * // LEFT JOIN shipments s ON o.id = s.order_id\n * {\n * object: 'order',\n * joins: [\n * {\n * type: 'inner',\n * object: 'customer',\n * alias: 'c',\n * on: ['order.customer_id', '=', 'c.id']\n * },\n * {\n * type: 'left',\n * object: 'shipment',\n * alias: 's',\n * on: ['order.id', '=', 's.order_id']\n * }\n * ]\n * }\n * \n * @example\n * // Salesforce SOQL: SELECT Name, (SELECT LastName FROM Contacts) FROM Account\n * {\n * object: 'account',\n * fields: ['name'],\n * joins: [\n * {\n * type: 'left',\n * object: 'contact',\n * on: ['account.id', '=', 'contact.account_id']\n * }\n * ]\n * }\n * \n * @example\n * // Subquery Join: Join with a filtered/aggregated dataset\n * {\n * object: 'customer',\n * joins: [\n * {\n * type: 'left',\n * object: 'order',\n * alias: 'high_value_orders',\n * on: ['customer.id', '=', 'high_value_orders.customer_id'],\n * subquery: {\n * object: 'order',\n * fields: ['customer_id', 'total'],\n * filters: ['total', '>', 1000]\n * }\n * }\n * ]\n * }\n */\nexport const JoinNodeSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n type: JoinType.describe('Join type'),\n strategy: JoinStrategy.optional().describe('Execution strategy hint'),\n object: z.string().describe('Object/table to join'),\n alias: z.string().optional().describe('Table alias'),\n on: FilterConditionSchema.describe('Join condition'),\n subquery: z.lazy(() => QuerySchema).optional().describe('Subquery instead of object'),\n })\n);\n\n/**\n * Window Function Enum\n * Advanced analytical functions for row-based calculations.\n * \n * Window Functions:\n * - **row_number**: Sequential number within partition (SQL: ROW_NUMBER() OVER (...))\n * - **rank**: Rank with gaps for ties (SQL: RANK() OVER (...))\n * - **dense_rank**: Rank without gaps (SQL: DENSE_RANK() OVER (...))\n * - **percent_rank**: Relative rank as percentage (SQL: PERCENT_RANK() OVER (...))\n * - **lag**: Access previous row value (SQL: LAG(field) OVER (...))\n * - **lead**: Access next row value (SQL: LEAD(field) OVER (...))\n * - **first_value**: First value in window (SQL: FIRST_VALUE(field) OVER (...))\n * - **last_value**: Last value in window (SQL: LAST_VALUE(field) OVER (...))\n * - **sum/avg/count/min/max**: Aggregates over window (SQL: SUM(field) OVER (...))\n * \n * @example\n * // SQL: SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY amount DESC) as rank\n * // FROM orders\n * {\n * object: 'order',\n * fields: ['id', 'customer_id', 'amount'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'rank',\n * over: {\n * partitionBy: ['customer_id'],\n * orderBy: [{ field: 'amount', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Running total with SUM() OVER (...)\n * {\n * object: 'transaction',\n * fields: ['date', 'amount'],\n * windowFunctions: [\n * {\n * function: 'sum',\n * field: 'amount',\n * alias: 'running_total',\n * over: {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: 'UNBOUNDED PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunction = z.enum([\n 'row_number', 'rank', 'dense_rank', 'percent_rank',\n 'lag', 'lead', 'first_value', 'last_value',\n 'sum', 'avg', 'count', 'min', 'max'\n]);\n\n/**\n * Window Specification\n * Defines PARTITION BY and ORDER BY for window functions.\n * \n * Window specifications control how window functions compute values:\n * - **partitionBy**: Divide rows into groups (like GROUP BY but without collapsing rows)\n * - **orderBy**: Define order for ranking and offset functions\n * - **frame**: Specify which rows to include in aggregate calculations\n * \n * @example\n * // Partition by department, order by salary\n * {\n * partitionBy: ['department'],\n * orderBy: [{ field: 'salary', order: 'desc' }]\n * }\n * \n * @example\n * // Moving average with frame specification\n * {\n * orderBy: [{ field: 'date', order: 'asc' }],\n * frame: {\n * type: 'rows',\n * start: '6 PRECEDING',\n * end: 'CURRENT ROW'\n * }\n * }\n */\nexport const WindowSpecSchema = z.object({\n partitionBy: z.array(z.string()).optional().describe('PARTITION BY fields'),\n orderBy: z.array(SortNodeSchema).optional().describe('ORDER BY specification'),\n frame: z.object({\n type: z.enum(['rows', 'range']).optional(),\n start: z.string().optional().describe('Frame start (e.g., \"UNBOUNDED PRECEDING\", \"1 PRECEDING\")'),\n end: z.string().optional().describe('Frame end (e.g., \"CURRENT ROW\", \"1 FOLLOWING\")'),\n }).optional().describe('Window frame specification'),\n});\n\n/**\n * Window Function Node\n * Represents window function with OVER clause.\n * \n * Window functions perform calculations across a set of rows related to the current row,\n * without collapsing the result set (unlike GROUP BY aggregations).\n * \n * @example\n * // SQL: Top 3 products per category\n * // SELECT *, ROW_NUMBER() OVER (PARTITION BY category ORDER BY sales DESC) as rank\n * // FROM products\n * {\n * object: 'product',\n * fields: ['name', 'category', 'sales'],\n * windowFunctions: [\n * {\n * function: 'row_number',\n * alias: 'category_rank',\n * over: {\n * partitionBy: ['category'],\n * orderBy: [{ field: 'sales', order: 'desc' }]\n * }\n * }\n * ]\n * }\n * \n * @example\n * // SQL: Year-over-year comparison with LAG\n * {\n * object: 'monthly_sales',\n * fields: ['month', 'revenue'],\n * windowFunctions: [\n * {\n * function: 'lag',\n * field: 'revenue',\n * alias: 'prev_year_revenue',\n * over: {\n * orderBy: [{ field: 'month', order: 'asc' }]\n * }\n * }\n * ]\n * }\n */\nexport const WindowFunctionNodeSchema = z.object({\n function: WindowFunction.describe('Window function name'),\n field: z.string().optional().describe('Field to operate on (for aggregate window functions)'),\n alias: z.string().describe('Result column alias'),\n over: WindowSpecSchema.describe('Window specification (OVER clause)'),\n});\n\n/**\n * Field Selection Node\n * Represents \"Select\" attributes, including joins.\n */\nexport const FieldNodeSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n z.string(), // Primitive field: \"name\"\n z.object({\n field: z.string(), // Relationship field: \"owner\"\n fields: z.array(FieldNodeSchema).optional(), // Nested select: [\"name\", \"email\"]\n alias: z.string().optional()\n })\n ])\n);\n\n/**\n * Full-Text Search Configuration\n * Defines full-text search parameters for text queries.\n * \n * Supports:\n * - Multi-field search\n * - Relevance scoring\n * - Fuzzy matching\n * - Language-specific analyzers\n * \n * @example\n * {\n * query: \"John Smith\",\n * fields: [\"name\", \"email\", \"description\"],\n * fuzzy: true,\n * boost: { \"name\": 2.0, \"email\": 1.5 }\n * }\n */\nexport const FullTextSearchSchema = z.object({\n query: z.string().describe('Search query text'),\n fields: z.array(z.string()).optional().describe('Fields to search in (if not specified, searches all text fields)'),\n fuzzy: z.boolean().optional().default(false).describe('Enable fuzzy matching (tolerates typos)'),\n operator: z.enum(['and', 'or']).optional().default('or').describe('Logical operator between terms'),\n boost: z.record(z.string(), z.number()).optional().describe('Field-specific relevance boosting (field name -> boost factor)'),\n minScore: z.number().optional().describe('Minimum relevance score threshold'),\n language: z.string().optional().describe('Language for text analysis (e.g., \"en\", \"zh\", \"es\")'),\n highlight: z.boolean().optional().default(false).describe('Enable search result highlighting'),\n});\n\nexport type FullTextSearch = z.infer<typeof FullTextSearchSchema>;\n\n/**\n * Query AST Schema\n * The universal data retrieval contract defined in `ast-structure.mdx`.\n * \n * This schema represents ObjectQL - a universal query language that abstracts\n * SQL, NoSQL, and SaaS APIs into a single unified interface.\n * \n * Updates (v2):\n * - Aligned with modern ORM standards (Prisma/TypeORM)\n * - Added `cursor` based pagination support\n * - Renamed `top`/`skip` to `limit`/`offset`\n * - Unified filtering syntax with `FilterConditionSchema`\n * \n * Updates (v3):\n * - Added `search` parameter for full-text search (P2 requirement)\n * \n * @example\n * // Simple query: SELECT name, email FROM account WHERE status = 'active'\n * {\n * object: 'account',\n * fields: ['name', 'email'],\n * where: { status: 'active' }\n * }\n * \n * @example\n * // Pagination with Limit/Offset\n * {\n * object: 'post',\n * where: { published: true },\n * orderBy: [{ field: 'created_at', order: 'desc' }],\n * limit: 20,\n * offset: 40\n * }\n * \n * @example\n * // Full-text search\n * {\n * object: 'article',\n * search: {\n * query: \"machine learning\",\n * fields: [\"title\", \"content\"],\n * fuzzy: true,\n * boost: { \"title\": 2.0 }\n * },\n * limit: 10\n * }\n */\nconst BaseQuerySchema = z.object({\n /** Target Entity */\n object: z.string().describe('Object name (e.g. account)'),\n \n /** Select Clause */\n fields: z.array(FieldNodeSchema).optional().describe('Fields to retrieve'),\n \n /** Where Clause (Filtering) */\n where: FilterConditionSchema.optional().describe('Filtering criteria (WHERE)'),\n \n /** Full-Text Search */\n search: FullTextSearchSchema.optional().describe('Full-text search configuration ($search parameter)'),\n \n /** Order By Clause (Sorting) */\n orderBy: z.array(SortNodeSchema).optional().describe('Sorting instructions (ORDER BY)'),\n \n /** Pagination */\n limit: z.number().optional().describe('Max records to return (LIMIT)'),\n offset: z.number().optional().describe('Records to skip (OFFSET)'),\n top: z.number().optional().describe('Alias for limit (OData compatibility)'),\n cursor: z.record(z.string(), z.any()).optional().describe('Cursor for keyset pagination'),\n \n /** Joins */\n joins: z.array(JoinNodeSchema).optional().describe('Explicit Table Joins'),\n \n /** Aggregations */\n aggregations: z.array(AggregationNodeSchema).optional().describe('Aggregation functions'),\n \n /** Group By Clause */\n groupBy: z.array(z.string()).optional().describe('GROUP BY fields'),\n \n /** Having Clause */\n having: FilterConditionSchema.optional().describe('HAVING clause for aggregation filtering'),\n \n /** Window Functions */\n windowFunctions: z.array(WindowFunctionNodeSchema).optional().describe('Window functions with OVER clause'),\n \n /** Subquery flag */\n distinct: z.boolean().optional().describe('SELECT DISTINCT flag'),\n});\n\nexport type QueryAST = z.infer<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryAST>;\n};\n\nexport type QueryInput = z.input<typeof BaseQuerySchema> & {\n expand?: Record<string, QueryInput>;\n};\n\nexport const QuerySchema: z.ZodType<QueryAST, z.ZodTypeDef, QueryInput> = BaseQuerySchema.extend({\n expand: z.lazy(() => z.record(z.string(), QuerySchema)).optional().describe('Recursive relation loading (nested queries)'),\n});\n\nexport type SortNode = z.infer<typeof SortNodeSchema>;\nexport type AggregationNode = z.infer<typeof AggregationNodeSchema>;\nexport type JoinNode = z.infer<typeof JoinNodeSchema>;\nexport type WindowFunctionNode = z.infer<typeof WindowFunctionNodeSchema>;\nexport type WindowSpec = z.infer<typeof WindowSpecSchema>;\n","import { z } from 'zod';\n\n/**\n * Unified Query DSL Specification\n * \n * Based on industry best practices from:\n * - Prisma ORM\n * - Strapi CMS\n * - TypeORM\n * - LoopBack Framework\n * \n * Version: 1.0.0\n * Status: Draft\n * \n * Objective: Define a JSON-based, database-agnostic query syntax standard\n * for data filtering interactions between frontend and backend APIs.\n * \n * Design Principles:\n * 1. Declarative: Frontend describes \"what data to get\", not \"how to query\"\n * 2. Database Agnostic: Syntax contains no database-specific directives\n * 3. Type Safe: Structure can be statically inferred by TypeScript\n * 4. Convention over Configuration: Implicit syntax for common queries\n */\n\n/**\n * Field Reference\n * Represents a reference to another field/column instead of a literal value.\n * Used for joins (ON clause) and cross-field comparisons.\n * \n * @example\n * // user.id = order.owner_id\n * { \"$eq\": { \"$field\": \"order.owner_id\" } }\n */\nexport const FieldReferenceSchema = z.object({\n $field: z.string().describe('Field Reference/Column Name')\n});\n\nexport type FieldReference = z.infer<typeof FieldReferenceSchema>;\n\n// ============================================================================\n// 3.1 Comparison Operators\n// ============================================================================\n\n/**\n * Comparison operators for equality and inequality checks.\n * Supported data types: Any\n */\nexport const EqualityOperatorSchema = z.object({\n /** Equal to (default) - SQL: = | MongoDB: $eq */\n $eq: z.any().optional(),\n \n /** Not equal to - SQL: <> or != | MongoDB: $ne */\n $ne: z.any().optional(),\n});\n\n/**\n * Comparison operators for numeric and date comparisons.\n * Supported data types: Number, Date\n */\nexport const ComparisonOperatorSchema = z.object({\n /** Greater than - SQL: > | MongoDB: $gt */\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Greater than or equal to - SQL: >= | MongoDB: $gte */\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than - SQL: < | MongoDB: $lt */\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n /** Less than or equal to - SQL: <= | MongoDB: $lte */\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n});\n\n// ============================================================================\n// 3.2 Set & Range Operators\n// ============================================================================\n\n/**\n * Set operators for membership checks.\n */\nexport const SetOperatorSchema = z.object({\n /** In list - SQL: IN (?, ?, ?) | MongoDB: $in */\n $in: z.array(z.any()).optional(),\n \n /** Not in list - SQL: NOT IN (...) | MongoDB: $nin */\n $nin: z.array(z.any()).optional(),\n});\n\n/**\n * Range operator for interval checks (closed interval).\n * SQL: BETWEEN ? AND ? | MongoDB: $gte AND $lte\n */\nexport const RangeOperatorSchema = z.object({\n /** Between (inclusive) - takes [min, max] array */\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n});\n\n// ============================================================================\n// 3.3 String-Specific Operators\n// ============================================================================\n\n/**\n * String pattern matching operators.\n * Note: Case sensitivity should be handled at backend level.\n */\nexport const StringOperatorSchema = z.object({\n /** Contains substring - SQL: LIKE %?% | MongoDB: $regex */\n $contains: z.string().optional(),\n \n /** Starts with prefix - SQL: LIKE ?% | MongoDB: $regex */\n $startsWith: z.string().optional(),\n \n /** Ends with suffix - SQL: LIKE %? | MongoDB: $regex */\n $endsWith: z.string().optional(),\n});\n\n// ============================================================================\n// 3.5 Special Operators\n// ============================================================================\n\n/**\n * Special check operators for null and existence.\n */\nexport const SpecialOperatorSchema = z.object({\n /** Is null check - SQL: IS NULL (true) / IS NOT NULL (false) | MongoDB: field: null */\n $null: z.boolean().optional(),\n \n /** Field exists check (primarily for NoSQL) - MongoDB: $exists */\n $exist: z.boolean().optional(),\n});\n\n// ============================================================================\n// Combined Field Operators\n// ============================================================================\n\n/**\n * All field-level operators combined.\n * These can be applied to individual fields in a filter.\n */\nexport const FieldOperatorsSchema = z.object({\n // Equality\n $eq: z.any().optional(),\n $ne: z.any().optional(),\n \n // Comparison (numeric/date)\n $gt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $gte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lt: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n $lte: z.union([z.number(), z.date(), FieldReferenceSchema]).optional(),\n \n // Set & Range\n $in: z.array(z.any()).optional(),\n $nin: z.array(z.any()).optional(),\n $between: z.tuple([\n z.union([z.number(), z.date(), FieldReferenceSchema]),\n z.union([z.number(), z.date(), FieldReferenceSchema])\n ]).optional(),\n \n // String-specific\n $contains: z.string().optional(),\n $startsWith: z.string().optional(),\n $endsWith: z.string().optional(),\n \n // Special\n $null: z.boolean().optional(),\n $exist: z.boolean().optional(),\n});\n\n// ============================================================================\n// 3.4 Logical Operators & Recursive Filter Structure\n// ============================================================================\n\n/**\n * Recursive filter type that supports:\n * 1. Implicit equality: { field: value }\n * 2. Explicit operators: { field: { $op: value } }\n * 3. Logical combinations: { $and: [...], $or: [...], $not: {...} }\n * 4. Nested relations: { relation: { field: value } }\n */\nexport type FilterCondition = {\n [key: string]: \n | any // Implicit equality: key: value\n | z.infer<typeof FieldOperatorsSchema> // Explicit operators: key: { $op: value }\n | FilterCondition; // Nested relation: key: { nested: ... }\n} & {\n /** Logical AND - combines all conditions that must be true */\n $and?: FilterCondition[];\n \n /** Logical OR - at least one condition must be true */\n $or?: FilterCondition[];\n \n /** Logical NOT - negates the condition */\n $not?: FilterCondition;\n};\n\n/**\n * Zod schema for recursive filter validation.\n * Uses z.lazy() to handle recursive structure.\n */\nexport const FilterConditionSchema: z.ZodType<FilterCondition> = z.lazy(() =>\n z.record(z.string(), z.any()).and(\n z.object({\n $and: z.array(FilterConditionSchema).optional(),\n $or: z.array(FilterConditionSchema).optional(),\n $not: FilterConditionSchema.optional(),\n })\n )\n);\n\n// ============================================================================\n// Query Filter Wrapper\n// ============================================================================\n\n/**\n * Top-level query filter wrapper.\n * This is typically used as the \"where\" clause in a query.\n * \n * @example\n * ```typescript\n * const filter: QueryFilter = {\n * where: {\n * status: \"active\", // Implicit equality\n * age: { $gte: 18 }, // Explicit operator\n * $or: [ // Logical combination\n * { role: \"admin\" },\n * { email: { $contains: \"@company.com\" } }\n * ],\n * profile: { // Nested relation\n * verified: true\n * }\n * }\n * }\n * ```\n */\nexport const QueryFilterSchema = z.object({\n where: FilterConditionSchema.optional(),\n});\n\n// ============================================================================\n// TypeScript Type Exports\n// ============================================================================\n\n/**\n * Type-safe filter operators for use in TypeScript.\n * \n * @example\n * ```typescript\n * type UserFilter = Filter<User>;\n * \n * const filter: UserFilter = {\n * age: { $gte: 18 },\n * email: { $contains: \"@example.com\" }\n * };\n * ```\n */\nexport type Filter<T = any> = {\n [K in keyof T]?: \n | T[K] // Implicit equality\n | {\n $eq?: T[K];\n $ne?: T[K];\n $gt?: T[K] extends number | Date ? T[K] : never;\n $gte?: T[K] extends number | Date ? T[K] : never;\n $lt?: T[K] extends number | Date ? T[K] : never;\n $lte?: T[K] extends number | Date ? T[K] : never;\n $in?: T[K][];\n $nin?: T[K][];\n $between?: T[K] extends number | Date ? [T[K], T[K]] : never;\n $contains?: T[K] extends string ? string : never;\n $startsWith?: T[K] extends string ? string : never;\n $endsWith?: T[K] extends string ? string : never;\n $null?: boolean;\n $exist?: boolean;\n }\n | (T[K] extends object ? Filter<T[K]> : never); // Nested relation\n} & {\n $and?: Filter<T>[];\n $or?: Filter<T>[];\n $not?: Filter<T>;\n};\n\n/**\n * Scalar types supported by the filter system.\n */\nexport type Scalar = string | number | boolean | Date | null;\n\n// Export inferred types\nexport type FieldOperators = z.infer<typeof FieldOperatorsSchema>;\nexport type QueryFilter = z.infer<typeof QueryFilterSchema>;\n\n// ============================================================================\n// Normalization Utilities (Internal Representation)\n// ============================================================================\n\n/**\n * Normalized filter AST structure.\n * This is the internal representation after converting all syntactic sugar\n * to explicit operators.\n * \n * Stage 1: Normalization Pass\n * Input: { age: 18, role: \"admin\" }\n * Output: { $and: [{ age: { $eq: 18 } }, { role: { $eq: \"admin\" } }] }\n * \n * This simplifies adapter implementation by providing a consistent structure.\n */\nexport const NormalizedFilterSchema: z.ZodType<any> = z.lazy(() => \n z.object({\n $and: z.array(\n z.union([\n // Field condition: { field: { $op: value } }\n z.record(z.string(), FieldOperatorsSchema),\n // Nested logical group\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $or: z.array(\n z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ])\n ).optional(),\n \n $not: z.union([\n z.record(z.string(), FieldOperatorsSchema),\n NormalizedFilterSchema,\n ]).optional(),\n })\n);\n\nexport type NormalizedFilter = z.infer<typeof NormalizedFilterSchema>;\n\n// ============================================================================\n// Constants & Metadata\n// ============================================================================\n\n/**\n * All supported operator keys.\n * Useful for validation and parsing.\n */\nexport const FILTER_OPERATORS = [\n // Equality\n '$eq', '$ne',\n // Comparison\n '$gt', '$gte', '$lt', '$lte',\n // Set & Range\n '$in', '$nin', '$between',\n // String\n '$contains', '$startsWith', '$endsWith',\n // Special\n '$null', '$exist',\n] as const;\n\n/**\n * Logical operator keys.\n */\nexport const LOGICAL_OPERATORS = ['$and', '$or', '$not'] as const;\n\n/**\n * All operator keys (field + logical).\n */\nexport const ALL_OPERATORS = [...FILTER_OPERATORS, ...LOGICAL_OPERATORS] as const;\n\nexport type FilterOperatorKey = typeof FILTER_OPERATORS[number];\nexport type LogicalOperatorKey = typeof LOGICAL_OPERATORS[number];\nexport type OperatorKey = typeof ALL_OPERATORS[number];\n","import { z } from 'zod';\nimport { FieldSchema } from './field.zod';\nimport { ValidationRuleSchema } from './validation.zod';\nimport { StateMachineSchema } from '../automation/state-machine.zod';\n\n/**\n * API Operations Enum\n */\nexport const ApiMethod = z.enum([\n 'get', 'list', // Read\n 'create', 'update', 'delete', // Write\n 'upsert', // Idempotent Write\n 'bulk', // Batch operations\n 'aggregate', // Analytics (count, sum)\n 'history', // Audit access\n 'search', // Search access\n 'restore', 'purge', // Trash management\n 'import', 'export', // Data portability\n]);\nexport type ApiMethod = z.infer<typeof ApiMethod>;\n\n/**\n * Capability Flags\n * Defines what system features are enabled for this object.\n * \n * Optimized based on industry standards (Salesforce, ServiceNow):\n * - Added `activities` (Tasks/Events)\n * - Added `mru` (Recent Items)\n * - Added `feeds` (Social/Chatter)\n * - Grouped API permissions\n * \n * @example\n * {\n * trackHistory: true,\n * searchable: true,\n * apiEnabled: true,\n * files: true\n * }\n */\nexport const ObjectCapabilities = z.object({\n /** Enable history tracking (Audit Trail) */\n trackHistory: z.boolean().default(false).describe('Enable field history tracking for audit compliance'),\n \n /** Enable global search indexing */\n searchable: z.boolean().default(true).describe('Index records for global search'),\n \n /** Enable REST/GraphQL API access */\n apiEnabled: z.boolean().default(true).describe('Expose object via automatic APIs'),\n\n /** \n * API Supported Operations\n * Granular control over API exposure.\n */\n apiMethods: z.array(ApiMethod).optional().describe('Whitelist of allowed API operations'),\n \n /** Enable standard attachments/files engine */\n files: z.boolean().default(false).describe('Enable file attachments and document management'),\n \n /** Enable social collaboration (Comments, Mentions, Feeds) */\n feeds: z.boolean().default(false).describe('Enable social feed, comments, and mentions (Chatter-like)'),\n \n /** Enable standard Activity suite (Tasks, Calendars, Events) */\n activities: z.boolean().default(false).describe('Enable standard tasks and events tracking'),\n \n /** Enable Recycle Bin / Soft Delete */\n trash: z.boolean().default(true).describe('Enable soft-delete with restore capability'),\n\n /** Enable \"Recently Viewed\" tracking */\n mru: z.boolean().default(true).describe('Track Most Recently Used (MRU) list for users'),\n \n /** Allow cloning records */\n clone: z.boolean().default(true).describe('Allow record deep cloning'),\n});\n\n/**\n * Schema for database indexes.\n * Enhanced with additional index types and configuration options\n * \n * @example\n * {\n * name: \"idx_account_name\",\n * fields: [\"name\"],\n * type: \"btree\",\n * unique: true\n * }\n */\nexport const IndexSchema = z.object({\n name: z.string().optional().describe('Index name (auto-generated if not provided)'),\n fields: z.array(z.string()).describe('Fields included in the index'),\n type: z.enum(['btree', 'hash', 'gin', 'gist', 'fulltext']).optional().default('btree').describe('Index algorithm type'),\n unique: z.boolean().optional().default(false).describe('Whether the index enforces uniqueness'),\n partial: z.string().optional().describe('Partial index condition (SQL WHERE clause for conditional indexes)'),\n});\n\n/**\n * Search Configuration\n * Defines how this object behaves in search results.\n * \n * @example\n * {\n * fields: [\"name\", \"email\", \"phone\"],\n * displayFields: [\"name\", \"title\"],\n * filters: [\"status = 'active'\"]\n * }\n */\nexport const SearchConfigSchema = z.object({\n fields: z.array(z.string()).describe('Fields to index for full-text search weighting'),\n displayFields: z.array(z.string()).optional().describe('Fields to display in search result cards'),\n filters: z.array(z.string()).optional().describe('Default filters for search results'),\n});\n\n/**\n * Multi-Tenancy Configuration Schema\n * Configures tenant isolation strategy for SaaS applications\n * \n * @example Shared database with tenant_id isolation\n * {\n * enabled: true,\n * strategy: 'shared',\n * tenantField: 'tenant_id',\n * crossTenantAccess: false\n * }\n */\nexport const TenancyConfigSchema = z.object({\n enabled: z.boolean().describe('Enable multi-tenancy for this object'),\n strategy: z.enum(['shared', 'isolated', 'hybrid']).describe('Tenant isolation strategy: shared (single DB, row-level), isolated (separate DB per tenant), hybrid (mix)'),\n tenantField: z.string().default('tenant_id').describe('Field name for tenant identifier'),\n crossTenantAccess: z.boolean().default(false).describe('Allow cross-tenant data access (with explicit permission)'),\n});\n\n/**\n * Soft Delete Configuration Schema\n * Implements recycle bin / trash functionality\n * \n * @example Standard soft delete with cascade\n * {\n * enabled: true,\n * field: 'deleted_at',\n * cascadeDelete: true\n * }\n */\nexport const SoftDeleteConfigSchema = z.object({\n enabled: z.boolean().describe('Enable soft delete (trash/recycle bin)'),\n field: z.string().default('deleted_at').describe('Field name for soft delete timestamp'),\n cascadeDelete: z.boolean().default(false).describe('Cascade soft delete to related records'),\n});\n\n/**\n * Versioning Configuration Schema\n * Implements record versioning and history tracking\n * \n * @example Snapshot versioning with 90-day retention\n * {\n * enabled: true,\n * strategy: 'snapshot',\n * retentionDays: 90,\n * versionField: 'version'\n * }\n */\nexport const VersioningConfigSchema = z.object({\n enabled: z.boolean().describe('Enable record versioning'),\n strategy: z.enum(['snapshot', 'delta', 'event-sourcing']).describe('Versioning strategy: snapshot (full copy), delta (changes only), event-sourcing (event log)'),\n retentionDays: z.number().min(1).optional().describe('Number of days to retain old versions (undefined = infinite)'),\n versionField: z.string().default('version').describe('Field name for version number/timestamp'),\n});\n\n/**\n * Partitioning Strategy Schema\n * Configures table partitioning for performance at scale\n * \n * @example Range partitioning by date (monthly)\n * {\n * enabled: true,\n * strategy: 'range',\n * key: 'created_at',\n * interval: '1 month'\n * }\n */\nexport const PartitioningConfigSchema = z.object({\n enabled: z.boolean().describe('Enable table partitioning'),\n strategy: z.enum(['range', 'hash', 'list']).describe('Partitioning strategy: range (date ranges), hash (consistent hashing), list (predefined values)'),\n key: z.string().describe('Field name to partition by'),\n interval: z.string().optional().describe('Partition interval for range strategy (e.g., \"1 month\", \"1 year\")'),\n}).refine((data) => {\n // If strategy is 'range', interval must be provided\n if (data.strategy === 'range' && !data.interval) {\n return false;\n }\n return true;\n}, {\n message: 'interval is required when strategy is \"range\"',\n});\n\n/**\n * Change Data Capture (CDC) Configuration Schema\n * Enables real-time data streaming to external systems\n * \n * @example Stream all changes to Kafka\n * {\n * enabled: true,\n * events: ['insert', 'update', 'delete'],\n * destination: 'kafka://events.objectstack'\n * }\n */\nexport const CDCConfigSchema = z.object({\n enabled: z.boolean().describe('Enable Change Data Capture'),\n events: z.array(z.enum(['insert', 'update', 'delete'])).describe('Event types to capture'),\n destination: z.string().describe('Destination endpoint (e.g., \"kafka://topic\", \"webhook://url\")'),\n});\n\n/**\n * Base Object Schema Definition\n * \n * The Blueprint of a Business Object.\n * Represents a table, a collection, or a virtual entity.\n * \n * @example\n * ```yaml\n * name: project_task\n * label: Project Task\n * icon: task\n * fields:\n * project:\n * type: lookup\n * reference: project\n * status:\n * type: select\n * options: [todo, in_progress, done]\n * enable:\n * trackHistory: true\n * files: true\n * ```\n */\nconst ObjectSchemaBase = z.object({\n /** \n * Identity & Metadata \n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine unique key (snake_case). Immutable.'),\n label: z.string().optional().describe('Human readable singular label (e.g. \"Account\")'),\n pluralLabel: z.string().optional().describe('Human readable plural label (e.g. \"Accounts\")'),\n description: z.string().optional().describe('Developer documentation / description'),\n icon: z.string().optional().describe('Icon name (Lucide/Material) for UI representation'),\n \n /**\n * Taxonomy & Organization\n */\n tags: z.array(z.string()).optional().describe('Categorization tags (e.g. \"sales\", \"system\", \"reference\")'),\n active: z.boolean().optional().default(true).describe('Is the object active and usable'),\n isSystem: z.boolean().optional().default(false).describe('Is system object (protected from deletion)'),\n abstract: z.boolean().optional().default(false).describe('Is abstract base object (cannot be instantiated)'),\n\n /** \n * Storage & Virtualization \n */\n datasource: z.string().optional().default('default').describe('Target Datasource ID. \"default\" is the primary DB.'),\n tableName: z.string().optional().describe('Physical table/collection name in the target datasource'),\n \n /** \n * Data Model \n */\n fields: z.record(z.string().regex(/^[a-z_][a-z0-9_]*$/, {\n message: 'Field names must be lowercase snake_case (e.g., \"first_name\", \"company\", \"annual_revenue\")',\n }), FieldSchema).describe('Field definitions map. Keys must be snake_case identifiers.'),\n indexes: z.array(IndexSchema).optional().describe('Database performance indexes'),\n \n /**\n * Advanced Data Management\n */\n \n // Multi-tenancy configuration\n tenancy: TenancyConfigSchema.optional().describe('Multi-tenancy configuration for SaaS applications'),\n \n // Soft delete configuration\n softDelete: SoftDeleteConfigSchema.optional().describe('Soft delete (trash/recycle bin) configuration'),\n \n // Versioning configuration\n versioning: VersioningConfigSchema.optional().describe('Record versioning and history tracking configuration'),\n \n // Partitioning strategy\n partitioning: PartitioningConfigSchema.optional().describe('Table partitioning configuration for performance'),\n \n // Change Data Capture\n cdc: CDCConfigSchema.optional().describe('Change Data Capture (CDC) configuration for real-time data streaming'),\n \n /**\n * Logic & Validation (Co-located)\n * Best Practice: Define rules close to data.\n */\n validations: z.array(ValidationRuleSchema).optional().describe('Object-level validation rules'),\n \n /**\n * State Machine(s)\n * Supports a single machine (legacy) or a named record of machines.\n * Multiple machines allow parallel lifecycles (e.g., status + payment_status + approval_status).\n * \n * @example Single: stateMachine: { id: 'lifecycle', initial: 'draft', states: {...} }\n * @example Multiple: stateMachines: { lifecycle: {...}, payment: {...}, approval: {...} }\n */\n stateMachine: StateMachineSchema.optional().describe('Single state machine for record lifecycle (shorthand)'),\n stateMachines: z.record(z.string(), StateMachineSchema).optional().describe('Named state machines for parallel lifecycles (e.g., status, payment, approval)'),\n\n /** \n * Display & UI Hints (Data-Layer)\n */\n titleFormat: z.string().optional().describe('Title expression (e.g. \"{name} - {code}\"). Overrides nameField.'),\n compactLayout: z.array(z.string()).optional().describe('Primary fields for hover/cards/lookups'),\n \n /** \n * Search Engine Config \n */\n search: SearchConfigSchema.optional().describe('Search engine configuration'),\n \n /** \n * System Capabilities \n */\n enable: ObjectCapabilities.optional().describe('Enabled system features modules'),\n});\n\n/**\n * Enhanced ObjectSchema with Factory\n */\nexport const ObjectSchema = Object.assign(ObjectSchemaBase, {\n create: <T extends z.input<typeof ObjectSchemaBase>>(config: T) => config,\n});\n\nexport type ServiceObject = z.infer<typeof ObjectSchemaBase>;\nexport type ObjectCapabilities = z.infer<typeof ObjectCapabilities>;\nexport type ObjectIndex = z.infer<typeof IndexSchema>;\nexport type TenancyConfig = z.infer<typeof TenancyConfigSchema>;\nexport type SoftDeleteConfig = z.infer<typeof SoftDeleteConfigSchema>;\nexport type VersioningConfig = z.infer<typeof VersioningConfigSchema>;\nexport type PartitioningConfig = z.infer<typeof PartitioningConfigSchema>;\nexport type CDCConfig = z.infer<typeof CDCConfigSchema>;\n\n// =================================================================\n// Object Ownership Model\n// =================================================================\n\n/**\n * How a package relates to an object it references.\n * \n * - `own`: This package is the original author/owner of the object.\n * Only one package may own a given object name. The owner defines\n * the base schema (table name, primary key, core fields).\n * \n * - `extend`: This package adds fields, views, or actions to an\n * existing object owned by another package. Multiple packages\n * may extend the same object. Extensions are merged at boot time.\n * \n * Follows Salesforce/ServiceNow patterns:\n * object name = database table name, globally unique, no namespace prefix.\n */\nexport const ObjectOwnershipEnum = z.enum(['own', 'extend']);\nexport type ObjectOwnership = z.infer<typeof ObjectOwnershipEnum>;\n\n/**\n * Object Extension Entry — used in `objectExtensions` array.\n * Declares fields/config to merge into an existing object owned by another package.\n * \n * @example\n * ```ts\n * objectExtensions: [{\n * extend: 'contact', // target object FQN\n * fields: { sales_stage: Field.select([...]) },\n * }]\n * ```\n */\nexport const ObjectExtensionSchema = z.object({\n /** The target object name (FQN) to extend */\n extend: z.string().describe('Target object name (FQN) to extend'),\n \n /** Fields to merge into the target object (additive) */\n fields: z.record(z.string(), FieldSchema).optional().describe('Fields to add/override'),\n \n /** Override label */\n label: z.string().optional(),\n \n /** Override plural label */\n pluralLabel: z.string().optional(),\n \n /** Override description */\n description: z.string().optional(),\n \n /** Additional validation rules to add */\n validations: z.array(ValidationRuleSchema).optional(),\n \n /** Additional indexes to add */\n indexes: z.array(IndexSchema).optional(),\n \n /** Merge priority. Higher number applied later (wins on conflict). Default: 200 */\n priority: z.number().int().min(0).max(999).default(200).describe('Merge priority (higher = applied later)'),\n});\n\nexport type ObjectExtension = z.infer<typeof ObjectExtensionSchema>;\n","import { z } from 'zod';\nimport { SystemIdentifierSchema } from '../shared/identifiers.zod';\nimport { EncryptionConfigSchema } from '../system/encryption.zod';\nimport { MaskingRuleSchema } from '../system/masking.zod';\n\n/**\n * Field Type Enum\n */\nexport const FieldType = z.enum([\n // Core Text\n 'text', 'textarea', 'email', 'url', 'phone', 'password',\n // Rich Content\n 'markdown', 'html', 'richtext',\n // Numbers\n 'number', 'currency', 'percent', \n // Date & Time\n 'date', 'datetime', 'time',\n // Logic\n 'boolean', 'toggle', // Toggle is a distinct UI from checkbox\n // Selection\n 'select', // Single select dropdown\n 'multiselect', // Multi select (often tags)\n 'radio', // Radio group\n 'checkboxes', // Checkbox group\n // Relational\n 'lookup', 'master_detail', // Dynamic reference\n 'tree', // Hierarchical reference\n // Media\n 'image', 'file', 'avatar', 'video', 'audio',\n // Calculated / System\n 'formula', 'summary', 'autonumber',\n // Enhanced Types\n 'location', // GPS coordinates\n 'address', // Structured address\n 'code', // Code editor (JSON/SQL/JS)\n 'json', // Structured JSON data\n 'color', // Color picker\n 'rating', // Star rating\n 'slider', // Numeric slider\n 'signature', // Digital signature\n 'qrcode', // QR code / Barcode\n 'progress', // Progress bar\n 'tags', // Simple tag list\n // AI/ML Types\n 'vector', // Vector embeddings for AI/ML (semantic search, RAG)\n]);\n\nexport type FieldType = z.infer<typeof FieldType>;\n\n/**\n * Select Option Schema\n * \n * Defines option values for select/picklist fields.\n * \n * **CRITICAL RULE**: The `value` field is a machine identifier that gets stored in the database.\n * It MUST be lowercase to avoid case-sensitivity issues in queries and comparisons.\n * \n * @example Good\n * { label: 'New', value: 'new' }\n * { label: 'In Progress', value: 'in_progress' }\n * { label: 'Closed Won', value: 'closed_won' }\n * \n * @example Bad (will be rejected)\n * { label: 'New', value: 'New' } // uppercase\n * { label: 'In Progress', value: 'In Progress' } // spaces and uppercase\n * { label: 'Closed Won', value: 'Closed_Won' } // mixed case\n */\nexport const SelectOptionSchema = z.object({\n label: z.string().describe('Display label (human-readable, any case allowed)'),\n value: SystemIdentifierSchema.describe('Stored value (lowercase machine identifier)'),\n color: z.string().optional().describe('Color code for badges/charts'),\n default: z.boolean().optional().describe('Is default option'),\n});\n\n/**\n * Location Coordinates Schema\n * GPS coordinates for location field type\n */\nexport const LocationCoordinatesSchema = z.object({\n latitude: z.number().min(-90).max(90).describe('Latitude coordinate'),\n longitude: z.number().min(-180).max(180).describe('Longitude coordinate'),\n altitude: z.number().optional().describe('Altitude in meters'),\n accuracy: z.number().optional().describe('Accuracy in meters'),\n});\n\n/**\n * Currency Configuration Schema\n * Configuration for currency field type supporting multi-currency\n * \n * Note: Currency codes are validated by length only (3 characters) to support:\n * - Standard ISO 4217 codes (USD, EUR, CNY, etc.)\n * - Cryptocurrency codes (BTC, ETH, etc.)\n * - Custom business-specific codes\n * Stricter validation can be implemented at the application layer based on business requirements.\n */\nexport const CurrencyConfigSchema = z.object({\n precision: z.number().int().min(0).max(10).default(2).describe('Decimal precision (default: 2)'),\n currencyMode: z.enum(['dynamic', 'fixed']).default('dynamic').describe('Currency mode: dynamic (user selectable) or fixed (single currency)'),\n defaultCurrency: z.string().length(3).default('CNY').describe('Default or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)'),\n});\n\n/**\n * Currency Value Schema\n * Runtime value structure for currency fields\n * \n * Note: Currency codes are validated by length only (3 characters) to support flexibility.\n * See CurrencyConfigSchema for details on currency code validation strategy.\n */\nexport const CurrencyValueSchema = z.object({\n value: z.number().describe('Monetary amount'),\n currency: z.string().length(3).describe('Currency code (ISO 4217)'),\n});\n\n/**\n * Address Schema\n * Structured address for address field type\n */\nexport const AddressSchema = z.object({\n street: z.string().optional().describe('Street address'),\n city: z.string().optional().describe('City name'),\n state: z.string().optional().describe('State/Province'),\n postalCode: z.string().optional().describe('Postal/ZIP code'),\n country: z.string().optional().describe('Country name or code'),\n countryCode: z.string().optional().describe('ISO country code (e.g., US, GB)'),\n formatted: z.string().optional().describe('Formatted address string'),\n});\n\n/**\n * Vector Configuration Schema\n * Configuration for vector field type supporting AI/ML embeddings\n * \n * Vector fields store numerical embeddings for semantic search, similarity matching,\n * and Retrieval-Augmented Generation (RAG) workflows.\n * \n * @example\n * // Text embeddings for semantic search\n * {\n * dimensions: 1536, // OpenAI text-embedding-ada-002\n * distanceMetric: 'cosine',\n * indexed: true\n * }\n * \n * @example\n * // Image embeddings with normalization\n * {\n * dimensions: 512, // ResNet-50\n * distanceMetric: 'euclidean',\n * normalized: true,\n * indexed: true\n * }\n */\nexport const VectorConfigSchema = z.object({\n dimensions: z.number().int().min(1).max(10000).describe('Vector dimensionality (e.g., 1536 for OpenAI embeddings)'),\n distanceMetric: z.enum(['cosine', 'euclidean', 'dotProduct', 'manhattan']).default('cosine').describe('Distance/similarity metric for vector search'),\n normalized: z.boolean().default(false).describe('Whether vectors are normalized (unit length)'),\n indexed: z.boolean().default(true).describe('Whether to create a vector index for fast similarity search'),\n indexType: z.enum(['hnsw', 'ivfflat', 'flat']).optional().describe('Vector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)'),\n});\n\n/**\n * File Attachment Configuration Schema\n * Configuration for file and attachment field types\n * \n * Provides comprehensive file upload capabilities with:\n * - File type restrictions (allowed/blocked)\n * - File size limits (min/max)\n * - Virus scanning integration\n * - Storage provider integration\n * - Image-specific features (dimensions, thumbnails)\n * \n * @example Basic file upload with size limit\n * {\n * maxSize: 10485760, // 10MB\n * allowedTypes: ['.pdf', '.docx', '.xlsx'],\n * virusScan: true\n * }\n * \n * @example Image upload with validation\n * {\n * maxSize: 5242880, // 5MB\n * allowedTypes: ['.jpg', '.jpeg', '.png', '.webp'],\n * imageValidation: {\n * maxWidth: 4096,\n * maxHeight: 4096,\n * generateThumbnails: true\n * }\n * }\n */\nexport const FileAttachmentConfigSchema = z.object({\n /** File Size Limits */\n minSize: z.number().min(0).optional().describe('Minimum file size in bytes'),\n maxSize: z.number().min(1).optional().describe('Maximum file size in bytes (e.g., 10485760 = 10MB)'),\n \n /** File Type Restrictions */\n allowedTypes: z.array(z.string()).optional().describe('Allowed file extensions (e.g., [\".pdf\", \".docx\", \".jpg\"])'),\n blockedTypes: z.array(z.string()).optional().describe('Blocked file extensions (e.g., [\".exe\", \".bat\", \".sh\"])'),\n allowedMimeTypes: z.array(z.string()).optional().describe('Allowed MIME types (e.g., [\"image/jpeg\", \"application/pdf\"])'),\n blockedMimeTypes: z.array(z.string()).optional().describe('Blocked MIME types'),\n \n /** Virus Scanning */\n virusScan: z.boolean().default(false).describe('Enable virus scanning for uploaded files'),\n virusScanProvider: z.enum(['clamav', 'virustotal', 'metadefender', 'custom']).optional().describe('Virus scanning service provider'),\n virusScanOnUpload: z.boolean().default(true).describe('Scan files immediately on upload'),\n quarantineOnThreat: z.boolean().default(true).describe('Quarantine files if threat detected'),\n \n /** Storage Configuration */\n storageProvider: z.string().optional().describe('Object storage provider name (references ObjectStorageConfig)'),\n storageBucket: z.string().optional().describe('Target bucket name'),\n storagePrefix: z.string().optional().describe('Storage path prefix (e.g., \"uploads/documents/\")'),\n \n /** Image-Specific Validation */\n imageValidation: z.object({\n minWidth: z.number().min(1).optional().describe('Minimum image width in pixels'),\n maxWidth: z.number().min(1).optional().describe('Maximum image width in pixels'),\n minHeight: z.number().min(1).optional().describe('Minimum image height in pixels'),\n maxHeight: z.number().min(1).optional().describe('Maximum image height in pixels'),\n aspectRatio: z.string().optional().describe('Required aspect ratio (e.g., \"16:9\", \"1:1\")'),\n generateThumbnails: z.boolean().default(false).describe('Auto-generate thumbnails'),\n thumbnailSizes: z.array(z.object({\n name: z.string().describe('Thumbnail variant name (e.g., \"small\", \"medium\", \"large\")'),\n width: z.number().min(1).describe('Thumbnail width in pixels'),\n height: z.number().min(1).describe('Thumbnail height in pixels'),\n crop: z.boolean().default(false).describe('Crop to exact dimensions'),\n })).optional().describe('Thumbnail size configurations'),\n preserveMetadata: z.boolean().default(false).describe('Preserve EXIF metadata'),\n autoRotate: z.boolean().default(true).describe('Auto-rotate based on EXIF orientation'),\n }).optional().describe('Image-specific validation rules'),\n \n /** Upload Behavior */\n allowMultiple: z.boolean().default(false).describe('Allow multiple file uploads (overrides field.multiple)'),\n allowReplace: z.boolean().default(true).describe('Allow replacing existing files'),\n allowDelete: z.boolean().default(true).describe('Allow deleting uploaded files'),\n requireUpload: z.boolean().default(false).describe('Require at least one file when field is required'),\n \n /** Metadata Extraction */\n extractMetadata: z.boolean().default(true).describe('Extract file metadata (name, size, type, etc.)'),\n extractText: z.boolean().default(false).describe('Extract text content from documents (OCR/parsing)'),\n \n /** Versioning */\n versioningEnabled: z.boolean().default(false).describe('Keep previous versions of replaced files'),\n maxVersions: z.number().min(1).optional().describe('Maximum number of versions to retain'),\n \n /** Access Control */\n publicRead: z.boolean().default(false).describe('Allow public read access to uploaded files'),\n presignedUrlExpiry: z.number().min(60).max(604800).default(3600).describe('Presigned URL expiration in seconds (default: 1 hour)'),\n}).refine((data) => {\n // Validate minSize is less than or equal to maxSize\n if (data.minSize !== undefined && data.maxSize !== undefined && data.minSize > data.maxSize) {\n return false;\n }\n return true;\n}, {\n message: 'minSize must be less than or equal to maxSize',\n}).refine((data) => {\n // Validate virusScanProvider requires virusScan to be enabled\n if (data.virusScanProvider !== undefined && data.virusScan !== true) {\n return false;\n }\n return true;\n}, {\n message: 'virusScanProvider requires virusScan to be enabled',\n});\n\n/**\n * Data Quality Rules Schema\n * Defines data quality validation and monitoring for fields\n * \n * @example Unique SSN field with completeness requirement\n * {\n * uniqueness: true,\n * completeness: 0.95, // 95% of records must have this field\n * accuracy: {\n * source: 'government_db',\n * threshold: 0.98\n * }\n * }\n */\nexport const DataQualityRulesSchema = z.object({\n /** Enforce uniqueness constraint */\n uniqueness: z.boolean().default(false).describe('Enforce unique values across all records'),\n \n /** Completeness ratio (0-1) indicating minimum percentage of non-null values */\n completeness: z.number().min(0).max(1).default(0).describe('Minimum ratio of non-null values (0-1, default: 0 = no requirement)'),\n \n /** Accuracy validation against authoritative source */\n accuracy: z.object({\n source: z.string().describe('Reference data source for validation (e.g., \"api.verify.com\", \"master_data\")'),\n threshold: z.number().min(0).max(1).describe('Minimum accuracy threshold (0-1, e.g., 0.95 = 95% match required)'),\n }).optional().describe('Accuracy validation configuration'),\n});\n\n/**\n * Computed Field Caching Schema\n * Configuration for caching computed/formula field results\n * \n * @example Cache product price with 1-hour TTL, invalidate on inventory changes\n * {\n * enabled: true,\n * ttl: 3600,\n * invalidateOn: ['inventory.quantity', 'pricing.discount']\n * }\n */\nexport const ComputedFieldCacheSchema = z.object({\n /** Enable caching for this computed field */\n enabled: z.boolean().describe('Enable caching for computed field results'),\n \n /** Time-to-live in seconds */\n ttl: z.number().min(0).describe('Cache TTL in seconds (0 = no expiration)'),\n \n /** Array of field paths that trigger cache invalidation when changed */\n invalidateOn: z.array(z.string()).describe('Field paths that invalidate cache (e.g., [\"inventory.quantity\", \"pricing.base_price\"])'),\n});\n\n/**\n * Field Schema - Best Practice Enterprise Pattern\n */\n/**\n * Field Definition Schema\n * Defines the properties, type, and behavior of a single field (column) on an object.\n * \n * @example Lookup Field\n * {\n * name: \"account_id\",\n * label: \"Account\",\n * type: \"lookup\",\n * reference: \"accounts\",\n * required: true\n * }\n * \n * @example Select Field\n * {\n * name: \"status\",\n * label: \"Status\",\n * type: \"select\",\n * options: [\n * { label: \"Open\", value: \"open\" },\n * { label: \"Closed\", value: \"closed\" }\n * ],\n * defaultValue: \"open\"\n * }\n */\nexport const FieldSchema = z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Machine name (snake_case)').optional(),\n label: z.string().optional().describe('Human readable label'),\n type: FieldType.describe('Field Data Type'),\n description: z.string().optional().describe('Tooltip/Help text'),\n format: z.string().optional().describe('Format string (e.g. email, phone)'),\n\n /** Database Constraints */\n required: z.boolean().default(false).describe('Is required'),\n searchable: z.boolean().default(false).describe('Is searchable'),\n multiple: z.boolean().default(false).describe('Allow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image.'),\n unique: z.boolean().default(false).describe('Is unique constraint'),\n defaultValue: z.any().optional().describe('Default value'),\n \n /** Text/String Constraints */\n maxLength: z.number().optional().describe('Max character length'),\n minLength: z.number().optional().describe('Min character length'),\n \n /** Number Constraints */\n precision: z.number().optional().describe('Total digits'),\n scale: z.number().optional().describe('Decimal places'),\n min: z.number().optional().describe('Minimum value'),\n max: z.number().optional().describe('Maximum value'),\n\n /** Selection Options */\n options: z.array(SelectOptionSchema).optional().describe('Static options for select/multiselect'),\n\n /** Relationship Config */\n reference: z.string().optional().describe('Target Object Name'),\n referenceFilters: z.array(z.string()).optional().describe('Filters applied to lookup dialogs (e.g. \"active = true\")'),\n writeRequiresMasterRead: z.boolean().optional().describe('If true, user needs read access to master record to edit this field'),\n deleteBehavior: z.enum(['set_null', 'cascade', 'restrict']).optional().default('set_null').describe('What happens if referenced record is deleted'),\n\n /** Calculation */\n expression: z.string().optional().describe('Formula expression'),\n formula: z.string().optional().describe('Deprecated: Use expression'),\n summaryOperations: z.object({\n object: z.string(),\n field: z.string(),\n function: z.enum(['count', 'sum', 'min', 'max', 'avg'])\n }).optional().describe('Roll-up summary definition'),\n\n /** Enhanced Field Type Configurations */\n // Code field config\n language: z.string().optional().describe('Programming language for syntax highlighting (e.g., javascript, python, sql)'),\n theme: z.string().optional().describe('Code editor theme (e.g., dark, light, monokai)'),\n lineNumbers: z.boolean().optional().describe('Show line numbers in code editor'),\n \n // Rating field config\n maxRating: z.number().optional().describe('Maximum rating value (default: 5)'),\n allowHalf: z.boolean().optional().describe('Allow half-star ratings'),\n \n // Location field config\n displayMap: z.boolean().optional().describe('Display map widget for location field'),\n allowGeocoding: z.boolean().optional().describe('Allow address-to-coordinate conversion'),\n \n // Address field config\n addressFormat: z.enum(['us', 'uk', 'international']).optional().describe('Address format template'),\n \n // Color field config\n colorFormat: z.enum(['hex', 'rgb', 'rgba', 'hsl']).optional().describe('Color value format'),\n allowAlpha: z.boolean().optional().describe('Allow transparency/alpha channel'),\n presetColors: z.array(z.string()).optional().describe('Preset color options'),\n \n // Slider field config\n step: z.number().optional().describe('Step increment for slider (default: 1)'),\n showValue: z.boolean().optional().describe('Display current value on slider'),\n marks: z.record(z.string(), z.string()).optional().describe('Custom marks/labels at specific values (e.g., {0: \"Low\", 50: \"Medium\", 100: \"High\"})'),\n \n // QR Code / Barcode field config\n // Note: qrErrorCorrection is only applicable when barcodeFormat='qr'\n // Runtime validation should enforce this constraint\n barcodeFormat: z.enum(['qr', 'ean13', 'ean8', 'code128', 'code39', 'upca', 'upce']).optional().describe('Barcode format type'),\n qrErrorCorrection: z.enum(['L', 'M', 'Q', 'H']).optional().describe('QR code error correction level (L=7%, M=15%, Q=25%, H=30%). Only applicable when barcodeFormat is \"qr\"'),\n displayValue: z.boolean().optional().describe('Display human-readable value below barcode/QR code'),\n allowScanning: z.boolean().optional().describe('Enable camera scanning for barcode/QR code input'),\n\n // Currency field config\n currencyConfig: CurrencyConfigSchema.optional().describe('Configuration for currency field type'),\n\n // Vector field config\n vectorConfig: VectorConfigSchema.optional().describe('Configuration for vector field type (AI/ML embeddings)'),\n\n // File attachment field config\n fileAttachmentConfig: FileAttachmentConfigSchema.optional().describe('Configuration for file and attachment field types'),\n\n /** Enhanced Security & Compliance */\n // Encryption configuration\n encryptionConfig: EncryptionConfigSchema.optional().describe('Field-level encryption configuration for sensitive data (GDPR/HIPAA/PCI-DSS)'),\n \n // Data masking rules\n maskingRule: MaskingRuleSchema.optional().describe('Data masking rules for PII protection'),\n \n // Audit trail\n auditTrail: z.boolean().default(false).describe('Enable detailed audit trail for this field (tracks all changes with user and timestamp)'),\n \n /** Field Dependencies & Relationships */\n // Field dependencies\n dependencies: z.array(z.string()).optional().describe('Array of field names that this field depends on (for formulas, visibility rules, etc.)'),\n \n /** Computed Field Optimization */\n // Computed field caching\n cached: ComputedFieldCacheSchema.optional().describe('Caching configuration for computed/formula fields'),\n \n /** Data Quality & Governance */\n // Data quality rules\n dataQuality: DataQualityRulesSchema.optional().describe('Data quality validation and monitoring rules'),\n\n /** Security & Visibility */\n hidden: z.boolean().default(false).describe('Hidden from default UI'),\n readonly: z.boolean().default(false).describe('Read-only in UI'),\n encryption: z.boolean().default(false).describe('Deprecated: Use encryptionConfig for enhanced encryption features. Simple flag for backward compatibility.'),\n \n /** Indexing */\n index: z.boolean().default(false).describe('Create standard database index'),\n externalId: z.boolean().default(false).describe('Is external ID for upsert operations'),\n});\n\nexport type Field = z.infer<typeof FieldSchema>;\nexport type SelectOption = z.infer<typeof SelectOptionSchema>;\nexport type LocationCoordinates = z.infer<typeof LocationCoordinatesSchema>;\nexport type Address = z.infer<typeof AddressSchema>;\nexport type CurrencyConfig = z.infer<typeof CurrencyConfigSchema>;\nexport type CurrencyValue = z.infer<typeof CurrencyValueSchema>;\nexport type VectorConfig = z.infer<typeof VectorConfigSchema>;\nexport type FileAttachmentConfig = z.infer<typeof FileAttachmentConfigSchema>;\nexport type DataQualityRules = z.infer<typeof DataQualityRulesSchema>;\nexport type ComputedFieldCache = z.infer<typeof ComputedFieldCacheSchema>;\n\n/**\n * Field Factory Helper\n */\nexport type FieldInput = Omit<Partial<Field>, 'type'>;\n\nexport const Field = {\n text: (config: FieldInput = {}) => ({ type: 'text', ...config } as const),\n textarea: (config: FieldInput = {}) => ({ type: 'textarea', ...config } as const),\n number: (config: FieldInput = {}) => ({ type: 'number', ...config } as const),\n boolean: (config: FieldInput = {}) => ({ type: 'boolean', ...config } as const),\n date: (config: FieldInput = {}) => ({ type: 'date', ...config } as const),\n datetime: (config: FieldInput = {}) => ({ type: 'datetime', ...config } as const),\n currency: (config: FieldInput = {}) => ({ type: 'currency', ...config } as const),\n percent: (config: FieldInput = {}) => ({ type: 'percent', ...config } as const),\n url: (config: FieldInput = {}) => ({ type: 'url', ...config } as const),\n email: (config: FieldInput = {}) => ({ type: 'email', ...config } as const),\n phone: (config: FieldInput = {}) => ({ type: 'phone', ...config } as const),\n image: (config: FieldInput = {}) => ({ type: 'image', ...config } as const),\n file: (config: FieldInput = {}) => ({ type: 'file', ...config } as const),\n avatar: (config: FieldInput = {}) => ({ type: 'avatar', ...config } as const),\n formula: (config: FieldInput = {}) => ({ type: 'formula', ...config } as const),\n summary: (config: FieldInput = {}) => ({ type: 'summary', ...config } as const),\n autonumber: (config: FieldInput = {}) => ({ type: 'autonumber', ...config } as const),\n markdown: (config: FieldInput = {}) => ({ type: 'markdown', ...config } as const),\n html: (config: FieldInput = {}) => ({ type: 'html', ...config } as const),\n password: (config: FieldInput = {}) => ({ type: 'password', ...config } as const),\n \n /**\n * Select field helper with backward-compatible API\n * \n * Automatically converts option values to lowercase to enforce naming conventions.\n * \n * @example Old API (array first) - auto-converts to lowercase\n * Field.select(['High', 'Low'], { label: 'Priority' })\n * // Results in: [{ label: 'High', value: 'high' }, { label: 'Low', value: 'low' }]\n * \n * @example New API (config object) - enforces lowercase\n * Field.select({ options: [{label: 'High', value: 'high'}], label: 'Priority' })\n * \n * @example Multi-word values - converts to snake_case\n * Field.select(['In Progress', 'Closed Won'], { label: 'Status' })\n * // Results in: [{ label: 'In Progress', value: 'in_progress' }, { label: 'Closed Won', value: 'closed_won' }]\n */\n select: (optionsOrConfig: SelectOption[] | string[] | FieldInput & { options: SelectOption[] | string[] }, config?: FieldInput) => {\n // Helper function to convert string to lowercase snake_case\n const toSnakeCase = (str: string): string => {\n return str\n .toLowerCase()\n .replace(/\\s+/g, '_') // Replace spaces with underscores\n .replace(/[^a-z0-9_]/g, ''); // Remove invalid characters (keeping underscores only)\n };\n\n // Support both old and new signatures:\n // Old: Field.select(['a', 'b'], { label: 'X' })\n // New: Field.select({ options: [{label: 'A', value: 'a'}], label: 'X' })\n let options: SelectOption[];\n let finalConfig: FieldInput;\n \n if (Array.isArray(optionsOrConfig)) {\n // Old signature: array as first param\n options = optionsOrConfig.map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n finalConfig = config || {};\n } else {\n // New signature: config object with options\n options = (optionsOrConfig.options || []).map(o => \n typeof o === 'string' \n ? { label: o, value: toSnakeCase(o) } // Auto-convert string to snake_case\n : { ...o, value: o.value.toLowerCase() } // Ensure value is lowercase\n );\n // Remove options from config to avoid confusion\n const { options: _, ...restConfig } = optionsOrConfig;\n finalConfig = restConfig;\n }\n \n return { type: 'select', options, ...finalConfig } as const;\n },\n\n \n lookup: (reference: string, config: FieldInput = {}) => ({ \n type: 'lookup', \n reference, \n ...config \n } as const),\n \n masterDetail: (reference: string, config: FieldInput = {}) => ({ \n type: 'master_detail', \n reference, \n ...config \n } as const),\n\n // Enhanced Field Type Helpers\n location: (config: FieldInput = {}) => ({ \n type: 'location', \n ...config \n } as const),\n \n address: (config: FieldInput = {}) => ({ \n type: 'address', \n ...config \n } as const),\n \n richtext: (config: FieldInput = {}) => ({ \n type: 'richtext', \n ...config \n } as const),\n \n code: (language?: string, config: FieldInput = {}) => ({ \n type: 'code', \n language,\n ...config \n } as const),\n \n color: (config: FieldInput = {}) => ({ \n type: 'color', \n ...config \n } as const),\n \n rating: (maxRating: number = 5, config: FieldInput = {}) => ({ \n type: 'rating', \n maxRating,\n ...config \n } as const),\n \n signature: (config: FieldInput = {}) => ({ \n type: 'signature', \n ...config \n } as const),\n \n slider: (config: FieldInput = {}) => ({ \n type: 'slider', \n ...config \n } as const),\n \n qrcode: (config: FieldInput = {}) => ({ \n type: 'qrcode', \n ...config \n } as const),\n \n vector: (dimensions: number, config: FieldInput = {}) => ({ \n type: 'vector', \n vectorConfig: {\n dimensions,\n distanceMetric: 'cosine' as const,\n normalized: false,\n indexed: true,\n ...config.vectorConfig\n },\n ...config \n } as const),\n};\n","import { z } from 'zod';\n\n/**\n * System Identifier Schema\n * \n * Universal naming convention for all machine identifiers (API Names) in ObjectStack.\n * Enforces lowercase with underscores or dots to ensure:\n * - Cross-platform compatibility (case-insensitive filesystems)\n * - URL-friendliness (no encoding needed)\n * - Database consistency (no collation issues)\n * - Security (no case-sensitivity bugs in permission checks)\n * \n * **Applies to all metadata that acts as a machine identifier:**\n * - Object names (tables/collections)\n * - Field names\n * - Role names\n * - Permission set names\n * - Action/trigger names\n * - Event keys\n * - App IDs\n * - Menu/page IDs\n * - Select option values\n * - Workflow names\n * - Webhook names\n * \n * **Naming Convention Summary:**\n * | Type | Pattern | Example |\n * |------|---------|---------|\n * | Machine ID | snake_case | `crm_account`, `btn_submit`, `role_admin` |\n * | Event keys | dot.notation | `user.login`, `order.created` |\n * | Labels | Any case | `Client Account`, `Submit Form` |\n * \n * @example Valid identifiers\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * - 'order.created' (for events)\n * - 'api_v2_endpoint'\n * \n * @example Invalid identifiers (will be rejected)\n * - 'Account' (uppercase)\n * - 'CrmAccount' (camelCase)\n * - 'crm-account' (kebab-case - use underscore instead)\n * - 'user profile' (spaces)\n */\nexport const SystemIdentifierSchema = z\n .string()\n .min(2, { message: 'System identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'System identifier must be lowercase, starting with a letter, and may contain letters, numbers, underscores, or dots (e.g., \"user_profile\" or \"order.created\")',\n })\n .describe('System identifier (lowercase with underscores or dots)');\n\n/**\n * Strict Snake Case Identifier\n * \n * More restrictive than SystemIdentifierSchema - only allows underscores (no dots).\n * Use this for identifiers that should NOT contain dots (e.g., database table/column names).\n * \n * @example Valid\n * - 'account'\n * - 'crm_account'\n * - 'user_profile'\n * \n * @example Invalid\n * - 'user.profile' (dots not allowed)\n * - 'UserProfile' (uppercase)\n */\nexport const SnakeCaseIdentifierSchema = z\n .string()\n .min(2, { message: 'Identifier must be at least 2 characters' })\n .regex(/^[a-z][a-z0-9_]*$/, {\n message:\n 'Identifier must be lowercase snake_case, starting with a letter, and may contain only letters, numbers, and underscores (e.g., \"user_profile\")',\n })\n .describe('Snake case identifier (lowercase with underscores only)');\n\n/**\n * Event Name Identifier\n * \n * Specialized identifier for event names that encourages dot notation.\n * Used in event-driven systems, message queues, and webhooks.\n * \n * Pattern: `namespace.action` or `entity.event_type`\n * \n * @example Valid\n * - 'user.created'\n * - 'order.paid'\n * - 'user.login_success'\n * - 'alarm.high_cpu'\n * \n * @example Invalid\n * - 'UserCreated' (camelCase)\n * - 'user_created' (should use dots for namespacing)\n */\nexport const EventNameSchema = z\n .string()\n .min(3, { message: 'Event name must be at least 3 characters' })\n .regex(/^[a-z][a-z0-9_.]*$/, {\n message:\n 'Event name must be lowercase with dots for namespacing (e.g., \"user.created\", \"order.paid\")',\n })\n .describe('Event name (lowercase with dot notation for namespacing)');\n\n/**\n * Type Exports\n */\nexport type SystemIdentifier = z.infer<typeof SystemIdentifierSchema>;\nexport type SnakeCaseIdentifier = z.infer<typeof SnakeCaseIdentifierSchema>;\nexport type EventName = z.infer<typeof EventNameSchema>;\n","import { z } from 'zod';\n\n/**\n * Field-level encryption protocol\n * GDPR/HIPAA/PCI-DSS compliant\n */\nexport const EncryptionAlgorithmSchema = z.enum([\n 'aes-256-gcm',\n 'aes-256-cbc',\n 'chacha20-poly1305',\n]);\n\nexport type EncryptionAlgorithm = z.infer<typeof EncryptionAlgorithmSchema>;\n\nexport const KeyManagementProviderSchema = z.enum([\n 'local',\n 'aws-kms',\n 'azure-key-vault',\n 'gcp-kms',\n 'hashicorp-vault',\n]);\n\nexport type KeyManagementProvider = z.infer<typeof KeyManagementProviderSchema>;\n\nexport const KeyRotationPolicySchema = z.object({\n enabled: z.boolean().default(false),\n frequencyDays: z.number().min(1).default(90),\n retainOldVersions: z.number().default(3),\n autoRotate: z.boolean().default(true),\n});\n\nexport type KeyRotationPolicy = z.infer<typeof KeyRotationPolicySchema>;\n\nexport const EncryptionConfigSchema = z.object({\n enabled: z.boolean().default(false),\n algorithm: EncryptionAlgorithmSchema.default('aes-256-gcm'),\n keyManagement: z.object({\n provider: KeyManagementProviderSchema,\n keyId: z.string().optional(),\n rotationPolicy: KeyRotationPolicySchema.optional(),\n }),\n scope: z.enum(['field', 'record', 'table', 'database']),\n deterministicEncryption: z.boolean().default(false).describe('Allows equality queries on encrypted data'),\n searchableEncryption: z.boolean().default(false).describe('Allows search on encrypted data'),\n});\n\nexport type EncryptionConfig = z.infer<typeof EncryptionConfigSchema>;\n\nexport const FieldEncryptionSchema = z.object({\n fieldName: z.string(),\n encryptionConfig: EncryptionConfigSchema,\n indexable: z.boolean().default(false),\n});\n\nexport type FieldEncryption = z.infer<typeof FieldEncryptionSchema>;\n","import { z } from 'zod';\n\n/**\n * Data masking protocol for PII protection\n */\nexport const MaskingStrategySchema = z.enum([\n 'redact', // Complete redaction: ****\n 'partial', // Partial masking: 138****5678\n 'hash', // Hash value: sha256(value)\n 'tokenize', // Tokenization: token-12345\n 'randomize', // Randomize: generate random value\n 'nullify', // Null value: null\n 'substitute', // Substitute with dummy data\n]);\n\nexport type MaskingStrategy = z.infer<typeof MaskingStrategySchema>;\n\nexport const MaskingRuleSchema = z.object({\n field: z.string(),\n strategy: MaskingStrategySchema,\n pattern: z.string().optional().describe('Regex pattern for partial masking'),\n preserveFormat: z.boolean().default(true),\n preserveLength: z.boolean().default(true),\n roles: z.array(z.string()).optional().describe('Roles that see masked data'),\n exemptRoles: z.array(z.string()).optional().describe('Roles that see unmasked data'),\n});\n\nexport type MaskingRule = z.infer<typeof MaskingRuleSchema>;\n\nexport const MaskingConfigSchema = z.object({\n enabled: z.boolean().default(false),\n rules: z.array(MaskingRuleSchema),\n auditUnmasking: z.boolean().default(true),\n});\n\nexport type MaskingConfig = z.infer<typeof MaskingConfigSchema>;\n","import { z } from 'zod';\n\n/**\n * # ObjectStack Validation Protocol\n * \n * This module defines the validation schema protocol for ObjectStack, providing a comprehensive\n * type-safe validation system similar to Salesforce's validation rules but with enhanced capabilities.\n * \n * ## Overview\n * \n * Validation rules are applied at the data layer to ensure data integrity and enforce business logic.\n * The system supports multiple validation types:\n * \n * 1. **Script Validation**: Formula-based validation using expressions\n * 2. **Uniqueness Validation**: Enforce unique constraints across fields\n * 3. **State Machine Validation**: Control allowed state transitions\n * 4. **Format Validation**: Validate field formats (email, URL, regex, etc.)\n * 5. **Cross-Field Validation**: Validate relationships between multiple fields\n * 6. **Async Validation**: Remote validation via API calls\n * 7. **Custom Validation**: User-defined validation functions\n * 8. **Conditional Validation**: Apply validations based on conditions\n * \n * ## Salesforce Comparison\n * \n * ObjectStack validation rules are inspired by Salesforce validation rules but enhanced:\n * - Salesforce: Formula-based validation with `Error Condition Formula`\n * - ObjectStack: Multiple validation types with composable rules\n * \n * Example Salesforce validation rule:\n * ```\n * Rule Name: Discount_Cannot_Exceed_40_Percent\n * Error Condition Formula: Discount_Percent__c > 0.40\n * Error Message: Discount cannot exceed 40%.\n * ```\n * \n * Equivalent ObjectStack rule:\n * ```typescript\n * {\n * type: 'script',\n * name: 'discount_cannot_exceed_40_percent',\n * condition: 'discount_percent > 0.40',\n * message: 'Discount cannot exceed 40%',\n * severity: 'error'\n * }\n * ```\n */\n\n/**\n * Base Validation Rule\n * \n * All validation rules extend from this base schema with common properties.\n * \n * ## Industry Standard Enhancements\n * - **Label/Description**: Essential for governance in large systems with thousands of rules.\n * - **Events**: granular control over validation timing (Context-aware validation).\n * - **Tags**: categorization for reporting and management.\n */\nconst BaseValidationSchema = z.object({\n // Identification\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique rule name (snake_case)'),\n label: z.string().optional().describe('Human-readable label for the rule listing'),\n description: z.string().optional().describe('Administrative notes explaining the business reason'),\n \n // Execution Control\n active: z.boolean().default(true),\n events: z.array(z.enum(['insert', 'update', 'delete'])).default(['insert', 'update']).describe('Validation contexts'),\n \n // Classification\n tags: z.array(z.string()).optional().describe('Categorization tags (e.g., \"compliance\", \"billing\")'),\n \n // Feedback\n severity: z.enum(['error', 'warning', 'info']).default('error'),\n message: z.string().describe('Error message to display to the user'),\n});\n\n/**\n * 1. Script/Expression Validation\n * Generic formula-based validation.\n */\nexport const ScriptValidationSchema = BaseValidationSchema.extend({\n type: z.literal('script'),\n condition: z.string().describe('Formula expression. If TRUE, validation fails. (e.g. amount < 0)'),\n});\n\n/**\n * 2. Uniqueness Validation\n * specialized optimized check for unique constraints.\n */\nexport const UniquenessValidationSchema = BaseValidationSchema.extend({\n type: z.literal('unique'),\n fields: z.array(z.string()).describe('Fields that must be combined unique'),\n scope: z.string().optional().describe('Formula condition for scope (e.g. active = true)'),\n caseSensitive: z.boolean().default(true),\n});\n\n/**\n * 3. State Machine Validation\n * State transition logic.\n */\nexport const StateMachineValidationSchema = BaseValidationSchema.extend({\n type: z.literal('state_machine'),\n field: z.string().describe('State field (e.g. status)'),\n transitions: z.record(z.string(), z.array(z.string())).describe('Map of { OldState: [AllowedNewStates] }'),\n});\n\n/**\n * 4. Value Format Validation\n * Regex or specialized formats.\n */\nexport const FormatValidationSchema = BaseValidationSchema.extend({\n type: z.literal('format'),\n field: z.string(),\n regex: z.string().optional(),\n format: z.enum(['email', 'url', 'phone', 'json']).optional(),\n});\n\n/**\n * 5. Cross-Field Validation\n * Validates relationships between multiple fields.\n * \n * ## Use Cases\n * - Date range validations (end_date > start_date)\n * - Amount comparisons (discount < total)\n * - Complex business rules involving multiple fields\n * \n * ## Salesforce Examples\n * \n * ### Example 1: Close Date Must Be In Current or Future Month\n * **Salesforce Formula:**\n * ```\n * MONTH(CloseDate) < MONTH(TODAY()) ||\n * YEAR(CloseDate) < YEAR(TODAY())\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'close_date_future',\n * condition: 'MONTH(close_date) >= MONTH(TODAY()) AND YEAR(close_date) >= YEAR(TODAY())',\n * fields: ['close_date'],\n * message: 'Close Date must be in the current or a future month'\n * }\n * ```\n * \n * ### Example 2: Discount Validation\n * **Salesforce Formula:**\n * ```\n * Discount__c > (Amount__c * 0.40)\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'discount_limit',\n * condition: 'discount > (amount * 0.40)',\n * fields: ['discount', 'amount'],\n * message: 'Discount cannot exceed 40% of the amount'\n * }\n * ```\n * \n * ### Example 3: Opportunity Must Have Products\n * **Salesforce Formula:**\n * ```\n * ISBLANK(Products__c) && ISPICKVAL(StageName, \"Closed Won\")\n * ```\n * \n * **ObjectStack Equivalent:**\n * ```typescript\n * {\n * type: 'cross_field',\n * name: 'products_required_for_won',\n * condition: 'products = null AND stage = \"closed_won\"',\n * fields: ['products', 'stage'],\n * message: 'Opportunity must have products to be marked as Closed Won'\n * }\n * ```\n */\nexport const CrossFieldValidationSchema = BaseValidationSchema.extend({\n type: z.literal('cross_field'),\n condition: z.string().describe('Formula expression comparing fields (e.g. \"end_date > start_date\")'),\n fields: z.array(z.string()).describe('Fields involved in the validation'),\n});\n\n/**\n * 6. JSON Structure Validation\n * Validates JSON fields against a JSON Schema.\n * \n * ## Use Cases\n * - Validating configuration objects stored in JSON fields\n * - Enforcing API payload structures\n * - Complex nested data validation\n */\nexport const JSONValidationSchema = BaseValidationSchema.extend({\n type: z.literal('json_schema'),\n field: z.string().describe('JSON field to validate'),\n schema: z.record(z.string(), z.any()).describe('JSON Schema object definition'),\n});\n\n/**\n * 7. Async Validation\n * Remote validation via API call or database query.\n * \n * ## Use Cases\n * \n * ### 1. Email Uniqueness Check\n * Check if an email address is already registered in the system.\n * ```typescript\n * {\n * type: 'async',\n * name: 'unique_email',\n * field: 'email',\n * validatorUrl: '/api/users/check-email',\n * message: 'This email address is already registered',\n * debounce: 500, // Wait 500ms after user stops typing\n * timeout: 3000\n * }\n * ```\n * \n * ### 2. Username Availability\n * Verify username is available before form submission.\n * ```typescript\n * {\n * type: 'async',\n * name: 'username_available',\n * field: 'username',\n * validatorUrl: '/api/users/check-username',\n * message: 'This username is already taken',\n * debounce: 300,\n * timeout: 2000\n * }\n * ```\n * \n * ### 3. Tax ID Validation\n * Validate tax ID with government API (e.g., IRS, HMRC).\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_tax_id',\n * field: 'tax_id',\n * validatorFunction: 'validateTaxIdWithIRS',\n * message: 'Invalid Tax ID number',\n * timeout: 10000, // Government APIs may be slow\n * params: { country: 'US', format: 'EIN' }\n * }\n * ```\n * \n * ### 4. Credit Card Validation\n * Verify credit card with payment gateway without charging.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_card',\n * field: 'card_number',\n * validatorUrl: 'https://api.stripe.com/v1/tokens/validate',\n * message: 'Invalid credit card number',\n * timeout: 5000,\n * params: { \n * mode: 'validate_only',\n * checkFunds: false \n * }\n * }\n * ```\n * \n * ### 5. Address Validation\n * Validate and standardize addresses using geocoding services.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_address',\n * field: 'street_address',\n * validatorFunction: 'validateAddressWithGoogleMaps',\n * message: 'Unable to verify address',\n * timeout: 4000,\n * params: {\n * includeFields: ['city', 'state', 'zip'],\n * strictMode: true,\n * country: 'US'\n * }\n * }\n * ```\n * \n * ### 6. Domain Name Availability\n * Check if domain name is available for registration.\n * ```typescript\n * {\n * type: 'async',\n * name: 'domain_available',\n * field: 'domain_name',\n * validatorUrl: '/api/domains/check-availability',\n * message: 'This domain is already taken or reserved',\n * debounce: 500,\n * timeout: 2000\n * }\n * ```\n * \n * ### 7. Coupon Code Validation\n * Verify coupon code is valid and not expired.\n * ```typescript\n * {\n * type: 'async',\n * name: 'validate_coupon',\n * field: 'coupon_code',\n * validatorUrl: '/api/coupons/validate',\n * message: 'Invalid or expired coupon code',\n * timeout: 2000,\n * params: {\n * checkExpiration: true,\n * checkUsageLimit: true,\n * userId: '{{current_user_id}}'\n * }\n * }\n * ```\n */\nexport const AsyncValidationSchema = BaseValidationSchema.extend({\n type: z.literal('async'),\n field: z.string().describe('Field to validate'),\n validatorUrl: z.string().optional().describe('External API endpoint for validation'),\n method: z.enum(['GET', 'POST']).default('GET').describe('HTTP method for external call'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom headers for the request'),\n validatorFunction: z.string().optional().describe('Reference to custom validator function'),\n timeout: z.number().optional().default(5000).describe('Timeout in milliseconds'),\n debounce: z.number().optional().describe('Debounce delay in milliseconds'),\n params: z.record(z.string(), z.any()).optional().describe('Additional parameters to pass to validator'),\n});\n\n/**\n * 8. Custom Validator Function\n * User-defined validation logic with code reference.\n */\nexport const CustomValidatorSchema = BaseValidationSchema.extend({\n type: z.literal('custom'),\n handler: z.string().describe('Name of the custom validation function registered in the system'),\n params: z.record(z.string(), z.any()).optional().describe('Parameters passed to the custom handler'),\n});\n\n/**\n * 9. Master Validation Rule Schema\n */\nexport const ValidationRuleSchema: z.ZodType<any> = z.lazy(() =>\n z.discriminatedUnion('type', [\n ScriptValidationSchema,\n UniquenessValidationSchema,\n StateMachineValidationSchema,\n FormatValidationSchema,\n CrossFieldValidationSchema,\n JSONValidationSchema,\n AsyncValidationSchema,\n CustomValidatorSchema,\n ConditionalValidationSchema,\n ])\n);\n\n/**\n * 8. Conditional Validation\n * Validation that only applies when a condition is met.\n * \n * ## Overview\n * Conditional validations follow the pattern: \"Validate X only if Y is true\"\n * This allows for context-aware validation rules that adapt to different scenarios.\n * \n * ## Use Cases\n * \n * ### 1. Validate Based on Record Type\n * Apply different validation rules based on the type of record.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'enterprise_approval_required',\n * when: 'account_type = \"enterprise\"',\n * message: 'Enterprise validation',\n * then: {\n * type: 'script',\n * name: 'require_approval',\n * message: 'Enterprise accounts require manager approval',\n * condition: 'approval_status = null'\n * }\n * }\n * ```\n * \n * ### 2. Conditional Field Requirements\n * Require certain fields only when specific conditions are met.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'shipping_address_when_required',\n * when: 'requires_shipping = true',\n * message: 'Shipping validation',\n * then: {\n * type: 'script',\n * name: 'shipping_address_required',\n * message: 'Shipping address is required for physical products',\n * condition: 'shipping_address = null OR shipping_address = \"\"'\n * }\n * }\n * ```\n * \n * ### 3. Amount-Based Validation\n * Apply different rules based on transaction amount.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'high_value_approval',\n * when: 'order_total > 10000',\n * message: 'High value order validation',\n * then: {\n * type: 'script',\n * name: 'manager_approval_required',\n * message: 'Orders over $10,000 require manager approval',\n * condition: 'manager_approval_id = null'\n * },\n * otherwise: {\n * type: 'script',\n * name: 'standard_validation',\n * message: 'Payment method is required',\n * condition: 'payment_method = null'\n * }\n * }\n * ```\n * \n * ### 4. Regional Compliance\n * Apply region-specific validation rules.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'regional_compliance',\n * when: 'region = \"EU\"',\n * message: 'EU compliance validation',\n * then: {\n * type: 'script',\n * name: 'gdpr_consent',\n * message: 'GDPR consent is required for EU customers',\n * condition: 'gdpr_consent_given = false'\n * },\n * otherwise: {\n * type: 'script',\n * name: 'tos_acceptance',\n * message: 'Terms of Service acceptance required',\n * condition: 'tos_accepted = false'\n * }\n * }\n * ```\n * \n * ### 5. Nested Conditional Validation\n * Create complex validation logic with nested conditions.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'country_state_validation',\n * when: 'country = \"US\"',\n * message: 'US-specific validation',\n * then: {\n * type: 'conditional',\n * name: 'california_validation',\n * when: 'state = \"CA\"',\n * message: 'California-specific validation',\n * then: {\n * type: 'script',\n * name: 'ca_tax_id_required',\n * message: 'California requires a valid tax ID',\n * condition: 'tax_id = null OR NOT(REGEX(tax_id, \"^\\\\d{2}-\\\\d{7}$\"))'\n * }\n * }\n * }\n * ```\n * \n * ### 6. Tax Validation for Taxable Items\n * Only validate tax fields when the item is taxable.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'tax_field_validation',\n * when: 'is_taxable = true',\n * message: 'Tax validation',\n * then: {\n * type: 'script',\n * name: 'tax_code_required',\n * message: 'Tax code is required for taxable items',\n * condition: 'tax_code = null OR tax_code = \"\"'\n * }\n * }\n * ```\n * \n * ### 7. Role-Based Validation\n * Apply validation based on user role.\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'role_based_approval_limit',\n * when: 'user_role = \"manager\"',\n * message: 'Manager approval limits',\n * then: {\n * type: 'script',\n * name: 'manager_limit',\n * message: 'Managers can approve up to $50,000',\n * condition: 'approval_amount > 50000'\n * }\n * }\n * ```\n * \n * ## Salesforce Pattern Comparison\n * \n * Salesforce doesn't have explicit \"conditional validation\" rules but achieves similar\n * behavior using formula logic. ObjectStack makes this pattern explicit and composable.\n * \n * **Salesforce Approach:**\n * ```\n * IF(\n * ISPICKVAL(Type, \"Enterprise\"),\n * AND(Amount > 100000, ISBLANK(Approval__c)),\n * FALSE\n * )\n * ```\n * \n * **ObjectStack Approach:**\n * ```typescript\n * {\n * type: 'conditional',\n * name: 'enterprise_high_value',\n * when: 'type = \"enterprise\"',\n * then: {\n * type: 'cross_field',\n * name: 'amount_approval',\n * condition: 'amount > 100000 AND approval = null',\n * fields: ['amount', 'approval']\n * }\n * }\n * ```\n */\nexport const ConditionalValidationSchema = BaseValidationSchema.extend({\n type: z.literal('conditional'),\n when: z.string().describe('Condition formula (e.g. \"type = \\'enterprise\\'\")'),\n then: ValidationRuleSchema.describe('Validation rule to apply when condition is true'),\n otherwise: ValidationRuleSchema.optional().describe('Validation rule to apply when condition is false'),\n});\n\nexport type ValidationRule = z.infer<typeof ValidationRuleSchema>;\nexport type ScriptValidation = z.infer<typeof ScriptValidationSchema>;\nexport type UniquenessValidation = z.infer<typeof UniquenessValidationSchema>;\nexport type StateMachineValidation = z.infer<typeof StateMachineValidationSchema>;\nexport type FormatValidation = z.infer<typeof FormatValidationSchema>;\nexport type CrossFieldValidation = z.infer<typeof CrossFieldValidationSchema>;\nexport type JSONValidation = z.infer<typeof JSONValidationSchema>;\nexport type AsyncValidation = z.infer<typeof AsyncValidationSchema>;\nexport type CustomValidation = z.infer<typeof CustomValidatorSchema>;\nexport type ConditionalValidation = z.infer<typeof ConditionalValidationSchema>;","import { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * XState-inspired State Machine Protocol\n * Used to define strict business logic constraints and lifecycle management.\n * Prevent AI \"hallucinations\" by enforcing valid valid transitions.\n */\n\n// --- Primitives ---\n\n/**\n * References a named action (side effect)\n * Can be a script, a webhook, or a field update.\n */\nexport const ActionRefSchema = z.union([\n z.string().describe('Action Name'),\n z.object({\n type: z.string(), // e.g., 'xstate.assign', 'log', 'email'\n params: z.record(z.string(), z.any()).optional()\n })\n]);\n\n/**\n * References a named condition (guard)\n * Must evaluate to true for the transition to occur.\n */\nexport const GuardRefSchema = z.union([\n z.string().describe('Guard Name (e.g., \"isManager\", \"amountGT1000\")'),\n z.object({\n type: z.string(),\n params: z.record(z.string(), z.any()).optional()\n })\n]);\n\n// --- Core Structure ---\n\n/**\n * State Transition Definition\n * \"When EVENT happens, if GUARD is true, go to TARGET and run ACTIONS\"\n */\nexport const TransitionSchema = z.object({\n target: z.string().optional().describe('Target State ID'),\n cond: GuardRefSchema.optional().describe('Condition (Guard) required to take this path'),\n actions: z.array(ActionRefSchema).optional().describe('Actions to execute during transition'),\n description: z.string().optional().describe('Human readable description of this rule'),\n});\n\n/**\n * Event Definition (Signals)\n */\nexport const EventSchema = z.object({\n type: z.string().describe('Event Type (e.g. \"APPROVE\", \"REJECT\", \"Submit\")'),\n // Payload validation schema could go here if we want deep validation\n schema: z.record(z.string(), z.any()).optional().describe('Expected event payload structure'),\n});\n\nexport type ActionRef = z.infer<typeof ActionRefSchema>;\nexport type Transition = z.infer<typeof TransitionSchema>;\n\nexport type StateNodeConfig = {\n type?: 'atomic' | 'compound' | 'parallel' | 'final' | 'history';\n entry?: ActionRef[];\n exit?: ActionRef[];\n on?: Record<string, string | Transition | Transition[]>;\n always?: Transition[];\n initial?: string;\n states?: Record<string, StateNodeConfig>;\n meta?: {\n label?: string;\n description?: string;\n color?: string;\n aiInstructions?: string;\n };\n};\n\n/**\n * State Node Definition\n */\nexport const StateNodeSchema: z.ZodType<StateNodeConfig> = z.lazy(() => z.object({\n /** Type of state */\n type: z.enum(['atomic', 'compound', 'parallel', 'final', 'history']).default('atomic'),\n \n /** Entry/Exit Actions */\n entry: z.array(ActionRefSchema).optional().describe('Actions to run when entering this state'),\n exit: z.array(ActionRefSchema).optional().describe('Actions to run when leaving this state'),\n \n /** Transitions (Events) */\n on: z.record(z.string(), z.union([\n z.string(), // Shorthand target\n TransitionSchema, \n z.array(TransitionSchema)\n ])).optional().describe('Map of Event Type -> Transition Definition'),\n \n /** Always Transitions (Eventless) */\n always: z.array(TransitionSchema).optional(),\n\n /** Nesting (Hierarchical States) */\n initial: z.string().optional().describe('Initial child state (if compound)'),\n states: z.record(z.string(), StateNodeSchema).optional(),\n \n /** Metadata for UI/AI */\n meta: z.object({\n label: z.string().optional(),\n description: z.string().optional(),\n color: z.string().optional(), // For UI diagrams\n // Instructions for AI Agent when in this state\n aiInstructions: z.string().optional().describe('Specific instructions for AI when in this state'),\n }).optional(),\n}));\n\n/**\n * Top-Level State Machine Definition\n */\nexport const StateMachineSchema = z.object({\n id: SnakeCaseIdentifierSchema.describe('Unique Machine ID'),\n description: z.string().optional(),\n \n /** Context (Memory) Schema */\n contextSchema: z.record(z.string(), z.any()).optional().describe('Zod Schema for the machine context/memory'),\n \n /** Initial State */\n initial: z.string().describe('Initial State ID'),\n \n /** State Definitions */\n states: z.record(z.string(), StateNodeSchema).describe('State Nodes'),\n \n /** Global Listeners */\n on: z.record(z.string(), z.union([z.string(), TransitionSchema, z.array(TransitionSchema)])).optional(),\n});\n\nexport type StateMachineConfig = z.infer<typeof StateMachineSchema>;\n","import { z } from 'zod';\n\n/**\n * Hook Lifecycle Events\n * Defines the interception points in the ObjectQL execution pipeline.\n */\nexport const HookEvent = z.enum([\n // Read Operations\n 'beforeFind', 'afterFind',\n 'beforeFindOne', 'afterFindOne',\n 'beforeCount', 'afterCount',\n 'beforeAggregate', 'afterAggregate',\n\n // Write Operations\n 'beforeInsert', 'afterInsert',\n 'beforeUpdate', 'afterUpdate',\n 'beforeDelete', 'afterDelete',\n \n // Bulk Operations (Query-based)\n 'beforeUpdateMany', 'afterUpdateMany',\n 'beforeDeleteMany', 'afterDeleteMany',\n]);\n\n/**\n * Hook Definition Schema\n * \n * Hooks serve as the \"Logic Layer\" in ObjectStack, allowing developers to \n * inject custom code during the data access lifecycle.\n * \n * Use cases:\n * - Data Enrichment (Default values, Calculated fields)\n * - Validation (Complex business rules)\n * - Side Effects (Sending emails, Syncing to external systems)\n * - Security (Filtering data based on context)\n */\nexport const HookSchema = z.object({\n /**\n * Unique identifier for the hook\n * Required for debugging and overriding.\n */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Hook unique name (snake_case)'),\n\n /**\n * Human readable label\n */\n label: z.string().optional().describe('Description of what this hook does'),\n\n /**\n * Target Object(s)\n * can be:\n * - Single object: \"account\"\n * - List of objects: [\"account\", \"contact\"]\n * - Wildcard: \"*\" (All objects)\n */\n object: z.union([z.string(), z.array(z.string())]).describe('Target object(s)'),\n\n /**\n * Events to subscribe to\n * Combinations of timing (before/after) and action (find/insert/update/delete/etc)\n */\n events: z.array(HookEvent).describe('Lifecycle events'),\n\n /**\n * Handler Logic\n * Reference to a registered function in the plugin system OR a direct function (runtime only).\n */\n handler: z.union([z.string(), z.any()]).optional().describe('Function handler name or direct function'),\n\n /**\n * Execution Order\n * Lower numbers run first.\n * - System Hooks: 0-99\n * - App Hooks: 100-999\n * - User Hooks: 1000+\n */\n priority: z.number().default(100).describe('Execution priority'),\n\n /**\n * Async / Background Execution\n * If true, the hook runs in the background and does not block the transaction.\n * Only applicable for 'after*' events.\n * Default: false (Blocking)\n */\n async: z.boolean().default(false).describe('Run specifically as fire-and-forget'),\n\n /**\n * Error Policy\n * What to do if the hook throws an exception?\n * - abort: Rollback transaction (if blocking)\n * - log: Log error and continue\n */\n onError: z.enum(['abort', 'log']).default('abort').describe('Error handling strategy'),\n});\n\n/**\n * Hook Runtime Context\n * Defines what is available to the hook handler during execution.\n * \n * Best Practices:\n * - **Immutability**: `object`, `event`, `id` are immutable.\n * - **Mutability**: `input` and `result` are mutable to allow transformation.\n * - **Encapsulation**: `session` isolates auth info; `transaction` ensures atomicity.\n */\nexport const HookContextSchema = z.object({\n /** Tracing ID */\n id: z.string().optional().describe('Unique execution ID for tracing'),\n\n /** Target Object Name */\n object: z.string(),\n \n /** Current Lifecycle Event */\n event: HookEvent,\n\n /** \n * Input Parameters (Mutable)\n * Modify this to change the behavior of the operation.\n * \n * - find: { query: QueryAST, options: DriverOptions }\n * - insert: { doc: Record, options: DriverOptions }\n * - update: { id: ID, doc: Record, options: DriverOptions }\n * - delete: { id: ID, options: DriverOptions }\n * - updateMany: { query: QueryAST, doc: Record, options: DriverOptions }\n * - deleteMany: { query: QueryAST, options: DriverOptions }\n */\n input: z.record(z.string(), z.any()).describe('Mutable input parameters'),\n\n /** \n * Operation Result (Mutable)\n * Available in 'after*' events. Modify this to transform the output.\n */\n result: z.any().optional().describe('Operation result (After hooks only)'),\n\n /**\n * Data Snapshot\n * The state of the record BEFORE the operation (for update/delete).\n */\n previous: z.record(z.string(), z.any()).optional().describe('Record state before operation'),\n\n /**\n * Execution Session\n * Contains authentication and tenancy information.\n */\n session: z.object({\n userId: z.string().optional(),\n tenantId: z.string().optional(),\n roles: z.array(z.string()).optional(),\n accessToken: z.string().optional(),\n }).optional().describe('Current session context'),\n \n /**\n * Transaction Handle\n * If the operation is part of a transaction, use this handle for side-effects.\n */\n transaction: z.any().optional().describe('Database transaction handle'),\n\n /**\n * Engine Access\n * Reference to the ObjectQL engine for performing side effects.\n */\n ql: z.any().describe('ObjectQL Engine Reference'),\n});\n\nexport type Hook = z.input<typeof HookSchema>;\nexport type ResolvedHook = z.output<typeof HookSchema>;\nexport type HookEventType = z.infer<typeof HookEvent>;\nexport type HookContext = z.infer<typeof HookContextSchema>;\n","import { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\nimport { QuerySchema } from './query.zod';\n\n/**\n * Transformation Logic\n * Built-in helpers for converting data during import.\n */\nexport const TransformType = z.enum([\n 'none', // Direct copy\n 'constant', // Use a hardcoded value\n 'lookup', // Resolve FK (Name -> ID)\n 'split', // \"John Doe\" -> [\"John\", \"Doe\"]\n 'join', // [\"John\", \"Doe\"] -> \"John Doe\"\n 'javascript', // Custom script (Review security!)\n 'map' // Value mapping (e.g. \"Active\" -> \"active\")\n]);\n\n/**\n * Field Mapping Item\n */\nexport const FieldMappingSchema = z.object({\n /** Source Column */\n source: z.union([z.string(), z.array(z.string())]).describe('Source column header(s)'),\n \n /** Target Field */\n target: z.union([z.string(), z.array(z.string())]).describe('Target object field(s)'),\n \n /** Transformation */\n transform: TransformType.default('none'),\n \n /** Configuration for transform */\n params: z.object({\n // Constant\n value: z.any().optional(),\n \n // Lookup\n object: z.string().optional(), // Lookup Object\n fromField: z.string().optional(), // Match on (e.g. \"name\")\n toField: z.string().optional(), // Value to take (e.g. \"_id\")\n autoCreate: z.boolean().optional(), // Create if missing\n \n // Map\n valueMap: z.record(z.string(), z.any()).optional(), // { \"Open\": \"draft\" }\n \n // Split/Join\n separator: z.string().optional()\n }).optional()\n});\n\n/**\n * Data Mapping Schema\n * Defines a reusable data mapping configuration for ETL operations.\n * \n * **NAMING CONVENTION:**\n * Mapping names are machine identifiers and must be lowercase snake_case.\n * \n * @example Good mapping names\n * - 'salesforce_to_crm'\n * - 'csv_import_contacts'\n * - 'api_sync_orders'\n * \n * @example Bad mapping names (will be rejected)\n * - 'SalesforceToCRM' (PascalCase)\n * - 'CSV Import' (spaces)\n */\nexport const MappingSchema = z.object({\n /** Identity */\n name: SnakeCaseIdentifierSchema.describe('Mapping unique name (lowercase snake_case)'),\n label: z.string().optional(),\n \n /** Scope */\n sourceFormat: z.enum(['csv', 'json', 'xml', 'sql']).default('csv'),\n targetObject: z.string().describe('Target Object Name'),\n \n /** Column Mappings */\n fieldMapping: z.array(FieldMappingSchema),\n \n /** Upsert Logic */\n mode: z.enum(['insert', 'update', 'upsert']).default('insert'),\n upsertKey: z.array(z.string()).optional().describe('Fields to match for upsert (e.g. email)'),\n \n /** Extract Logic (For Export) */\n extractQuery: QuerySchema.optional().describe('Query to run for export only'),\n \n /** Error Handling */\n errorPolicy: z.enum(['skip', 'abort', 'retry']).default('skip'),\n batchSize: z.number().default(1000)\n});\n\nexport type Mapping = z.infer<typeof MappingSchema>;\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n","import { z } from 'zod';\nimport { FilterConditionSchema } from './filter.zod';\nimport { SortNodeSchema } from './query.zod';\n\n/**\n * Data Engine Protocol\n * \n * Defines the standard interface for data persistence engines in ObjectStack.\n * This protocol abstracts the underlying storage mechanism (SQL, NoSQL, API, Memory),\n * allowing the ObjectQL engine to execute standardized CRUD and Aggregation operations\n * regardless of where the data resides.\n * \n * The Data Engine acts as the \"Driver\" layer in the Hexagonal Architecture.\n */\n\n// ==========================================================================\n// 1. Shared Definitions\n// ==========================================================================\n\n/**\n * Data Engine Query filter conditions\n * Supports simple key-value map or complex Logic/Field expressions (DSL)\n */\nexport const DataEngineFilterSchema = z.union([\n z.record(z.string(), z.any()),\n FilterConditionSchema\n]).describe('Data Engine query filter conditions');\n\n/**\n * Sort order definition\n * Supports:\n * - { name: 'asc' }\n * - { name: 1 }\n * - [{ field: 'name', order: 'asc' }]\n */\nexport const DataEngineSortSchema = z.union([\n z.record(z.string(), z.enum(['asc', 'desc'])), \n z.record(z.string(), z.union([z.literal(1), z.literal(-1)])),\n z.array(SortNodeSchema)\n]).describe('Sort order definition');\n\n// ==========================================================================\n// 2. method: FIND\n// ==========================================================================\n\nexport const DataEngineQueryOptionsSchema = z.object({\n /** Filter conditions (WHERE) */\n filter: DataEngineFilterSchema.optional(),\n \n /** Fields to select (SELECT) */\n select: z.array(z.string()).optional(),\n \n /** Sort order (ORDER BY) */\n sort: DataEngineSortSchema.optional(),\n \n /** Limit number of results (LIMIT) */\n limit: z.number().int().min(1).optional(),\n \n /** Skip number of results (OFFSET) */\n skip: z.number().int().min(0).optional(),\n \n /** \n * Maximum number of results (OData style)\n * Takes precedence over limit if both specified\n */\n top: z.number().int().min(1).optional(),\n\n /**\n * Include related records (JOIN/Populate)\n * List of relationship field names to expand\n */\n populate: z.array(z.string()).optional(),\n}).describe('Query options for IDataEngine.find() operations');\n\n// ==========================================================================\n// 3. method: INSERT\n// ==========================================================================\n\nexport const DataEngineInsertOptionsSchema = z.object({\n /** \n * Return the inserted record(s)? \n * Some drivers support RETURNING clause for efficiency.\n * Default: true\n */\n returning: z.boolean().default(true).optional(),\n}).describe('Options for DataEngine.insert operations');\n\n// ==========================================================================\n// 4. method: UPDATE\n// ==========================================================================\n\nexport const DataEngineUpdateOptionsSchema = z.object({\n /** Filter conditions to identify records to update */\n filter: DataEngineFilterSchema.optional(),\n \n /** \n * Perform an upsert? \n * If true, insert if not found.\n */\n upsert: z.boolean().default(false).optional(),\n \n /**\n * Update multiple records?\n * If false, only the first match is updated.\n * Default: false\n */\n multi: z.boolean().default(false).optional(),\n \n /** \n * Return the updated record(s)? \n * Default: false (returns update count/status)\n */\n returning: z.boolean().default(false).optional(),\n}).describe('Options for DataEngine.update operations');\n\n// ==========================================================================\n// 5. method: DELETE\n// ==========================================================================\n\nexport const DataEngineDeleteOptionsSchema = z.object({\n /** Filter conditions to identify records to delete */\n filter: DataEngineFilterSchema.optional(),\n \n /**\n * Delete multiple records?\n * If false, only the first match is deleted.\n * Default: false\n */\n multi: z.boolean().default(false).optional(),\n}).describe('Options for DataEngine.delete operations');\n\n// ==========================================================================\n// 6. method: AGGREGATE\n// ==========================================================================\n\nexport const DataEngineAggregateOptionsSchema = z.object({\n /** Filter conditions (WHERE) */\n filter: DataEngineFilterSchema.optional(),\n \n /** Group By fields */\n groupBy: z.array(z.string()).optional(),\n \n /** \n * Aggregation definitions \n * e.g. [{ field: 'amount', method: 'sum', alias: 'total' }]\n */\n aggregations: z.array(z.object({\n field: z.string(),\n method: z.enum(['count', 'sum', 'avg', 'min', 'max', 'count_distinct']),\n alias: z.string().optional()\n })).optional(),\n}).describe('Options for DataEngine.aggregate operations');\n\n// ==========================================================================\n// 7. method: COUNT\n// ==========================================================================\n\nexport const DataEngineCountOptionsSchema = z.object({\n /** Filter conditions */\n filter: DataEngineFilterSchema.optional(),\n}).describe('Options for DataEngine.count operations');\n\n// ==========================================================================\n// 8. Definition (Contract)\n// ==========================================================================\n\nexport const DataEngineContractSchema = z.object({\n find: z.function()\n .args(z.string(), DataEngineQueryOptionsSchema.optional())\n .returns(z.promise(z.array(z.any()))),\n \n findOne: z.function()\n .args(z.string(), DataEngineQueryOptionsSchema.optional())\n .returns(z.promise(z.any())),\n \n insert: z.function()\n .args(z.string(), z.union([z.record(z.string(), z.any()), z.array(z.record(z.string(), z.any()))]), DataEngineInsertOptionsSchema.optional())\n .returns(z.promise(z.any())),\n \n update: z.function()\n .args(z.string(), z.record(z.string(), z.any()), DataEngineUpdateOptionsSchema.optional())\n .returns(z.promise(z.any())),\n \n delete: z.function()\n .args(z.string(), DataEngineDeleteOptionsSchema.optional())\n .returns(z.promise(z.any())),\n \n count: z.function()\n .args(z.string(), DataEngineCountOptionsSchema.optional())\n .returns(z.promise(z.number())),\n \n aggregate: z.function()\n .args(z.string(), DataEngineAggregateOptionsSchema)\n .returns(z.promise(z.array(z.any())))\n}).describe('Standard Data Engine Contract');\n\n// ==========================================================================\n// 9. Virtualization & RPC Protocol\n// ==========================================================================\n\n/**\n * Data Engine RPC Request (Virtual ObjectQL)\n * \n * This schema defines the serialized format for executing Data Engine operations\n * via HTTP, Message Queue, or Plugin boundaries.\n * \n * It enables \"Virtual Data Engines\" where the implementation resides in a \n * separate microservice or plugin.\n */\n\nexport const DataEngineFindRequestSchema = z.object({\n method: z.literal('find'),\n object: z.string(),\n query: DataEngineQueryOptionsSchema.optional()\n});\n\nexport const DataEngineFindOneRequestSchema = z.object({\n method: z.literal('findOne'),\n object: z.string(),\n query: DataEngineQueryOptionsSchema.optional()\n});\n\nexport const DataEngineInsertRequestSchema = z.object({\n method: z.literal('insert'),\n object: z.string(),\n data: z.union([z.record(z.string(), z.any()), z.array(z.record(z.string(), z.any()))]),\n options: DataEngineInsertOptionsSchema.optional()\n});\n\nexport const DataEngineUpdateRequestSchema = z.object({\n method: z.literal('update'),\n object: z.string(),\n data: z.record(z.string(), z.any()),\n id: z.any().optional().describe('ID for single update, or use filter in options'),\n options: DataEngineUpdateOptionsSchema.optional()\n});\n\nexport const DataEngineDeleteRequestSchema = z.object({\n method: z.literal('delete'),\n object: z.string(),\n id: z.any().optional().describe('ID for single delete, or use filter in options'),\n options: DataEngineDeleteOptionsSchema.optional()\n});\n\nexport const DataEngineCountRequestSchema = z.object({\n method: z.literal('count'),\n object: z.string(),\n query: DataEngineCountOptionsSchema.optional()\n});\n\nexport const DataEngineAggregateRequestSchema = z.object({\n method: z.literal('aggregate'),\n object: z.string(),\n query: DataEngineAggregateOptionsSchema\n});\n\n/**\n * Data Engine Execute Request (Raw Command)\n * Execute a raw command/query native to the driver (e.g. SQL, Shell, Remote API).\n */\nexport const DataEngineExecuteRequestSchema = z.object({\n method: z.literal('execute'),\n /** The abstract command (string SQL, or JSON object) */\n command: z.any(),\n /** Optional options */\n options: z.record(z.string(), z.any()).optional()\n});\n\n/**\n * Data Engine Vector Find Request (AI/RAG)\n * Perform a similarity search using vector embeddings.\n */\nexport const DataEngineVectorFindRequestSchema = z.object({\n method: z.literal('vectorFind'),\n object: z.string(),\n /** The vector embedding to search for */\n vector: z.array(z.number()),\n /** Optional pre-filter (Metadata filtering) */\n filter: DataEngineFilterSchema.optional(),\n /** Fields to select */\n select: z.array(z.string()).optional(),\n /** Number of results */\n limit: z.number().int().default(5).optional(),\n /** Minimum similarity score (0-1) or distance threshold */\n threshold: z.number().optional()\n});\n\n/**\n * Data Engine Batch Request\n * Execute multiple operations in a single transaction/request efficiently.\n */\nexport const DataEngineBatchRequestSchema = z.object({\n method: z.literal('batch'),\n requests: z.array(z.discriminatedUnion('method', [\n DataEngineFindRequestSchema,\n DataEngineFindOneRequestSchema,\n DataEngineInsertRequestSchema,\n DataEngineUpdateRequestSchema,\n DataEngineDeleteRequestSchema,\n DataEngineCountRequestSchema,\n DataEngineAggregateRequestSchema,\n DataEngineExecuteRequestSchema,\n DataEngineVectorFindRequestSchema\n ])),\n /** \n * Transaction Mode\n * - true: All or nothing (Atomic)\n * - false: Best effort, continue on error\n */\n transaction: z.boolean().default(true).optional()\n});\n\n/**\n * Unified Data Engine Request Union\n * Use this to validate any incoming \"Virtual ObjectQL\" request.\n */\nexport const DataEngineRequestSchema = z.discriminatedUnion('method', [\n DataEngineFindRequestSchema,\n DataEngineFindOneRequestSchema,\n DataEngineInsertRequestSchema,\n DataEngineUpdateRequestSchema,\n DataEngineDeleteRequestSchema,\n DataEngineCountRequestSchema,\n DataEngineAggregateRequestSchema,\n DataEngineBatchRequestSchema,\n DataEngineExecuteRequestSchema,\n DataEngineVectorFindRequestSchema\n]).describe('Virtual ObjectQL Request Protocol');\n\n// ==========================================================================\n// 10. Type Exports\n// ==========================================================================\n\nexport type DataEngineFilter = z.infer<typeof DataEngineFilterSchema>;\nexport type DataEngineSort = z.infer<typeof DataEngineSortSchema>;\nexport type DataEngineQueryOptions = z.infer<typeof DataEngineQueryOptionsSchema>;\nexport type DataEngineInsertOptions = z.infer<typeof DataEngineInsertOptionsSchema>;\nexport type DataEngineUpdateOptions = z.infer<typeof DataEngineUpdateOptionsSchema>;\nexport type DataEngineDeleteOptions = z.infer<typeof DataEngineDeleteOptionsSchema>;\nexport type DataEngineAggregateOptions = z.infer<typeof DataEngineAggregateOptionsSchema>;\nexport type DataEngineCountOptions = z.infer<typeof DataEngineCountOptionsSchema>;\nexport type DataEngineRequest = z.infer<typeof DataEngineRequestSchema>;\n","import { z } from 'zod';\nimport { QuerySchema } from '../data/query.zod';\n\n/**\n * Common Driver Options\n * Passed to most driver methods to control behavior (transactions, timeouts, etc.)\n */\nexport const DriverOptionsSchema = z.object({\n /**\n * Transaction handle/identifier.\n * If provided, the operation must run within this transaction.\n */\n transaction: z.any().optional().describe('Transaction handle'),\n\n /**\n * Operation timeout in milliseconds.\n */\n timeout: z.number().optional().describe('Timeout in ms'),\n\n /**\n * Whether to bypass cache and force a fresh read.\n */\n skipCache: z.boolean().optional().describe('Bypass cache'),\n\n /**\n * Distributed Tracing Context.\n * Used for passing OpenTelemetry span context or request IDs for observability.\n */\n traceContext: z.record(z.string(), z.string()).optional().describe('OpenTelemetry context or request ID'),\n\n /**\n * Tenant Identifier.\n * For multi-tenant databases (row-level security or schema-per-tenant).\n */\n tenantId: z.string().optional().describe('Tenant Isolation identifier'),\n});\n\n/**\n * Driver Capabilities Schema\n * \n * Defines what features a database driver supports.\n * This allows ObjectQL to adapt its behavior based on underlying database capabilities.\n * Enhanced with granular capability flags for better feature detection.\n */\nexport const DriverCapabilitiesSchema = z.object({\n // ============================================================================\n // Basic CRUD Operations\n // ============================================================================\n \n /**\n * Whether the driver supports create operations.\n */\n create: z.boolean().default(true).describe('Supports CREATE operations'),\n \n /**\n * Whether the driver supports read operations.\n */\n read: z.boolean().default(true).describe('Supports READ operations'),\n \n /**\n * Whether the driver supports update operations.\n */\n update: z.boolean().default(true).describe('Supports UPDATE operations'),\n \n /**\n * Whether the driver supports delete operations.\n */\n delete: z.boolean().default(true).describe('Supports DELETE operations'),\n\n // ============================================================================\n // Bulk Operations\n // ============================================================================\n \n /**\n * Whether the driver supports bulk create operations.\n */\n bulkCreate: z.boolean().default(false).describe('Supports bulk CREATE operations'),\n \n /**\n * Whether the driver supports bulk update operations.\n */\n bulkUpdate: z.boolean().default(false).describe('Supports bulk UPDATE operations'),\n \n /**\n * Whether the driver supports bulk delete operations.\n */\n bulkDelete: z.boolean().default(false).describe('Supports bulk DELETE operations'),\n\n // ============================================================================\n // Transaction & Connection Management\n // ============================================================================\n \n /**\n * Whether the driver supports database transactions.\n * If true, beginTransaction, commit, and rollback must be implemented.\n */\n transactions: z.boolean().default(false).describe('Supports ACID transactions'),\n \n /**\n * Whether the driver supports savepoints within transactions.\n */\n savepoints: z.boolean().default(false).describe('Supports transaction savepoints'),\n \n /**\n * Supported transaction isolation levels.\n */\n isolationLevels: z.array(z.enum([\n 'read-uncommitted',\n 'read-committed',\n 'repeatable-read',\n 'serializable',\n ])).optional().describe('Supported transaction isolation levels'),\n\n // ============================================================================\n // Query Operations\n // ============================================================================\n \n /**\n * Whether the driver supports WHERE clause filters.\n * If false, ObjectQL will fetch all records and filter in memory.\n * \n * Example: Memory driver might not support complex filter conditions.\n */\n queryFilters: z.boolean().default(true).describe('Supports WHERE clause filtering'),\n\n /**\n * Whether the driver supports aggregation functions (COUNT, SUM, AVG, etc.).\n * If false, ObjectQL will compute aggregations in memory.\n */\n queryAggregations: z.boolean().default(false).describe('Supports GROUP BY and aggregation functions'),\n\n /**\n * Whether the driver supports ORDER BY sorting.\n * If false, ObjectQL will sort results in memory.\n */\n querySorting: z.boolean().default(true).describe('Supports ORDER BY sorting'),\n\n /**\n * Whether the driver supports LIMIT/OFFSET pagination.\n * If false, ObjectQL will fetch all records and paginate in memory.\n */\n queryPagination: z.boolean().default(true).describe('Supports LIMIT/OFFSET pagination'),\n\n /**\n * Whether the driver supports window functions (ROW_NUMBER, RANK, LAG, LEAD, etc.).\n * If false, ObjectQL will compute window functions in memory.\n */\n queryWindowFunctions: z.boolean().default(false).describe('Supports window functions with OVER clause'),\n\n /**\n * Whether the driver supports subqueries (nested SELECT statements).\n * If false, ObjectQL will execute queries separately and combine results.\n */\n querySubqueries: z.boolean().default(false).describe('Supports subqueries'),\n \n /**\n * Whether the driver supports Common Table Expressions (WITH clause).\n */\n queryCTE: z.boolean().default(false).describe('Supports Common Table Expressions (WITH clause)'),\n\n /**\n * Whether the driver supports SQL-style joins.\n * If false, ObjectQL will fetch related data separately and join in memory.\n */\n joins: z.boolean().default(false).describe('Supports SQL joins'),\n\n // ============================================================================\n // Advanced Features\n // ============================================================================\n \n /**\n * Whether the driver supports full-text search.\n * If true, text search queries can be pushed to the database.\n */\n fullTextSearch: z.boolean().default(false).describe('Supports full-text search'),\n \n /**\n * Whether the driver supports JSON querying capabilities.\n */\n jsonQuery: z.boolean().default(false).describe('Supports JSON field querying'),\n \n /**\n * Whether the driver supports geospatial queries.\n */\n geospatialQuery: z.boolean().default(false).describe('Supports geospatial queries'),\n \n /**\n * Whether the driver supports streaming large result sets.\n */\n streaming: z.boolean().default(false).describe('Supports result streaming (cursors/iterators)'),\n\n /**\n * Whether the driver supports JSON field types.\n * If false, JSON data will be serialized as strings.\n */\n jsonFields: z.boolean().default(false).describe('Supports JSON field types'),\n\n /**\n * Whether the driver supports array field types.\n * If false, arrays will be stored as JSON strings or in separate tables.\n */\n arrayFields: z.boolean().default(false).describe('Supports array field types'),\n\n /**\n * Whether the driver supports vector embeddings and similarity search.\n * Required for RAG (Retrieval-Augmented Generation) and AI features.\n */\n vectorSearch: z.boolean().default(false).describe('Supports vector embeddings and similarity search'),\n\n /**\n * Whether the driver supports geospatial queries.\n * @deprecated Use geospatialQuery instead\n */\n geoSpatial: z.boolean().default(false).describe('Supports geospatial queries (deprecated: use geospatialQuery)'),\n\n // ============================================================================\n // Schema Management\n // ============================================================================\n \n /**\n * Whether the driver supports automatic schema synchronization.\n */\n schemaSync: z.boolean().default(false).describe('Supports automatic schema synchronization'),\n \n /**\n * Whether the driver supports database migrations.\n */\n migrations: z.boolean().default(false).describe('Supports database migrations'),\n \n /**\n * Whether the driver supports index management.\n */\n indexes: z.boolean().default(false).describe('Supports index creation and management'),\n\n // ============================================================================\n // Performance & Optimization\n // ============================================================================\n \n /**\n * Whether the driver supports connection pooling.\n */\n connectionPooling: z.boolean().default(false).describe('Supports connection pooling'),\n \n /**\n * Whether the driver supports prepared statements.\n */\n preparedStatements: z.boolean().default(false).describe('Supports prepared statements (SQL injection prevention)'),\n \n /**\n * Whether the driver supports query result caching.\n */\n queryCache: z.boolean().default(false).describe('Supports query result caching'),\n}).refine((data) => {\n // Ensure deprecated geoSpatial and new geospatialQuery are consistent if both are provided\n if (data.geoSpatial !== undefined && data.geospatialQuery !== undefined && data.geoSpatial !== data.geospatialQuery) {\n return false;\n }\n return true;\n}, {\n message: 'Deprecated geoSpatial and geospatialQuery must have the same value if both are provided',\n});\n\n/**\n * Unified Database Driver Interface\n * \n * This is the contract that all storage adapters (Postgres, Mongo, Excel, Salesforce) must implement.\n * It abstracts the underlying engine, enabling ObjectStack to be \"Database Agnostic\".\n */\nexport const DriverInterfaceSchema = z.object({\n /**\n * Driver name (e.g., 'postgresql', 'mongodb', 'rest_api').\n */\n name: z.string().describe('Driver unique name'),\n\n /**\n * Driver version.\n */\n version: z.string().describe('Driver version'),\n\n /**\n * Capabilities descriptor.\n */\n supports: DriverCapabilitiesSchema,\n\n // ============================================================================\n // Lifecycle Management\n // ============================================================================\n\n /**\n * Initialize connection pool or authenticate.\n */\n connect: z.function()\n .args()\n .returns(z.promise(z.void()))\n .describe('Establish connection'),\n\n /**\n * Close connections and cleanup resources.\n */\n disconnect: z.function()\n .args()\n .returns(z.promise(z.void()))\n .describe('Close connection'),\n\n /**\n * Check connection health.\n * @returns true if healthy, false otherwise.\n */\n checkHealth: z.function()\n .args()\n .returns(z.promise(z.boolean()))\n .describe('Health check'),\n \n /**\n * Get Connection Pool Statistics.\n * Useful for monitoring database load.\n */\n getPoolStats: z.function()\n .args()\n .returns(z.object({\n total: z.number(),\n idle: z.number(),\n active: z.number(),\n waiting: z.number(),\n }).optional())\n .optional()\n .describe('Get connection pool statistics'),\n\n // ============================================================================\n // Raw Execution (Escape Hatch)\n // ============================================================================\n\n /**\n * Execute a raw command/query native to the driver.\n * Useful for complex reports, stored procedures, or DDL not covered by standard sync.\n * \n * @param command - The raw command (e.g., SQL string, shell command, or remote API payload).\n * @param parameters - Optional array of bound parameters for safe execution (prevention of injection).\n * @param options - Driver options (transaction context, timeout).\n * @returns Promise resolving to the raw result from the driver.\n * \n * @example\n * // SQL Driver\n * await driver.execute('SELECT * FROM complex_view WHERE id = ?', [123]);\n * \n * // Mongo Driver\n * await driver.execute({ aggregate: 'orders', pipeline: [...] });\n */\n execute: z.function()\n .args(z.any(), z.array(z.any()).optional(), DriverOptionsSchema.optional())\n .returns(z.promise(z.any()))\n .describe('Execute raw command'),\n\n // ============================================================================\n // CRUD Operations\n // ============================================================================\n\n /**\n * Find multiple records matching the structured query.\n * Parsing the QueryAST is the responsibility of the driver implementation.\n * \n * @param object - The name of the object/table to query (e.g. 'account').\n * @param query - The structured QueryAST (filters, sorts, joins, pagination).\n * @param options - Driver options.\n * @returns Array of records.\n * \n * @example\n * await driver.find('account', {\n * filters: [['status', '=', 'active'], 'and', ['amount', '>', 500]],\n * sort: [{ field: 'created_at', order: 'desc' }],\n * top: 10\n * });\n * @returns Array of records.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n find: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.promise(z.array(z.record(z.string(), z.any()))))\n .describe('Find records'),\n\n /**\n * Stream records matching the structured query.\n * Optimized for large datasets to avoid memory overflow.\n * \n * @param object - The name of the object.\n * @param query - The structured QueryAST.\n * @param options - Driver options.\n * @returns AsyncIterable/ReadableStream of records.\n */\n findStream: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.any())\n .describe('Stream records (AsyncIterable)'),\n\n /**\n * Find a single record by query.\n * Similar to find(), but returns only the first match or null.\n * \n * @param object - The name of the object.\n * @param query - QueryAST.\n * @param options - Driver options.\n * @returns The record or null.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n findOne: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.promise(z.record(z.string(), z.any()).nullable()))\n .describe('Find one record'),\n\n /**\n * Create a new record.\n * \n * @param object - The object name.\n * @param data - Key-value map of field data.\n * @param options - Driver options.\n * @returns The created record, including server-generated fields (id, created_at, etc.).\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n create: z.function()\n .args(z.string(), z.record(z.string(), z.any()), DriverOptionsSchema.optional())\n .returns(z.promise(z.record(z.string(), z.any())))\n .describe('Create record'),\n\n /**\n * Update an existing record by ID.\n * \n * @param object - The object name.\n * @param id - The unique identifier of the record.\n * @param data - The fields to update.\n * @param options - Driver options.\n * @returns The updated record.\n * MUST return `id` as string. MUST NOT return implementation details like `_id`.\n */\n update: z.function()\n .args(z.string(), z.string().or(z.number()), z.record(z.string(), z.any()), DriverOptionsSchema.optional())\n .returns(z.promise(z.record(z.string(), z.any())))\n .describe('Update record'),\n\n /**\n * Upsert (Update or Insert) a record.\n * \n * @param object - The object name.\n * @param data - The data to upsert.\n * @param conflictKeys - Fields to check for conflict (uniqueness).\n * @param options - Driver options.\n * @returns The created or updated record.\n */\n upsert: z.function()\n .args(z.string(), z.record(z.string(), z.any()), z.array(z.string()).optional(), DriverOptionsSchema.optional())\n .returns(z.promise(z.record(z.string(), z.any())))\n .describe('Upsert record'),\n\n /**\n * Delete a record by ID.\n * \n * @param object - The object name.\n * @param id - The unique identifier of the record.\n * @param options - Driver options.\n * @returns True if deleted, false if not found.\n */\n delete: z.function()\n .args(z.string(), z.string().or(z.number()), DriverOptionsSchema.optional())\n .returns(z.promise(z.boolean()))\n .describe('Delete record'),\n\n /**\n * Count records matching a query.\n * \n * @param object - The object name.\n * @param query - Optional filtering criteria.\n * @param options - Driver options.\n * @returns Total count.\n */\n count: z.function()\n .args(z.string(), QuerySchema.optional(), DriverOptionsSchema.optional())\n .returns(z.promise(z.number()))\n .describe('Count records'),\n\n // ============================================================================\n // Bulk Operations\n // ============================================================================\n\n /**\n * Create multiple records in a single batch.\n * Optimized for performance.\n * \n * @param object - The object name.\n * @param dataArray - Array of record data.\n * @returns Array of created records.\n */\n bulkCreate: z.function()\n .args(z.string(), z.array(z.record(z.string(), z.any())), DriverOptionsSchema.optional())\n .returns(z.promise(z.array(z.record(z.string(), z.any())))),\n\n /**\n * Update multiple records in a single batch.\n * \n * @param object - The object name.\n * @param updates - Array of objects containing {id, data}.\n * @returns Array of updated records.\n */\n bulkUpdate: z.function()\n .args(z.string(), z.array(z.object({ id: z.string().or(z.number()), data: z.record(z.string(), z.any()) })), DriverOptionsSchema.optional())\n .returns(z.promise(z.array(z.record(z.string(), z.any())))),\n\n /**\n * Delete multiple records in a single batch.\n * \n * @param object - The object name.\n * @param ids - Array of record IDs.\n */\n bulkDelete: z.function()\n .args(z.string(), z.array(z.string().or(z.number())), DriverOptionsSchema.optional())\n .returns(z.promise(z.void())),\n\n /**\n * Update multiple records matching a query.\n * Direct database push-down. DOES NOT trigger per-record hooks.\n * \n * @param object - The object name.\n * @param query - The filtering criteria.\n * @param data - The data to update.\n * @returns Count of modified records.\n */\n updateMany: z.function()\n .args(z.string(), QuerySchema, z.record(z.string(), z.any()), DriverOptionsSchema.optional())\n .returns(z.promise(z.number()))\n .optional(),\n\n /**\n * Delete multiple records matching a query.\n * Direct database push-down. DOES NOT trigger per-record hooks.\n * \n * @param object - The object name.\n * @param query - The filtering criteria.\n * @returns Count of deleted records.\n */\n deleteMany: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.promise(z.number()))\n .optional(),\n\n // ============================================================================\n // Transaction Management\n // ============================================================================\n\n /**\n * Begin a new database transaction.\n * @param options - Isolation level and other settings.\n * @returns A transaction handle to be passed to subsequent operations via `options.transaction`.\n */\n beginTransaction: z.function()\n .args(z.object({\n isolationLevel: z.enum(['READ UNCOMMITTED', 'READ COMMITTED', 'REPEATABLE READ', 'SERIALIZABLE', 'SNAPSHOT']).optional()\n }).optional())\n .returns(z.promise(z.any()))\n .describe('Start transaction'),\n\n /**\n * Commit the transaction.\n * @param transaction - The transaction handle.\n */\n commit: z.function()\n .args(z.any())\n .returns(z.promise(z.void()))\n .describe('Commit transaction'),\n\n /**\n * Rollback the transaction.\n * @param transaction - The transaction handle.\n */\n rollback: z.function()\n .args(z.any())\n .returns(z.promise(z.void()))\n .describe('Rollback transaction'),\n\n // ============================================================================\n // Schema Management\n // ============================================================================\n\n /**\n * Synchronize the database schema with the Object definition.\n * This is an idempotent operation: it should create tables if missing, \n * add columns if missing, and update indexes.\n * \n * @param object - The object name.\n * @param schema - The full Object Schema (fields, indexes, etc).\n * @param options - Driver options.\n */\n syncSchema: z.function()\n .args(z.string(), z.any(), DriverOptionsSchema.optional())\n .returns(z.promise(z.void()))\n .describe('Sync object schema to DB'),\n \n /**\n * Drop the underlying table or collection for an object.\n * WARNING: Destructive operation.\n * \n * @param object - The object name.\n */\n dropTable: z.function()\n .args(z.string(), DriverOptionsSchema.optional())\n .returns(z.promise(z.void())),\n\n /**\n * Analyze query performance.\n * Returns execution plan without executing the query (where possible).\n * \n * @param object - The object name.\n * @param query - The query to explain.\n * @returns The execution plan details.\n */\n explain: z.function()\n .args(z.string(), QuerySchema, DriverOptionsSchema.optional())\n .returns(z.promise(z.any()))\n .optional(),\n});\n\n/**\n * Connection Pool Configuration Schema\n * Manages database connection pooling for performance\n */\nexport const PoolConfigSchema = z.object({\n min: z.number().min(0).default(2).describe('Minimum number of connections in pool'),\n max: z.number().min(1).default(10).describe('Maximum number of connections in pool'),\n idleTimeoutMillis: z.number().min(0).default(30000).describe('Time in ms before idle connection is closed'),\n connectionTimeoutMillis: z.number().min(0).default(5000).describe('Time in ms to wait for available connection'),\n});\n\n/**\n * Driver Configuration Schema\n * Base configuration for database drivers\n */\nexport const DriverConfigSchema = z.object({\n name: z.string().describe('Driver instance name'),\n type: z.enum(['sql', 'nosql', 'cache', 'search', 'graph', 'timeseries']).describe('Driver type category'),\n capabilities: DriverCapabilitiesSchema.describe('Driver capability flags'),\n connectionString: z.string().optional().describe('Database connection string (driver-specific format)'),\n poolConfig: PoolConfigSchema.optional().describe('Connection pool configuration'),\n});\n\n/**\n * TypeScript types\n */\nexport type DriverOptions = z.infer<typeof DriverOptionsSchema>;\nexport type DriverCapabilities = z.infer<typeof DriverCapabilitiesSchema>;\nexport type DriverInterface = z.infer<typeof DriverInterfaceSchema>;\nexport type DriverConfig = z.infer<typeof DriverConfigSchema>;\nexport type PoolConfig = z.infer<typeof PoolConfigSchema>;\n","import { z } from 'zod';\nimport { DriverConfigSchema } from './driver.zod';\n\n/**\n * SQL Dialect Enumeration\n * Supported SQL database dialects\n */\nexport const SQLDialectSchema = z.enum([\n 'postgresql',\n 'mysql',\n 'sqlite',\n 'mssql',\n 'oracle',\n 'mariadb',\n]);\n\nexport type SQLDialect = z.infer<typeof SQLDialectSchema>;\n\n/**\n * Data Type Mapping Schema\n * Maps ObjectStack field types to SQL-specific data types\n * \n * @example PostgreSQL data type mapping\n * {\n * text: 'VARCHAR(255)',\n * number: 'NUMERIC',\n * boolean: 'BOOLEAN',\n * date: 'DATE',\n * datetime: 'TIMESTAMP',\n * json: 'JSONB',\n * uuid: 'UUID',\n * binary: 'BYTEA'\n * }\n */\nexport const DataTypeMappingSchema = z.object({\n text: z.string().describe('SQL type for text fields (e.g., VARCHAR, TEXT)'),\n number: z.string().describe('SQL type for number fields (e.g., NUMERIC, DECIMAL, INT)'),\n boolean: z.string().describe('SQL type for boolean fields (e.g., BOOLEAN, BIT)'),\n date: z.string().describe('SQL type for date fields (e.g., DATE)'),\n datetime: z.string().describe('SQL type for datetime fields (e.g., TIMESTAMP, DATETIME)'),\n json: z.string().optional().describe('SQL type for JSON fields (e.g., JSON, JSONB)'),\n uuid: z.string().optional().describe('SQL type for UUID fields (e.g., UUID, CHAR(36))'),\n binary: z.string().optional().describe('SQL type for binary fields (e.g., BLOB, BYTEA)'),\n});\n\nexport type DataTypeMapping = z.infer<typeof DataTypeMappingSchema>;\n\n/**\n * SSL Configuration Schema\n * SSL/TLS connection configuration for secure database connections\n * \n * @example PostgreSQL SSL configuration\n * {\n * rejectUnauthorized: true,\n * ca: '/path/to/ca-cert.pem',\n * cert: '/path/to/client-cert.pem',\n * key: '/path/to/client-key.pem'\n * }\n */\nexport const SSLConfigSchema = z.object({\n rejectUnauthorized: z.boolean().default(true).describe('Reject connections with invalid certificates'),\n ca: z.string().optional().describe('CA certificate file path or content'),\n cert: z.string().optional().describe('Client certificate file path or content'),\n key: z.string().optional().describe('Client private key file path or content'),\n}).refine((data) => {\n // If cert is provided, key must also be provided, and vice versa\n const hasCert = data.cert !== undefined;\n const hasKey = data.key !== undefined;\n return hasCert === hasKey;\n}, {\n message: 'Client certificate (cert) and private key (key) must be provided together',\n});\n\nexport type SSLConfig = z.infer<typeof SSLConfigSchema>;\n\n/**\n * SQL Driver Configuration Schema\n * Extended driver configuration specific to SQL databases\n * \n * @example PostgreSQL driver configuration\n * {\n * name: 'primary-db',\n * type: 'sql',\n * dialect: 'postgresql',\n * connectionString: 'postgresql://user:pass@localhost:5432/mydb',\n * dataTypeMapping: {\n * text: 'VARCHAR(255)',\n * number: 'NUMERIC',\n * boolean: 'BOOLEAN',\n * date: 'DATE',\n * datetime: 'TIMESTAMP',\n * json: 'JSONB',\n * uuid: 'UUID',\n * binary: 'BYTEA'\n * },\n * ssl: true,\n * sslConfig: {\n * rejectUnauthorized: true,\n * ca: '/etc/ssl/certs/ca.pem'\n * },\n * poolConfig: {\n * min: 2,\n * max: 10,\n * idleTimeoutMillis: 30000,\n * connectionTimeoutMillis: 5000\n * },\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: true,\n * bulkDelete: true,\n * transactions: true,\n * savepoints: true,\n * isolationLevels: ['read-committed', 'repeatable-read', 'serializable'],\n * queryFilters: true,\n * queryAggregations: true,\n * querySorting: true,\n * queryPagination: true,\n * queryWindowFunctions: true,\n * querySubqueries: true,\n * queryCTE: true,\n * joins: true,\n * fullTextSearch: true,\n * jsonQuery: true,\n * geospatialQuery: false,\n * streaming: true,\n * jsonFields: true,\n * arrayFields: true,\n * vectorSearch: true,\n * geoSpatial: false,\n * schemaSync: true,\n * migrations: true,\n * indexes: true,\n * connectionPooling: true,\n * preparedStatements: true,\n * queryCache: false\n * }\n * }\n */\nexport const SQLDriverConfigSchema = DriverConfigSchema.extend({\n type: z.literal('sql').describe('Driver type must be \"sql\"'),\n dialect: SQLDialectSchema.describe('SQL database dialect'),\n dataTypeMapping: DataTypeMappingSchema.describe('SQL data type mapping configuration'),\n ssl: z.boolean().default(false).describe('Enable SSL/TLS connection'),\n sslConfig: SSLConfigSchema.optional().describe('SSL/TLS configuration (required when ssl is true)'),\n}).refine((data) => {\n // If ssl is enabled, sslConfig must be provided\n if (data.ssl && !data.sslConfig) {\n return false;\n }\n return true;\n}, {\n message: 'sslConfig is required when ssl is true',\n});\n\nexport type SQLDriverConfig = z.infer<typeof SQLDriverConfigSchema>;\n","import { z } from 'zod';\nimport { DriverConfigSchema } from './driver.zod';\n\n/**\n * NoSQL Database Type Enumeration\n * Supported NoSQL database types\n */\nexport const NoSQLDatabaseTypeSchema = z.enum([\n 'mongodb',\n 'couchdb',\n 'dynamodb',\n 'cassandra',\n 'redis',\n 'elasticsearch',\n 'neo4j',\n 'orientdb',\n]);\n\nexport type NoSQLDatabaseType = z.infer<typeof NoSQLDatabaseTypeSchema>;\n\n/**\n * NoSQL Query Operation Types\n * Different types of operations supported by NoSQL databases\n */\nexport const NoSQLOperationTypeSchema = z.enum([\n 'find', // Query documents/records\n 'findOne', // Get single document\n 'insert', // Insert document\n 'update', // Update document\n 'delete', // Delete document\n 'aggregate', // Aggregation pipeline\n 'mapReduce', // MapReduce operation\n 'count', // Count documents\n 'distinct', // Get distinct values\n 'createIndex', // Create index\n 'dropIndex', // Drop index\n]);\n\nexport type NoSQLOperationType = z.infer<typeof NoSQLOperationTypeSchema>;\n\n/**\n * NoSQL Consistency Level\n * Consistency guarantees for distributed NoSQL databases\n * \n * Consistency levels (from strongest to weakest):\n * - **all**: All replicas must respond (strongest consistency, lowest availability)\n * - **quorum**: Majority of replicas must respond (balanced)\n * - **one**: Any single replica responds (weakest consistency, highest availability)\n * - **local_quorum**: Majority of replicas in local datacenter\n * - **each_quorum**: Quorum of replicas in each datacenter\n * - **eventual**: Eventual consistency (highest availability, weakest consistency)\n */\nexport const ConsistencyLevelSchema = z.enum([\n 'all',\n 'quorum',\n 'one',\n 'local_quorum',\n 'each_quorum',\n 'eventual',\n]);\n\nexport type ConsistencyLevel = z.infer<typeof ConsistencyLevelSchema>;\n\n/**\n * NoSQL Index Type\n * Types of indexes supported by NoSQL databases\n */\nexport const NoSQLIndexTypeSchema = z.enum([\n 'single', // Single field index\n 'compound', // Multiple fields index\n 'unique', // Unique constraint\n 'text', // Full-text search index\n 'geospatial', // Geospatial index (2d, 2dsphere)\n 'hashed', // Hashed index for sharding\n 'ttl', // Time-to-live index (auto-deletion)\n 'sparse', // Sparse index (only indexed documents with field)\n]);\n\nexport type NoSQLIndexType = z.infer<typeof NoSQLIndexTypeSchema>;\n\n/**\n * NoSQL Sharding Configuration\n * Configuration for horizontal partitioning across multiple nodes\n */\nexport const ShardingConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable sharding'),\n shardKey: z.string().optional().describe('Field to use as shard key'),\n shardingStrategy: z.enum(['hash', 'range', 'zone']).optional().describe('Sharding strategy'),\n numShards: z.number().int().positive().optional().describe('Number of shards'),\n});\n\nexport type ShardingConfig = z.infer<typeof ShardingConfigSchema>;\n\n/**\n * NoSQL Replication Configuration\n * Configuration for data replication across nodes\n */\nexport const ReplicationConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable replication'),\n replicaSetName: z.string().optional().describe('Replica set name'),\n replicas: z.number().int().positive().optional().describe('Number of replicas'),\n readPreference: z.enum(['primary', 'primaryPreferred', 'secondary', 'secondaryPreferred', 'nearest'])\n .optional()\n .describe('Read preference for replica set'),\n writeConcern: z.enum(['majority', 'acknowledged', 'unacknowledged'])\n .optional()\n .describe('Write concern level'),\n});\n\nexport type ReplicationConfig = z.infer<typeof ReplicationConfigSchema>;\n\n/**\n * Document Schema Validation\n * Schema validation rules for document-based NoSQL databases\n */\nexport const DocumentSchemaValidationSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable schema validation'),\n validationLevel: z.enum(['strict', 'moderate', 'off']).optional().describe('Validation strictness'),\n validationAction: z.enum(['error', 'warn']).optional().describe('Action on validation failure'),\n jsonSchema: z.record(z.string(), z.any()).optional().describe('JSON Schema for validation'),\n});\n\nexport type DocumentSchemaValidation = z.infer<typeof DocumentSchemaValidationSchema>;\n\n/**\n * NoSQL Data Type Mapping Schema\n * Maps ObjectStack field types to NoSQL-specific data types\n * \n * @example MongoDB data type mapping\n * {\n * text: 'string',\n * number: 'double',\n * boolean: 'bool',\n * date: 'date',\n * datetime: 'date',\n * json: 'object',\n * uuid: 'string',\n * binary: 'binData',\n * array: 'array',\n * objectId: 'objectId'\n * }\n */\nexport const NoSQLDataTypeMappingSchema = z.object({\n text: z.string().describe('NoSQL type for text fields'),\n number: z.string().describe('NoSQL type for number fields'),\n boolean: z.string().describe('NoSQL type for boolean fields'),\n date: z.string().describe('NoSQL type for date fields'),\n datetime: z.string().describe('NoSQL type for datetime fields'),\n json: z.string().optional().describe('NoSQL type for JSON/object fields'),\n uuid: z.string().optional().describe('NoSQL type for UUID fields'),\n binary: z.string().optional().describe('NoSQL type for binary fields'),\n array: z.string().optional().describe('NoSQL type for array fields'),\n objectId: z.string().optional().describe('NoSQL type for ObjectID fields (MongoDB)'),\n geopoint: z.string().optional().describe('NoSQL type for geospatial point fields'),\n});\n\nexport type NoSQLDataTypeMapping = z.infer<typeof NoSQLDataTypeMappingSchema>;\n\n/**\n * NoSQL Driver Configuration Schema\n * Extended driver configuration specific to NoSQL databases\n * \n * @example MongoDB driver configuration\n * {\n * name: 'primary-mongo',\n * type: 'nosql',\n * databaseType: 'mongodb',\n * connectionString: 'mongodb://user:pass@localhost:27017/mydb',\n * dataTypeMapping: {\n * text: 'string',\n * number: 'double',\n * boolean: 'bool',\n * date: 'date',\n * datetime: 'date',\n * json: 'object',\n * uuid: 'string',\n * binary: 'binData',\n * array: 'array',\n * objectId: 'objectId'\n * },\n * consistency: 'quorum',\n * replication: {\n * enabled: true,\n * replicaSetName: 'rs0',\n * replicas: 3,\n * readPreference: 'primaryPreferred',\n * writeConcern: 'majority'\n * },\n * sharding: {\n * enabled: true,\n * shardKey: '_id',\n * shardingStrategy: 'hash',\n * numShards: 4\n * },\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: true,\n * bulkDelete: true,\n * transactions: true,\n * savepoints: false,\n * queryFilters: true,\n * queryAggregations: true,\n * querySorting: true,\n * queryPagination: true,\n * queryWindowFunctions: false,\n * querySubqueries: false,\n * queryCTE: false,\n * joins: false,\n * fullTextSearch: true,\n * jsonQuery: true,\n * geospatialQuery: true,\n * streaming: true,\n * jsonFields: true,\n * arrayFields: true,\n * vectorSearch: false,\n * schemaSync: true,\n * migrations: false,\n * indexes: true,\n * connectionPooling: true,\n * preparedStatements: false,\n * queryCache: false\n * }\n * }\n * \n * @example DynamoDB driver configuration\n * {\n * name: 'dynamodb-main',\n * type: 'nosql',\n * databaseType: 'dynamodb',\n * region: 'us-east-1',\n * accessKeyId: 'AKIAIOSFODNN7EXAMPLE',\n * secretAccessKey: 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',\n * consistency: 'eventual',\n * capabilities: {\n * create: true,\n * read: true,\n * update: true,\n * delete: true,\n * bulkCreate: true,\n * bulkUpdate: false,\n * bulkDelete: false,\n * transactions: true,\n * queryFilters: true,\n * queryAggregations: false,\n * querySorting: true,\n * queryPagination: true,\n * fullTextSearch: false,\n * jsonQuery: true,\n * indexes: true\n * }\n * }\n */\nexport const NoSQLDriverConfigSchema = DriverConfigSchema.extend({\n type: z.literal('nosql').describe('Driver type must be \"nosql\"'),\n databaseType: NoSQLDatabaseTypeSchema.describe('Specific NoSQL database type'),\n dataTypeMapping: NoSQLDataTypeMappingSchema.describe('NoSQL data type mapping configuration'),\n \n /**\n * Consistency level for reads/writes\n */\n consistency: ConsistencyLevelSchema.optional().describe('Consistency level for operations'),\n \n /**\n * Replication configuration\n */\n replication: ReplicationConfigSchema.optional().describe('Replication configuration'),\n \n /**\n * Sharding configuration\n */\n sharding: ShardingConfigSchema.optional().describe('Sharding configuration'),\n \n /**\n * Schema validation rules (for document databases)\n */\n schemaValidation: DocumentSchemaValidationSchema.optional().describe('Document schema validation'),\n \n /**\n * AWS Region (for DynamoDB, DocumentDB, etc.)\n */\n region: z.string().optional().describe('AWS region (for managed NoSQL services)'),\n \n /**\n * AWS Access Key ID (for DynamoDB, DocumentDB, etc.)\n */\n accessKeyId: z.string().optional().describe('AWS access key ID'),\n \n /**\n * AWS Secret Access Key (for DynamoDB, DocumentDB, etc.)\n */\n secretAccessKey: z.string().optional().describe('AWS secret access key'),\n \n /**\n * Time-to-live (TTL) field name\n * Automatically delete documents after a specified time\n */\n ttlField: z.string().optional().describe('Field name for TTL (auto-deletion)'),\n \n /**\n * Maximum document size in bytes\n */\n maxDocumentSize: z.number().int().positive().optional().describe('Maximum document size in bytes'),\n \n /**\n * Collection/Table name prefix\n * Useful for multi-tenancy or environment isolation\n */\n collectionPrefix: z.string().optional().describe('Prefix for collection/table names'),\n});\n\nexport type NoSQLDriverConfig = z.infer<typeof NoSQLDriverConfigSchema>;\n\n/**\n * NoSQL Query Options\n * Additional options for NoSQL queries\n */\nexport const NoSQLQueryOptionsSchema = z.object({\n /**\n * Consistency level for this query\n */\n consistency: ConsistencyLevelSchema.optional().describe('Consistency level override'),\n \n /**\n * Read from secondary replicas\n */\n readFromSecondary: z.boolean().optional().describe('Allow reading from secondary replicas'),\n \n /**\n * Projection (fields to include/exclude)\n */\n projection: z.record(z.string(), z.union([z.literal(0), z.literal(1)])).optional().describe('Field projection'),\n \n /**\n * Query timeout in milliseconds\n */\n timeout: z.number().int().positive().optional().describe('Query timeout (ms)'),\n \n /**\n * Use cursor for large result sets\n */\n useCursor: z.boolean().optional().describe('Use cursor instead of loading all results'),\n \n /**\n * Batch size for cursor iteration\n */\n batchSize: z.number().int().positive().optional().describe('Cursor batch size'),\n \n /**\n * Enable query profiling\n */\n profile: z.boolean().optional().describe('Enable query profiling'),\n \n /**\n * Use hinted index\n */\n hint: z.string().optional().describe('Index hint for query optimization'),\n});\n\nexport type NoSQLQueryOptions = z.infer<typeof NoSQLQueryOptionsSchema>;\n\n/**\n * NoSQL Aggregation Pipeline Stage\n * Represents a single stage in an aggregation pipeline (MongoDB-style)\n */\nexport const AggregationStageSchema = z.object({\n /**\n * Stage operator (e.g., $match, $group, $sort, $project)\n */\n operator: z.string().describe('Aggregation operator (e.g., $match, $group, $sort)'),\n \n /**\n * Stage parameters/options\n */\n options: z.record(z.string(), z.any()).describe('Stage-specific options'),\n});\n\nexport type AggregationStage = z.infer<typeof AggregationStageSchema>;\n\n/**\n * NoSQL Aggregation Pipeline\n * Sequence of aggregation stages for complex data transformations\n */\nexport const AggregationPipelineSchema = z.object({\n /**\n * Collection/Table to aggregate\n */\n collection: z.string().describe('Collection/table name'),\n \n /**\n * Pipeline stages\n */\n stages: z.array(AggregationStageSchema).describe('Aggregation pipeline stages'),\n \n /**\n * Additional options\n */\n options: NoSQLQueryOptionsSchema.optional().describe('Query options'),\n});\n\nexport type AggregationPipeline = z.infer<typeof AggregationPipelineSchema>;\n\n/**\n * NoSQL Index Definition\n * Definition for creating indexes in NoSQL databases\n */\nexport const NoSQLIndexSchema = z.object({\n /**\n * Index name\n */\n name: z.string().describe('Index name'),\n \n /**\n * Index type\n */\n type: NoSQLIndexTypeSchema.describe('Index type'),\n \n /**\n * Fields to index\n * For compound indexes, order matters\n */\n fields: z.array(z.object({\n field: z.string().describe('Field name'),\n order: z.enum(['asc', 'desc', 'text', '2dsphere']).optional().describe('Index order or type'),\n })).describe('Fields to index'),\n \n /**\n * Unique constraint\n */\n unique: z.boolean().default(false).describe('Enforce uniqueness'),\n \n /**\n * Sparse index (only index documents with the field)\n */\n sparse: z.boolean().default(false).describe('Sparse index'),\n \n /**\n * TTL in seconds (for TTL indexes)\n */\n expireAfterSeconds: z.number().int().positive().optional().describe('TTL in seconds'),\n \n /**\n * Partial index filter\n */\n partialFilterExpression: z.record(z.string(), z.any()).optional().describe('Partial index filter'),\n \n /**\n * Background index creation\n */\n background: z.boolean().default(false).describe('Create index in background'),\n});\n\nexport type NoSQLIndex = z.infer<typeof NoSQLIndexSchema>;\n\n/**\n * NoSQL Transaction Options\n * Options for NoSQL transactions (where supported)\n */\nexport const NoSQLTransactionOptionsSchema = z.object({\n /**\n * Read concern level\n */\n readConcern: z.enum(['local', 'majority', 'linearizable', 'snapshot']).optional().describe('Read concern level'),\n \n /**\n * Write concern level\n */\n writeConcern: z.enum(['majority', 'acknowledged', 'unacknowledged']).optional().describe('Write concern level'),\n \n /**\n * Read preference\n */\n readPreference: z.enum(['primary', 'primaryPreferred', 'secondary', 'secondaryPreferred', 'nearest'])\n .optional()\n .describe('Read preference'),\n \n /**\n * Transaction timeout in milliseconds\n */\n maxCommitTimeMS: z.number().int().positive().optional().describe('Transaction commit timeout (ms)'),\n});\n\nexport type NoSQLTransactionOptions = z.infer<typeof NoSQLTransactionOptionsSchema>;\n","import { z } from 'zod';\n\n/**\n * Data Import Strategy\n * Defines how the engine handles existing records.\n */\nexport const DatasetMode = z.enum([\n 'insert', // Try to insert, fail on duplicate\n 'update', // Only update found records, ignore new\n 'upsert', // Create new or Update existing (Standard)\n 'replace', // Delete ALL records in object then insert (Dangerous - use for cache tables)\n 'ignore' // Try to insert, silently skip duplicates\n]);\n\n/**\n * Dataset Schema (Seed Data / Fixtures)\n * \n * Standardized format for transporting data.\n * Used for:\n * 1. System Bootstrapping (Admin accounts, Standard Roles)\n * 2. Reference Data (Countries, Currencies)\n * 3. Demo/Test Data\n */\nexport const DatasetSchema = z.object({\n /** \n * Target Object \n * The machine name of the object to populate.\n */\n object: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Target Object Name'),\n\n /** \n * Idempotency Key (The \"Upsert\" Key)\n * The field used to check if a record already exists.\n * Best Practice: Use a natural key like 'code', 'slug', 'username' or 'external_id'.\n * Standard: '_id' (internal ID) is rarely used for portable seed data.\n */\n externalId: z.string().default('name').describe('Field match for uniqueness check'),\n\n /** \n * Import Strategy\n */\n mode: DatasetMode.default('upsert').describe('Conflict resolution strategy'),\n\n /**\n * Environment Scope\n * - 'all': Always load\n * - 'dev': Only for development/demo\n * - 'test': Only for CI/CD tests\n */\n env: z.array(z.enum(['prod', 'dev', 'test'])).default(['prod', 'dev', 'test']).describe('Applicable environments'),\n\n /** \n * The Payload\n * Array of raw JSON objects matching the Object Schema.\n */\n records: z.array(z.record(z.string(), z.any())).describe('Data records'),\n});\n\n/** Parsed/output type — all defaults are applied (env, mode, externalId always present) */\nexport type Dataset = z.infer<typeof DatasetSchema>;\n\n/** Input type — fields with defaults (env, mode, externalId) are optional */\nexport type DatasetInput = z.input<typeof DatasetSchema>;\n\nexport type DatasetImportMode = z.infer<typeof DatasetMode>;\n","import { z } from 'zod';\n\n/**\n * Document Version Schema\n * \n * Represents a single version of a document in a version-controlled system.\n * Each version is immutable and maintains its own metadata and download URL.\n * \n * @example\n * ```json\n * {\n * \"versionNumber\": 2,\n * \"createdAt\": 1704067200000,\n * \"createdBy\": \"user_123\",\n * \"size\": 2048576,\n * \"checksum\": \"a1b2c3d4e5f6\",\n * \"downloadUrl\": \"https://storage.example.com/docs/v2/file.pdf\",\n * \"isLatest\": true\n * }\n * ```\n */\nexport const DocumentVersionSchema = z.object({\n /**\n * Sequential version number (increments with each new version)\n */\n versionNumber: z.number().describe('Version number'),\n\n /**\n * Timestamp when this version was created (Unix milliseconds)\n */\n createdAt: z.number().describe('Creation timestamp'),\n\n /**\n * User ID who created this version\n */\n createdBy: z.string().describe('Creator user ID'),\n\n /**\n * File size in bytes\n */\n size: z.number().describe('File size in bytes'),\n\n /**\n * Checksum/hash of the file content (for integrity verification)\n */\n checksum: z.string().describe('File checksum'),\n\n /**\n * URL to download this specific version\n */\n downloadUrl: z.string().url().describe('Download URL'),\n\n /**\n * Whether this is the latest version\n * @default false\n */\n isLatest: z.boolean().optional().default(false).describe('Is latest version'),\n});\n\n/**\n * Document Template Schema\n * \n * Defines a reusable document template with dynamic placeholders.\n * Templates can be used to generate documents with variable content.\n * \n * @example\n * ```json\n * {\n * \"id\": \"contract-template\",\n * \"name\": \"Service Agreement\",\n * \"description\": \"Standard service agreement template\",\n * \"fileUrl\": \"https://example.com/templates/contract.docx\",\n * \"fileType\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n * \"placeholders\": [\n * {\n * \"key\": \"client_name\",\n * \"label\": \"Client Name\",\n * \"type\": \"text\",\n * \"required\": true\n * },\n * {\n * \"key\": \"contract_date\",\n * \"label\": \"Contract Date\",\n * \"type\": \"date\",\n * \"required\": true\n * }\n * ]\n * }\n * ```\n */\nexport const DocumentTemplateSchema = z.object({\n /**\n * Unique identifier for the template\n */\n id: z.string().describe('Template ID'),\n\n /**\n * Human-readable name of the template\n */\n name: z.string().describe('Template name'),\n\n /**\n * Optional description of the template's purpose\n */\n description: z.string().optional().describe('Template description'),\n\n /**\n * URL to the template file\n */\n fileUrl: z.string().url().describe('Template file URL'),\n\n /**\n * MIME type of the template file\n */\n fileType: z.string().describe('File MIME type'),\n\n /**\n * List of dynamic placeholders in the template\n */\n placeholders: z.array(z.object({\n /**\n * Placeholder identifier (used in template)\n */\n key: z.string().describe('Placeholder key'),\n\n /**\n * Human-readable label for the placeholder\n */\n label: z.string().describe('Placeholder label'),\n\n /**\n * Data type of the placeholder value\n */\n type: z.enum(['text', 'number', 'date', 'image']).describe('Placeholder type'),\n\n /**\n * Whether this placeholder must be filled\n * @default false\n */\n required: z.boolean().optional().default(false).describe('Is required'),\n })).describe('Template placeholders'),\n});\n\n/**\n * E-Signature Configuration Schema\n * \n * Configuration for electronic signature workflows.\n * Supports integration with popular e-signature providers.\n * \n * @example\n * ```json\n * {\n * \"provider\": \"docusign\",\n * \"enabled\": true,\n * \"signers\": [\n * {\n * \"email\": \"client@example.com\",\n * \"name\": \"John Doe\",\n * \"role\": \"Client\",\n * \"order\": 1\n * },\n * {\n * \"email\": \"manager@example.com\",\n * \"name\": \"Jane Smith\",\n * \"role\": \"Manager\",\n * \"order\": 2\n * }\n * ],\n * \"expirationDays\": 30,\n * \"reminderDays\": 7\n * }\n * ```\n */\nexport const ESignatureConfigSchema = z.object({\n /**\n * E-signature service provider\n */\n provider: z.enum(['docusign', 'adobe-sign', 'hellosign', 'custom']).describe('E-signature provider'),\n\n /**\n * Whether e-signature is enabled for this document\n * @default false\n */\n enabled: z.boolean().optional().default(false).describe('E-signature enabled'),\n\n /**\n * List of signers in signing order\n */\n signers: z.array(z.object({\n /**\n * Signer's email address\n */\n email: z.string().email().describe('Signer email'),\n\n /**\n * Signer's full name\n */\n name: z.string().describe('Signer name'),\n\n /**\n * Signer's role in the document\n */\n role: z.string().describe('Signer role'),\n\n /**\n * Signing order (lower numbers sign first)\n */\n order: z.number().describe('Signing order'),\n })).describe('Document signers'),\n\n /**\n * Days until signature request expires\n * @default 30\n */\n expirationDays: z.number().optional().default(30).describe('Expiration days'),\n\n /**\n * Days between reminder emails\n * @default 7\n */\n reminderDays: z.number().optional().default(7).describe('Reminder interval days'),\n});\n\n/**\n * Document Schema\n * \n * Comprehensive document management protocol supporting versioning,\n * templates, e-signatures, and access control.\n * \n * @example\n * ```json\n * {\n * \"id\": \"doc_123\",\n * \"name\": \"Service Agreement 2024\",\n * \"description\": \"Annual service agreement\",\n * \"fileType\": \"application/pdf\",\n * \"fileSize\": 1048576,\n * \"category\": \"contracts\",\n * \"tags\": [\"legal\", \"2024\", \"services\"],\n * \"versioning\": {\n * \"enabled\": true,\n * \"versions\": [\n * {\n * \"versionNumber\": 1,\n * \"createdAt\": 1704067200000,\n * \"createdBy\": \"user_123\",\n * \"size\": 1048576,\n * \"checksum\": \"abc123\",\n * \"downloadUrl\": \"https://example.com/docs/v1.pdf\",\n * \"isLatest\": true\n * }\n * ],\n * \"majorVersion\": 1,\n * \"minorVersion\": 0\n * },\n * \"access\": {\n * \"isPublic\": false,\n * \"sharedWith\": [\"user_456\", \"team_789\"],\n * \"expiresAt\": 1735689600000\n * },\n * \"metadata\": {\n * \"author\": \"John Doe\",\n * \"department\": \"Legal\"\n * }\n * }\n * ```\n */\nexport const DocumentSchema = z.object({\n /**\n * Unique document identifier\n */\n id: z.string().describe('Document ID'),\n\n /**\n * Document name\n */\n name: z.string().describe('Document name'),\n\n /**\n * Optional document description\n */\n description: z.string().optional().describe('Document description'),\n\n /**\n * MIME type of the document\n */\n fileType: z.string().describe('File MIME type'),\n\n /**\n * File size in bytes\n */\n fileSize: z.number().describe('File size in bytes'),\n\n /**\n * Document category for organization\n */\n category: z.string().optional().describe('Document category'),\n\n /**\n * Tags for searchability and organization\n */\n tags: z.array(z.string()).optional().describe('Document tags'),\n\n /**\n * Version control configuration\n */\n versioning: z.object({\n /**\n * Whether versioning is enabled\n */\n enabled: z.boolean().describe('Versioning enabled'),\n\n /**\n * List of all document versions\n */\n versions: z.array(DocumentVersionSchema).describe('Version history'),\n\n /**\n * Current major version number\n */\n majorVersion: z.number().describe('Major version'),\n\n /**\n * Current minor version number\n */\n minorVersion: z.number().describe('Minor version'),\n }).optional().describe('Version control'),\n\n /**\n * Template configuration (if document is generated from template)\n */\n template: DocumentTemplateSchema.optional().describe('Document template'),\n\n /**\n * E-signature configuration\n */\n eSignature: ESignatureConfigSchema.optional().describe('E-signature config'),\n\n /**\n * Access control settings\n */\n access: z.object({\n /**\n * Whether document is publicly accessible\n * @default false\n */\n isPublic: z.boolean().optional().default(false).describe('Public access'),\n\n /**\n * List of user/team IDs with access\n */\n sharedWith: z.array(z.string()).optional().describe('Shared with'),\n\n /**\n * Timestamp when access expires (Unix milliseconds)\n */\n expiresAt: z.number().optional().describe('Access expiration'),\n }).optional().describe('Access control'),\n\n /**\n * Custom metadata fields\n */\n metadata: z.record(z.string(), z.any()).optional().describe('Custom metadata'),\n});\n\n// Type exports\nexport type Document = z.infer<typeof DocumentSchema>;\nexport type DocumentVersion = z.infer<typeof DocumentVersionSchema>;\nexport type DocumentTemplate = z.infer<typeof DocumentTemplateSchema>;\nexport type ESignatureConfig = z.infer<typeof ESignatureConfigSchema>;\n","import { z } from 'zod';\nimport { FieldMappingSchema as BaseFieldMappingSchema } from '../shared/mapping.zod';\n\n/**\n * External Data Source Schema\n * \n * Configuration for connecting to external data systems.\n * Similar to Salesforce External Objects for real-time data integration.\n * \n * @example\n * ```json\n * {\n * \"id\": \"salesforce-accounts\",\n * \"name\": \"Salesforce Account Data\",\n * \"type\": \"rest-api\",\n * \"endpoint\": \"https://api.salesforce.com/services/data/v58.0\",\n * \"authentication\": {\n * \"type\": \"oauth2\",\n * \"config\": {\n * \"clientId\": \"...\",\n * \"clientSecret\": \"...\",\n * \"tokenUrl\": \"https://login.salesforce.com/services/oauth2/token\"\n * }\n * }\n * }\n * ```\n */\nexport const ExternalDataSourceSchema = z.object({\n /**\n * Unique identifier for the external data source\n */\n id: z.string().describe('Data source ID'),\n\n /**\n * Human-readable name of the data source\n */\n name: z.string().describe('Data source name'),\n\n /**\n * Protocol type for connecting to the data source\n */\n type: z.enum(['odata', 'rest-api', 'graphql', 'custom']).describe('Protocol type'),\n\n /**\n * Base URL endpoint for the external system\n */\n endpoint: z.string().url().describe('API endpoint URL'),\n\n /**\n * Authentication configuration\n */\n authentication: z.object({\n /**\n * Authentication method\n */\n type: z.enum(['oauth2', 'api-key', 'basic', 'none']).describe('Auth type'),\n\n /**\n * Authentication-specific configuration\n * Structure varies based on auth type\n */\n config: z.record(z.string(), z.any()).describe('Auth configuration'),\n }).describe('Authentication'),\n});\n\n/**\n * Field Mapping Schema for External Lookups\n * \n * Extends the base field mapping with external lookup specific features.\n * Uses the canonical field mapping protocol from shared/mapping.zod.ts.\n * \n * @see {@link BaseFieldMappingSchema} for the base field mapping schema\n * \n * @example\n * ```json\n * {\n * \"source\": \"AccountName\",\n * \"target\": \"name\",\n * \"readonly\": true\n * }\n * ```\n */\nexport const ExternalFieldMappingSchema = BaseFieldMappingSchema.extend({\n /**\n * Field data type\n */\n type: z.string().optional().describe('Field type'),\n\n /**\n * Whether the field is read-only\n * @default true\n */\n readonly: z.boolean().optional().default(true).describe('Read-only field'),\n});\n\n/**\n * External Lookup Schema\n * \n * Real-time data lookup protocol for external systems.\n * Enables querying external data sources without replication.\n * Inspired by Salesforce External Objects and OData protocols.\n * \n * @example\n * ```json\n * {\n * \"fieldName\": \"external_account\",\n * \"dataSource\": {\n * \"id\": \"salesforce-api\",\n * \"name\": \"Salesforce\",\n * \"type\": \"rest-api\",\n * \"endpoint\": \"https://api.salesforce.com/services/data/v58.0\",\n * \"authentication\": {\n * \"type\": \"oauth2\",\n * \"config\": {\"clientId\": \"...\"}\n * }\n * },\n * \"query\": {\n * \"endpoint\": \"/sobjects/Account\",\n * \"method\": \"GET\",\n * \"parameters\": {\"limit\": 100}\n * },\n * \"fieldMappings\": [\n * {\n * \"externalField\": \"Name\",\n * \"localField\": \"account_name\",\n * \"type\": \"text\",\n * \"readonly\": true\n * }\n * ],\n * \"caching\": {\n * \"enabled\": true,\n * \"ttl\": 300,\n * \"strategy\": \"ttl\"\n * },\n * \"fallback\": {\n * \"enabled\": true,\n * \"showError\": true\n * },\n * \"rateLimit\": {\n * \"requestsPerSecond\": 10,\n * \"burstSize\": 20\n * }\n * }\n * ```\n */\nexport const ExternalLookupSchema = z.object({\n /**\n * Name of the field that uses external lookup\n */\n fieldName: z.string().describe('Field name'),\n\n /**\n * External data source configuration\n */\n dataSource: ExternalDataSourceSchema.describe('External data source'),\n\n /**\n * Query configuration for fetching external data\n */\n query: z.object({\n /**\n * API endpoint path (relative to base endpoint)\n */\n endpoint: z.string().describe('Query endpoint path'),\n\n /**\n * HTTP method for the query\n * @default 'GET'\n */\n method: z.enum(['GET', 'POST']).optional().default('GET').describe('HTTP method'),\n\n /**\n * Query parameters or request body\n */\n parameters: z.record(z.string(), z.any()).optional().describe('Query parameters'),\n }).describe('Query configuration'),\n\n /**\n * Mapping between external and local fields\n */\n fieldMappings: z.array(ExternalFieldMappingSchema).describe('Field mappings'),\n\n /**\n * Cache configuration for external data\n */\n caching: z.object({\n /**\n * Whether caching is enabled\n * @default true\n */\n enabled: z.boolean().optional().default(true).describe('Cache enabled'),\n\n /**\n * Time-to-live in seconds\n * @default 300\n */\n ttl: z.number().optional().default(300).describe('Cache TTL (seconds)'),\n\n /**\n * Cache eviction strategy\n * @default 'ttl'\n */\n strategy: z.enum(['lru', 'lfu', 'ttl']).optional().default('ttl').describe('Cache strategy'),\n }).optional().describe('Caching configuration'),\n\n /**\n * Fallback behavior when external system is unavailable\n */\n fallback: z.object({\n /**\n * Whether fallback is enabled\n * @default true\n */\n enabled: z.boolean().optional().default(true).describe('Fallback enabled'),\n\n /**\n * Default value to use when external system fails\n */\n defaultValue: z.any().optional().describe('Default fallback value'),\n\n /**\n * Whether to show error message to user\n * @default true\n */\n showError: z.boolean().optional().default(true).describe('Show error to user'),\n }).optional().describe('Fallback configuration'),\n\n /**\n * Rate limiting to prevent overwhelming external system\n */\n rateLimit: z.object({\n /**\n * Maximum requests per second\n */\n requestsPerSecond: z.number().describe('Requests per second limit'),\n\n /**\n * Burst size for handling spikes\n */\n burstSize: z.number().optional().describe('Burst size'),\n }).optional().describe('Rate limiting'),\n});\n\n// Type exports\nexport type ExternalLookup = z.infer<typeof ExternalLookupSchema>;\nexport type ExternalDataSource = z.infer<typeof ExternalDataSourceSchema>;\nexport type ExternalFieldMapping = z.infer<typeof ExternalFieldMappingSchema>;\n","import { z } from 'zod';\n\n/**\n * Base Field Mapping Protocol\n * \n * Shared by: ETL, Sync, Connector, External Lookup\n * \n * This module provides the canonical field mapping schema used across\n * ObjectStack for data transformation and synchronization.\n * \n * **Use Cases:**\n * - ETL pipelines (data/mapping.zod.ts)\n * - Data synchronization (automation/sync.zod.ts)\n * - Integration connectors (integration/connector.zod.ts)\n * - External lookups (data/external-lookup.zod.ts)\n * \n * @example Basic field mapping\n * ```typescript\n * const mapping: FieldMapping = {\n * source: 'external_user_id',\n * target: 'user_id',\n * };\n * ```\n * \n * @example With transformation\n * ```typescript\n * const mapping: FieldMapping = {\n * source: 'user_name',\n * target: 'name',\n * transform: { type: 'cast', targetType: 'string' },\n * defaultValue: 'Unknown'\n * };\n * ```\n */\n\n/**\n * Transform Type Schema\n * \n * Defines the type of transformation to apply to a field value.\n * Implementations can extend this for domain-specific transforms.\n */\nexport const TransformTypeSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('constant'),\n value: z.any().describe('Constant value to use'),\n }).describe('Set a constant value'),\n \n z.object({\n type: z.literal('cast'),\n targetType: z.enum(['string', 'number', 'boolean', 'date']).describe('Target data type'),\n }).describe('Cast to a specific data type'),\n \n z.object({\n type: z.literal('lookup'),\n table: z.string().describe('Lookup table name'),\n keyField: z.string().describe('Field to match on'),\n valueField: z.string().describe('Field to retrieve'),\n }).describe('Lookup value from another table'),\n \n z.object({\n type: z.literal('javascript'),\n expression: z.string().describe('JavaScript expression (e.g., \"value.toUpperCase()\")'),\n }).describe('Custom JavaScript transformation'),\n \n z.object({\n type: z.literal('map'),\n mappings: z.record(z.string(), z.any()).describe('Value mappings (e.g., {\"Active\": \"active\"})'),\n }).describe('Map values using a dictionary'),\n]);\n\nexport type TransformType = z.infer<typeof TransformTypeSchema>;\n\n/**\n * Field Mapping Schema\n * \n * Base schema for mapping fields between source and target systems.\n * \n * **NAMING CONVENTION:**\n * - source: Field name in the source system\n * - target: Field name in the target system (should be snake_case for ObjectStack)\n * \n * @example\n * ```typescript\n * {\n * source: 'FirstName',\n * target: 'first_name',\n * transform: { type: 'cast', targetType: 'string' },\n * defaultValue: ''\n * }\n * ```\n */\nexport const FieldMappingSchema = z.object({\n /**\n * Source field name\n */\n source: z.string().describe('Source field name'),\n \n /**\n * Target field name (should be snake_case for ObjectStack)\n */\n target: z.string().describe('Target field name'),\n \n /**\n * Transformation to apply\n */\n transform: TransformTypeSchema.optional().describe('Transformation to apply'),\n \n /**\n * Default value if source is null/undefined\n */\n defaultValue: z.any().optional().describe('Default if source is null/undefined'),\n});\n\nexport type FieldMapping = z.infer<typeof FieldMappingSchema>;\n","import { z } from 'zod';\n\n\n/**\n * Driver Identifier\n * Can be a built-in driver or a plugin-contributed driver (e.g., \"com.vendor.snowflake\").\n */\nexport const DriverType = z.string().describe('Underlying driver identifier');\n\n/**\n * Driver Definition Schema\n * Metadata describing a Database Driver.\n * Plugins use this to register new connectivity options.\n */\nexport const DriverDefinitionSchema = z.object({\n id: z.string().describe('Unique driver identifier (e.g. \"postgres\")'),\n label: z.string().describe('Display label (e.g. \"PostgreSQL\")'),\n description: z.string().optional(),\n icon: z.string().optional(),\n \n /**\n * Configuration Schema (JSON Schema)\n * Describes the structure of the `config` object needed for this driver.\n * Used by the UI to generate the connection form.\n */\n configSchema: z.record(z.string(), z.any()).describe('JSON Schema for connection configuration'),\n \n /**\n * Default Capabilities\n * What this driver supports out-of-the-box.\n */\n capabilities: z.lazy(() => DatasourceCapabilities).optional(),\n});\n\n/**\n * Datasource Capabilities Schema\n * Declares what this datasource naturally supports.\n * The ObjectQL engine uses this to determine what logic to push down\n * and what to compute in memory.\n */\nexport const DatasourceCapabilities = z.object({\n // ============================================================================\n // Transaction & Connection Management\n // ============================================================================\n \n /** Can handle ACID transactions? */\n transactions: z.boolean().default(false),\n \n // ============================================================================\n // Query Operations\n // ============================================================================\n \n /** Can execute WHERE clause filters natively? */\n queryFilters: z.boolean().default(false),\n \n /** Can perform aggregation (group by, sum, avg)? */\n queryAggregations: z.boolean().default(false),\n \n /** Can perform ORDER BY sorting? */\n querySorting: z.boolean().default(false),\n \n /** Can perform LIMIT/OFFSET pagination? */\n queryPagination: z.boolean().default(false),\n \n /** Can perform window functions? */\n queryWindowFunctions: z.boolean().default(false),\n \n /** Can perform subqueries? */\n querySubqueries: z.boolean().default(false),\n \n /** Can execute SQL-like joins natively? */\n joins: z.boolean().default(false),\n \n // ============================================================================\n // Advanced Features\n // ============================================================================\n \n /** Can perform full-text search? */\n fullTextSearch: z.boolean().default(false),\n \n /** Is read-only? */\n readOnly: z.boolean().default(false),\n \n /** Is scheme-less (needs schema inference)? */\n dynamicSchema: z.boolean().default(false),\n});\n\n/**\n * Datasource Schema\n * Represents a connection to an external data store.\n */\nexport const DatasourceSchema = z.object({\n /** Machine Name */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique datasource identifier'),\n \n /** Human Label */\n label: z.string().optional().describe('Display label'),\n \n /** Driver */\n driver: DriverType.describe('Underlying driver type'),\n \n /** \n * Connection Configuration \n * Specific to the driver (e.g., host, port, user, password, bucket, etc.)\n * Stored securely (passwords usually interpolated from ENV).\n */\n config: z.record(z.string(), z.any()).describe('Driver specific configuration'),\n \n /**\n * Connection Pool Configuration\n * Standard connection pooling settings.\n */\n pool: z.object({\n min: z.number().default(0).describe('Minimum connections'),\n max: z.number().default(10).describe('Maximum connections'),\n idleTimeoutMillis: z.number().default(30000).describe('Idle timeout'),\n connectionTimeoutMillis: z.number().default(3000).describe('Connection establishment timeout'),\n }).optional().describe('Connection pool settings'),\n\n /**\n * Read Replicas\n * Optional list of duplicate configurations for read-only operations.\n * Useful for scaling read throughput.\n */\n readReplicas: z.array(z.record(z.string(), z.any())).optional().describe('Read-only replica configurations'),\n\n /**\n * Capability Overrides\n * Manually override what the driver claims to support.\n */\n capabilities: DatasourceCapabilities.optional().describe('Capability overrides'),\n \n /** Description */\n description: z.string().optional().describe('Internal description'),\n \n /** Is enabled? */\n active: z.boolean().default(true).describe('Is datasource enabled'),\n});\n\nexport type Datasource = z.infer<typeof DatasourceSchema>;\nexport type DatasourceConfig = z.infer<typeof DatasourceCapabilities>;\n","import { z } from 'zod';\n\n/**\n * Analytics/Semantic Layer Protocol\n * \n * Defines the \"Business Logic\" for data analysis.\n * Inspired by Cube.dev, LookML, and dbt MetricFlow.\n * \n * This layer decouples the \"Physical Data\" (Tables/Columns) from the \n * \"Business Data\" (Metrics/Dimensions).\n */\n\n/**\n * Metric Type\n * The mathematical operation to perform.\n */\nexport const MetricType = z.enum([\n 'count', \n 'sum', \n 'avg', \n 'min', \n 'max', \n 'count_distinct', \n 'number', // Custom SQL expression returning a number\n 'string', // Custom SQL expression returning a string\n 'boolean' // Custom SQL expression returning a boolean\n]);\n\n/**\n * Dimension Type\n * The nature of the grouping field.\n */\nexport const DimensionType = z.enum([\n 'string', \n 'number', \n 'boolean', \n 'time', \n 'geo'\n]);\n\n/**\n * Time Interval for Time Dimensions\n */\nexport const TimeUpdateInterval = z.enum([\n 'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'\n]);\n\n/**\n * Metric Schema\n * A quantitative measurement (e.g., \"Total Revenue\", \"Average Order Value\").\n */\nexport const MetricSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique metric ID'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n \n type: MetricType,\n \n /** Source Calculation */\n sql: z.string().describe('SQL expression or field reference'),\n \n /** Filtering for this specific metric (e.g. \"Revenue from Premium Users\") */\n filters: z.array(z.object({\n sql: z.string()\n })).optional(),\n \n /** Format for display (e.g. \"currency\", \"percent\") */\n format: z.string().optional(),\n});\n\n/**\n * Dimension Schema\n * A categorical attribute to group by (e.g., \"Product Category\", \"Order Date\").\n */\nexport const DimensionSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique dimension ID'),\n label: z.string().describe('Human readable label'),\n description: z.string().optional(),\n \n type: DimensionType,\n \n /** Source Column */\n sql: z.string().describe('SQL expression or column reference'),\n \n /** For Time Dimensions: Supported Granularities */\n granularities: z.array(TimeUpdateInterval).optional(),\n});\n\n/**\n * Join Schema\n * Defines how this cube relates to others.\n */\nexport const CubeJoinSchema = z.object({\n name: z.string().describe('Target cube name'),\n relationship: z.enum(['one_to_one', 'one_to_many', 'many_to_one']).default('many_to_one'),\n sql: z.string().describe('Join condition (ON clause)'),\n});\n\n/**\n * Cube Schema\n * A logical data model representing a business entity or process for analysis.\n * Maps physical tables to business metrics and dimensions.\n */\nexport const CubeSchema = z.object({\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Cube name (snake_case)'),\n title: z.string().optional(),\n description: z.string().optional(),\n \n /** Physical Data Source */\n sql: z.string().describe('Base SQL statement or Table Name'),\n \n /** Semantic Definitions */\n measures: z.record(z.string(), MetricSchema).describe('Quantitative metrics'),\n dimensions: z.record(z.string(), DimensionSchema).describe('Qualitative attributes'),\n \n /** Relationships */\n joins: z.record(z.string(), CubeJoinSchema).optional(),\n \n /** Pre-aggregations / Caching */\n refreshKey: z.object({\n every: z.string().optional(), // e.g. \"1 hour\"\n sql: z.string().optional(), // SQL to check for data changes\n }).optional(),\n \n /** Access Control */\n public: z.boolean().default(false),\n});\n\n/**\n * Analytics Query Schema\n * The request format for the Analytics API.\n */\nexport const AnalyticsQuerySchema = z.object({\n measures: z.array(z.string()).describe('List of metrics to calculate'),\n dimensions: z.array(z.string()).optional().describe('List of dimensions to group by'),\n \n filters: z.array(z.object({\n member: z.string().describe('Dimension or Measure'),\n operator: z.enum(['equals', 'notEquals', 'contains', 'notContains', 'gt', 'gte', 'lt', 'lte', 'set', 'notSet', 'inDateRange']),\n values: z.array(z.string()).optional(),\n })).optional(),\n \n timeDimensions: z.array(z.object({\n dimension: z.string(),\n granularity: TimeUpdateInterval.optional(),\n dateRange: z.union([\n z.string(), // \"Last 7 days\"\n z.array(z.string()) // [\"2023-01-01\", \"2023-01-31\"]\n ]).optional(),\n })).optional(),\n \n order: z.record(z.string(), z.enum(['asc', 'desc'])).optional(),\n \n limit: z.number().optional(),\n offset: z.number().optional(),\n \n timezone: z.string().default('UTC'),\n});\n\nexport type Metric = z.infer<typeof MetricSchema>;\nexport type Dimension = z.infer<typeof DimensionSchema>;\nexport type Cube = z.infer<typeof CubeSchema>;\nexport type AnalyticsQuery = z.infer<typeof AnalyticsQuerySchema>;\n"],"mappings":"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","names":["import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","FieldMappingSchema","FieldMappingSchema","import_zod","import_zod"]}
|