@objectstack/spec 1.0.5 → 1.0.7
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/dist/ai/index.d.mts +1 -1
- package/dist/ai/index.d.ts +1 -1
- package/dist/api/index.d.mts +2 -2
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.js +1880 -1784
- package/dist/api/index.js.map +1 -1
- package/dist/api/index.mjs +1880 -1784
- package/dist/api/index.mjs.map +1 -1
- package/dist/automation/index.d.mts +1 -1
- package/dist/automation/index.d.ts +1 -1
- package/dist/contracts/index.d.mts +3 -3
- package/dist/contracts/index.d.ts +3 -3
- package/dist/data/index.d.mts +3 -3
- package/dist/data/index.d.ts +3 -3
- package/dist/data/index.js +5 -1
- package/dist/data/index.js.map +1 -1
- package/dist/data/index.mjs +5 -1
- package/dist/data/index.mjs.map +1 -1
- package/dist/{driver.zod-YoPJRbBk.d.mts → driver.zod-BOM_Etco.d.mts} +164 -3467
- package/dist/{driver.zod-B0DitHQ2.d.ts → driver.zod-lfi00zVT.d.ts} +164 -3467
- package/dist/{field.zod-Da5S-hAo.d.mts → field.zod-B_lzVsuC.d.ts} +871 -1
- package/dist/{field.zod-Da5S-hAo.d.ts → field.zod-dhbAw0SA.d.mts} +871 -1
- package/dist/hub/index.d.mts +1 -1
- package/dist/hub/index.d.ts +1 -1
- package/dist/hub/index.js +796 -707
- package/dist/hub/index.js.map +1 -1
- package/dist/hub/index.mjs +796 -707
- package/dist/hub/index.mjs.map +1 -1
- package/dist/{index-DSLwt2M_.d.ts → index-C67cfwmW.d.ts} +6 -355
- package/dist/{index-BMqjuD4e.d.ts → index-CH5zloR3.d.ts} +2 -2
- package/dist/{index-CIBOjiZG.d.mts → index-CU4m6noq.d.mts} +2 -2
- package/dist/{index-BeFe7iF_.d.mts → index-CyognKSZ.d.ts} +268 -1565
- package/dist/{index-CFaoWA3X.d.ts → index-DE_lJ11p.d.mts} +268 -1565
- package/dist/{index-C34qbBQr.d.mts → index-DLcySG7U.d.mts} +262 -241
- package/dist/{index-C34qbBQr.d.ts → index-DLcySG7U.d.ts} +262 -241
- package/dist/{index-BYtinxqf.d.mts → index-Dp7GFJ8V.d.mts} +6 -355
- package/dist/{index-D8XFyX0x.d.mts → index-Os7lItRe.d.mts} +108 -108
- package/dist/{index-D8XFyX0x.d.ts → index-Os7lItRe.d.ts} +108 -108
- package/dist/{index-CsF8m5Wj.d.mts → index-l6WIlmOD.d.mts} +39 -39
- package/dist/{index-CsF8m5Wj.d.ts → index-l6WIlmOD.d.ts} +39 -39
- package/dist/index.d.mts +162 -162
- package/dist/index.d.ts +162 -162
- package/dist/index.js +714 -672
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +714 -672
- package/dist/index.mjs.map +1 -1
- package/dist/kernel/index.d.mts +1 -1
- package/dist/kernel/index.d.ts +1 -1
- package/dist/kernel/index.js +705 -669
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/index.mjs +704 -669
- package/dist/kernel/index.mjs.map +1 -1
- package/json-schema/api/CompileManifestResponse.json +6 -2
- package/json-schema/api/ExportRequest.json +419 -758
- package/json-schema/api/FindDataRequest.json +9 -0
- package/json-schema/data/JoinNode.json +9 -0
- package/json-schema/data/Mapping.json +9 -0
- package/json-schema/data/Query.json +9 -0
- package/json-schema/hub/ComposerResponse.json +6 -2
- package/json-schema/kernel/Manifest.json +6 -2
- package/json-schema/kernel/Plugin.json +28 -0
- package/package.json +1 -1
- package/dist/{index-iGrpxfqq.d.mts → index-D12rNohm.d.mts} +1 -1
- package/dist/{index-iGrpxfqq.d.ts → index-D12rNohm.d.ts} +1 -1
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/api/index.ts","../../src/api/contract.zod.ts","../../src/data/query.zod.ts","../../src/data/filter.zod.ts","../../src/api/endpoint.zod.ts","../../src/shared/http.zod.ts","../../src/api/discovery.zod.ts","../../src/api/realtime.zod.ts","../../src/api/websocket.zod.ts","../../src/shared/identifiers.zod.ts","../../src/api/router.zod.ts","../../src/api/odata.zod.ts","../../src/api/graphql.zod.ts","../../src/api/batch.zod.ts","../../src/api/http-cache.zod.ts","../../src/api/errors.zod.ts","../../src/api/protocol.zod.ts","../../src/ui/view.zod.ts","../../src/api/analytics.zod.ts","../../src/data/analytics.zod.ts","../../src/api/hub.zod.ts","../../src/hub/composer.zod.ts","../../src/kernel/manifest.zod.ts","../../src/kernel/plugin-capability.zod.ts","../../src/kernel/plugin-loading.zod.ts","../../src/hub/marketplace.zod.ts","../../src/hub/plugin-registry.zod.ts","../../src/hub/registry-config.zod.ts","../../src/hub/space.zod.ts","../../src/hub/tenant.zod.ts","../../src/hub/license.zod.ts","../../src/hub/hub-federation.zod.ts","../../src/hub/plugin-security.zod.ts","../../src/api/rest-server.zod.ts","../../src/api/registry.zod.ts","../../src/api/documentation.zod.ts","../../src/api/auth.zod.ts","../../src/api/storage.zod.ts","../../src/system/object-storage.zod.ts","../../src/api/metadata.zod.ts","../../src/data/object.zod.ts","../../src/data/field.zod.ts","../../src/system/encryption.zod.ts","../../src/system/masking.zod.ts","../../src/data/validation.zod.ts","../../src/ui/app.zod.ts"],"sourcesContent":["/**\n * API Protocol Exports\n * \n * API Contracts & Envelopes\n * - Request/Response schemas\n * - Error handling\n * - OData v4 compatibility\n * - Batch operations\n * - Metadata caching\n * - Hub Management APIs\n */\n\nexport * from './contract.zod';\nexport * from './endpoint.zod';\nexport * from './discovery.zod';\nexport * from './realtime.zod';\nexport * from './websocket.zod';\nexport * from './router.zod';\nexport * from './odata.zod';\nexport * from './graphql.zod';\nexport * from './batch.zod';\nexport * from './http-cache.zod';\nexport * from './errors.zod';\nexport * from './protocol.zod';\nexport * from './rest-server.zod';\nexport * from './hub.zod';\nexport * from './registry.zod';\nexport * from './documentation.zod';\nexport * from './analytics.zod';\n\n// Legacy interface export (deprecated)\n// export type { IObjectStackProtocol } from './protocol';\n\nexport * from './auth.zod';\nexport * from './storage.zod';\nexport * from './metadata.zod';\nexport * from './auth.zod';\nexport * from './storage.zod';\n","import { z } from 'zod';\nimport { QuerySchema } from '../data/query.zod';\n\n// ==========================================\n// 1. Base Envelopes\n// ==========================================\n\nexport const ApiErrorSchema = z.object({\n code: z.string().describe('Error code (e.g. validation_error)'),\n message: z.string().describe('Readable error message'),\n category: z.string().optional().describe('Error category (e.g. validation, authorization)'),\n details: z.any().optional().describe('Additional error context (e.g. field validation errors)'),\n requestId: z.string().optional().describe('Request ID for tracking'),\n});\n\nexport const BaseResponseSchema = z.object({\n success: z.boolean().describe('Operation success status'),\n error: ApiErrorSchema.optional().describe('Error details if success is false'),\n meta: z.object({\n timestamp: z.string(),\n duration: z.number().optional(),\n requestId: z.string().optional(),\n traceId: z.string().optional(),\n }).optional().describe('Response metadata'),\n});\n\n// ==========================================\n// 2. Request Payloads (Inputs)\n// ==========================================\n\nexport const RecordDataSchema = z.record(z.string(), z.any()).describe('Key-value map of record data');\n\n/**\n * Standard Create Request\n */\nexport const CreateRequestSchema = z.object({\n data: RecordDataSchema.describe('Record data to insert'),\n});\n\n/**\n * Standard Update Request\n */\nexport const UpdateRequestSchema = z.object({\n data: RecordDataSchema.describe('Partial record data to update'),\n});\n\n/**\n * Standard Bulk Request\n */\nexport const BulkRequestSchema = z.object({\n records: z.array(RecordDataSchema).describe('Array of records to process'),\n allOrNone: z.boolean().default(true).describe('If true, rollback entire transaction on any failure'),\n});\n\n/**\n * Export Request\n */\nexport const ExportRequestSchema = QuerySchema.extend({\n format: z.enum(['csv', 'json', 'xlsx']).default('csv'),\n});\n\n// ==========================================\n// 3. Response Payloads (Outputs)\n// ==========================================\n\n/**\n * Single Record Response (Get/Create/Update)\n */\nexport const SingleRecordResponseSchema = BaseResponseSchema.extend({\n data: RecordDataSchema.describe('The requested or modified record'),\n});\n\n/**\n * List/Query Response\n */\nexport const ListRecordResponseSchema = BaseResponseSchema.extend({\n data: z.array(RecordDataSchema).describe('Array of matching records'),\n pagination: z.object({\n total: z.number().optional().describe('Total matching records count'),\n limit: z.number().optional().describe('Page size'),\n offset: z.number().optional().describe('Page offset'),\n cursor: z.string().optional().describe('Cursor for next page'),\n nextCursor: z.string().optional().describe('Next cursor for pagination'),\n hasMore: z.boolean().describe('Are there more pages?'),\n }).describe('Pagination info'),\n});\n\n/**\n * ID Request (Get/Delete)\n */\nexport const IdRequestSchema = z.object({\n id: z.string().describe('Record ID'),\n});\n\n/**\n * Modification Result (for Batch/Bulk operations)\n */\nexport const ModificationResultSchema = z.object({\n id: z.string().optional().describe('Record ID if processed'),\n success: z.boolean(),\n errors: z.array(ApiErrorSchema).optional(),\n index: z.number().optional().describe('Index in original request'),\n data: z.any().optional().describe('Result data (e.g. created record)'),\n});\n\n/**\n * Bulk Operation Response\n */\nexport const BulkResponseSchema = BaseResponseSchema.extend({\n data: z.array(ModificationResultSchema).describe('Results for each item in the batch'),\n});\n\n/**\n * Delete Response\n */\nexport const DeleteResponseSchema = BaseResponseSchema.extend({\n id: z.string().describe('ID of the deleted record'),\n});\n\n// ==========================================\n// 4. API Contract Registry\n// ==========================================\n\n/**\n * Standard API Contracts map\n * Used for generating SDKs and Documentation\n */\nexport const StandardApiContracts = {\n create: {\n input: CreateRequestSchema,\n output: SingleRecordResponseSchema\n },\n delete: {\n input: IdRequestSchema,\n output: DeleteResponseSchema\n },\n get: {\n input: IdRequestSchema,\n output: SingleRecordResponseSchema\n },\n update: {\n input: UpdateRequestSchema,\n output: SingleRecordResponseSchema\n },\n list: {\n input: QuerySchema,\n output: ListRecordResponseSchema\n },\n bulkCreate: {\n input: BulkRequestSchema,\n output: BulkResponseSchema\n },\n bulkUpdate: {\n input: BulkRequestSchema,\n output: BulkResponseSchema\n },\n bulkUpsert: {\n input: BulkRequestSchema,\n output: BulkResponseSchema\n },\n bulkDelete: {\n input: z.object({ ids: z.array(z.string()) }),\n output: BulkResponseSchema\n }\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 */\nexport const QuerySchema = 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 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 QuerySchema>;\nexport type QueryInput = z.input<typeof QuerySchema>;\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 { HttpMethod, RateLimitConfigSchema } from '../shared/http.zod';\n\n/**\n * Rate Limit Strategy\n * @deprecated Use RateLimitConfigSchema from shared/http.zod.ts instead\n */\nexport const RateLimitSchema = RateLimitConfigSchema;\n\n/**\n * API Mapping Schema\n * Transform input/output data.\n */\nexport const ApiMappingSchema = z.object({\n source: z.string().describe('Source field/path'),\n target: z.string().describe('Target field/path'),\n transform: z.string().optional().describe('Transformation function name'),\n});\n\n/**\n * API Endpoint Schema\n * Defines an external facing API contract.\n */\nexport const ApiEndpointSchema = z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique endpoint ID'),\n path: z.string().regex(/^\\//).describe('URL Path (e.g. /api/v1/customers)'),\n method: HttpMethod.describe('HTTP Method'),\n \n /** Documentation */\n summary: z.string().optional(),\n description: z.string().optional(),\n \n /** Execution Logic */\n type: z.enum(['flow', 'script', 'object_operation', 'proxy']).describe('Implementation type'),\n target: z.string().describe('Target Flow ID, Script Name, or Proxy URL'),\n \n /** Logic Config */\n objectParams: z.object({\n object: z.string().optional(),\n operation: z.enum(['find', 'get', 'create', 'update', 'delete']).optional(),\n }).optional().describe('For object_operation type'),\n \n /** Data Transformation */\n inputMapping: z.array(ApiMappingSchema).optional().describe('Map Request Body to Internal Params'),\n outputMapping: z.array(ApiMappingSchema).optional().describe('Map Internal Result to Response Body'),\n \n /** Policies */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n rateLimit: RateLimitSchema.optional().describe('Rate limiting policy'),\n cacheTtl: z.number().optional().describe('Response cache TTL in seconds'),\n});\n\nexport const ApiEndpoint = Object.assign(ApiEndpointSchema, {\n create: <T extends z.input<typeof ApiEndpointSchema>>(config: T) => config,\n});\n\nexport type ApiEndpoint = z.infer<typeof ApiEndpointSchema>;\n","import { z } from 'zod';\n\n/**\n * Shared HTTP Schemas\n * \n * Common HTTP-related schemas used across API and System protocols.\n * These schemas ensure consistency across different parts of the stack.\n */\n\n// ==========================================\n// Basic HTTP Types\n// ==========================================\n\n/**\n * HTTP Method Enum\n */\nexport const HttpMethod = z.enum([\n 'GET', \n 'POST', \n 'PUT', \n 'DELETE', \n 'PATCH', \n 'HEAD', \n 'OPTIONS'\n]);\n\nexport type HttpMethod = z.infer<typeof HttpMethod>;\n\n// ==========================================\n// CORS Configuration\n// ==========================================\n\n/**\n * CORS Configuration Schema\n * Cross-Origin Resource Sharing configuration\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"origins\": [\"http://localhost:3000\", \"https://app.example.com\"],\n * \"methods\": [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n * \"credentials\": true,\n * \"maxAge\": 86400\n * }\n */\nexport const CorsConfigSchema = z.object({\n /**\n * Enable CORS\n */\n enabled: z.boolean().default(true).describe('Enable CORS'),\n \n /**\n * Allowed origins (* for all)\n */\n origins: z.union([\n z.string(),\n z.array(z.string())\n ]).default('*').describe('Allowed origins (* for all)'),\n \n /**\n * Allowed HTTP methods\n */\n methods: z.array(HttpMethod).optional().describe('Allowed HTTP methods'),\n \n /**\n * Allow credentials (cookies, authorization headers)\n */\n credentials: z.boolean().default(false).describe('Allow credentials (cookies, authorization headers)'),\n \n /**\n * Preflight cache duration in seconds\n */\n maxAge: z.number().int().optional().describe('Preflight cache duration in seconds'),\n});\n\nexport type CorsConfig = z.infer<typeof CorsConfigSchema>;\n\n// ==========================================\n// Rate Limiting\n// ==========================================\n\n/**\n * Rate Limit Configuration Schema\n * \n * Used by:\n * - api/endpoint.zod.ts (ApiEndpointSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"windowMs\": 60000,\n * \"maxRequests\": 100\n * }\n */\nexport const RateLimitConfigSchema = z.object({\n /**\n * Enable rate limiting\n */\n enabled: z.boolean().default(false).describe('Enable rate limiting'),\n \n /**\n * Time window in milliseconds\n */\n windowMs: z.number().int().default(60000).describe('Time window in milliseconds'),\n \n /**\n * Max requests per window\n */\n maxRequests: z.number().int().default(100).describe('Max requests per window'),\n});\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\n\n// ==========================================\n// Static File Serving\n// ==========================================\n\n/**\n * Static Mount Configuration Schema\n * Configuration for serving static files\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"path\": \"/static\",\n * \"directory\": \"./public\",\n * \"cacheControl\": \"public, max-age=31536000\"\n * }\n */\nexport const StaticMountSchema = z.object({\n /**\n * URL path to serve from\n */\n path: z.string().describe('URL path to serve from'),\n \n /**\n * Physical directory to serve\n */\n directory: z.string().describe('Physical directory to serve'),\n \n /**\n * Cache-Control header value\n */\n cacheControl: z.string().optional().describe('Cache-Control header value'),\n});\n\nexport type StaticMount = z.infer<typeof StaticMountSchema>;\n","import { z } from 'zod';\n\n/**\n * API Capabilities Schema\n * Defines what features are enabled on this ObjectOS instance.\n */\nexport const ApiCapabilitiesSchema = z.object({\n graphql: z.boolean().default(false),\n search: z.boolean().default(false),\n websockets: z.boolean().default(false),\n files: z.boolean().default(true),\n analytics: z.boolean().default(false).describe('Is the Analytics/BI engine enabled?'),\n hub: z.boolean().default(false).describe('Is Hub management enabled?'),\n});\n\n/**\n * API Routes Schema\n * The \"Map\" for the frontend to know where to send requests.\n * This decouples the frontend from hardcoded URL paths.\n */\nexport const ApiRoutesSchema = z.object({\n /** Base URL for Object CRUD (Data Protocol) */\n data: z.string().describe('e.g. /api/data'),\n \n /** Base URL for Schema Definitions (Metadata Protocol) */\n metadata: z.string().describe('e.g. /api/meta'),\n \n /** Base URL for Authentication */\n auth: z.string().describe('e.g. /api/auth'),\n \n /** Base URL for Automation (Flows/Scripts) */\n automation: z.string().optional().describe('e.g. /api/automation'),\n \n /** Base URL for File/Storage operations */\n storage: z.string().optional().describe('e.g. /api/storage'),\n \n /** Base URL for Analytics/BI operations */\n analytics: z.string().optional().describe('e.g. /api/analytics'),\n \n /** Base URL for Hub Management (Multi-tenant/Marketplace) */\n hub: z.string().optional().describe('e.g. /api/hub'),\n\n /** GraphQL Endpoint (if enabled) */\n graphql: z.string().optional().describe('e.g. /graphql'),\n});\n\n/**\n * Discovery Response Schema\n * The root object returned by the Metadata Discovery Endpoint.\n */\nexport const DiscoverySchema = z.object({\n /** System Identity */\n name: z.string(),\n version: z.string(),\n environment: z.enum(['production', 'sandbox', 'development']),\n \n /** Dynamic Routing */\n routes: ApiRoutesSchema,\n \n /** Feature Flags */\n features: ApiCapabilitiesSchema,\n \n /** Localization Info (helping frontend init i18n) */\n locale: z.object({\n default: z.string(),\n supported: z.array(z.string()),\n timezone: z.string(),\n }),\n});\n\nexport type DiscoveryResponse = z.infer<typeof DiscoverySchema>;\nexport type ApiRoutes = z.infer<typeof ApiRoutesSchema>;\nexport type ApiCapabilities = z.infer<typeof ApiCapabilitiesSchema>;\n","import { z } from 'zod';\n\n/**\n * Transport Protocol Enum\n * Defines the communication protocol for realtime data synchronization\n */\nexport const TransportProtocol = z.enum([\n 'websocket', // Full-duplex, low latency communication\n 'sse', // Server-Sent Events, unidirectional push\n 'polling', // Short polling, best compatibility\n]);\n\nexport type TransportProtocol = z.infer<typeof TransportProtocol>;\n\n/**\n * Event Type Enum\n * Types of realtime events that can be subscribed to\n */\nexport const RealtimeEventType = z.enum([\n 'record.created',\n 'record.updated',\n 'record.deleted',\n 'field.changed',\n]);\n\nexport type RealtimeEventType = z.infer<typeof RealtimeEventType>;\n\n/**\n * Subscription Event Configuration\n * Defines what events to subscribe to with optional filtering\n */\nexport const SubscriptionEventSchema = z.object({\n type: RealtimeEventType.describe('Type of event to subscribe to'),\n object: z.string().optional().describe('Object name to subscribe to'),\n filters: z.any().optional().describe('Filter conditions'),\n});\n\n/**\n * Subscription Schema\n * Configuration for subscribing to realtime events\n */\nexport const SubscriptionSchema = z.object({\n id: z.string().uuid().describe('Unique subscription identifier'),\n events: z.array(SubscriptionEventSchema).describe('Array of events to subscribe to'),\n transport: TransportProtocol.describe('Transport protocol to use'),\n channel: z.string().optional().describe('Optional channel name for grouping subscriptions'),\n});\n\nexport type Subscription = z.infer<typeof SubscriptionSchema>;\n\n/**\n * Presence Status Enum\n * User online/offline status\n */\nexport const PresenceStatus = z.enum([\n 'online',\n 'away',\n 'offline',\n]);\n\nexport type PresenceStatus = z.infer<typeof PresenceStatus>;\n\n/**\n * Presence Schema\n * Tracks user online status and metadata\n */\nexport const PresenceSchema = z.object({\n userId: z.string().describe('User identifier'),\n status: PresenceStatus.describe('Current presence status'),\n lastSeen: z.string().datetime().describe('ISO 8601 datetime of last activity'),\n metadata: z.record(z.string(), z.any()).optional().describe('Custom presence data (e.g., current page, custom status)'),\n});\n\nexport type Presence = z.infer<typeof PresenceSchema>;\n\n/**\n * Realtime Action Enum\n * Actions that can occur on records\n */\nexport const RealtimeAction = z.enum([\n 'created',\n 'updated',\n 'deleted',\n]);\n\nexport type RealtimeAction = z.infer<typeof RealtimeAction>;\n\n/**\n * Realtime Event Schema\n * Represents a realtime synchronization event\n */\nexport const RealtimeEventSchema = z.object({\n id: z.string().uuid().describe('Unique event identifier'),\n type: z.string().describe('Event type (e.g., record.created, record.updated)'),\n object: z.string().optional().describe('Object name the event relates to'),\n action: RealtimeAction.optional().describe('Action performed'),\n payload: z.record(z.string(), z.any()).describe('Event payload data'),\n timestamp: z.string().datetime().describe('ISO 8601 datetime when event occurred'),\n userId: z.string().optional().describe('User who triggered the event'),\n sessionId: z.string().optional().describe('Session identifier'),\n});\n\nexport type RealtimeEvent = z.infer<typeof RealtimeEventSchema>;\n\n/**\n * Realtime Configuration Schema\n * \n * Configuration for enabling realtime data synchronization.\n */\nexport const RealtimeConfigSchema = z.object({\n /** Enable realtime sync */\n enabled: z.boolean().default(true).describe('Enable realtime synchronization'),\n \n /** Transport protocol */\n transport: TransportProtocol.default('websocket').describe('Transport protocol'),\n \n /** Default subscriptions */\n subscriptions: z.array(SubscriptionSchema).optional().describe('Default subscriptions'),\n}).passthrough(); // Allow additional properties\n\nexport type RealtimeConfig = z.infer<typeof RealtimeConfigSchema>;\n","import { z } from 'zod';\nimport { EventNameSchema } from '../shared/identifiers.zod';\n\n/**\n * WebSocket Event Protocol\n * \n * Defines the schema for WebSocket-based real-time communication in ObjectStack.\n * Supports event subscriptions, filtering, presence tracking, and collaborative editing.\n * \n * Industry alignment: Firebase Realtime Database, Socket.IO, Pusher\n */\n\n// ==========================================\n// Message Types\n// ==========================================\n\n/**\n * WebSocket Message Type Enum\n * Defines the types of messages that can be sent over WebSocket\n */\nexport const WebSocketMessageType = z.enum([\n 'subscribe', // Client subscribes to events\n 'unsubscribe', // Client unsubscribes from events\n 'event', // Server sends event to client\n 'ping', // Keepalive ping\n 'pong', // Keepalive pong response\n 'ack', // Acknowledgment of message receipt\n 'error', // Error message\n 'presence', // Presence update (user status)\n 'cursor', // Cursor position update (collaborative editing)\n 'edit', // Document edit operation (collaborative editing)\n]);\n\nexport type WebSocketMessageType = z.infer<typeof WebSocketMessageType>;\n\n// ==========================================\n// Event Subscription\n// ==========================================\n\n/**\n * Event Filter Operator Enum\n * SQL-like filter operators for event filtering\n */\nexport const FilterOperator = z.enum([\n 'eq', // Equal\n 'ne', // Not equal\n 'gt', // Greater than\n 'gte', // Greater than or equal\n 'lt', // Less than\n 'lte', // Less than or equal\n 'in', // In array\n 'nin', // Not in array\n 'contains', // String contains\n 'startsWith', // String starts with\n 'endsWith', // String ends with\n 'exists', // Field exists\n 'regex', // Regex match\n]);\n\nexport type FilterOperator = z.infer<typeof FilterOperator>;\n\n/**\n * Event Filter Condition\n * Defines a single filter condition for event filtering\n */\nexport const EventFilterCondition = z.object({\n field: z.string().describe('Field path to filter on (supports dot notation, e.g., \"user.email\")'),\n operator: FilterOperator.describe('Comparison operator'),\n value: z.any().optional().describe('Value to compare against (not needed for \"exists\" operator)'),\n});\n\nexport type EventFilterCondition = z.infer<typeof EventFilterCondition>;\n\n/**\n * Event Filter Schema\n * Logical combination of filter conditions\n */\nexport const EventFilterSchema: z.ZodType<{\n conditions?: EventFilterCondition[];\n and?: EventFilter[];\n or?: EventFilter[];\n not?: EventFilter;\n}> = z.object({\n conditions: z.array(EventFilterCondition).optional().describe('Array of filter conditions'),\n and: z.lazy(() => z.array(EventFilterSchema)).optional().describe('AND logical combination of filters'),\n or: z.lazy(() => z.array(EventFilterSchema)).optional().describe('OR logical combination of filters'),\n not: z.lazy(() => EventFilterSchema).optional().describe('NOT logical negation of filter'),\n});\n\nexport type EventFilter = z.infer<typeof EventFilterSchema>;\n\n/**\n * Event Pattern Schema\n * Event name pattern that supports wildcards for subscriptions\n */\nexport const EventPatternSchema = z\n .string()\n .min(1)\n .regex(/^[a-z*][a-z0-9_.*]*$/, {\n message: 'Event pattern must be lowercase and may contain letters, numbers, underscores, dots, or wildcards (e.g., \"record.*\", \"*.created\", \"user.login\")',\n })\n .describe('Event pattern (supports wildcards like \"record.*\" or \"*.created\")');\n\nexport type EventPattern = z.infer<typeof EventPatternSchema>;\n\n/**\n * Event Subscription Config\n * Configuration for subscribing to specific events\n */\nexport const EventSubscriptionSchema = z.object({\n subscriptionId: z.string().uuid().describe('Unique subscription identifier'),\n events: z.array(EventPatternSchema).describe('Event patterns to subscribe to (supports wildcards, e.g., \"record.*\", \"user.created\")'),\n objects: z.array(z.string()).optional().describe('Object names to filter events by (e.g., [\"account\", \"contact\"])'),\n filters: EventFilterSchema.optional().describe('Advanced filter conditions for event payloads'),\n channels: z.array(z.string()).optional().describe('Channel names for scoped subscriptions'),\n});\n\nexport type EventSubscription = z.infer<typeof EventSubscriptionSchema>;\n\n/**\n * Unsubscribe Request\n * Request to unsubscribe from events\n */\nexport const UnsubscribeRequestSchema = z.object({\n subscriptionId: z.string().uuid().describe('Subscription ID to unsubscribe from'),\n});\n\nexport type UnsubscribeRequest = z.infer<typeof UnsubscribeRequestSchema>;\n\n// ==========================================\n// Presence Tracking\n// ==========================================\n\n/**\n * Presence Status Enum\n * User availability status for presence tracking\n */\nexport const WebSocketPresenceStatus = z.enum([\n 'online', // User is actively online\n 'away', // User is idle/away\n 'busy', // User is busy (do not disturb)\n 'offline', // User is offline\n]);\n\nexport type WebSocketPresenceStatus = z.infer<typeof WebSocketPresenceStatus>;\n\n/**\n * Presence State Schema\n * Tracks real-time user presence and activity\n */\nexport const PresenceStateSchema = z.object({\n userId: z.string().describe('User identifier'),\n sessionId: z.string().uuid().describe('Unique session identifier'),\n status: WebSocketPresenceStatus.describe('Current presence status'),\n lastSeen: z.string().datetime().describe('ISO 8601 datetime of last activity'),\n currentLocation: z.string().optional().describe('Current page/route user is viewing'),\n device: z.enum(['desktop', 'mobile', 'tablet', 'other']).optional().describe('Device type'),\n customStatus: z.string().optional().describe('Custom user status message'),\n metadata: z.record(z.string(), z.any()).optional().describe('Additional custom presence data'),\n});\n\nexport type PresenceState = z.infer<typeof PresenceStateSchema>;\n\n/**\n * Presence Update Request\n * Client request to update presence status\n */\nexport const PresenceUpdateSchema = z.object({\n status: WebSocketPresenceStatus.optional().describe('Updated presence status'),\n currentLocation: z.string().optional().describe('Updated current location'),\n customStatus: z.string().optional().describe('Updated custom status message'),\n metadata: z.record(z.string(), z.any()).optional().describe('Updated metadata'),\n});\n\nexport type PresenceUpdate = z.infer<typeof PresenceUpdateSchema>;\n\n// ==========================================\n// Collaborative Editing Protocol\n// ==========================================\n\n/**\n * Cursor Position Schema\n * Represents a cursor position in a document\n */\nexport const CursorPositionSchema = z.object({\n userId: z.string().describe('User identifier'),\n sessionId: z.string().uuid().describe('Session identifier'),\n documentId: z.string().describe('Document identifier being edited'),\n position: z.object({\n line: z.number().int().nonnegative().describe('Line number (0-indexed)'),\n column: z.number().int().nonnegative().describe('Column number (0-indexed)'),\n }).optional().describe('Cursor position in document'),\n selection: z.object({\n start: z.object({\n line: z.number().int().nonnegative(),\n column: z.number().int().nonnegative(),\n }),\n end: z.object({\n line: z.number().int().nonnegative(),\n column: z.number().int().nonnegative(),\n }),\n }).optional().describe('Selection range (if text is selected)'),\n color: z.string().optional().describe('Cursor color for visual representation'),\n userName: z.string().optional().describe('Display name of user'),\n lastUpdate: z.string().datetime().describe('ISO 8601 datetime of last cursor update'),\n});\n\nexport type CursorPosition = z.infer<typeof CursorPositionSchema>;\n\n/**\n * Edit Operation Type Enum\n * Types of edit operations for collaborative editing\n */\nexport const EditOperationType = z.enum([\n 'insert', // Insert text at position\n 'delete', // Delete text from range\n 'replace', // Replace text in range\n]);\n\nexport type EditOperationType = z.infer<typeof EditOperationType>;\n\n/**\n * Edit Operation Schema\n * Represents a single edit operation on a document\n * Supports Operational Transformation (OT) for conflict resolution\n */\nexport const EditOperationSchema = z.object({\n operationId: z.string().uuid().describe('Unique operation identifier'),\n documentId: z.string().describe('Document identifier'),\n userId: z.string().describe('User who performed the edit'),\n sessionId: z.string().uuid().describe('Session identifier'),\n type: EditOperationType.describe('Type of edit operation'),\n position: z.object({\n line: z.number().int().nonnegative().describe('Line number (0-indexed)'),\n column: z.number().int().nonnegative().describe('Column number (0-indexed)'),\n }).describe('Starting position of the operation'),\n endPosition: z.object({\n line: z.number().int().nonnegative(),\n column: z.number().int().nonnegative(),\n }).optional().describe('Ending position (for delete/replace operations)'),\n content: z.string().optional().describe('Content to insert/replace'),\n version: z.number().int().nonnegative().describe('Document version before this operation'),\n timestamp: z.string().datetime().describe('ISO 8601 datetime when operation was created'),\n baseOperationId: z.string().uuid().optional().describe('Previous operation ID this builds upon (for OT)'),\n});\n\nexport type EditOperation = z.infer<typeof EditOperationSchema>;\n\n/**\n * Document State Schema\n * Represents the current state of a collaborative document\n */\nexport const DocumentStateSchema = z.object({\n documentId: z.string().describe('Document identifier'),\n version: z.number().int().nonnegative().describe('Current document version'),\n content: z.string().describe('Current document content'),\n lastModified: z.string().datetime().describe('ISO 8601 datetime of last modification'),\n activeSessions: z.array(z.string().uuid()).describe('Active editing session IDs'),\n checksum: z.string().optional().describe('Content checksum for integrity verification'),\n});\n\nexport type DocumentState = z.infer<typeof DocumentStateSchema>;\n\n// ==========================================\n// WebSocket Messages\n// ==========================================\n\n/**\n * Base WebSocket Message\n * All WebSocket messages extend this base structure\n */\nconst BaseWebSocketMessage = z.object({\n messageId: z.string().uuid().describe('Unique message identifier'),\n type: WebSocketMessageType.describe('Message type'),\n timestamp: z.string().datetime().describe('ISO 8601 datetime when message was sent'),\n});\n\n/**\n * Subscribe Message\n * Client sends this to subscribe to events\n */\nexport const SubscribeMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('subscribe'),\n subscription: EventSubscriptionSchema.describe('Subscription configuration'),\n});\n\nexport type SubscribeMessage = z.infer<typeof SubscribeMessageSchema>;\n\n/**\n * Unsubscribe Message\n * Client sends this to unsubscribe from events\n */\nexport const UnsubscribeMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('unsubscribe'),\n request: UnsubscribeRequestSchema.describe('Unsubscribe request'),\n});\n\nexport type UnsubscribeMessage = z.infer<typeof UnsubscribeMessageSchema>;\n\n/**\n * Event Message\n * Server sends this when a subscribed event occurs\n */\nexport const EventMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('event'),\n subscriptionId: z.string().uuid().describe('Subscription ID this event belongs to'),\n eventName: EventNameSchema.describe('Event name'),\n object: z.string().optional().describe('Object name the event relates to'),\n payload: z.any().describe('Event payload data'),\n userId: z.string().optional().describe('User who triggered the event'),\n});\n\nexport type EventMessage = z.infer<typeof EventMessageSchema>;\n\n/**\n * Presence Message\n * Presence update message\n */\nexport const PresenceMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('presence'),\n presence: PresenceStateSchema.describe('Presence state'),\n});\n\nexport type PresenceMessage = z.infer<typeof PresenceMessageSchema>;\n\n/**\n * Cursor Message\n * Cursor position update for collaborative editing\n */\nexport const CursorMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('cursor'),\n cursor: CursorPositionSchema.describe('Cursor position'),\n});\n\nexport type CursorMessage = z.infer<typeof CursorMessageSchema>;\n\n/**\n * Edit Message\n * Document edit operation for collaborative editing\n */\nexport const EditMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('edit'),\n operation: EditOperationSchema.describe('Edit operation'),\n});\n\nexport type EditMessage = z.infer<typeof EditMessageSchema>;\n\n/**\n * Acknowledgment Message\n * Server acknowledges receipt of a message\n */\nexport const AckMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('ack'),\n ackMessageId: z.string().uuid().describe('ID of the message being acknowledged'),\n success: z.boolean().describe('Whether the operation was successful'),\n error: z.string().optional().describe('Error message if operation failed'),\n});\n\nexport type AckMessage = z.infer<typeof AckMessageSchema>;\n\n/**\n * Error Message\n * Server sends error information\n */\nexport const ErrorMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('error'),\n code: z.string().describe('Error code'),\n message: z.string().describe('Error message'),\n details: z.any().optional().describe('Additional error details'),\n});\n\nexport type ErrorMessage = z.infer<typeof ErrorMessageSchema>;\n\n/**\n * Ping Message\n * Keepalive ping from client or server\n */\nexport const PingMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('ping'),\n});\n\nexport type PingMessage = z.infer<typeof PingMessageSchema>;\n\n/**\n * Pong Message\n * Keepalive pong response\n */\nexport const PongMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('pong'),\n pingMessageId: z.string().uuid().optional().describe('ID of ping message being responded to'),\n});\n\nexport type PongMessage = z.infer<typeof PongMessageSchema>;\n\n/**\n * WebSocket Message Union\n * Discriminated union of all WebSocket message types\n */\nexport const WebSocketMessageSchema = z.discriminatedUnion('type', [\n SubscribeMessageSchema,\n UnsubscribeMessageSchema,\n EventMessageSchema,\n PresenceMessageSchema,\n CursorMessageSchema,\n EditMessageSchema,\n AckMessageSchema,\n ErrorMessageSchema,\n PingMessageSchema,\n PongMessageSchema,\n]);\n\nexport type WebSocketMessage = z.infer<typeof WebSocketMessageSchema>;\n\n// ==========================================\n// Connection Configuration\n// ==========================================\n\n/**\n * WebSocket Connection Config\n * Configuration for WebSocket connections\n */\nexport const WebSocketConfigSchema = z.object({\n url: z.string().url().describe('WebSocket server URL'),\n protocols: z.array(z.string()).optional().describe('WebSocket sub-protocols'),\n reconnect: z.boolean().optional().default(true).describe('Enable automatic reconnection'),\n reconnectInterval: z.number().int().positive().optional().default(1000).describe('Reconnection interval in milliseconds'),\n maxReconnectAttempts: z.number().int().positive().optional().default(5).describe('Maximum reconnection attempts'),\n pingInterval: z.number().int().positive().optional().default(30000).describe('Ping interval in milliseconds'),\n timeout: z.number().int().positive().optional().default(5000).describe('Message timeout in milliseconds'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom headers for WebSocket handshake'),\n});\n\nexport type WebSocketConfig = z.infer<typeof WebSocketConfigSchema>;\n\n// ==========================================\n// Simplified Collaboration API\n// ==========================================\n\n/**\n * Simplified WebSocket Event Schema\n * \n * A simplified event schema for basic WebSocket communication.\n * Complements the comprehensive WebSocketMessageSchema above for simpler use cases.\n * \n * @example Subscribe to channel\n * ```typescript\n * {\n * type: 'subscribe',\n * channel: 'record.account.123',\n * payload: { events: ['created', 'updated'] },\n * timestamp: Date.now()\n * }\n * ```\n * \n * @example Data change notification\n * ```typescript\n * {\n * type: 'data-change',\n * channel: 'record.account.123',\n * payload: { id: '123', action: 'updated', data: {...} },\n * timestamp: Date.now()\n * }\n * ```\n */\nexport const WebSocketEventSchema = z.object({\n type: z.enum([\n 'subscribe', // Client subscribes to channel\n 'unsubscribe', // Client unsubscribes from channel\n 'data-change', // Data modification event\n 'presence-update', // User presence change\n 'cursor-update', // Cursor position change (collaborative editing)\n 'error', // Error message\n ]).describe('Event type'),\n channel: z.string().describe('Channel identifier (e.g., \"record.account.123\", \"user.456\")'),\n payload: z.any().describe('Event payload data'),\n timestamp: z.number().describe('Unix timestamp in milliseconds'),\n});\n\nexport type WebSocketEvent = z.infer<typeof WebSocketEventSchema>;\n\n/**\n * Simplified Presence State Schema\n * \n * A simplified presence schema for basic user presence tracking.\n * Complements the comprehensive PresenceStateSchema for simpler integrations.\n * \n * Use this for basic presence features. For advanced features like device tracking,\n * custom status, and session management, use the comprehensive PresenceStateSchema above.\n * \n * @example User online\n * ```typescript\n * {\n * userId: 'user123',\n * userName: 'John Doe',\n * status: 'online',\n * lastSeen: Date.now(),\n * metadata: { currentPage: '/dashboard' }\n * }\n * ```\n */\nexport const SimplePresenceStateSchema = z.object({\n userId: z.string().describe('User identifier'),\n userName: z.string().describe('User display name'),\n status: z.enum(['online', 'away', 'offline']).describe('User presence status'),\n lastSeen: z.number().describe('Unix timestamp of last activity in milliseconds'),\n metadata: z.record(z.string(), z.any()).optional().describe('Additional presence metadata (e.g., current page, custom status)'),\n});\n\nexport type SimplePresenceState = z.infer<typeof SimplePresenceStateSchema>;\n\n/**\n * Simplified Cursor Position Schema\n * \n * A simplified cursor position schema for basic collaborative editing.\n * Complements the comprehensive CursorPositionSchema for simpler use cases.\n * \n * Use this for basic cursor sharing. For advanced features like selections,\n * color coding, and document versioning, use the comprehensive CursorPositionSchema above.\n * \n * @example Cursor in text field\n * ```typescript\n * {\n * userId: 'user123',\n * recordId: 'account_456',\n * fieldName: 'description',\n * position: 42,\n * selection: { start: 42, end: 57 }\n * }\n * ```\n */\nexport const SimpleCursorPositionSchema = z.object({\n userId: z.string().describe('User identifier'),\n recordId: z.string().describe('Record identifier being edited'),\n fieldName: z.string().describe('Field name being edited'),\n position: z.number().describe('Cursor position (character offset from start)'),\n selection: z.object({\n start: z.number().describe('Selection start position'),\n end: z.number().describe('Selection end position'),\n }).optional().describe('Text selection range (if text is selected)'),\n});\n\nexport type SimpleCursorPosition = z.infer<typeof SimpleCursorPositionSchema>;\n\n/**\n * WebSocket Server Configuration Schema\n * \n * Server-side configuration for WebSocket services.\n * Controls features like presence tracking, cursor sharing, and connection management.\n * \n * @example Production configuration\n * ```typescript\n * {\n * enabled: true,\n * path: '/ws',\n * heartbeatInterval: 30000,\n * reconnectAttempts: 5,\n * presence: true,\n * cursorSharing: true\n * }\n * ```\n */\nexport const WebSocketServerConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable WebSocket server'),\n path: z.string().default('/ws').describe('WebSocket endpoint path'),\n heartbeatInterval: z.number().default(30000).describe('Heartbeat interval in milliseconds'),\n reconnectAttempts: z.number().default(5).describe('Maximum reconnection attempts for clients'),\n presence: z.boolean().default(false).describe('Enable presence tracking'),\n cursorSharing: z.boolean().default(false).describe('Enable collaborative cursor sharing'),\n});\n\nexport type WebSocketServerConfig = z.infer<typeof WebSocketServerConfigSchema>;\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';\nimport { CorsConfigSchema, StaticMountSchema, HttpMethod } from '../shared/http.zod';\n\n// Re-export HttpMethod for convenience\nexport { HttpMethod };\n\n/**\n * Route Category Enum\n * Classifies routes for middleware application and security policies.\n */\nexport const RouteCategory = z.enum([\n 'system', // Health, Metrics, Info (No Auth usually)\n 'api', // Business Logic API (Auth required)\n 'auth', // Login/Callback endpoints\n 'static', // Asset serving\n 'webhook', // External callbacks\n 'plugin' // Plugin extensions\n]);\n\nexport type RouteCategory = z.infer<typeof RouteCategory>;\n\n/**\n * Route Definition Schema\n * Describes a single routable endpoint in the Kernel.\n */\nexport const RouteDefinitionSchema = z.object({\n /**\n * HTTP Method\n */\n method: HttpMethod,\n \n /**\n * URL Path Pattern (supports parameters like /user/:id)\n */\n path: z.string().describe('URL Path pattern'),\n \n /**\n * Route Type/Category\n */\n category: RouteCategory.default('api'),\n \n /**\n * Handler Identifier\n * References an internal function or plugin action ID.\n */\n handler: z.string().describe('Unique handler identifier'),\n \n /**\n * Route specific metadata\n */\n summary: z.string().optional().describe('OpenAPI summary'),\n description: z.string().optional().describe('OpenAPI description'),\n \n /**\n * Security constraints\n */\n public: z.boolean().default(false).describe('Is publicly accessible'),\n permissions: z.array(z.string()).optional().describe('Required permissions'),\n \n /**\n * Performance hints\n */\n timeout: z.number().int().optional().describe('Execution timeout in ms'),\n rateLimit: z.string().optional().describe('Rate limit policy name'),\n});\n\nexport type RouteDefinition = z.infer<typeof RouteDefinitionSchema>;\n\n/**\n * Router Configuration Schema\n * Global routing table configuration.\n */\nexport const RouterConfigSchema = z.object({\n /**\n * URL Prefix for all kernel routes\n */\n basePath: z.string().default('/api').describe('Global API prefix'),\n \n /**\n * Standard Protocol Mounts (Relative to basePath)\n */\n mounts: z.object({\n data: z.string().default('/data').describe('Data Protocol (CRUD)'),\n metadata: z.string().default('/meta').describe('Metadata Protocol (Schemas)'),\n auth: z.string().default('/auth').describe('Auth Protocol'),\n automation: z.string().default('/automation').describe('Automation Protocol'),\n storage: z.string().default('/storage').describe('Storage Protocol'),\n analytics: z.string().default('/analytics').describe('Analytics Protocol'),\n hub: z.string().default('/hub').describe('Hub Management Protocol'),\n graphql: z.string().default('/graphql').describe('GraphQL Endpoint'),\n }).default({\n data: '/data',\n metadata: '/meta',\n auth: '/auth',\n automation: '/automation',\n storage: '/storage',\n analytics: '/analytics',\n hub: '/hub',\n graphql: '/graphql'\n }), // Defaults match standardized spec\n\n /**\n * Cross-Origin Resource Sharing\n */\n cors: CorsConfigSchema.optional(),\n \n /**\n * Static asset mounts\n */\n staticMounts: z.array(StaticMountSchema).optional(),\n});\n\nexport type RouterConfig = z.infer<typeof RouterConfigSchema>;\n","import { z } from 'zod';\n\n/**\n * OData v4 Protocol Support\n * \n * Open Data Protocol (OData) v4 is an industry-standard protocol for building\n * and consuming RESTful APIs. It provides a uniform way to expose, structure,\n * query, and manipulate data.\n * \n * ## Overview\n * \n * OData v4 provides standardized URL conventions for querying data including:\n * - $select: Choose which fields to return\n * - $filter: Filter results with complex expressions\n * - $orderby: Sort results\n * - $top/$skip: Pagination\n * - $expand: Include related entities\n * - $count: Get total count\n * \n * ## Use Cases\n * \n * 1. **Enterprise Integration**\n * - Integrate with Microsoft Dynamics 365\n * - Connect to SharePoint Online\n * - SAP OData services\n * \n * 2. **API Standardization**\n * - Provide consistent query interface\n * - Standard pagination and filtering\n * - Industry-recognized protocol\n * \n * 3. **External Data Sources**\n * - Connect to OData-compliant systems\n * - Federated queries\n * - Data virtualization\n * \n * @see https://www.odata.org/documentation/\n * @see https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html\n * \n * @example OData Query\n * ```\n * GET /api/odata/customers?\n * $select=name,email&\n * $filter=country eq 'US' and revenue gt 100000&\n * $orderby=revenue desc&\n * $top=10&\n * $skip=20&\n * $expand=orders&\n * $count=true\n * ```\n * \n * @example Programmatic Use\n * ```typescript\n * const query: ODataQuery = {\n * select: ['name', 'email'],\n * filter: \"country eq 'US' and revenue gt 100000\",\n * orderby: 'revenue desc',\n * top: 10,\n * skip: 20,\n * expand: ['orders'],\n * count: true\n * }\n * ```\n */\n\n/**\n * OData Query Options Schema\n * \n * System query options defined by OData v4 specification.\n * These are URL query parameters that control the query execution.\n * \n * @see https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_SystemQueryOptions\n */\nexport const ODataQuerySchema = z.object({\n /**\n * $select - Select specific fields to return\n * \n * Comma-separated list of field names to include in the response.\n * Reduces payload size and improves performance.\n * \n * @example \"name,email,phone\"\n * @example \"id,customer/name\" - With navigation path\n */\n $select: z.union([\n z.string(), // \"name,email\"\n z.array(z.string()), // [\"name\", \"email\"]\n ]).optional().describe('Fields to select'),\n\n /**\n * $filter - Filter results with conditions\n * \n * OData filter expression using comparison operators, logical operators,\n * and functions.\n * \n * Comparison: eq, ne, lt, le, gt, ge\n * Logical: and, or, not\n * Functions: contains, startswith, endswith, length, indexof, substring, etc.\n * \n * @example \"age gt 18\"\n * @example \"country eq 'US' and revenue gt 100000\"\n * @example \"contains(name, 'Smith')\"\n * @example \"startswith(email, 'admin') and isActive eq true\"\n */\n $filter: z.string().optional().describe('Filter expression (OData filter syntax)'),\n\n /**\n * $orderby - Sort results\n * \n * Comma-separated list of fields with optional asc/desc.\n * Default is ascending.\n * \n * @example \"name\"\n * @example \"revenue desc\"\n * @example \"country asc, revenue desc\"\n */\n $orderby: z.union([\n z.string(), // \"name desc\"\n z.array(z.string()), // [\"name desc\", \"email asc\"]\n ]).optional().describe('Sort order'),\n\n /**\n * $top - Limit number of results\n * \n * Maximum number of results to return.\n * Equivalent to SQL LIMIT or FETCH FIRST.\n * \n * @example 10\n * @example 100\n */\n $top: z.number().int().min(0).optional().describe('Max results to return'),\n\n /**\n * $skip - Skip results for pagination\n * \n * Number of results to skip before returning results.\n * Equivalent to SQL OFFSET.\n * \n * @example 20\n * @example 100\n */\n $skip: z.number().int().min(0).optional().describe('Results to skip'),\n\n /**\n * $expand - Include related entities\n * \n * Comma-separated list of navigation properties to expand.\n * Loads related data in the same request.\n * \n * @example \"orders\"\n * @example \"customer,products\"\n * @example \"orders($select=id,total)\" - With nested query options\n */\n $expand: z.union([\n z.string(), // \"orders\"\n z.array(z.string()), // [\"orders\", \"customer\"]\n ]).optional().describe('Navigation properties to expand'),\n\n /**\n * $count - Include total count\n * \n * When true, includes totalResults count in response.\n * Useful for pagination UI.\n * \n * @example true\n */\n $count: z.boolean().optional().describe('Include total count'),\n\n /**\n * $search - Full-text search\n * \n * Free-text search expression.\n * Search implementation is service-specific.\n * \n * @example \"John Smith\"\n * @example \"urgent AND support\"\n */\n $search: z.string().optional().describe('Search expression'),\n\n /**\n * $format - Response format\n * \n * Preferred response format.\n * \n * @example \"json\"\n * @example \"xml\"\n */\n $format: z.enum(['json', 'xml', 'atom']).optional().describe('Response format'),\n\n /**\n * $apply - Data aggregation\n * \n * Aggregation transformations (groupby, aggregate, etc.)\n * Part of OData aggregation extension.\n * \n * @example \"groupby((country),aggregate(revenue with sum as totalRevenue))\"\n */\n $apply: z.string().optional().describe('Aggregation expression'),\n});\n\nexport type ODataQuery = z.infer<typeof ODataQuerySchema>;\n\n/**\n * OData Filter Operator\n * \n * Standard comparison and logical operators in OData filter expressions.\n */\nexport const ODataFilterOperatorSchema = z.enum([\n // Comparison Operators\n 'eq', // Equal to\n 'ne', // Not equal to\n 'lt', // Less than\n 'le', // Less than or equal to\n 'gt', // Greater than\n 'ge', // Greater than or equal to\n\n // Logical Operators\n 'and', // Logical AND\n 'or', // Logical OR\n 'not', // Logical NOT\n\n // Grouping\n '(', // Left parenthesis\n ')', // Right parenthesis\n\n // Other\n 'in', // Value in list\n 'has', // Has flag (for enum flags)\n]);\n\nexport type ODataFilterOperator = z.infer<typeof ODataFilterOperatorSchema>;\n\n/**\n * OData Filter Function\n * \n * Standard functions available in OData filter expressions.\n */\nexport const ODataFilterFunctionSchema = z.enum([\n // String Functions\n 'contains', // contains(field, 'value')\n 'startswith', // startswith(field, 'value')\n 'endswith', // endswith(field, 'value')\n 'length', // length(field)\n 'indexof', // indexof(field, 'substring')\n 'substring', // substring(field, start, length)\n 'tolower', // tolower(field)\n 'toupper', // toupper(field)\n 'trim', // trim(field)\n 'concat', // concat(field1, field2)\n\n // Date/Time Functions\n 'year', // year(dateField)\n 'month', // month(dateField)\n 'day', // day(dateField)\n 'hour', // hour(datetimeField)\n 'minute', // minute(datetimeField)\n 'second', // second(datetimeField)\n 'date', // date(datetimeField)\n 'time', // time(datetimeField)\n 'now', // now()\n 'maxdatetime', // maxdatetime()\n 'mindatetime', // mindatetime()\n\n // Math Functions\n 'round', // round(numField)\n 'floor', // floor(numField)\n 'ceiling', // ceiling(numField)\n\n // Type Functions\n 'cast', // cast(field, 'Edm.String')\n 'isof', // isof(field, 'Type')\n\n // Collection Functions\n 'any', // collection/any(d:d/prop eq value)\n 'all', // collection/all(d:d/prop eq value)\n]);\n\nexport type ODataFilterFunction = z.infer<typeof ODataFilterFunctionSchema>;\n\n/**\n * OData Response Schema\n * \n * Standard OData JSON response format.\n */\nexport const ODataResponseSchema = z.object({\n /**\n * OData context URL\n * Describes the payload structure\n */\n '@odata.context': z.string().url().optional().describe('Metadata context URL'),\n\n /**\n * Total count (when $count=true)\n */\n '@odata.count': z.number().int().optional().describe('Total results count'),\n\n /**\n * Next link for pagination\n */\n '@odata.nextLink': z.string().url().optional().describe('Next page URL'),\n\n /**\n * Result array\n */\n value: z.array(z.record(z.string(), z.any())).describe('Results array'),\n});\n\nexport type ODataResponse = z.infer<typeof ODataResponseSchema>;\n\n/**\n * OData Error Response Schema\n * \n * Standard OData error format.\n */\nexport const ODataErrorSchema = z.object({\n error: z.object({\n /**\n * Error code\n */\n code: z.string().describe('Error code'),\n\n /**\n * Error message\n */\n message: z.string().describe('Error message'),\n\n /**\n * Target of the error (field name, etc.)\n */\n target: z.string().optional().describe('Error target'),\n\n /**\n * Additional error details\n */\n details: z.array(z.object({\n code: z.string(),\n message: z.string(),\n target: z.string().optional(),\n })).optional().describe('Error details'),\n\n /**\n * Inner error for debugging\n */\n innererror: z.record(z.string(), z.any()).optional().describe('Inner error details'),\n }),\n});\n\nexport type ODataError = z.infer<typeof ODataErrorSchema>;\n\n/**\n * OData Metadata Configuration\n * \n * Configuration for OData metadata endpoint ($metadata).\n */\nexport const ODataMetadataSchema = z.object({\n /**\n * Service namespace\n */\n namespace: z.string().describe('Service namespace'),\n\n /**\n * Entity types to expose\n */\n entityTypes: z.array(z.object({\n name: z.string().describe('Entity type name'),\n key: z.array(z.string()).describe('Key fields'),\n properties: z.array(z.object({\n name: z.string(),\n type: z.string().describe('OData type (Edm.String, Edm.Int32, etc.)'),\n nullable: z.boolean().default(true),\n })),\n navigationProperties: z.array(z.object({\n name: z.string(),\n type: z.string(),\n partner: z.string().optional(),\n })).optional(),\n })).describe('Entity types'),\n\n /**\n * Entity sets\n */\n entitySets: z.array(z.object({\n name: z.string().describe('Entity set name'),\n entityType: z.string().describe('Entity type'),\n })).describe('Entity sets'),\n});\n\nexport type ODataMetadata = z.infer<typeof ODataMetadataSchema>;\n\n/**\n * Helper functions for OData operations\n */\nexport const OData = {\n /**\n * Build OData query URL\n */\n buildUrl: (baseUrl: string, query: ODataQuery): string => {\n const params = new URLSearchParams();\n\n if (query.$select) {\n params.append('$select', Array.isArray(query.$select) ? query.$select.join(',') : query.$select);\n }\n if (query.$filter) {\n params.append('$filter', query.$filter);\n }\n if (query.$orderby) {\n params.append('$orderby', Array.isArray(query.$orderby) ? query.$orderby.join(',') : query.$orderby);\n }\n if (query.$top !== undefined) {\n params.append('$top', query.$top.toString());\n }\n if (query.$skip !== undefined) {\n params.append('$skip', query.$skip.toString());\n }\n if (query.$expand) {\n params.append('$expand', Array.isArray(query.$expand) ? query.$expand.join(',') : query.$expand);\n }\n if (query.$count !== undefined) {\n params.append('$count', query.$count.toString());\n }\n if (query.$search) {\n params.append('$search', query.$search);\n }\n if (query.$format) {\n params.append('$format', query.$format);\n }\n if (query.$apply) {\n params.append('$apply', query.$apply);\n }\n\n const queryString = params.toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n },\n\n /**\n * Create a simple filter expression\n */\n filter: {\n eq: (field: string, value: string | number | boolean) => \n `${field} eq ${typeof value === 'string' ? `'${value}'` : value}`,\n ne: (field: string, value: string | number | boolean) => \n `${field} ne ${typeof value === 'string' ? `'${value}'` : value}`,\n gt: (field: string, value: number) => `${field} gt ${value}`,\n lt: (field: string, value: number) => `${field} lt ${value}`,\n contains: (field: string, value: string) => `contains(${field}, '${value}')`,\n and: (...expressions: string[]) => expressions.join(' and '),\n or: (...expressions: string[]) => expressions.join(' or '),\n },\n} as const;\n\n/**\n * OData Configuration Schema\n * \n * Configuration for enabling OData v4 API endpoint.\n */\nexport const ODataConfigSchema = z.object({\n /** Enable OData endpoint */\n enabled: z.boolean().default(true).describe('Enable OData API'),\n \n /** OData endpoint path */\n path: z.string().default('/odata').describe('OData endpoint path'),\n \n /** Metadata configuration */\n metadata: ODataMetadataSchema.optional().describe('OData metadata configuration'),\n}).passthrough(); // Allow additional properties for flexibility\n\nexport type ODataConfig = z.infer<typeof ODataConfigSchema>;\n","import { z } from 'zod';\nimport { FieldType } from '../data/field.zod';\n\n/**\n * GraphQL Protocol Support\n * \n * GraphQL is a query language for APIs and a runtime for executing those queries.\n * It provides a complete and understandable description of the data in your API,\n * gives clients the power to ask for exactly what they need, and enables powerful\n * developer tools.\n * \n * ## Overview\n * \n * GraphQL provides:\n * - Type-safe schema definition\n * - Precise data fetching (no over/under-fetching)\n * - Introspection and documentation\n * - Real-time subscriptions\n * - Batched queries with DataLoader\n * \n * ## Use Cases\n * \n * 1. **Modern API Development**\n * - Mobile and web applications\n * - Microservices federation\n * - Real-time dashboards\n * \n * 2. **Data Aggregation**\n * - Multi-source data integration\n * - Complex nested queries\n * - Efficient data loading\n * \n * 3. **Developer Experience**\n * - Self-documenting API\n * - Type safety and validation\n * - GraphQL playground\n * \n * @see https://graphql.org/\n * @see https://spec.graphql.org/\n * \n * @example GraphQL Query\n * ```graphql\n * query GetCustomer($id: ID!) {\n * customer(id: $id) {\n * id\n * name\n * email\n * orders(limit: 10, status: \"active\") {\n * id\n * total\n * items {\n * product {\n * name\n * price\n * }\n * }\n * }\n * }\n * }\n * ```\n * \n * @example GraphQL Mutation\n * ```graphql\n * mutation CreateOrder($input: CreateOrderInput!) {\n * createOrder(input: $input) {\n * id\n * orderNumber\n * status\n * }\n * }\n * ```\n */\n\n// ==========================================\n// 1. GraphQL Type System\n// ==========================================\n\n/**\n * GraphQL Scalar Types\n * \n * Built-in scalar types in GraphQL plus custom scalars.\n */\nexport const GraphQLScalarType = z.enum([\n // Built-in GraphQL Scalars\n 'ID',\n 'String',\n 'Int',\n 'Float',\n 'Boolean',\n \n // Extended Scalars (common custom types)\n 'DateTime',\n 'Date',\n 'Time',\n 'JSON',\n 'JSONObject',\n 'Upload',\n 'URL',\n 'Email',\n 'PhoneNumber',\n 'Currency',\n 'Decimal',\n 'BigInt',\n 'Long',\n 'UUID',\n 'Base64',\n 'Void',\n]);\n\nexport type GraphQLScalarType = z.infer<typeof GraphQLScalarType>;\n\n/**\n * GraphQL Type Configuration\n * \n * Configuration for generating GraphQL types from Object definitions.\n */\nexport const GraphQLTypeConfigSchema = z.object({\n /** Type name in GraphQL schema */\n name: z.string().describe('GraphQL type name (PascalCase recommended)'),\n \n /** Source Object name */\n object: z.string().describe('Source ObjectQL object name'),\n \n /** Description for GraphQL schema documentation */\n description: z.string().optional().describe('Type description'),\n \n /** Fields to include/exclude */\n fields: z.object({\n /** Include only these fields (allow list) */\n include: z.array(z.string()).optional().describe('Fields to include'),\n \n /** Exclude these fields (deny list) */\n exclude: z.array(z.string()).optional().describe('Fields to exclude (e.g., sensitive fields)'),\n \n /** Custom field mappings */\n mappings: z.record(z.string(), z.object({\n graphqlName: z.string().optional().describe('Custom GraphQL field name'),\n graphqlType: z.string().optional().describe('Override GraphQL type'),\n description: z.string().optional().describe('Field description'),\n deprecationReason: z.string().optional().describe('Why field is deprecated'),\n nullable: z.boolean().optional().describe('Override nullable'),\n })).optional().describe('Field-level customizations'),\n }).optional().describe('Field configuration'),\n \n /** Interfaces this type implements */\n interfaces: z.array(z.string()).optional().describe('GraphQL interface names'),\n \n /** Whether this is an interface definition */\n isInterface: z.boolean().optional().default(false).describe('Define as GraphQL interface'),\n \n /** Custom directives */\n directives: z.array(z.object({\n name: z.string().describe('Directive name'),\n args: z.record(z.string(), z.any()).optional().describe('Directive arguments'),\n })).optional().describe('GraphQL directives'),\n});\n\nexport type GraphQLTypeConfig = z.infer<typeof GraphQLTypeConfigSchema>;\n\n// ==========================================\n// 2. Query Generation Configuration\n// ==========================================\n\n/**\n * GraphQL Query Configuration\n * \n * Configuration for auto-generating query fields from Objects.\n */\nexport const GraphQLQueryConfigSchema = z.object({\n /** Query name */\n name: z.string().describe('Query field name (camelCase recommended)'),\n \n /** Source Object */\n object: z.string().describe('Source ObjectQL object name'),\n \n /** Query type: single record or list */\n type: z.enum(['get', 'list', 'search']).describe('Query type'),\n \n /** Description */\n description: z.string().optional().describe('Query description'),\n \n /** Input arguments */\n args: z.record(z.string(), z.object({\n type: z.string().describe('GraphQL type (e.g., \"ID!\", \"String\", \"Int\")'),\n description: z.string().optional().describe('Argument description'),\n defaultValue: z.any().optional().describe('Default value'),\n })).optional().describe('Query arguments'),\n \n /** Filtering configuration */\n filtering: z.object({\n enabled: z.boolean().default(true).describe('Allow filtering'),\n fields: z.array(z.string()).optional().describe('Filterable fields'),\n operators: z.array(z.enum([\n 'eq', 'ne', 'gt', 'gte', 'lt', 'lte',\n 'in', 'notIn', 'contains', 'startsWith', 'endsWith',\n 'isNull', 'isNotNull',\n ])).optional().describe('Allowed filter operators'),\n }).optional().describe('Filtering capabilities'),\n \n /** Sorting configuration */\n sorting: z.object({\n enabled: z.boolean().default(true).describe('Allow sorting'),\n fields: z.array(z.string()).optional().describe('Sortable fields'),\n defaultSort: z.object({\n field: z.string(),\n direction: z.enum(['ASC', 'DESC']),\n }).optional().describe('Default sort order'),\n }).optional().describe('Sorting capabilities'),\n \n /** Pagination configuration */\n pagination: z.object({\n enabled: z.boolean().default(true).describe('Enable pagination'),\n type: z.enum(['offset', 'cursor', 'relay']).default('offset').describe('Pagination style'),\n defaultLimit: z.number().int().min(1).default(20).describe('Default page size'),\n maxLimit: z.number().int().min(1).default(100).describe('Maximum page size'),\n cursors: z.object({\n field: z.string().default('id').describe('Field to use for cursor pagination'),\n }).optional(),\n }).optional().describe('Pagination configuration'),\n \n /** Field selection */\n fields: z.object({\n /** Always include these fields */\n required: z.array(z.string()).optional().describe('Required fields (always returned)'),\n \n /** Allow selecting these fields */\n selectable: z.array(z.string()).optional().describe('Selectable fields'),\n }).optional().describe('Field selection configuration'),\n \n /** Authorization */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n permissions: z.array(z.string()).optional().describe('Required permissions'),\n \n /** Caching */\n cache: z.object({\n enabled: z.boolean().default(false).describe('Enable caching'),\n ttl: z.number().int().min(0).optional().describe('Cache TTL in seconds'),\n key: z.string().optional().describe('Cache key template'),\n }).optional().describe('Query caching'),\n});\n\nexport type GraphQLQueryConfig = z.infer<typeof GraphQLQueryConfigSchema>;\n\n// ==========================================\n// 3. Mutation Generation Configuration\n// ==========================================\n\n/**\n * GraphQL Mutation Configuration\n * \n * Configuration for auto-generating mutation fields from Objects.\n */\nexport const GraphQLMutationConfigSchema = z.object({\n /** Mutation name */\n name: z.string().describe('Mutation field name (camelCase recommended)'),\n \n /** Source Object */\n object: z.string().describe('Source ObjectQL object name'),\n \n /** Mutation type */\n type: z.enum(['create', 'update', 'delete', 'upsert', 'custom']).describe('Mutation type'),\n \n /** Description */\n description: z.string().optional().describe('Mutation description'),\n \n /** Input type configuration */\n input: z.object({\n /** Input type name */\n typeName: z.string().optional().describe('Custom input type name'),\n \n /** Fields to include in input */\n fields: z.object({\n include: z.array(z.string()).optional().describe('Fields to include'),\n exclude: z.array(z.string()).optional().describe('Fields to exclude'),\n required: z.array(z.string()).optional().describe('Required input fields'),\n }).optional().describe('Input field configuration'),\n \n /** Validation */\n validation: z.object({\n enabled: z.boolean().default(true).describe('Enable input validation'),\n rules: z.array(z.string()).optional().describe('Custom validation rules'),\n }).optional().describe('Input validation'),\n }).optional().describe('Input configuration'),\n \n /** Return type configuration */\n output: z.object({\n /** Type of output */\n type: z.enum(['object', 'payload', 'boolean', 'custom']).default('object').describe('Output type'),\n \n /** Include success/error envelope */\n includeEnvelope: z.boolean().optional().default(false).describe('Wrap in success/error payload'),\n \n /** Custom output type */\n customType: z.string().optional().describe('Custom output type name'),\n }).optional().describe('Output configuration'),\n \n /** Transaction handling */\n transaction: z.object({\n enabled: z.boolean().default(true).describe('Use database transaction'),\n isolationLevel: z.enum(['read_uncommitted', 'read_committed', 'repeatable_read', 'serializable']).optional().describe('Transaction isolation level'),\n }).optional().describe('Transaction configuration'),\n \n /** Authorization */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n permissions: z.array(z.string()).optional().describe('Required permissions'),\n \n /** Hooks */\n hooks: z.object({\n before: z.array(z.string()).optional().describe('Pre-mutation hooks'),\n after: z.array(z.string()).optional().describe('Post-mutation hooks'),\n }).optional().describe('Lifecycle hooks'),\n});\n\nexport type GraphQLMutationConfig = z.infer<typeof GraphQLMutationConfigSchema>;\n\n// ==========================================\n// 4. Subscription Configuration\n// ==========================================\n\n/**\n * GraphQL Subscription Configuration\n * \n * Configuration for real-time GraphQL subscriptions.\n */\nexport const GraphQLSubscriptionConfigSchema = z.object({\n /** Subscription name */\n name: z.string().describe('Subscription field name (camelCase recommended)'),\n \n /** Source Object */\n object: z.string().describe('Source ObjectQL object name'),\n \n /** Subscription trigger events */\n events: z.array(z.enum(['created', 'updated', 'deleted', 'custom'])).describe('Events to subscribe to'),\n \n /** Description */\n description: z.string().optional().describe('Subscription description'),\n \n /** Filtering */\n filter: z.object({\n enabled: z.boolean().default(true).describe('Allow filtering subscriptions'),\n fields: z.array(z.string()).optional().describe('Filterable fields'),\n }).optional().describe('Subscription filtering'),\n \n /** Payload configuration */\n payload: z.object({\n /** Include the modified entity */\n includeEntity: z.boolean().default(true).describe('Include entity in payload'),\n \n /** Include previous values (for updates) */\n includePreviousValues: z.boolean().optional().default(false).describe('Include previous field values'),\n \n /** Include mutation metadata */\n includeMeta: z.boolean().optional().default(true).describe('Include metadata (timestamp, user, etc.)'),\n }).optional().describe('Payload configuration'),\n \n /** Authorization */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n permissions: z.array(z.string()).optional().describe('Required permissions'),\n \n /** Rate limiting for subscriptions */\n rateLimit: z.object({\n enabled: z.boolean().default(true).describe('Enable rate limiting'),\n maxSubscriptionsPerUser: z.number().int().min(1).default(10).describe('Max concurrent subscriptions per user'),\n throttleMs: z.number().int().min(0).optional().describe('Throttle interval in milliseconds'),\n }).optional().describe('Subscription rate limiting'),\n});\n\nexport type GraphQLSubscriptionConfig = z.infer<typeof GraphQLSubscriptionConfigSchema>;\n\n// ==========================================\n// 5. Resolver Configuration\n// ==========================================\n\n/**\n * GraphQL Resolver Configuration\n * \n * Configuration for custom resolver logic.\n */\nexport const GraphQLResolverConfigSchema = z.object({\n /** Field path (e.g., \"Query.users\", \"Mutation.createUser\") */\n path: z.string().describe('Resolver path (Type.field)'),\n \n /** Resolver implementation type */\n type: z.enum(['datasource', 'computed', 'script', 'proxy']).describe('Resolver implementation type'),\n \n /** Implementation details */\n implementation: z.object({\n /** For datasource type */\n datasource: z.string().optional().describe('Datasource ID'),\n query: z.string().optional().describe('Query/SQL to execute'),\n \n /** For computed type */\n expression: z.string().optional().describe('Computation expression'),\n dependencies: z.array(z.string()).optional().describe('Dependent fields'),\n \n /** For script type */\n script: z.string().optional().describe('Script ID or inline code'),\n \n /** For proxy type */\n url: z.string().optional().describe('Proxy URL'),\n method: z.enum(['GET', 'POST', 'PUT', 'DELETE']).optional().describe('HTTP method'),\n }).optional().describe('Implementation configuration'),\n \n /** Caching */\n cache: z.object({\n enabled: z.boolean().default(false).describe('Enable resolver caching'),\n ttl: z.number().int().min(0).optional().describe('Cache TTL in seconds'),\n keyArgs: z.array(z.string()).optional().describe('Arguments to include in cache key'),\n }).optional().describe('Resolver caching'),\n});\n\nexport type GraphQLResolverConfig = z.infer<typeof GraphQLResolverConfigSchema>;\n\n// ==========================================\n// 6. DataLoader Configuration\n// ==========================================\n\n/**\n * GraphQL DataLoader Configuration\n * \n * Configuration for batching and caching with DataLoader pattern.\n * Prevents N+1 query problems in GraphQL.\n */\nexport const GraphQLDataLoaderConfigSchema = z.object({\n /** Loader name */\n name: z.string().describe('DataLoader name'),\n \n /** Source Object or datasource */\n source: z.string().describe('Source object or datasource'),\n \n /** Batch function configuration */\n batchFunction: z.object({\n /** Type of batch operation */\n type: z.enum(['findByIds', 'query', 'script', 'custom']).describe('Batch function type'),\n \n /** For findByIds */\n keyField: z.string().optional().describe('Field to batch on (e.g., \"id\")'),\n \n /** For query */\n query: z.string().optional().describe('Query template'),\n \n /** For script */\n script: z.string().optional().describe('Script ID'),\n \n /** Maximum batch size */\n maxBatchSize: z.number().int().min(1).optional().default(100).describe('Maximum batch size'),\n }).describe('Batch function configuration'),\n \n /** Caching */\n cache: z.object({\n enabled: z.boolean().default(true).describe('Enable per-request caching'),\n \n /** Cache key function */\n keyFn: z.string().optional().describe('Custom cache key function'),\n }).optional().describe('DataLoader caching'),\n \n /** Options */\n options: z.object({\n /** Batch multiple requests in single tick */\n batch: z.boolean().default(true).describe('Enable batching'),\n \n /** Cache loaded values */\n cache: z.boolean().default(true).describe('Enable caching'),\n \n /** Maximum cache size */\n maxCacheSize: z.number().int().min(0).optional().describe('Max cache entries'),\n }).optional().describe('DataLoader options'),\n});\n\nexport type GraphQLDataLoaderConfig = z.infer<typeof GraphQLDataLoaderConfigSchema>;\n\n// ==========================================\n// 7. GraphQL Directive Schema\n// ==========================================\n\n/**\n * GraphQL Directive Location\n * \n * Where a directive can be used in the schema.\n */\nexport const GraphQLDirectiveLocation = z.enum([\n // Executable Directive Locations\n 'QUERY',\n 'MUTATION',\n 'SUBSCRIPTION',\n 'FIELD',\n 'FRAGMENT_DEFINITION',\n 'FRAGMENT_SPREAD',\n 'INLINE_FRAGMENT',\n 'VARIABLE_DEFINITION',\n \n // Type System Directive Locations\n 'SCHEMA',\n 'SCALAR',\n 'OBJECT',\n 'FIELD_DEFINITION',\n 'ARGUMENT_DEFINITION',\n 'INTERFACE',\n 'UNION',\n 'ENUM',\n 'ENUM_VALUE',\n 'INPUT_OBJECT',\n 'INPUT_FIELD_DEFINITION',\n]);\n\nexport type GraphQLDirectiveLocation = z.infer<typeof GraphQLDirectiveLocation>;\n\n/**\n * GraphQL Directive Configuration\n * \n * Custom directives for schema metadata and behavior.\n */\nexport const GraphQLDirectiveConfigSchema = z.object({\n /** Directive name */\n name: z.string().regex(/^[a-z][a-zA-Z0-9]*$/).describe('Directive name (camelCase)'),\n \n /** Description */\n description: z.string().optional().describe('Directive description'),\n \n /** Where directive can be used */\n locations: z.array(GraphQLDirectiveLocation).describe('Directive locations'),\n \n /** Arguments */\n args: z.record(z.string(), z.object({\n type: z.string().describe('Argument type'),\n description: z.string().optional().describe('Argument description'),\n defaultValue: z.any().optional().describe('Default value'),\n })).optional().describe('Directive arguments'),\n \n /** Is repeatable */\n repeatable: z.boolean().optional().default(false).describe('Can be applied multiple times'),\n \n /** Implementation */\n implementation: z.object({\n /** Directive behavior type */\n type: z.enum(['auth', 'validation', 'transform', 'cache', 'deprecation', 'custom']).describe('Directive type'),\n \n /** Handler function */\n handler: z.string().optional().describe('Handler function name or script'),\n }).optional().describe('Directive implementation'),\n});\n\nexport type GraphQLDirectiveConfig = z.infer<typeof GraphQLDirectiveConfigSchema>;\n\n// ==========================================\n// 8. GraphQL Security - Query Depth Limiting\n// ==========================================\n\n/**\n * Query Depth Limiting Configuration\n * \n * Prevents deeply nested queries that could cause performance issues.\n */\nexport const GraphQLQueryDepthLimitSchema = z.object({\n /** Enable depth limiting */\n enabled: z.boolean().default(true).describe('Enable query depth limiting'),\n \n /** Maximum allowed depth */\n maxDepth: z.number().int().min(1).default(10).describe('Maximum query depth'),\n \n /** Fields to ignore in depth calculation */\n ignoreFields: z.array(z.string()).optional().describe('Fields excluded from depth calculation'),\n \n /** Callback on depth exceeded */\n onDepthExceeded: z.enum(['reject', 'log', 'warn']).default('reject').describe('Action when depth exceeded'),\n \n /** Custom error message */\n errorMessage: z.string().optional().describe('Custom error message for depth violations'),\n});\n\nexport type GraphQLQueryDepthLimit = z.infer<typeof GraphQLQueryDepthLimitSchema>;\n\n// ==========================================\n// 9. GraphQL Security - Query Complexity\n// ==========================================\n\n/**\n * Query Complexity Calculation Configuration\n * \n * Assigns complexity scores to fields and limits total query complexity.\n * Prevents expensive queries from overloading the server.\n */\nexport const GraphQLQueryComplexitySchema = z.object({\n /** Enable complexity limiting */\n enabled: z.boolean().default(true).describe('Enable query complexity limiting'),\n \n /** Maximum allowed complexity score */\n maxComplexity: z.number().int().min(1).default(1000).describe('Maximum query complexity'),\n \n /** Default field complexity */\n defaultFieldComplexity: z.number().int().min(0).default(1).describe('Default complexity per field'),\n \n /** Field-specific complexity scores */\n fieldComplexity: z.record(z.string(), z.union([\n z.number().int().min(0),\n z.object({\n /** Base complexity */\n base: z.number().int().min(0).describe('Base complexity'),\n \n /** Multiplier based on arguments */\n multiplier: z.string().optional().describe('Argument multiplier (e.g., \"limit\")'),\n \n /** Custom complexity calculation */\n calculator: z.string().optional().describe('Custom calculator function'),\n }),\n ])).optional().describe('Per-field complexity configuration'),\n \n /** List multiplier */\n listMultiplier: z.number().min(0).default(10).describe('Multiplier for list fields'),\n \n /** Callback on complexity exceeded */\n onComplexityExceeded: z.enum(['reject', 'log', 'warn']).default('reject').describe('Action when complexity exceeded'),\n \n /** Custom error message */\n errorMessage: z.string().optional().describe('Custom error message for complexity violations'),\n});\n\nexport type GraphQLQueryComplexity = z.infer<typeof GraphQLQueryComplexitySchema>;\n\n// ==========================================\n// 10. GraphQL Security - Rate Limiting\n// ==========================================\n\n/**\n * GraphQL Rate Limiting Configuration\n * \n * Rate limiting for GraphQL operations.\n */\nexport const GraphQLRateLimitSchema = z.object({\n /** Enable rate limiting */\n enabled: z.boolean().default(true).describe('Enable rate limiting'),\n \n /** Rate limit strategy */\n strategy: z.enum(['token_bucket', 'fixed_window', 'sliding_window', 'cost_based']).default('token_bucket').describe('Rate limiting strategy'),\n \n /** Global rate limits */\n global: z.object({\n /** Requests per time window */\n maxRequests: z.number().int().min(1).default(1000).describe('Maximum requests per window'),\n \n /** Time window in milliseconds */\n windowMs: z.number().int().min(1000).default(60000).describe('Time window in milliseconds'),\n }).optional().describe('Global rate limits'),\n \n /** Per-user rate limits */\n perUser: z.object({\n /** Requests per time window */\n maxRequests: z.number().int().min(1).default(100).describe('Maximum requests per user per window'),\n \n /** Time window in milliseconds */\n windowMs: z.number().int().min(1000).default(60000).describe('Time window in milliseconds'),\n }).optional().describe('Per-user rate limits'),\n \n /** Cost-based rate limiting */\n costBased: z.object({\n /** Enable cost-based limiting */\n enabled: z.boolean().default(false).describe('Enable cost-based rate limiting'),\n \n /** Maximum cost per time window */\n maxCost: z.number().int().min(1).default(10000).describe('Maximum cost per window'),\n \n /** Time window in milliseconds */\n windowMs: z.number().int().min(1000).default(60000).describe('Time window in milliseconds'),\n \n /** Use complexity as cost */\n useComplexityAsCost: z.boolean().default(true).describe('Use query complexity as cost'),\n }).optional().describe('Cost-based rate limiting'),\n \n /** Operation-specific limits */\n operations: z.record(z.string(), z.object({\n maxRequests: z.number().int().min(1).describe('Max requests for this operation'),\n windowMs: z.number().int().min(1000).describe('Time window'),\n })).optional().describe('Per-operation rate limits'),\n \n /** Callback on limit exceeded */\n onLimitExceeded: z.enum(['reject', 'queue', 'log']).default('reject').describe('Action when rate limit exceeded'),\n \n /** Custom error message */\n errorMessage: z.string().optional().describe('Custom error message for rate limit violations'),\n \n /** Headers to include in response */\n includeHeaders: z.boolean().default(true).describe('Include rate limit headers in response'),\n});\n\nexport type GraphQLRateLimit = z.infer<typeof GraphQLRateLimitSchema>;\n\n// ==========================================\n// 11. GraphQL Security - Persisted Queries\n// ==========================================\n\n/**\n * Persisted Queries Configuration\n * \n * Only allow pre-registered queries to execute (allow list approach).\n * Improves security and performance.\n */\nexport const GraphQLPersistedQuerySchema = z.object({\n /** Enable persisted queries */\n enabled: z.boolean().default(false).describe('Enable persisted queries'),\n \n /** Enforcement mode */\n mode: z.enum(['optional', 'required']).default('optional').describe('Persisted query mode (optional: allow both, required: only persisted)'),\n \n /** Query store configuration */\n store: z.object({\n /** Store type */\n type: z.enum(['memory', 'redis', 'database', 'file']).default('memory').describe('Query store type'),\n \n /** Store connection string */\n connection: z.string().optional().describe('Store connection string or path'),\n \n /** TTL for cached queries */\n ttl: z.number().int().min(0).optional().describe('TTL in seconds for stored queries'),\n }).optional().describe('Query store configuration'),\n \n /** Automatic Persisted Queries (APQ) */\n apq: z.object({\n /** Enable APQ */\n enabled: z.boolean().default(true).describe('Enable Automatic Persisted Queries'),\n \n /** Hash algorithm */\n hashAlgorithm: z.enum(['sha256', 'sha1', 'md5']).default('sha256').describe('Hash algorithm for query IDs'),\n \n /** Cache control */\n cache: z.object({\n /** Cache TTL */\n ttl: z.number().int().min(0).default(3600).describe('Cache TTL in seconds'),\n \n /** Max cache size */\n maxSize: z.number().int().min(1).optional().describe('Maximum number of cached queries'),\n }).optional().describe('APQ cache configuration'),\n }).optional().describe('Automatic Persisted Queries configuration'),\n \n /** Query allow list */\n allowlist: z.object({\n /** Enable allow list mode */\n enabled: z.boolean().default(false).describe('Enable query allow list (reject queries not in list)'),\n \n /** Allowed query IDs */\n queries: z.array(z.object({\n id: z.string().describe('Query ID or hash'),\n operation: z.string().optional().describe('Operation name'),\n query: z.string().optional().describe('Query string'),\n })).optional().describe('Allowed queries'),\n \n /** External allow list source */\n source: z.string().optional().describe('External allow list source (file path or URL)'),\n }).optional().describe('Query allow list configuration'),\n \n /** Security */\n security: z.object({\n /** Maximum query size */\n maxQuerySize: z.number().int().min(1).optional().describe('Maximum query string size in bytes'),\n \n /** Reject introspection in production */\n rejectIntrospection: z.boolean().default(false).describe('Reject introspection queries'),\n }).optional().describe('Security configuration'),\n});\n\nexport type GraphQLPersistedQuery = z.infer<typeof GraphQLPersistedQuerySchema>;\n\n// ==========================================\n// 12. Complete GraphQL Configuration\n// ==========================================\n\n/**\n * Complete GraphQL Configuration\n * \n * Root configuration for GraphQL API generation and security.\n */\nexport const GraphQLConfigSchema = z.object({\n /** Enable GraphQL API */\n enabled: z.boolean().default(true).describe('Enable GraphQL API'),\n \n /** GraphQL endpoint path */\n path: z.string().default('/graphql').describe('GraphQL endpoint path'),\n \n /** GraphQL Playground */\n playground: z.object({\n enabled: z.boolean().default(true).describe('Enable GraphQL Playground'),\n path: z.string().default('/playground').describe('Playground path'),\n }).optional().describe('GraphQL Playground configuration'),\n \n /** Schema generation */\n schema: z.object({\n /** Auto-generate types from Objects */\n autoGenerateTypes: z.boolean().default(true).describe('Auto-generate types from Objects'),\n \n /** Type configurations */\n types: z.array(GraphQLTypeConfigSchema).optional().describe('Type configurations'),\n \n /** Query configurations */\n queries: z.array(GraphQLQueryConfigSchema).optional().describe('Query configurations'),\n \n /** Mutation configurations */\n mutations: z.array(GraphQLMutationConfigSchema).optional().describe('Mutation configurations'),\n \n /** Subscription configurations */\n subscriptions: z.array(GraphQLSubscriptionConfigSchema).optional().describe('Subscription configurations'),\n \n /** Custom resolvers */\n resolvers: z.array(GraphQLResolverConfigSchema).optional().describe('Custom resolver configurations'),\n \n /** Custom directives */\n directives: z.array(GraphQLDirectiveConfigSchema).optional().describe('Custom directive configurations'),\n }).optional().describe('Schema generation configuration'),\n \n /** DataLoader configurations */\n dataLoaders: z.array(GraphQLDataLoaderConfigSchema).optional().describe('DataLoader configurations'),\n \n /** Security configuration */\n security: z.object({\n /** Query depth limiting */\n depthLimit: GraphQLQueryDepthLimitSchema.optional().describe('Query depth limiting'),\n \n /** Query complexity */\n complexity: GraphQLQueryComplexitySchema.optional().describe('Query complexity calculation'),\n \n /** Rate limiting */\n rateLimit: GraphQLRateLimitSchema.optional().describe('Rate limiting'),\n \n /** Persisted queries */\n persistedQueries: GraphQLPersistedQuerySchema.optional().describe('Persisted queries'),\n }).optional().describe('Security configuration'),\n});\n\nexport const GraphQLConfig = Object.assign(GraphQLConfigSchema, {\n create: <T extends z.input<typeof GraphQLConfigSchema>>(config: T) => config,\n});\n\nexport type GraphQLConfig = z.infer<typeof GraphQLConfigSchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Helper to map ObjectQL field type to GraphQL scalar type\n */\nexport const mapFieldTypeToGraphQL = (fieldType: z.infer<typeof FieldType>): string => {\n const mapping: Record<string, string> = {\n // Core Text\n 'text': 'String',\n 'textarea': 'String',\n 'email': 'Email',\n 'url': 'URL',\n 'phone': 'PhoneNumber',\n 'password': 'String',\n \n // Rich Content\n 'markdown': 'String',\n 'html': 'String',\n 'richtext': 'String',\n \n // Numbers\n 'number': 'Float',\n 'currency': 'Currency',\n 'percent': 'Float',\n \n // Date & Time\n 'date': 'Date',\n 'datetime': 'DateTime',\n 'time': 'Time',\n \n // Logic\n 'boolean': 'Boolean',\n 'toggle': 'Boolean',\n \n // Selection\n 'select': 'String',\n 'multiselect': '[String]',\n 'radio': 'String',\n 'checkboxes': '[String]',\n \n // Relational\n 'lookup': 'ID',\n 'master_detail': 'ID',\n 'tree': 'ID',\n \n // Media\n 'image': 'URL',\n 'file': 'URL',\n 'avatar': 'URL',\n 'video': 'URL',\n 'audio': 'URL',\n \n // Calculated\n 'formula': 'String',\n 'summary': 'Float',\n 'autonumber': 'String',\n \n // Enhanced Types\n 'location': 'JSONObject',\n 'address': 'JSONObject',\n 'code': 'String',\n 'json': 'JSON',\n 'color': 'String',\n 'rating': 'Float',\n 'slider': 'Float',\n 'signature': 'String',\n 'qrcode': 'String',\n 'progress': 'Float',\n 'tags': '[String]',\n \n // AI/ML\n 'vector': '[Float]',\n };\n \n return mapping[fieldType] || 'String';\n};\n","import { z } from 'zod';\nimport { ApiErrorSchema, BaseResponseSchema, RecordDataSchema } from './contract.zod';\n\n/**\n * Batch Operations API\n * \n * Provides efficient bulk data operations with transaction support.\n * Implements P0/P1 requirements for ObjectStack kernel.\n * \n * Features:\n * - Batch create/update/delete operations\n * - Atomic transaction support (all-or-none)\n * - Partial success handling\n * - Detailed error reporting per record\n * \n * Industry alignment: Salesforce Bulk API, Microsoft Dynamics Bulk Operations\n */\n\n// ==========================================\n// Batch Operation Types\n// ==========================================\n\n/**\n * Batch Operation Type Enum\n * Defines the type of batch operation to perform\n */\nexport const BatchOperationType = z.enum([\n 'create', // Batch insert\n 'update', // Batch update\n 'upsert', // Batch upsert (insert or update based on external ID)\n 'delete', // Batch delete\n]);\n\nexport type BatchOperationType = z.infer<typeof BatchOperationType>;\n\n// ==========================================\n// Batch Request Schemas\n// ==========================================\n\n/**\n * Batch Record Schema\n * Individual record in a batch operation\n */\nexport const BatchRecordSchema = z.object({\n id: z.string().optional().describe('Record ID (required for update/delete)'),\n data: RecordDataSchema.optional().describe('Record data (required for create/update/upsert)'),\n externalId: z.string().optional().describe('External ID for upsert matching'),\n});\n\nexport type BatchRecord = z.infer<typeof BatchRecordSchema>;\n\n/**\n * Batch Operation Options Schema\n * Configuration options for batch operations\n */\nexport const BatchOptionsSchema = z.object({\n atomic: z.boolean().optional().default(true).describe('If true, rollback entire batch on any failure (transaction mode)'),\n returnRecords: z.boolean().optional().default(false).describe('If true, return full record data in response'),\n continueOnError: z.boolean().optional().default(false).describe('If true (and atomic=false), continue processing remaining records after errors'),\n validateOnly: z.boolean().optional().default(false).describe('If true, validate records without persisting changes (dry-run mode)'),\n});\n\nexport type BatchOptions = z.infer<typeof BatchOptionsSchema>;\n\n/**\n * Batch Update Request Schema\n * Request payload for batch update operations\n * \n * @example\n * // POST /api/v1/data/{object}/batch\n * {\n * \"operation\": \"update\",\n * \"records\": [\n * { \"id\": \"1\", \"data\": { \"name\": \"Updated Name 1\", \"status\": \"active\" } },\n * { \"id\": \"2\", \"data\": { \"name\": \"Updated Name 2\", \"status\": \"active\" } }\n * ],\n * \"options\": {\n * \"atomic\": true,\n * \"returnRecords\": true\n * }\n * }\n */\nexport const BatchUpdateRequestSchema = z.object({\n operation: BatchOperationType.describe('Type of batch operation'),\n records: z.array(BatchRecordSchema).min(1).max(200).describe('Array of records to process (max 200 per batch)'),\n options: BatchOptionsSchema.optional().describe('Batch operation options'),\n});\n\nexport type BatchUpdateRequest = z.input<typeof BatchUpdateRequestSchema>;\n\n/**\n * Simplified Batch Update Request (for updateMany API)\n * Simplified request for batch updates without operation field\n * \n * @example\n * // POST /api/v1/data/{object}/updateMany\n * {\n * \"records\": [\n * { \"id\": \"1\", \"data\": { \"name\": \"Updated Name 1\" } },\n * { \"id\": \"2\", \"data\": { \"name\": \"Updated Name 2\" } }\n * ],\n * \"options\": { \"atomic\": true }\n * }\n */\nexport const UpdateManyRequestSchema = z.object({\n records: z.array(BatchRecordSchema).min(1).max(200).describe('Array of records to update (max 200 per batch)'),\n options: BatchOptionsSchema.optional().describe('Update options'),\n});\n\nexport type UpdateManyRequest = z.input<typeof UpdateManyRequestSchema>;\n\n// ==========================================\n// Batch Response Schemas\n// ==========================================\n\n/**\n * Batch Operation Result Schema\n * Result for a single record in a batch operation\n */\nexport const BatchOperationResultSchema = z.object({\n id: z.string().optional().describe('Record ID if operation succeeded'),\n success: z.boolean().describe('Whether this record was processed successfully'),\n errors: z.array(ApiErrorSchema).optional().describe('Array of errors if operation failed'),\n data: RecordDataSchema.optional().describe('Full record data (if returnRecords=true)'),\n index: z.number().optional().describe('Index of the record in the request array'),\n});\n\nexport type BatchOperationResult = z.infer<typeof BatchOperationResultSchema>;\n\n/**\n * Batch Update Response Schema\n * Response payload for batch operations\n * \n * @example Success Response\n * {\n * \"success\": true,\n * \"operation\": \"update\",\n * \"total\": 2,\n * \"succeeded\": 2,\n * \"failed\": 0,\n * \"results\": [\n * { \"id\": \"1\", \"success\": true, \"index\": 0 },\n * { \"id\": \"2\", \"success\": true, \"index\": 1 }\n * ],\n * \"meta\": {\n * \"timestamp\": \"2026-01-29T12:00:00Z\",\n * \"duration\": 150\n * }\n * }\n * \n * @example Partial Success Response (atomic=false)\n * {\n * \"success\": false,\n * \"operation\": \"update\",\n * \"total\": 2,\n * \"succeeded\": 1,\n * \"failed\": 1,\n * \"results\": [\n * { \"id\": \"1\", \"success\": true, \"index\": 0 },\n * { \n * \"success\": false, \n * \"index\": 1,\n * \"errors\": [{ \"code\": \"validation_error\", \"message\": \"Invalid email format\" }]\n * }\n * ],\n * \"meta\": {\n * \"timestamp\": \"2026-01-29T12:00:00Z\"\n * }\n * }\n */\nexport const BatchUpdateResponseSchema = BaseResponseSchema.extend({\n operation: BatchOperationType.optional().describe('Operation type that was performed'),\n total: z.number().describe('Total number of records in the batch'),\n succeeded: z.number().describe('Number of records that succeeded'),\n failed: z.number().describe('Number of records that failed'),\n results: z.array(BatchOperationResultSchema).describe('Detailed results for each record'),\n});\n\nexport type BatchUpdateResponse = z.infer<typeof BatchUpdateResponseSchema>;\n\n// ==========================================\n// Batch Delete Schemas\n// ==========================================\n\n/**\n * Batch Delete Request Schema\n * Simplified request for batch delete operations\n * \n * @example\n * // POST /api/v1/data/{object}/deleteMany\n * {\n * \"ids\": [\"1\", \"2\", \"3\"],\n * \"options\": { \"atomic\": true }\n * }\n */\nexport const DeleteManyRequestSchema = z.object({\n ids: z.array(z.string()).min(1).max(200).describe('Array of record IDs to delete (max 200)'),\n options: BatchOptionsSchema.optional().describe('Delete options'),\n});\n\nexport type DeleteManyRequest = z.infer<typeof DeleteManyRequestSchema>;\n\n// ==========================================\n// API Contract Exports\n// ==========================================\n\n/**\n * Batch API Contracts\n * Standardized contracts for batch operations\n */\nexport const BatchApiContracts = {\n batchOperation: {\n input: BatchUpdateRequestSchema,\n output: BatchUpdateResponseSchema,\n },\n updateMany: {\n input: UpdateManyRequestSchema,\n output: BatchUpdateResponseSchema,\n },\n deleteMany: {\n input: DeleteManyRequestSchema,\n output: BatchUpdateResponseSchema,\n },\n};\n\n/**\n * Batch Configuration Schema\n * \n * Configuration for enabling batch operations API.\n */\nexport const BatchConfigSchema = z.object({\n /** Enable batch operations */\n enabled: z.boolean().default(true).describe('Enable batch operations'),\n \n /** Maximum records per batch */\n maxRecordsPerBatch: z.number().int().min(1).max(1000).default(200).describe('Maximum records per batch'),\n \n /** Default options */\n defaultOptions: BatchOptionsSchema.optional().describe('Default batch options'),\n}).passthrough(); // Allow additional properties\n\nexport type BatchConfig = z.infer<typeof BatchConfigSchema>;\n","import { z } from 'zod';\n\n/**\n * HTTP Metadata Cache Protocol\n * \n * Implements efficient HTTP-level metadata caching with ETag support.\n * Implements P0 requirement for ObjectStack kernel.\n * \n * ## Caching in ObjectStack\n * \n * **HTTP Cache (`api/http-cache.zod.ts`) - This File**\n * - **Purpose**: Cache API responses at HTTP protocol level\n * - **Technologies**: HTTP headers (ETag, Last-Modified, Cache-Control), CDN\n * - **Configuration**: Cache-Control headers, validation tokens\n * - **Use case**: Reduce API response time for repeated metadata requests\n * - **Scope**: HTTP layer, client-server communication\n * \n * **Application Cache (`system/cache.zod.ts`)**\n * - **Purpose**: Cache computed data, query results, aggregations\n * - **Technologies**: Redis, Memcached, in-memory LRU\n * - **Configuration**: TTL, eviction policies, cache warming\n * - **Use case**: Cache expensive database queries, computed values\n * - **Scope**: Application layer, server-side data storage\n * \n * ## Features\n * - ETag-based conditional requests (HTTP 304 Not Modified)\n * - Cache-Control directives\n * - Metadata versioning\n * - Selective cache invalidation\n * \n * Industry alignment: HTTP Caching (RFC 7234), Salesforce Metadata API\n * \n * @see ../../system/cache.zod.ts for application-level caching\n */\n\n// ==========================================\n// Cache Control Headers\n// ==========================================\n\n/**\n * Cache Control Directive Enum\n * Standard HTTP cache control directives\n */\nexport const CacheDirective = z.enum([\n 'public', // Cacheable by any cache\n 'private', // Cacheable only by user-agent\n 'no-cache', // Must revalidate with server\n 'no-store', // Never cache\n 'must-revalidate', // Must revalidate stale responses\n 'max-age', // Maximum cache age in seconds\n]);\n\nexport type CacheDirective = z.infer<typeof CacheDirective>;\n\n/**\n * Cache Control Schema\n * HTTP cache control configuration\n * \n * @example\n * {\n * \"directives\": [\"public\", \"max-age\"],\n * \"maxAge\": 3600,\n * \"staleWhileRevalidate\": 86400\n * }\n */\nexport const CacheControlSchema = z.object({\n directives: z.array(CacheDirective).describe('Cache control directives'),\n maxAge: z.number().optional().describe('Maximum cache age in seconds'),\n staleWhileRevalidate: z.number().optional().describe('Allow serving stale content while revalidating (seconds)'),\n staleIfError: z.number().optional().describe('Allow serving stale content on error (seconds)'),\n});\n\nexport type CacheControl = z.infer<typeof CacheControlSchema>;\n\n// ==========================================\n// ETag Support\n// ==========================================\n\n/**\n * ETag Schema\n * Entity tag for cache validation\n * \n * ETags can be:\n * - Strong: Exact match required (e.g., \"686897696a7c876b7e\")\n * - Weak: Semantic equivalence (e.g., W/\"686897696a7c876b7e\")\n */\nexport const ETagSchema = z.object({\n value: z.string().describe('ETag value (hash or version identifier)'),\n weak: z.boolean().optional().default(false).describe('Whether this is a weak ETag'),\n});\n\nexport type ETag = z.infer<typeof ETagSchema>;\n\n// ==========================================\n// Metadata Cache Request\n// ==========================================\n\n/**\n * Metadata Cache Request Schema\n * Request with cache validation headers\n * \n * @example\n * // GET /api/v1/metadata/objects/account\n * // Headers:\n * // If-None-Match: \"686897696a7c876b7e\"\n * // If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT\n */\nexport const MetadataCacheRequestSchema = z.object({\n ifNoneMatch: z.string().optional().describe('ETag value for conditional request (If-None-Match header)'),\n ifModifiedSince: z.string().datetime().optional().describe('Timestamp for conditional request (If-Modified-Since header)'),\n cacheControl: CacheControlSchema.optional().describe('Client cache control preferences'),\n});\n\nexport type MetadataCacheRequest = z.infer<typeof MetadataCacheRequestSchema>;\n\n// ==========================================\n// Metadata Cache Response\n// ==========================================\n\n/**\n * Metadata Cache Response Schema\n * Response with cache control headers\n * \n * @example Success Response (200 OK)\n * {\n * \"data\": { \"object\": \"account\" },\n * \"etag\": {\n * \"value\": \"686897696a7c876b7e\",\n * \"weak\": false\n * },\n * \"lastModified\": \"2026-01-29T12:00:00Z\",\n * \"cacheControl\": {\n * \"directives\": [\"public\", \"max-age\"],\n * \"maxAge\": 3600\n * }\n * }\n * \n * @example Not Modified Response (304 Not Modified)\n * {\n * \"notModified\": true,\n * \"etag\": {\n * \"value\": \"686897696a7c876b7e\"\n * }\n * }\n */\nexport const MetadataCacheResponseSchema = z.object({\n data: z.any().optional().describe('Metadata payload (omitted for 304 Not Modified)'),\n etag: ETagSchema.optional().describe('ETag for this resource version'),\n lastModified: z.string().datetime().optional().describe('Last modification timestamp'),\n cacheControl: CacheControlSchema.optional().describe('Cache control directives'),\n notModified: z.boolean().optional().default(false).describe('True if resource has not been modified (304 response)'),\n version: z.string().optional().describe('Metadata version identifier'),\n});\n\nexport type MetadataCacheResponse = z.infer<typeof MetadataCacheResponseSchema>;\n\n// ==========================================\n// Metadata Cache Invalidation\n// ==========================================\n\n/**\n * Cache Invalidation Target Enum\n * Specifies what to invalidate\n */\nexport const CacheInvalidationTarget = z.enum([\n 'all', // Invalidate all cached metadata\n 'object', // Invalidate specific object metadata\n 'field', // Invalidate specific field metadata\n 'permission', // Invalidate permission metadata\n 'layout', // Invalidate layout metadata\n 'custom', // Custom invalidation pattern\n]);\n\nexport type CacheInvalidationTarget = z.infer<typeof CacheInvalidationTarget>;\n\n/**\n * Cache Invalidation Request Schema\n * Request to invalidate cached metadata\n * \n * @example\n * // POST /api/v1/metadata/cache/invalidate\n * {\n * \"target\": \"object\",\n * \"identifiers\": [\"account\", \"contact\"],\n * \"cascade\": true\n * }\n */\nexport const CacheInvalidationRequestSchema = z.object({\n target: CacheInvalidationTarget.describe('What to invalidate'),\n identifiers: z.array(z.string()).optional().describe('Specific resources to invalidate (e.g., object names)'),\n cascade: z.boolean().optional().default(false).describe('If true, invalidate dependent resources'),\n pattern: z.string().optional().describe('Pattern for custom invalidation (supports wildcards)'),\n});\n\nexport type CacheInvalidationRequest = z.infer<typeof CacheInvalidationRequestSchema>;\n\n/**\n * Cache Invalidation Response Schema\n * Response for cache invalidation\n * \n * @example\n * {\n * \"success\": true,\n * \"invalidated\": 5,\n * \"targets\": [\"account\", \"contact\", \"opportunity\"]\n * }\n */\nexport const CacheInvalidationResponseSchema = z.object({\n success: z.boolean().describe('Whether invalidation succeeded'),\n invalidated: z.number().describe('Number of cache entries invalidated'),\n targets: z.array(z.string()).optional().describe('List of invalidated resources'),\n});\n\nexport type CacheInvalidationResponse = z.infer<typeof CacheInvalidationResponseSchema>;\n\n// ==========================================\n// Metadata Cache API Methods\n// ==========================================\n\n/**\n * Metadata Cache API Client Interface\n * \n * @example Usage\n * // Get metadata with cache support\n * const response = await client.meta.getCached('account', {\n * ifNoneMatch: '\"686897696a7c876b7e\"'\n * });\n * \n * if (response.notModified) {\n * // Use cached version\n * } else {\n * // Update cache with response.data\n * cache.set('account', response.data, {\n * etag: response.etag?.value,\n * maxAge: response.cacheControl?.maxAge\n * });\n * }\n */\nexport const MetadataCacheApi = {\n getCached: {\n input: MetadataCacheRequestSchema,\n output: MetadataCacheResponseSchema,\n },\n invalidate: {\n input: CacheInvalidationRequestSchema,\n output: CacheInvalidationResponseSchema,\n },\n};\n","import { z } from 'zod';\n\n/**\n * Standardized Error Codes Protocol\n * \n * Implements P0 requirement for ObjectStack kernel.\n * Provides consistent, machine-readable error codes across the platform.\n * \n * Features:\n * - Categorized error codes (validation, authentication, authorization, etc.)\n * - HTTP status code mapping\n * - Localization support\n * - Retry guidance\n * \n * Industry alignment: Google Cloud Errors, AWS Error Codes, Stripe API Errors\n */\n\n// ==========================================\n// Error Code Categories\n// ==========================================\n\n/**\n * Error Category Enum\n * High-level categorization of errors\n */\nexport const ErrorCategory = z.enum([\n 'validation', // Input validation errors (400)\n 'authentication', // Authentication failures (401)\n 'authorization', // Permission denied errors (403)\n 'not_found', // Resource not found (404)\n 'conflict', // Resource conflict (409)\n 'rate_limit', // Rate limiting (429)\n 'server', // Internal server errors (500)\n 'external', // External service errors (502/503)\n 'maintenance', // Planned maintenance (503)\n]);\n\nexport type ErrorCategory = z.infer<typeof ErrorCategory>;\n\n// ==========================================\n// Standard Error Codes\n// ==========================================\n\n/**\n * Standard Error Code Enum\n * Machine-readable error codes for common error scenarios\n */\nexport const StandardErrorCode = z.enum([\n // Validation Errors (400)\n 'validation_error', // Generic validation failure\n 'invalid_field', // Invalid field value\n 'missing_required_field', // Required field missing\n 'invalid_format', // Field format invalid (e.g., email, date)\n 'value_too_long', // Field value exceeds max length\n 'value_too_short', // Field value below min length\n 'value_out_of_range', // Numeric value out of range\n 'invalid_reference', // Invalid foreign key reference\n 'duplicate_value', // Unique constraint violation\n 'invalid_query', // Malformed query syntax\n 'invalid_filter', // Invalid filter expression\n 'invalid_sort', // Invalid sort specification\n 'max_records_exceeded', // Query would return too many records\n \n // Authentication Errors (401)\n 'unauthenticated', // No valid authentication provided\n 'invalid_credentials', // Wrong username/password\n 'expired_token', // Authentication token expired\n 'invalid_token', // Authentication token invalid\n 'session_expired', // User session expired\n 'mfa_required', // Multi-factor authentication required\n 'email_not_verified', // Email verification required\n \n // Authorization Errors (403)\n 'permission_denied', // User lacks required permission\n 'insufficient_privileges', // Operation requires higher privileges\n 'field_not_accessible', // Field-level security restriction\n 'record_not_accessible', // Sharing rule restriction\n 'license_required', // Feature requires license\n 'ip_restricted', // IP address not allowed\n 'time_restricted', // Access outside allowed time window\n \n // Not Found Errors (404)\n 'resource_not_found', // Generic resource not found\n 'object_not_found', // Object/table not found\n 'record_not_found', // Record with given ID not found\n 'field_not_found', // Field not found in object\n 'endpoint_not_found', // API endpoint not found\n \n // Conflict Errors (409)\n 'resource_conflict', // Generic resource conflict\n 'concurrent_modification', // Record modified by another user\n 'delete_restricted', // Cannot delete due to dependencies\n 'duplicate_record', // Record already exists\n 'lock_conflict', // Record is locked by another process\n \n // Rate Limiting (429)\n 'rate_limit_exceeded', // Too many requests\n 'quota_exceeded', // API quota exceeded\n 'concurrent_limit_exceeded', // Too many concurrent requests\n \n // Server Errors (500)\n 'internal_error', // Generic internal server error\n 'database_error', // Database operation failed\n 'timeout', // Operation timed out\n 'service_unavailable', // Service temporarily unavailable\n 'not_implemented', // Feature not yet implemented\n \n // External Service Errors (502/503)\n 'external_service_error', // External API call failed\n 'integration_error', // Integration service error\n 'webhook_delivery_failed', // Webhook delivery failed\n \n // Batch Operation Errors\n 'batch_partial_failure', // Batch operation partially succeeded\n 'batch_complete_failure', // Batch operation completely failed\n 'transaction_failed', // Transaction rolled back\n]);\n\nexport type StandardErrorCode = z.infer<typeof StandardErrorCode>;\n\n// ==========================================\n// Enhanced Error Schema\n// ==========================================\n\n/**\n * HTTP Status Code mapping for error categories\n */\nexport const ErrorHttpStatusMap: Record<string, number> = {\n validation: 400,\n authentication: 401,\n authorization: 403,\n not_found: 404,\n conflict: 409,\n rate_limit: 429,\n server: 500,\n external: 502,\n maintenance: 503,\n};\n\n/**\n * Retry Strategy Enum\n * Guidance on whether to retry failed requests\n */\nexport const RetryStrategy = z.enum([\n 'no_retry', // Do not retry (permanent failure)\n 'retry_immediate', // Retry immediately\n 'retry_backoff', // Retry with exponential backoff\n 'retry_after', // Retry after specified delay\n]);\n\nexport type RetryStrategy = z.infer<typeof RetryStrategy>;\n\n/**\n * Field Error Schema\n * Detailed error for a specific field\n */\nexport const FieldErrorSchema = z.object({\n field: z.string().describe('Field path (supports dot notation)'),\n code: StandardErrorCode.describe('Error code for this field'),\n message: z.string().describe('Human-readable error message'),\n value: z.any().optional().describe('The invalid value that was provided'),\n constraint: z.any().optional().describe('The constraint that was violated (e.g., max length)'),\n});\n\nexport type FieldError = z.infer<typeof FieldErrorSchema>;\n\n/**\n * Enhanced API Error Schema\n * Standardized error response with detailed metadata\n * \n * @example Validation Error\n * {\n * \"code\": \"validation_error\",\n * \"message\": \"Validation failed for 2 fields\",\n * \"category\": \"validation\",\n * \"httpStatus\": 400,\n * \"retryable\": false,\n * \"retryStrategy\": \"no_retry\",\n * \"details\": {\n * \"fieldErrors\": [\n * {\n * \"field\": \"email\",\n * \"code\": \"invalid_format\",\n * \"message\": \"Email format is invalid\",\n * \"value\": \"not-an-email\"\n * },\n * {\n * \"field\": \"age\",\n * \"code\": \"value_out_of_range\",\n * \"message\": \"Age must be between 0 and 120\",\n * \"value\": 150,\n * \"constraint\": { \"min\": 0, \"max\": 120 }\n * }\n * ]\n * },\n * \"timestamp\": \"2026-01-29T12:00:00Z\",\n * \"requestId\": \"req_123456\",\n * \"documentation\": \"https://docs.objectstack.dev/errors/validation_error\"\n * }\n * \n * @example Rate Limit Error\n * {\n * \"code\": \"rate_limit_exceeded\",\n * \"message\": \"Rate limit exceeded. Try again in 60 seconds.\",\n * \"category\": \"rate_limit\",\n * \"httpStatus\": 429,\n * \"retryable\": true,\n * \"retryStrategy\": \"retry_after\",\n * \"retryAfter\": 60,\n * \"details\": {\n * \"limit\": 1000,\n * \"remaining\": 0,\n * \"resetAt\": \"2026-01-29T13:00:00Z\"\n * }\n * }\n */\nexport const EnhancedApiErrorSchema = z.object({\n code: StandardErrorCode.describe('Machine-readable error code'),\n message: z.string().describe('Human-readable error message'),\n category: ErrorCategory.optional().describe('Error category'),\n httpStatus: z.number().optional().describe('HTTP status code'),\n retryable: z.boolean().default(false).describe('Whether the request can be retried'),\n retryStrategy: RetryStrategy.optional().describe('Recommended retry strategy'),\n retryAfter: z.number().optional().describe('Seconds to wait before retrying'),\n details: z.any().optional().describe('Additional error context'),\n fieldErrors: z.array(FieldErrorSchema).optional().describe('Field-specific validation errors'),\n timestamp: z.string().datetime().optional().describe('When the error occurred'),\n requestId: z.string().optional().describe('Request ID for tracking'),\n traceId: z.string().optional().describe('Distributed trace ID'),\n documentation: z.string().url().optional().describe('URL to error documentation'),\n helpText: z.string().optional().describe('Suggested actions to resolve the error'),\n});\n\nexport type EnhancedApiError = z.infer<typeof EnhancedApiErrorSchema>;\n\n// ==========================================\n// Error Response Schema\n// ==========================================\n\n/**\n * Standardized Error Response Schema\n * Complete error response envelope\n * \n * @example\n * {\n * \"success\": false,\n * \"error\": {\n * \"code\": \"permission_denied\",\n * \"message\": \"You do not have permission to update this record\",\n * \"category\": \"authorization\",\n * \"httpStatus\": 403,\n * \"retryable\": false\n * }\n * }\n */\nexport const ErrorResponseSchema = z.object({\n success: z.literal(false).describe('Always false for error responses'),\n error: EnhancedApiErrorSchema.describe('Error details'),\n meta: z.object({\n timestamp: z.string().datetime().optional(),\n requestId: z.string().optional(),\n traceId: z.string().optional(),\n }).optional().describe('Response metadata'),\n});\n\nexport type ErrorResponse = z.infer<typeof ErrorResponseSchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Get HTTP status code for an error category\n */\nexport function getHttpStatusForCategory(category: ErrorCategory): number {\n return ErrorHttpStatusMap[category] || 500;\n}\n\n/**\n * Create a standardized error response\n */\nexport function createErrorResponse(\n code: StandardErrorCode,\n message: string,\n options?: Partial<EnhancedApiError>\n): ErrorResponse {\n const category = getCategoryForCode(code);\n \n return {\n success: false,\n error: {\n code,\n message,\n category,\n httpStatus: getHttpStatusForCategory(category),\n timestamp: new Date().toISOString(),\n retryable: false,\n ...options,\n },\n };\n}\n\n/**\n * Infer error category from error code\n */\nfunction getCategoryForCode(code: StandardErrorCode): ErrorCategory {\n if (code.includes('validation') || code.includes('invalid') || code.includes('missing') || code.includes('duplicate')) {\n return 'validation';\n }\n if (code.includes('unauthenticated') || code.includes('token') || code.includes('credentials') || code.includes('session')) {\n return 'authentication';\n }\n if (code.includes('permission') || code.includes('privileges') || code.includes('accessible') || code.includes('restricted')) {\n return 'authorization';\n }\n if (code.includes('not_found')) {\n return 'not_found';\n }\n if (code.includes('conflict') || code.includes('concurrent') || code.includes('lock')) {\n return 'conflict';\n }\n if (code.includes('rate_limit') || code.includes('quota')) {\n return 'rate_limit';\n }\n if (code.includes('external') || code.includes('integration') || code.includes('webhook')) {\n return 'external';\n }\n if (code.includes('maintenance')) {\n return 'maintenance';\n }\n return 'server';\n}\n","import { z } from 'zod';\nimport { ViewSchema } from '../ui/view.zod';\nimport { ApiCapabilitiesSchema, ApiRoutesSchema } from './discovery.zod';\nimport { BatchUpdateRequestSchema, BatchUpdateResponseSchema, BatchOptionsSchema } from './batch.zod';\nimport { MetadataCacheRequestSchema, MetadataCacheResponseSchema } from './http-cache.zod';\nimport { QuerySchema } from '../data/query.zod';\nimport { \n AnalyticsQueryRequestSchema, \n AnalyticsResultResponseSchema, \n GetAnalyticsMetaRequestSchema, \n AnalyticsMetadataResponseSchema \n} from './analytics.zod';\nimport {\n ListSpacesRequestSchema,\n SpaceResponseSchema,\n CreateSpaceRequestSchema,\n InstallPluginRequestSchema,\n InstallPluginResponseSchema,\n ListSpacesRequest,\n SpaceResponse,\n CreateSpaceRequest,\n InstallPluginRequest,\n InstallPluginResponse\n} from './hub.zod';\n\nexport const AutomationTriggerRequestSchema = z.object({\n trigger: z.string(),\n payload: z.record(z.any())\n});\n\nexport const AutomationTriggerResponseSchema = z.object({\n success: z.boolean(),\n jobId: z.string().optional(),\n result: z.any().optional()\n});\n\n/**\n * ObjectStack Protocol - Zod Schema Definitions\n * \n * Defines the runtime-validated contract for interacting with ObjectStack metadata and data.\n * Used by API adapters (HTTP, WebSocket, gRPC) to fetch data/metadata without knowing engine internals.\n * \n * This protocol enables:\n * - Runtime request/response validation at API gateway level\n * - Automatic API documentation generation\n * - Type-safe RPC communication between microservices\n * - Client SDK generation from schemas\n * \n * Architecture Alignment:\n * - Salesforce: REST API Request/Response schemas\n * - Kubernetes: API Resource schemas with runtime validation\n * - GraphQL: Schema-first API design\n */\n\n// ==========================================\n// Discovery & Metadata Operations\n// ==========================================\n\n/**\n * Get API Discovery Request\n * No parameters needed\n */\nexport const GetDiscoveryRequestSchema = z.object({});\n\n/**\n * Get API Discovery Response\n * Returns API version information and capabilities\n */\nexport const GetDiscoveryResponseSchema = z.object({\n version: z.string().describe('API version (e.g., \"v1\", \"2024-01\")'),\n apiName: z.string().describe('API name'),\n capabilities: ApiCapabilitiesSchema.optional().describe('Supported features/capabilities'),\n endpoints: ApiRoutesSchema.optional().describe('Available endpoint paths'),\n});\n\n/**\n * Get Metadata Types Request\n */\nexport const GetMetaTypesRequestSchema = z.object({});\n\n/**\n * Get Metadata Types Response\n */\nexport const GetMetaTypesResponseSchema = z.object({\n types: z.array(z.string()).describe('Available metadata type names (e.g., \"object\", \"plugin\", \"view\")'),\n});\n\n/**\n * Get Metadata Items Request\n * Get all items of a specific metadata type\n */\nexport const GetMetaItemsRequestSchema = z.object({\n type: z.string().describe('Metadata type name (e.g., \"object\", \"plugin\")'),\n});\n\n/**\n * Get Metadata Items Response\n */\nexport const GetMetaItemsResponseSchema = z.object({\n type: z.string().describe('Metadata type name'),\n items: z.array(z.any()).describe('Array of metadata items'),\n});\n\n/**\n * Get Metadata Item Request\n * Get a specific metadata item by type and name\n */\nexport const GetMetaItemRequestSchema = z.object({\n type: z.string().describe('Metadata type name'),\n name: z.string().describe('Item name (snake_case identifier)'),\n});\n\n/**\n * Get Metadata Item Response\n */\nexport const GetMetaItemResponseSchema = z.object({\n type: z.string().describe('Metadata type name'),\n name: z.string().describe('Item name'),\n item: z.any().describe('Metadata item definition'),\n});\n\n/**\n * Save Metadata Item Request\n * Create or update a metadata item\n */\nexport const SaveMetaItemRequestSchema = z.object({\n type: z.string().describe('Metadata type name'),\n name: z.string().describe('Item name'),\n item: z.any().describe('Metadata item definition'),\n});\n\n/**\n * Save Metadata Item Response\n */\nexport const SaveMetaItemResponseSchema = z.object({\n success: z.boolean(),\n message: z.string().optional(),\n});\n\n/**\n * Get Metadata Item with Cache Request\n * Get a specific metadata item with HTTP cache validation support\n */\nexport const GetMetaItemCachedRequestSchema = z.object({\n type: z.string().describe('Metadata type name'),\n name: z.string().describe('Item name'),\n cacheRequest: MetadataCacheRequestSchema.optional().describe('Cache validation parameters'),\n});\n\n/**\n * Get Metadata Item with Cache Response\n * Uses MetadataCacheResponse from http-cache.zod.ts\n */\nexport const GetMetaItemCachedResponseSchema = MetadataCacheResponseSchema;\n\n/**\n * Get UI View Request\n * Resolves the appropriate UI view for an object based on context.\n * Unlike getMetaItem, this does not require a specific View ID.\n */\nexport const GetUiViewRequestSchema = z.object({\n object: z.string().describe('Object name (snake_case)'),\n type: z.enum(['list', 'form']).describe('View type'),\n});\n\n/**\n * Get UI View Response\n */\nexport const GetUiViewResponseSchema = ViewSchema;\n\n// ==========================================\n// Data Operations\n// ==========================================\n\n/**\n * Find Data Request\n * Defines a query to retrieve records from a specific object.\n * Supports filtering, sorting, pagination, and field selection.\n * \n * @example\n * {\n * \"object\": \"customers\",\n * \"query\": {\n * \"filters\": [[\"status\", \"=\", \"active\"], [\"revenue\", \">\", 10000]],\n * \"sort\": \"name desc\",\n * \"top\": 10\n * }\n * }\n */\nexport const FindDataRequestSchema = z.object({\n object: z.string().describe('The unique machine name of the object to query (e.g. \"account\").'),\n query: QuerySchema.optional().describe('Structured query definition (filter, sort, select, pagination).'),\n});\n\n/**\n * Find Data Response\n * Returns a list of records matching the query criteria.\n */\nexport const FindDataResponseSchema = z.object({\n object: z.string().describe('The object name for the returned records.'),\n records: z.array(z.record(z.string(), z.any())).describe('The list of matching records.'),\n total: z.number().optional().describe('Total number of records matching the filter (if requested).'),\n hasMore: z.boolean().optional().describe('True if there are more records available (pagination).'),\n});\n\n/**\n * Get Data Request\n * Retrieval of a single record by its unique identifier.\n * \n * @example\n * {\n * \"object\": \"contracts\",\n * \"id\": \"cnt_123456\"\n * }\n */\nexport const GetDataRequestSchema = z.object({\n object: z.string().describe('The object name.'),\n id: z.string().describe('The unique record identifier (primary key).'),\n});\n\n/**\n * Get Data Response\n */\nexport const GetDataResponseSchema = z.object({\n object: z.string().describe('The object name.'),\n id: z.string().describe('The record ID.'),\n record: z.record(z.string(), z.any()).describe('The complete record data.'),\n});\n\n/**\n * Create Data Request\n * Creation of a new record.\n * \n * @example\n * {\n * \"object\": \"leads\",\n * \"data\": {\n * \"first_name\": \"John\",\n * \"last_name\": \"Doe\",\n * \"company\": \"Acme Inc\"\n * }\n * }\n */\nexport const CreateDataRequestSchema = z.object({\n object: z.string().describe('The object name.'),\n data: z.record(z.string(), z.any()).describe('The dictionary of field values to insert.'),\n});\n\n/**\n * Create Data Response\n */\nexport const CreateDataResponseSchema = z.object({\n object: z.string().describe('The object name.'),\n id: z.string().describe('The ID of the newly created record.'),\n record: z.record(z.string(), z.any()).describe('The created record, including server-generated fields (created_at, owner).'),\n});\n\n/**\n * Update Data Request\n * Modification of an existing record.\n * \n * @example\n * {\n * \"object\": \"tasks\",\n * \"id\": \"tsk_001\",\n * \"data\": {\n * \"status\": \"completed\",\n * \"percent_complete\": 100\n * }\n * }\n */\nexport const UpdateDataRequestSchema = z.object({\n object: z.string().describe('The object name.'),\n id: z.string().describe('The ID of the record to update.'),\n data: z.record(z.string(), z.any()).describe('The fields to update (partial update).'),\n});\n\n/**\n * Update Data Response\n */\nexport const UpdateDataResponseSchema = z.object({\n object: z.string().describe('Object name'),\n id: z.string().describe('Updated record ID'),\n record: z.record(z.string(), z.any()).describe('Updated record'),\n});\n\n/**\n * Delete Data Request\n */\nexport const DeleteDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n id: z.string().describe('Record ID to delete'),\n});\n\n/**\n * Delete Data Response\n */\nexport const DeleteDataResponseSchema = z.object({\n object: z.string().describe('Object name'),\n id: z.string().describe('Deleted record ID'),\n success: z.boolean().describe('Whether deletion succeeded'),\n});\n\n// ==========================================\n// Batch Operations\n// ==========================================\n\n/**\n * Batch Data Request\n */\nexport const BatchDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n request: BatchUpdateRequestSchema.describe('Batch operation request'),\n});\n\n/**\n * Batch Data Response\n * Uses BatchUpdateResponse from batch.zod.ts\n */\nexport const BatchDataResponseSchema = BatchUpdateResponseSchema;\n\n/**\n * Create Many Data Request\n */\nexport const CreateManyDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n records: z.array(z.record(z.string(), z.any())).describe('Array of records to create'),\n});\n\n/**\n * Create Many Data Response\n */\nexport const CreateManyDataResponseSchema = z.object({\n object: z.string().describe('Object name'),\n records: z.array(z.record(z.string(), z.any())).describe('Created records'),\n count: z.number().describe('Number of records created'),\n});\n\n/**\n * Update Many Data Request\n */\nexport const UpdateManyDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n records: z.array(z.object({\n id: z.string().describe('Record ID'),\n data: z.record(z.string(), z.any()).describe('Fields to update'),\n })).describe('Array of updates'),\n options: BatchOptionsSchema.optional().describe('Update options'),\n});\n\n/**\n * Update Many Data Response\n * Uses BatchUpdateResponse for consistency\n */\nexport const UpdateManyDataResponseSchema = BatchUpdateResponseSchema;\n\n/**\n * Delete Many Data Request\n */\nexport const DeleteManyDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n ids: z.array(z.string()).describe('Array of record IDs to delete'),\n options: BatchOptionsSchema.optional().describe('Delete options'),\n});\n\n/**\n * Delete Many Data Response\n */\nexport const DeleteManyDataResponseSchema = BatchUpdateResponseSchema;\n\n// ==========================================\n// Protocol Interface Schema\n// ==========================================\n\n/**\n * ObjectStack Protocol Contract\n * \n * This schema defines the complete API contract as a Zod schema.\n * Unlike the old TypeScript interface, this provides runtime validation\n * and can be used for:\n * - API Gateway validation\n * - RPC call validation\n * - Client SDK generation\n * - API documentation generation\n * \n * Each method is defined with its request and response schemas.\n */\nexport const ObjectStackProtocolSchema = z.object({\n // Discovery & Metadata\n getDiscovery: z.function()\n .args(GetDiscoveryRequestSchema)\n .returns(z.promise(GetDiscoveryResponseSchema))\n .describe('Get API discovery information'),\n\n getMetaTypes: z.function()\n .args(GetMetaTypesRequestSchema)\n .returns(z.promise(GetMetaTypesResponseSchema))\n .describe('Get available metadata types'),\n\n getMetaItems: z.function()\n .args(GetMetaItemsRequestSchema)\n .returns(z.promise(GetMetaItemsResponseSchema))\n .describe('Get all items of a metadata type'),\n\n getMetaItem: z.function()\n .args(GetMetaItemRequestSchema)\n .returns(z.promise(GetMetaItemResponseSchema))\n .describe('Get a specific metadata item'),\n saveMetaItem: z.function()\n .args(SaveMetaItemRequestSchema)\n .returns(z.promise(SaveMetaItemResponseSchema))\n .describe('Save metadata item'),\n getMetaItemCached: z.function()\n .args(GetMetaItemCachedRequestSchema)\n .returns(z.promise(GetMetaItemCachedResponseSchema))\n .describe('Get a metadata item with cache validation'),\n\n getUiView: z.function()\n .args(GetUiViewRequestSchema)\n .returns(z.promise(GetUiViewResponseSchema))\n .describe('Get UI view definition'),\n\n // Analytics Operations\n analyticsQuery: z.function()\n .args(AnalyticsQueryRequestSchema)\n .returns(z.promise(AnalyticsResultResponseSchema))\n .describe('Execute analytics query'),\n\n getAnalyticsMeta: z.function()\n .args(GetAnalyticsMetaRequestSchema)\n .returns(z.promise(AnalyticsMetadataResponseSchema))\n .describe('Get analytics metadata (cubes)'),\n\n // Automation Operations\n triggerAutomation: z.function()\n .args(AutomationTriggerRequestSchema)\n .returns(z.promise(AutomationTriggerResponseSchema))\n .describe('Trigger an automation flow or script'),\n\n // Hub Operations\n listSpaces: z.function()\n .args(ListSpacesRequestSchema)\n .returns(z.promise(z.any())) // TODO: Use ListSpacesResponseSchema when available/exported\n .describe('List Hub Spaces'),\n \n createSpace: z.function()\n .args(CreateSpaceRequestSchema)\n .returns(z.promise(SpaceResponseSchema))\n .describe('Create Hub Space'),\n\n installPlugin: z.function()\n .args(InstallPluginRequestSchema)\n .returns(z.promise(InstallPluginResponseSchema))\n .describe('Install Plugin into Space'),\n\n // Data Operations\n findData: z.function()\n .args(FindDataRequestSchema)\n .returns(z.promise(FindDataResponseSchema))\n .describe('Find data records'),\n\n getData: z.function()\n .args(GetDataRequestSchema)\n .returns(z.promise(GetDataResponseSchema))\n .describe('Get single data record'),\n\n createData: z.function()\n .args(CreateDataRequestSchema)\n .returns(z.promise(CreateDataResponseSchema))\n .describe('Create a data record'),\n\n updateData: z.function()\n .args(UpdateDataRequestSchema)\n .returns(z.promise(UpdateDataResponseSchema))\n .describe('Update a data record'),\n\n deleteData: z.function()\n .args(DeleteDataRequestSchema)\n .returns(z.promise(DeleteDataResponseSchema))\n .describe('Delete a data record'),\n\n // Batch Operations\n batchData: z.function()\n .args(BatchDataRequestSchema)\n .returns(z.promise(BatchDataResponseSchema))\n .describe('Perform batch operations'),\n\n createManyData: z.function()\n .args(CreateManyDataRequestSchema)\n .returns(z.promise(CreateManyDataResponseSchema))\n .describe('Create multiple records'),\n\n updateManyData: z.function()\n .args(UpdateManyDataRequestSchema)\n .returns(z.promise(UpdateManyDataResponseSchema))\n .describe('Update multiple records'),\n\n deleteManyData: z.function()\n .args(DeleteManyDataRequestSchema)\n .returns(z.promise(DeleteManyDataResponseSchema))\n .describe('Delete multiple records'),\n});\n\n/**\n * TypeScript Types\n * Derived from Zod schemas using z.infer\n */\nexport type GetDiscoveryRequest = z.infer<typeof GetDiscoveryRequestSchema>;\nexport type GetDiscoveryResponse = z.infer<typeof GetDiscoveryResponseSchema>;\nexport type GetMetaTypesRequest = z.infer<typeof GetMetaTypesRequestSchema>;\nexport type GetMetaTypesResponse = z.infer<typeof GetMetaTypesResponseSchema>;\nexport type GetMetaItemsRequest = z.infer<typeof GetMetaItemsRequestSchema>;\nexport type GetMetaItemsResponse = z.infer<typeof GetMetaItemsResponseSchema>;\nexport type GetMetaItemRequest = z.infer<typeof GetMetaItemRequestSchema>;\nexport type GetMetaItemResponse = z.infer<typeof GetMetaItemResponseSchema>;\nexport type SaveMetaItemRequest = z.infer<typeof SaveMetaItemRequestSchema>;\nexport type SaveMetaItemResponse = z.infer<typeof SaveMetaItemResponseSchema>;\nexport type GetMetaItemCachedRequest = z.infer<typeof GetMetaItemCachedRequestSchema>;\nexport type GetMetaItemCachedResponse = z.infer<typeof GetMetaItemCachedResponseSchema>;\nexport type GetUiViewRequest = z.infer<typeof GetUiViewRequestSchema>;\nexport type GetUiViewResponse = z.infer<typeof GetUiViewResponseSchema>;\n\nexport type AnalyticsQueryRequest = z.infer<typeof AnalyticsQueryRequestSchema>;\nexport type AnalyticsResultResponse = z.infer<typeof AnalyticsResultResponseSchema>;\nexport type GetAnalyticsMetaRequest = z.infer<typeof GetAnalyticsMetaRequestSchema>;\nexport type GetAnalyticsMetaResponse = z.infer<typeof AnalyticsMetadataResponseSchema>;\n\nexport type AutomationTriggerRequest = z.infer<typeof AutomationTriggerRequestSchema>;\nexport type AutomationTriggerResponse = z.infer<typeof AutomationTriggerResponseSchema>;\n\nexport type FindDataRequest = z.input<typeof FindDataRequestSchema>;\nexport type FindDataResponse = z.infer<typeof FindDataResponseSchema>;\nexport type GetDataRequest = z.input<typeof GetDataRequestSchema>;\nexport type GetDataResponse = z.infer<typeof GetDataResponseSchema>;\nexport type CreateDataRequest = z.input<typeof CreateDataRequestSchema>;\nexport type CreateDataResponse = z.infer<typeof CreateDataResponseSchema>;\nexport type UpdateDataRequest = z.input<typeof UpdateDataRequestSchema>;\nexport type UpdateDataResponse = z.infer<typeof UpdateDataResponseSchema>;\nexport type DeleteDataRequest = z.input<typeof DeleteDataRequestSchema>;\nexport type DeleteDataResponse = z.infer<typeof DeleteDataResponseSchema>;\n\nexport type BatchDataRequest = z.input<typeof BatchDataRequestSchema>;\nexport type BatchDataResponse = z.infer<typeof BatchDataResponseSchema>;\nexport type CreateManyDataRequest = z.input<typeof CreateManyDataRequestSchema>;\nexport type CreateManyDataResponse = z.infer<typeof CreateManyDataResponseSchema>;\nexport type UpdateManyDataRequest = z.input<typeof UpdateManyDataRequestSchema>;\nexport type UpdateManyDataResponse = z.infer<typeof UpdateManyDataResponseSchema>;\nexport type DeleteManyDataRequest = z.input<typeof DeleteManyDataRequestSchema>;\nexport type DeleteManyDataResponse = z.infer<typeof DeleteManyDataResponseSchema>;\n\nexport type ObjectStackProtocol = z.infer<typeof ObjectStackProtocolSchema>;\n\n/**\n * Legacy Interface Export\n * Maintained for backward compatibility\n * @deprecated Use ObjectStackProtocol type from protocol.zod.ts instead\n */\nexport interface IObjectStackProtocolLegacy {\n getDiscovery(): Promise<GetDiscoveryResponse>;\n getMetaTypes(): Promise<GetMetaTypesResponse>;\n getMetaItems(request: GetMetaItemsRequest): Promise<GetMetaItemsResponse>;\n getMetaItem(request: GetMetaItemRequest): Promise<GetMetaItemResponse>;\n saveMetaItem(request: SaveMetaItemRequest): Promise<SaveMetaItemResponse>;\n getMetaItemCached(request: GetMetaItemCachedRequest): Promise<GetMetaItemCachedResponse>;\n getUiView(request: GetUiViewRequest): Promise<GetUiViewResponse>;\n \n analyticsQuery(request: AnalyticsQueryRequest): Promise<AnalyticsResultResponse>;\n getAnalyticsMeta(request: GetAnalyticsMetaRequest): Promise<GetAnalyticsMetaResponse>;\n\n triggerAutomation(request: AutomationTriggerRequest): Promise<AutomationTriggerResponse>;\n\n listSpaces(request: ListSpacesRequest): Promise<any>;\n createSpace(request: CreateSpaceRequest): Promise<SpaceResponse>;\n installPlugin(request: InstallPluginRequest): Promise<InstallPluginResponse>;\n\n findData(request: FindDataRequest): Promise<FindDataResponse>;\n getData(request: GetDataRequest): Promise<GetDataResponse>;\n createData(request: CreateDataRequest): Promise<CreateDataResponse>;\n updateData(request: UpdateDataRequest): Promise<UpdateDataResponse>;\n deleteData(request: DeleteDataRequest): Promise<DeleteDataResponse>;\n \n batchData(request: BatchDataRequest): Promise<BatchDataResponse>;\n createManyData(request: CreateManyDataRequest): Promise<CreateManyDataResponse>;\n updateManyData(request: UpdateManyDataRequest): Promise<UpdateManyDataResponse>;\n deleteManyData(request: DeleteManyDataRequest): Promise<DeleteManyDataResponse>;\n}\n","import { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * HTTP Method Enum\n */\nexport const HttpMethodSchema = z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']);\n\n/**\n * HTTP Request Configuration for API Provider\n */\nexport const HttpRequestSchema = z.object({\n url: z.string().describe('API endpoint URL'),\n method: HttpMethodSchema.optional().default('GET').describe('HTTP method'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),\n params: z.record(z.string(), z.unknown()).optional().describe('Query parameters'),\n body: z.unknown().optional().describe('Request body for POST/PUT/PATCH'),\n});\n\n/**\n * View Data Source Configuration\n * Supports three modes:\n * 1. 'object': Standard Protocol - Auto-connects to ObjectStack Metadata and Data APIs\n * 2. 'api': Custom API - Explicitly provided API URLs\n * 3. 'value': Static Data - Hardcoded data array\n */\nexport const ViewDataSchema = z.discriminatedUnion('provider', [\n z.object({\n provider: z.literal('object'),\n object: z.string().describe('Target object name'),\n }),\n z.object({\n provider: z.literal('api'),\n read: HttpRequestSchema.optional().describe('Configuration for fetching data'),\n write: HttpRequestSchema.optional().describe('Configuration for submitting data (for forms/editable tables)'),\n }),\n z.object({\n provider: z.literal('value'),\n items: z.array(z.unknown()).describe('Static data array'),\n }),\n]);\n\n/**\n * List Column Configuration Schema\n * Detailed configuration for individual list view columns\n */\nexport const ListColumnSchema = z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: z.string().optional().describe('Display label override'),\n width: z.number().positive().optional().describe('Column width in pixels'),\n align: z.enum(['left', 'center', 'right']).optional().describe('Text alignment'),\n hidden: z.boolean().optional().describe('Hide column by default'),\n sortable: z.boolean().optional().describe('Allow sorting by this column'),\n resizable: z.boolean().optional().describe('Allow resizing this column'),\n wrap: z.boolean().optional().describe('Allow text wrapping'),\n type: z.string().optional().describe('Renderer type override (e.g., \"currency\", \"date\")'),\n\n /** Interaction */\n link: z.boolean().optional().describe('Functions as the primary navigation link (triggers View navigation)'),\n action: z.string().optional().describe('Registered Action ID to execute when clicked'),\n});\n\n/**\n * List View Selection Configuration\n */\nexport const SelectionConfigSchema = z.object({\n type: z.enum(['none', 'single', 'multiple']).default('none').describe('Selection mode'),\n});\n\n/**\n * List View Pagination Configuration\n */\nexport const PaginationConfigSchema = z.object({\n pageSize: z.number().int().positive().default(25).describe('Number of records per page'),\n pageSizeOptions: z.array(z.number().int().positive()).optional().describe('Available page size options'),\n});\n\n/**\n * Kanban Settings\n */\nexport const KanbanConfigSchema = z.object({\n groupByField: z.string().describe('Field to group columns by (usually status/select)'),\n summarizeField: z.string().optional().describe('Field to sum at top of column (e.g. amount)'),\n columns: z.array(z.string()).describe('Fields to show on cards'),\n});\n\n/**\n * Calendar Settings\n */\nexport const CalendarConfigSchema = z.object({\n startDateField: z.string(),\n endDateField: z.string().optional(),\n titleField: z.string(),\n colorField: z.string().optional(),\n});\n\n/**\n * Gantt Settings\n */\nexport const GanttConfigSchema = z.object({\n startDateField: z.string(),\n endDateField: z.string(),\n titleField: z.string(),\n progressField: z.string().optional(),\n dependenciesField: z.string().optional(),\n});\n\n/**\n * Navigation Mode Enum\n * Defines how to navigate to the detail view from a list item.\n */\nexport const NavigationModeSchema = z.enum([\n 'page', // Navigate to a new route (default)\n 'drawer', // Open details in a side drawer/panel\n 'modal', // Open details in a modal dialog\n 'split', // Show details side-by-side with the list (master-detail)\n 'popover', // Show details in a popover (lightweight)\n 'new_window', // Open in new browser tab/window\n 'none' // No navigation (read-only list)\n]);\n\n/**\n * Navigation Configuration Schema\n */\nexport const NavigationConfigSchema = z.object({\n mode: NavigationModeSchema.default('page'),\n \n /** Target View Config */\n view: z.string().optional().describe('Name of the form view to use for details (e.g. \"summary_view\", \"edit_form\")'),\n \n /** Interaction Triggers */\n preventNavigation: z.boolean().default(false).describe('Disable standard navigation entirely'),\n openNewTab: z.boolean().default(false).describe('Force open in new tab (applies to page mode)'),\n \n /** Dimensions (for modal/drawer) */\n width: z.union([z.string(), z.number()]).optional().describe('Width of the drawer/modal (e.g. \"600px\", \"50%\")'),\n});\n\n/**\n * List View Schema (Expanded)\n * Defines how a collection of records is displayed to the user.\n * \n * **NAMING CONVENTION:**\n * View names (when provided) are machine identifiers and must be lowercase snake_case.\n * \n * @example Standard Grid\n * {\n * name: \"all_active\",\n * label: \"All Active\",\n * type: \"grid\",\n * columns: [\"name\", \"status\", \"created_at\"],\n * filter: [[\"status\", \"=\", \"active\"]]\n * }\n * \n * @example Kanban Board\n * {\n * type: \"kanban\",\n * columns: [\"name\", \"amount\"],\n * kanban: {\n * groupByField: \"stage\",\n * summarizeField: \"amount\",\n * columns: [\"name\", \"close_date\"]\n * }\n * }\n */\nexport const ListViewSchema = z.object({\n name: SnakeCaseIdentifierSchema.optional().describe('Internal view name (lowercase snake_case)'),\n label: z.string().optional(), // Display label override\n type: z.enum([\n 'grid', // Standard Data Table\n 'kanban', // Board / Columns\n 'gallery', // Card Deck / Masonry\n 'calendar', // Monthly/Weekly/Daily\n 'timeline', // Chronological Stream (Feed)\n 'gantt', // Project Timeline\n 'map' // Geospatial\n ]).default('grid'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n /** Shared Query Config */\n columns: z.union([\n z.array(z.string()), // Legacy: simple field names\n z.array(ListColumnSchema), // Enhanced: detailed column config\n ]).describe('Fields to display as columns'),\n filter: z.array(z.any()).optional().describe('Filter criteria (JSON Rules)'),\n sort: z.union([\n z.string(), //Legacy \"field desc\"\n z.array(z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc'])\n }))\n ]).optional(),\n \n /** Search & Filter */\n searchableFields: z.array(z.string()).optional().describe('Fields enabled for search'),\n filterableFields: z.array(z.string()).optional().describe('Fields enabled for end-user filtering in the top bar'),\n\n /** Grid Features */\n resizable: z.boolean().optional().describe('Enable column resizing'),\n striped: z.boolean().optional().describe('Striped row styling'),\n bordered: z.boolean().optional().describe('Show borders'),\n\n /** Selection */\n selection: SelectionConfigSchema.optional().describe('Row selection configuration'),\n\n /** Navigation / Interaction */\n navigation: NavigationConfigSchema.optional().describe('Configuration for item click navigation (page, drawer, modal, etc.)'),\n\n /** Pagination */\n pagination: PaginationConfigSchema.optional().describe('Pagination configuration'),\n\n /** Type Specific Config */\n kanban: KanbanConfigSchema.optional(),\n calendar: CalendarConfigSchema.optional(),\n gantt: GanttConfigSchema.optional(),\n});\n\n/**\n * Form Field Configuration Schema\n * Detailed configuration for individual form fields\n */\nexport const FormFieldSchema = z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: z.string().optional().describe('Display label override'),\n placeholder: z.string().optional().describe('Placeholder text'),\n helpText: z.string().optional().describe('Help/hint text'),\n readonly: z.boolean().optional().describe('Read-only override'),\n required: z.boolean().optional().describe('Required override'),\n hidden: z.boolean().optional().describe('Hidden override'),\n colSpan: z.number().int().min(1).max(4).optional().describe('Column span in grid layout (1-4)'),\n widget: z.string().optional().describe('Custom widget/component name'),\n dependsOn: z.string().optional().describe('Parent field name for cascading'),\n visibleOn: z.string().optional().describe('Visibility condition expression'),\n});\n\n/**\n * Form Layout Section\n */\nexport const FormSectionSchema = z.object({\n label: z.string().optional(),\n collapsible: z.boolean().default(false),\n collapsed: z.boolean().default(false),\n columns: z.enum(['1', '2', '3', '4']).default('2').transform(val => parseInt(val) as 1 | 2 | 3 | 4),\n fields: z.array(z.union([\n z.string(), // Legacy: simple field name\n FormFieldSchema, // Enhanced: detailed field config\n ])),\n});\n\n/**\n * Form View Schema\n * Defines the layout for creating or editing a single record.\n * \n * @example Simple Sectioned Form\n * {\n * type: \"simple\",\n * sections: [\n * {\n * label: \"General Info\",\n * columns: 2,\n * fields: [\"name\", \"status\"]\n * },\n * {\n * label: \"Details\",\n * fields: [\"description\", { field: \"priority\", widget: \"rating\" }]\n * }\n * ]\n * }\n */\nexport const FormViewSchema = z.object({\n type: z.enum([\n 'simple', // Single column or sections\n 'tabbed', // Tabs\n 'wizard', // Step by step\n 'split', // Master-Detail split\n 'drawer', // Side panel\n 'modal' // Dialog\n ]).default('simple'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n sections: z.array(FormSectionSchema).optional(), // For simple layout\n groups: z.array(FormSectionSchema).optional(), // Legacy support -> alias to sections\n});\n\n/**\n * Master View Schema\n * Can define multiple named views.\n */\n/**\n * View Container Schema\n * Aggregates all view definitions for a specific object or context.\n * \n * @example\n * {\n * list: { type: \"grid\", columns: [\"name\"] },\n * form: { type: \"simple\", fields: [\"name\"] },\n * listViews: {\n * \"all\": { label: \"All\", filter: [] },\n * \"my\": { label: \"Mine\", filter: [[\"owner\", \"=\", \"{user_id}\"]] }\n * }\n * }\n */\nexport const ViewSchema = z.object({\n list: ListViewSchema.optional(), // Default list view\n form: FormViewSchema.optional(), // Default form view\n listViews: z.record(z.string(), ListViewSchema).optional().describe('Additional named list views'),\n formViews: z.record(z.string(), FormViewSchema).optional().describe('Additional named form views'),\n});\n\nexport type View = z.infer<typeof ViewSchema>;\nexport type ListView = z.infer<typeof ListViewSchema>;\nexport type FormView = z.infer<typeof FormViewSchema>;\nexport type FormSection = z.infer<typeof FormSectionSchema>;\nexport type ListColumn = z.infer<typeof ListColumnSchema>;\nexport type FormField = z.infer<typeof FormFieldSchema>;\nexport type SelectionConfig = z.infer<typeof SelectionConfigSchema>;\nexport type NavigationConfig = z.infer<typeof NavigationConfigSchema>;\nexport type PaginationConfig = z.infer<typeof PaginationConfigSchema>;\nexport type ViewData = z.infer<typeof ViewDataSchema>;\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\nexport type HttpMethod = z.infer<typeof HttpMethodSchema>;\n","import { z } from 'zod';\nimport { AnalyticsQuerySchema, CubeSchema } from '../data/analytics.zod';\nimport { BaseResponseSchema } from './contract.zod';\n\n/**\n * Analytics API Protocol\n * \n * Defines the HTTP interface for the Semantic Layer.\n * Provides endpoints for executing analytical queries and discovering metadata.\n */\n\n// ==========================================\n// 1. API Endpoints\n// ==========================================\n\nexport const AnalyticsEndpoint = z.enum([\n '/api/v1/analytics/query', // Execute analysis\n '/api/v1/analytics/meta', // Discover cubes/metrics\n '/api/v1/analytics/sql', // Dry-run SQL generation\n]);\n\n// ==========================================\n// 2. Query Execution\n// ==========================================\n\n/**\n * Query Request Body\n */\nexport const AnalyticsQueryRequestSchema = z.object({\n query: AnalyticsQuerySchema.describe(' The analytic query definition'),\n cube: z.string().describe('Target cube name'),\n format: z.enum(['json', 'csv', 'xlsx']).default('json').describe('Response format'),\n});\n\n/**\n * Query Response (JSON)\n */\nexport const AnalyticsResultResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n rows: z.array(z.record(z.string(), z.any())).describe('Result rows'),\n fields: z.array(z.object({\n name: z.string(),\n type: z.string(),\n })).describe('Column metadata'),\n sql: z.string().optional().describe('Executed SQL (if debug enabled)'),\n }),\n});\n\n// ==========================================\n// 3. Metadata Discovery\n// ==========================================\n\n/**\n * Meta Request\n */\nexport const GetAnalyticsMetaRequestSchema = z.object({\n cube: z.string().optional().describe('Optional cube name to filter'),\n});\n\n/**\n * Meta Response\n * Returns available cubes, metrics, and dimensions.\n */\nexport const AnalyticsMetadataResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n cubes: z.array(CubeSchema).describe('Available cubes'),\n }),\n});\n\n// ==========================================\n// 4. SQL Dry-Run\n// ==========================================\n\nexport const AnalyticsSqlResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n sql: z.string(),\n params: z.array(z.any()),\n }),\n});\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","import { z } from 'zod';\nimport { BaseResponseSchema } from './contract.zod';\nimport {\n HubSpaceSchema,\n TenantSchema,\n BillOfMaterialsSchema,\n ComposerRequestSchema,\n ComposerResponseSchema,\n PluginRegistryEntrySchema,\n PluginSearchFiltersSchema,\n MarketplacePluginSchema,\n LicenseSchema,\n} from '../hub/index';\n\n/**\n * # Hub Management API Protocol\n * \n * Defines RESTful API contracts for the ObjectStack Hub - the unified cloud\n * management center for all tenants, plugins, spaces, and marketplace operations.\n * \n * This protocol enables:\n * - Multi-tenant SaaS management\n * - Plugin marketplace operations\n * - Space/workspace lifecycle\n * - License management and validation\n * - Composer/builder services\n * \n * @see https://objectstack.ai/docs/api/hub\n */\n\n// ============================================================================\n// Common Types\n// ============================================================================\n\n/**\n * Pagination Request Parameters\n */\nexport const PaginationRequestSchema = z.object({\n /**\n * Page number (1-indexed)\n */\n page: z.number().int().min(1).default(1).optional(),\n \n /**\n * Number of items per page\n */\n perPage: z.number().int().min(1).max(100).default(20).optional(),\n \n /**\n * Sort field\n */\n sortBy: z.string().optional(),\n \n /**\n * Sort direction\n */\n sortOrder: z.enum(['asc', 'desc']).default('desc').optional(),\n});\n\n/**\n * Pagination Response Metadata\n */\nexport const PaginationResponseSchema = z.object({\n /**\n * Current page number\n */\n page: z.number().int().min(1),\n \n /**\n * Items per page\n */\n perPage: z.number().int().min(1),\n \n /**\n * Total number of items\n */\n total: z.number().int().min(0),\n \n /**\n * Total number of pages\n */\n totalPages: z.number().int().min(0),\n \n /**\n * Whether there is a next page\n */\n hasNext: z.boolean(),\n \n /**\n * Whether there is a previous page\n */\n hasPrev: z.boolean(),\n});\n\n// ============================================================================\n// Space Management API\n// ============================================================================\n\n/**\n * Create Space Request\n * \n * @example\n * ```json\n * {\n * \"name\": \"Sales Team Workspace\",\n * \"slug\": \"sales-team\",\n * \"ownerId\": \"user_abc123\",\n * \"runtime\": {\n * \"isolation\": \"shared_schema\",\n * \"quotas\": {\n * \"maxUsers\": 50,\n * \"maxStorage\": 107374182400,\n * \"apiRateLimit\": 10000\n * }\n * }\n * }\n * ```\n */\nexport const CreateSpaceRequestSchema = z.object({\n name: z.string().min(1).max(255).describe('Space display name'),\n slug: z.string().regex(/^[a-z0-9-]+$/).min(1).max(100).describe('URL-friendly identifier'),\n ownerId: z.string().describe('Owner user/org ID'),\n runtime: HubSpaceSchema.shape.runtime.optional(),\n bom: BillOfMaterialsSchema.optional().describe('Initial Bill of Materials'),\n subscription: HubSpaceSchema.shape.subscription.optional(),\n deployment: HubSpaceSchema.shape.deployment.optional(),\n});\n\n/**\n * Update Space Request\n * \n * @example\n * ```json\n * {\n * \"name\": \"Updated Sales Team\",\n * \"bom\": {\n * \"tenantId\": \"tenant_123\",\n * \"dependencies\": [\n * { \"id\": \"com.objectstack.crm\", \"version\": \"2.0.0\" }\n * ],\n * \"resolutionStrategy\": \"override\"\n * }\n * }\n * ```\n */\nexport const UpdateSpaceRequestSchema = CreateSpaceRequestSchema.partial();\n\n/**\n * Space Response\n * \n * @example\n * ```json\n * {\n * \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"name\": \"Sales Team Workspace\",\n * \"slug\": \"sales-team\",\n * \"ownerId\": \"user_abc123\",\n * \"runtime\": {\n * \"isolation\": \"shared_schema\",\n * \"quotas\": {\n * \"maxUsers\": 50,\n * \"maxStorage\": 107374182400,\n * \"apiRateLimit\": 10000\n * }\n * },\n * \"bom\": {\n * \"tenantId\": \"tenant_123\",\n * \"dependencies\": [],\n * \"resolutionStrategy\": \"override\"\n * },\n * \"createdAt\": \"2024-01-01T00:00:00Z\",\n * \"updatedAt\": \"2024-01-02T00:00:00Z\"\n * }\n * ```\n */\nexport const SpaceResponseSchema = BaseResponseSchema.extend({\n data: HubSpaceSchema\n});\n\n/**\n * List Spaces Request\n */\nexport const ListSpacesRequestSchema = PaginationRequestSchema.extend({\n ownerId: z.string().optional().describe('Filter by owner'),\n search: z.string().optional().describe('Search in name and slug'),\n});\n\n/**\n * List Spaces Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": [\n * {\n * \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"name\": \"Sales Team\",\n * \"slug\": \"sales-team\",\n * \"ownerId\": \"user_123\",\n * \"createdAt\": \"2024-01-01T00:00:00Z\",\n * \"updatedAt\": \"2024-01-02T00:00:00Z\"\n * }\n * ],\n * \"pagination\": {\n * \"page\": 1,\n * \"perPage\": 20,\n * \"total\": 1,\n * \"totalPages\": 1,\n * \"hasNext\": false,\n * \"hasPrev\": false\n * }\n * }\n * ```\n */\nexport const ListSpacesResponseSchema = BaseResponseSchema.extend({\n data: z.array(HubSpaceSchema),\n pagination: PaginationResponseSchema,\n});\n\n// ============================================================================\n// Tenant Management API\n// ============================================================================\n\n/**\n * Create Tenant Request\n * \n * @example\n * ```json\n * {\n * \"name\": \"Acme Corporation\",\n * \"isolationLevel\": \"isolated_schema\",\n * \"quotas\": {\n * \"maxUsers\": 100,\n * \"maxStorage\": 214748364800,\n * \"apiRateLimit\": 50000\n * }\n * }\n * ```\n */\nexport const CreateTenantRequestSchema = z.object({\n name: z.string().min(1).max(255).describe('Tenant display name'),\n isolationLevel: TenantSchema.shape.isolationLevel,\n customizations: TenantSchema.shape.customizations.optional(),\n quotas: TenantSchema.shape.quotas.optional(),\n});\n\n/**\n * Update Tenant Request\n */\nexport const UpdateTenantRequestSchema = CreateTenantRequestSchema.partial();\n\n/**\n * Tenant Response\n */\nexport const TenantResponseSchema = BaseResponseSchema.extend({\n data: TenantSchema\n});\n\n/**\n * List Tenants Request\n */\nexport const ListTenantsRequestSchema = PaginationRequestSchema.extend({\n isolationLevel: TenantSchema.shape.isolationLevel.optional(),\n search: z.string().optional(),\n});\n\n/**\n * List Tenants Response\n */\nexport const ListTenantsResponseSchema = BaseResponseSchema.extend({\n data: z.array(TenantSchema),\n pagination: PaginationResponseSchema,\n});\n\n// ============================================================================\n// Plugin Registry API\n// ============================================================================\n\n/**\n * Publish Plugin Request\n * \n * @example\n * ```json\n * {\n * \"id\": \"com.acme.crm.advanced\",\n * \"version\": \"1.0.0\",\n * \"name\": \"Advanced CRM\",\n * \"description\": \"Enterprise-grade CRM solution\",\n * \"category\": \"data\",\n * \"vendor\": {\n * \"id\": \"com.acme\",\n * \"name\": \"Acme Corporation\",\n * \"verified\": true,\n * \"trustLevel\": \"verified\"\n * }\n * }\n * ```\n */\nexport const PublishPluginRequestSchema = PluginRegistryEntrySchema.omit({\n publishedAt: true,\n updatedAt: true,\n statistics: true,\n quality: true,\n});\n\n/**\n * Update Plugin Request\n */\nexport const UpdatePluginRequestSchema = PublishPluginRequestSchema.partial();\n\n/**\n * Plugin Response\n */\nexport const PluginResponseSchema = BaseResponseSchema.extend({\n data: PluginRegistryEntrySchema\n});\n\n/**\n * Search Plugins Request\n * \n * @example\n * ```json\n * {\n * \"query\": \"crm\",\n * \"category\": [\"data\", \"integration\"],\n * \"trustLevel\": [\"verified\", \"official\"],\n * \"minRating\": 4.0,\n * \"sortBy\": \"downloads\",\n * \"page\": 1,\n * \"limit\": 20\n * }\n * ```\n */\nexport const SearchPluginsRequestSchema = PluginSearchFiltersSchema;\n\n/**\n * Search Plugins Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": [\n * {\n * \"id\": \"com.acme.crm\",\n * \"version\": \"1.0.0\",\n * \"name\": \"Advanced CRM\",\n ...\n * }\n * }\n * ],\n * \"pagination\": {\n * \"page\": 1,\n * \"perPage\": 20,\n * \"total\": 45,\n * \"totalPages\": 3,\n * \"hasNext\": true,\n * \"hasPrev\": false\n * }\n * }\n * ```\n */\nexport const SearchPluginsResponseSchema = BaseResponseSchema.extend({\n data: z.array(PluginRegistryEntrySchema),\n pagination: PaginationResponseSchema,\n});\n\n/**\n * Get Plugin Versions Request\n */\nexport const GetPluginVersionsRequestSchema = z.object({\n pluginId: z.string().describe('Plugin identifier'),\n});\n\n/**\n * Plugin Version Info\n */\nexport const PluginVersionInfoSchema = z.object({\n version: z.string(),\n publishedAt: z.string().datetime(),\n deprecated: z.boolean().default(false),\n yanked: z.boolean().default(false).describe('Whether this version was removed'),\n changelog: z.string().optional(),\n});\n\n/**\n * Get Plugin Versions Response\n */\nexport const GetPluginVersionsResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n pluginId: z.string(),\n versions: z.array(PluginVersionInfoSchema),\n latest: z.string().describe('Latest stable version'),\n latestPrerelease: z.string().optional().describe('Latest pre-release version'),\n })\n});\n\n// ============================================================================\n// Marketplace API\n// ============================================================================\n\n/**\n * List Marketplace Plugins Request\n */\nexport const ListMarketplaceRequestSchema = PaginationRequestSchema.extend({\n category: z.string().optional(),\n tags: z.array(z.string()).optional(),\n verified: z.boolean().optional(),\n search: z.string().optional(),\n});\n\n/**\n * List Marketplace Response\n */\nexport const ListMarketplaceResponseSchema = BaseResponseSchema.extend({\n data: z.array(MarketplacePluginSchema),\n pagination: PaginationResponseSchema,\n categories: z.array(z.object({\n id: z.string(),\n label: z.string(),\n count: z.number().int(),\n })).optional().describe('Available categories with counts'),\n});\n\n/**\n * Get Marketplace Plugin Details Request\n */\nexport const GetMarketplacePluginRequestSchema = z.object({\n pluginId: z.string(),\n});\n\n/**\n * Marketplace Plugin Details Response\n */\nexport const MarketplacePluginResponseSchema = BaseResponseSchema.extend({\n data: MarketplacePluginSchema\n});\n\n// ============================================================================\n// License Management API\n// ============================================================================\n\n/**\n * Issue License Request\n * \n * @example\n * ```json\n * {\n * \"spaceId\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"planCode\": \"enterprise_v1\",\n * \"expiresAt\": \"2025-12-31T23:59:59Z\",\n * \"customFeatures\": [\"advanced_analytics\", \"ai_insights\"],\n * \"customLimits\": {\n * \"storage_gb\": 500,\n * \"api_calls\": 1000000\n * },\n * \"plugins\": [\"com.acme.crm\", \"com.acme.analytics\"]\n * }\n * ```\n */\nexport const IssueLicenseRequestSchema = z.object({\n spaceId: z.string().describe('Target space ID'),\n planCode: z.string().describe('Plan code'),\n expiresAt: z.string().datetime().optional(),\n customFeatures: z.array(z.string()).optional(),\n customLimits: z.record(z.string(), z.number()).optional(),\n plugins: z.array(z.string()).optional(),\n});\n\n/**\n * License Response\n */\nexport const LicenseResponseSchema = BaseResponseSchema.extend({\n data: LicenseSchema\n});\n\n/**\n * Validate License Request\n * \n * @example\n * ```json\n * {\n * \"spaceId\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"signature\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n * }\n * ```\n */\nexport const ValidateLicenseRequestSchema = z.object({\n spaceId: z.string(),\n signature: z.string().describe('License signature/token'),\n});\n\n/**\n * License Validation Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": {\n * \"valid\": true,\n * \"license\": {\n * \"spaceId\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"planCode\": \"enterprise_v1\",\n * \"status\": \"active\",\n * \"issuedAt\": \"2024-01-01T00:00:00Z\",\n * \"expiresAt\": \"2025-12-31T23:59:59Z\"\n * },\n * \"errors\": []\n * }\n * }\n * ```\n */\nexport const ValidateLicenseResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n valid: z.boolean(),\n license: LicenseSchema.optional(),\n errors: z.array(z.string()).default([]),\n warnings: z.array(z.string()).default([]),\n })\n});\n\n/**\n * Revoke License Request\n */\nexport const RevokeLicenseRequestSchema = z.object({\n spaceId: z.string(),\n reason: z.string().optional(),\n});\n\n/**\n * List Licenses Request\n */\nexport const ListLicensesRequestSchema = PaginationRequestSchema.extend({\n spaceId: z.string().optional(),\n planCode: z.string().optional(),\n status: LicenseSchema.shape.status.optional(),\n});\n\n/**\n * List Licenses Response\n */\nexport const ListLicensesResponseSchema = BaseResponseSchema.extend({\n data: z.array(LicenseSchema),\n pagination: PaginationResponseSchema,\n});\n\n// ============================================================================\n// Composer Service API\n// ============================================================================\n\n/**\n * Compile Manifest Request\n * \n * @example\n * ```json\n * {\n * \"bom\": {\n * \"tenantId\": \"tenant_123\",\n * \"dependencies\": [\n * {\n * \"id\": \"com.objectstack.crm\",\n * \"version\": \"2.0.0\",\n * \"configuration\": {\n * \"currency\": \"USD\",\n * \"region\": \"us-east-1\"\n * }\n * }\n * ],\n * \"resolutionStrategy\": \"override\"\n * },\n * \"runtimeVersion\": \"1.5.0\",\n * \"dryRun\": false\n * }\n * ```\n */\nexport const CompileManifestRequestSchema = ComposerRequestSchema;\n\n/**\n * Compile Manifest Response\n */\nexport const CompileManifestResponseSchema = BaseResponseSchema.extend({\n data: ComposerResponseSchema\n});\n\n/**\n * Get Build Status Request\n */\nexport const GetBuildStatusRequestSchema = z.object({\n buildId: z.string(),\n});\n\n/**\n * Build Status Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": {\n * \"buildId\": \"build_abc123\",\n * \"status\": \"success\",\n * \"progress\": 100,\n * \"startedAt\": \"2024-01-01T10:00:00Z\",\n * \"completedAt\": \"2024-01-01T10:02:30Z\",\n * \"duration\": 150000,\n * \"logs\": [\n * { \"timestamp\": \"2024-01-01T10:00:00Z\", \"level\": \"info\", \"message\": \"Starting compilation\" },\n * { \"timestamp\": \"2024-01-01T10:02:30Z\", \"level\": \"info\", \"message\": \"Compilation complete\" }\n * ]\n * }\n * }\n * ```\n */\nexport const BuildStatusResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n buildId: z.string(),\n status: z.enum(['pending', 'in_progress', 'success', 'failed']),\n progress: z.number().min(0).max(100).describe('Completion percentage'),\n startedAt: z.string().datetime().optional(),\n completedAt: z.string().datetime().optional(),\n duration: z.number().optional().describe('Duration in milliseconds'),\n logs: z.array(z.object({\n timestamp: z.string().datetime(),\n level: z.enum(['debug', 'info', 'warn', 'error']),\n message: z.string(),\n })).optional(),\n error: z.string().optional(),\n })\n});\n\n// ============================================================================\n// Health & Monitoring\n// ============================================================================\n\n/**\n * Hub Health Check Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": {\n * \"status\": \"healthy\",\n * \"version\": \"1.0.0\",\n * \"uptime\": 86400,\n * \"services\": {\n * \"database\": {\n * \"status\": \"healthy\",\n * \"latency\": 5\n * },\n * \"cache\": {\n * \"status\": \"healthy\",\n * \"latency\": 2\n * },\n * \"composer\": {\n * \"status\": \"healthy\",\n * \"latency\": 15\n * }\n * },\n * \"timestamp\": \"2024-01-01T12:00:00Z\"\n * }\n * }\n * ```\n */\nexport const HubHealthResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n version: z.string(),\n uptime: z.number().describe('Uptime in seconds'),\n services: z.record(z.string(), z.object({\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n latency: z.number().optional().describe('Latency in milliseconds'),\n message: z.string().optional(),\n })),\n timestamp: z.string().datetime(),\n })\n});\n\n/**\n * Hub Metrics Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": {\n * \"metrics\": {\n * \"spaces\": {\n * \"total\": 1250,\n * \"active\": 980,\n * \"created_last_30d\": 45\n * },\n * \"tenants\": {\n * \"total\": 320,\n * \"active\": 285\n * },\n * \"plugins\": {\n * \"total\": 156,\n * \"published_last_30d\": 8,\n * \"total_downloads\": 456789\n * },\n * \"api\": {\n * \"requests_per_minute\": 850,\n * \"avg_response_time\": 125,\n * \"error_rate\": 0.002\n * }\n * },\n * \"timestamp\": \"2024-01-01T12:00:00Z\"\n * }\n * }\n * ```\n */\nexport const HubMetricsResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n metrics: z.object({\n spaces: z.object({\n total: z.number().int(),\n active: z.number().int(),\n created_last_30d: z.number().int().optional(),\n }).optional(),\n tenants: z.object({\n total: z.number().int(),\n active: z.number().int(),\n }).optional(),\n plugins: z.object({\n total: z.number().int(),\n published_last_30d: z.number().int().optional(),\n total_downloads: z.number().int().optional(),\n }).optional(),\n api: z.object({\n requests_per_minute: z.number(),\n avg_response_time: z.number().describe('Milliseconds'),\n error_rate: z.number().min(0).max(1),\n }).optional(),\n }),\n timestamp: z.string().datetime(),\n })\n});\n\n// ============================================================================\n// Export Types\n// ============================================================================\n\nexport type PaginationRequest = z.infer<typeof PaginationRequestSchema>;\nexport type PaginationResponse = z.infer<typeof PaginationResponseSchema>;\n\n// Space API\nexport type CreateSpaceRequest = z.infer<typeof CreateSpaceRequestSchema>;\nexport type UpdateSpaceRequest = z.infer<typeof UpdateSpaceRequestSchema>;\nexport type SpaceResponse = z.infer<typeof SpaceResponseSchema>;\nexport type ListSpacesRequest = z.infer<typeof ListSpacesRequestSchema>;\nexport type ListSpacesResponse = z.infer<typeof ListSpacesResponseSchema>;\n\n// Tenant API\nexport type CreateTenantRequest = z.infer<typeof CreateTenantRequestSchema>;\nexport type UpdateTenantRequest = z.infer<typeof UpdateTenantRequestSchema>;\nexport type TenantResponse = z.infer<typeof TenantResponseSchema>;\nexport type ListTenantsRequest = z.infer<typeof ListTenantsRequestSchema>;\nexport type ListTenantsResponse = z.infer<typeof ListTenantsResponseSchema>;\n\n// Plugin Registry API\nexport type PublishPluginRequest = z.infer<typeof PublishPluginRequestSchema>;\nexport type UpdatePluginRequest = z.infer<typeof UpdatePluginRequestSchema>;\nexport type PluginResponse = z.infer<typeof PluginResponseSchema>;\nexport type SearchPluginsRequest = z.infer<typeof SearchPluginsRequestSchema>;\nexport type SearchPluginsResponse = z.infer<typeof SearchPluginsResponseSchema>;\nexport type GetPluginVersionsRequest = z.infer<typeof GetPluginVersionsRequestSchema>;\nexport type PluginVersionInfo = z.infer<typeof PluginVersionInfoSchema>;\nexport type GetPluginVersionsResponse = z.infer<typeof GetPluginVersionsResponseSchema>;\n\n// Marketplace API\nexport type ListMarketplaceRequest = z.infer<typeof ListMarketplaceRequestSchema>;\nexport type ListMarketplaceResponse = z.infer<typeof ListMarketplaceResponseSchema>;\nexport type GetMarketplacePluginRequest = z.infer<typeof GetMarketplacePluginRequestSchema>;\nexport type MarketplacePluginResponse = z.infer<typeof MarketplacePluginResponseSchema>;\n\n// License API\nexport type IssueLicenseRequest = z.infer<typeof IssueLicenseRequestSchema>;\nexport type LicenseResponse = z.infer<typeof LicenseResponseSchema>;\nexport type ValidateLicenseRequest = z.infer<typeof ValidateLicenseRequestSchema>;\nexport type ValidateLicenseResponse = z.infer<typeof ValidateLicenseResponseSchema>;\nexport type RevokeLicenseRequest = z.infer<typeof RevokeLicenseRequestSchema>;\nexport type ListLicensesRequest = z.infer<typeof ListLicensesRequestSchema>;\nexport type ListLicensesResponse = z.infer<typeof ListLicensesResponseSchema>;\n\n// Composer API\nexport type CompileManifestRequest = z.infer<typeof CompileManifestRequestSchema>;\nexport type CompileManifestResponse = z.infer<typeof CompileManifestResponseSchema>;\nexport type GetBuildStatusRequest = z.infer<typeof GetBuildStatusRequestSchema>;\nexport type BuildStatusResponse = z.infer<typeof BuildStatusResponseSchema>;\n\n// Health & Monitoring\nexport type HubHealthResponse = z.infer<typeof HubHealthResponseSchema>;\nexport type HubMetricsResponse = z.infer<typeof HubMetricsResponseSchema>;\n\n// ============================================================================\n// Hub API Contracts Export\n// ============================================================================\n\n/**\n * Complete Hub API Contract\n * \n * This object provides a centralized reference to all Hub API endpoints,\n * request/response schemas, and types for building Hub management systems.\n */\nexport const HubAPIContract = {\n // Space Management\n spaces: {\n create: {\n request: CreateSpaceRequestSchema,\n response: SpaceResponseSchema,\n },\n update: {\n request: UpdateSpaceRequestSchema,\n response: SpaceResponseSchema,\n },\n get: {\n response: SpaceResponseSchema,\n },\n list: {\n request: ListSpacesRequestSchema,\n response: ListSpacesResponseSchema,\n },\n delete: {\n response: z.object({ success: z.boolean() }),\n },\n },\n \n // Tenant Management\n tenants: {\n create: {\n request: CreateTenantRequestSchema,\n response: TenantResponseSchema,\n },\n update: {\n request: UpdateTenantRequestSchema,\n response: TenantResponseSchema,\n },\n get: {\n response: TenantResponseSchema,\n },\n list: {\n request: ListTenantsRequestSchema,\n response: ListTenantsResponseSchema,\n },\n delete: {\n response: z.object({ success: z.boolean() }),\n },\n },\n \n // Plugin Registry (Publisher Operations)\n registry: {\n publish: {\n request: PublishPluginRequestSchema,\n response: PluginResponseSchema,\n },\n update: {\n request: UpdatePluginRequestSchema,\n response: PluginResponseSchema,\n },\n get: {\n response: PluginResponseSchema,\n },\n search: {\n request: SearchPluginsRequestSchema,\n response: SearchPluginsResponseSchema,\n },\n versions: {\n request: GetPluginVersionsRequestSchema,\n response: GetPluginVersionsResponseSchema,\n },\n delete: {\n response: z.object({ success: z.boolean() }),\n },\n },\n \n // Marketplace (Consumer Operations)\n marketplace: {\n list: {\n request: ListMarketplaceRequestSchema,\n response: ListMarketplaceResponseSchema,\n },\n get: {\n request: GetMarketplacePluginRequestSchema,\n response: MarketplacePluginResponseSchema,\n },\n },\n \n // License Management\n licenses: {\n issue: {\n request: IssueLicenseRequestSchema,\n response: LicenseResponseSchema,\n },\n validate: {\n request: ValidateLicenseRequestSchema,\n response: ValidateLicenseResponseSchema,\n },\n revoke: {\n request: RevokeLicenseRequestSchema,\n response: z.object({ success: z.boolean() }),\n },\n list: {\n request: ListLicensesRequestSchema,\n response: ListLicensesResponseSchema,\n },\n },\n \n // Composer\n composer: {\n compile: {\n request: CompileManifestRequestSchema,\n response: CompileManifestResponseSchema,\n },\n buildStatus: {\n request: GetBuildStatusRequestSchema,\n response: BuildStatusResponseSchema,\n },\n },\n \n // System & Observability\n system: {\n health: {\n response: HubHealthResponseSchema,\n },\n metrics: {\n response: HubMetricsResponseSchema,\n },\n },\n} as const;\n\n/**\n * Install Plugin Request\n */\nexport const InstallPluginRequestSchema = z.object({\n spaceId: z.string().describe('Target Space ID'),\n pluginId: z.string().describe('Plugin Package ID'),\n version: z.string().optional().describe('Version requirement'),\n config: z.record(z.any()).optional().describe('Plugin configuration'),\n});\n\n/**\n * Install Plugin Response\n */\nexport const InstallPluginResponseSchema = BaseResponseSchema.extend({\n data: z.any() // Returns installation status or installed instance\n});\n\n\n\nexport type InstallPluginRequest = z.infer<typeof InstallPluginRequestSchema>;\nexport type InstallPluginResponse = z.infer<typeof InstallPluginResponseSchema>;\n","import { z } from 'zod';\nimport { ManifestSchema } from '../kernel/manifest.zod';\n\n/**\n * # Cloud Composer Protocol\n * \n * Defines the interface for the ObjectStack Composer Service.\n * The Composer is responsible for \"compiling\" a Tenant's configuration (BOM)\n * into a single executable System Manifest.\n */\n\n/**\n * Dependency Requirement\n * Specifies a plugin and its version constraints.\n */\nexport const DependencyRequirementSchema = z.object({\n id: z.string().describe('Plugin ID (e.g. \"com.example.crm\")'),\n version: z.string().default('latest').describe('SemVer range or \"latest\"'),\n \n /**\n * Configuration Overrides\n * Tenant-specific settings that override plugin defaults.\n * Example: { \"currency\": \"USD\", \"apiKey\": \"...\" }\n */\n configuration: z.record(z.string(), z.any()).optional().describe('Configuration overrides'),\n \n /**\n * Feature Flags\n * Enable/Disable specific features within the plugin.\n */\n features: z.record(z.string(), z.boolean()).optional().describe('Feature toggles'),\n});\n\n/**\n * Bill of Materials (BOM)\n * The \"Shopping List\" for a specific tenant.\n * Represents the high-level intent of what the tenant wants to install.\n */\nexport const BillOfMaterialsSchema = z.object({\n tenantId: z.string().describe('Target Tenant ID'),\n \n /**\n * List of installed plugins/apps.\n * implementation order matters (later plugins override earlier ones by default).\n */\n dependencies: z.array(DependencyRequirementSchema).describe('Installed packages'),\n \n /**\n * Environment Variables injection.\n * Maps abstract keys to secure vault references or concrete values.\n */\n environment: z.record(z.string(), z.string()).optional(),\n \n /**\n * Global Resolution Strategy\n * How to handle conflicts when multiple plugins define the same resource.\n */\n resolutionStrategy: z.enum(['strict', 'override', 'merge']).default('override')\n .describe('Conflict resolution strategy (strict=fail, override=last-wins, merge=deep-merge)'),\n});\n\n/**\n * Conflict Report\n * Detailed information about collision during composition.\n */\nexport const ConflictReportSchema = z.object({\n resourceType: z.enum(['object', 'field', 'api', 'ui']).describe('Type of colliding resource'),\n resourceId: z.string().describe('ID of the resource'),\n sources: z.array(z.string()).describe('List of plugin IDs defining this resource'),\n resolution: z.string().describe('How it was resolved (e.g. \"com.example.erp won\")'),\n severity: z.enum(['info', 'warning', 'error']).describe('Severity of the conflict'),\n});\n\n/**\n * Composer Request\n * The RPC payload sent to the Composer Service.\n */\nexport const ComposerRequestSchema = z.object({\n bom: BillOfMaterialsSchema,\n \n /**\n * Target Runtime Version\n * Ensure generated manifest is compatible with the specific runtime version.\n */\n runtimeVersion: z.string().optional(),\n \n /**\n * Dry Run\n * If true, generates report but does not persist the manifest.\n */\n dryRun: z.boolean().default(false),\n});\n\n/**\n * Composer Response\n * The result of the compilation process.\n */\nexport const ComposerResponseSchema = z.object({\n success: z.boolean(),\n \n /**\n * The Holy Grail: The Executable System Manifest.\n * This is what the Runtime loads to boot.\n */\n manifest: ManifestSchema.optional().describe('The compiled System Manifest'),\n\n /**\n * Manifest URL\n * Presigned URL to download the manifest if stored externally (e.g. Vercel KV/S3).\n */\n manifestUrl: z.string().url().optional().describe('Presigned download URL'),\n \n /**\n * Compilation Metadata\n */\n buildId: z.string(),\n timestamp: z.string().datetime(),\n duration: z.number().describe('Compilation time in ms'),\n \n /**\n * Analysis\n */\n conflicts: z.array(ConflictReportSchema).optional(),\n errors: z.array(z.string()).optional(),\n});\n\nexport type BillOfMaterials = z.infer<typeof BillOfMaterialsSchema>;\nexport type ComposerRequest = z.infer<typeof ComposerRequestSchema>;\nexport type ComposerResponse = z.infer<typeof ComposerResponseSchema>;\nexport type ComposerConfig = ComposerRequest; // Alias for configuration context\n","import { z } from 'zod';\nimport { PluginCapabilityManifestSchema } from './plugin-capability.zod';\nimport { PluginLoadingConfigSchema } from './plugin-loading.zod';\n\n/**\n * Schema for the ObjectStack Manifest.\n * This defines the structure of a package configuration in the ObjectStack ecosystem.\n * All packages (apps, plugins, drivers, modules) must conform to this schema.\n * \n * @example App Package\n * ```yaml\n * id: com.acme.crm\n * version: 1.0.0\n * type: app\n * name: Acme CRM\n * description: Customer Relationship Management system\n * permissions:\n * - system.user.read\n * - system.object.create\n * objects:\n * - \"./src/objects/*.object.yml\"\n * ```\n */\nexport const ManifestSchema = z.object({\n /** \n * Unique package identifier using reverse domain notation.\n * Must be unique across the entire ecosystem.\n * \n * @example \"com.steedos.crm\"\n * @example \"org.apache.superset\"\n */\n id: z.string().describe('Unique package identifier (reverse domain style)'),\n \n /** \n * Package version following semantic versioning (major.minor.patch).\n * \n * @example \"1.0.0\"\n * @example \"2.1.0-beta.1\"\n */\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/).describe('Package version (semantic versioning)'),\n \n /** \n * Type of the package in the ObjectStack ecosystem.\n * - app: Business application package (contains objects, UIs)\n * - plugin: General-purpose functionality extension (adds logic, hooks)\n * - driver: Southbound interface - Database/external service adapter (Postgres, MongoDB, S3)\n * - module: Reusable code library/shared module\n * - objectql: Core engine - Data layer implementation\n * - gateway: Northbound interface - API protocol entry point (GraphQL, REST, RPC, OData)\n * - adapter: Host adapter - Runtime container (Express, Hono, Fastify, Serverless)\n */\n type: z.enum(['app', 'plugin', 'driver', 'module', 'objectql', 'gateway', 'adapter']).describe('Type of package'),\n \n /** \n * Human-readable name of the package.\n * Displayed in the UI for users.\n * \n * @example \"Project Management\"\n */\n name: z.string().describe('Human-readable package name'),\n \n /** \n * Brief description of the package functionality.\n * Displayed in the marketplace and plugin manager.\n */\n description: z.string().optional().describe('Package description'),\n \n /** \n * Array of permission strings that the package requires.\n * These form the \"Scope\" requested by the package at installation.\n * \n * @example [\"system.user.read\", \"system.data.write\"]\n */\n permissions: z.array(z.string()).optional().describe('Array of required permission strings'),\n \n /** \n * Glob patterns specifying ObjectQL schemas files.\n * Matches `*.object.yml` or `*.object.ts` files to load business objects.\n * \n * @example [\"./src/objects/*.object.yml\"]\n */\n objects: z.array(z.string()).optional().describe('Glob patterns for ObjectQL schemas files'),\n\n /**\n * Defines system level DataSources.\n * Matches `*.datasource.yml` files.\n * \n * @example [\"./src/datasources/*.datasource.mongo.yml\"]\n */\n datasources: z.array(z.string()).optional().describe('Glob patterns for Datasource definitions'),\n\n /**\n * Package Dependencies.\n * Map of package IDs to version requirements.\n * \n * @example { \"@steedos/plugin-auth\": \"^2.0.0\" }\n */\n dependencies: z.record(z.string(), z.string()).optional().describe('Package dependencies'),\n\n /**\n * Plugin Configuration Schema.\n * Defines the settings this plugin exposes to the user via UI/ENV.\n * Uses a simplified JSON Schema format.\n * \n * @example\n * {\n * \"title\": \"Stripe Config\",\n * \"properties\": {\n * \"apiKey\": { \"type\": \"string\", \"secret\": true },\n * \"currency\": { \"type\": \"string\", \"default\": \"USD\" }\n * }\n * }\n */\n configuration: z.object({\n title: z.string().optional(),\n properties: z.record(z.string(), z.object({\n type: z.enum(['string', 'number', 'boolean', 'array', 'object']).describe('Data type of the setting'),\n default: z.any().optional().describe('Default value'),\n description: z.string().optional().describe('Tooltip description'),\n required: z.boolean().optional().describe('Is this setting required?'),\n secret: z.boolean().optional().describe('If true, value is encrypted/masked (e.g. API Keys)'),\n enum: z.array(z.string()).optional().describe('Allowed values for select inputs'),\n })).describe('Map of configuration keys to their definitions')\n }).optional().describe('Plugin configuration settings'),\n\n /**\n * Contribution Points (VS Code Style).\n * formalized way to extend the platform capabilities.\n */\n contributes: z.object({\n /**\n * Register new Metadata Kinds (CRDs).\n * Enables the system to parse and validate new file types.\n * Example: Registering a BI plugin to handle *.report.ts\n */\n kinds: z.array(z.object({\n id: z.string().describe('The generic identifier of the kind (e.g., \"sys.bi.report\")'),\n globs: z.array(z.string()).describe('File patterns to watch (e.g., [\"**/*.report.ts\"])'),\n description: z.string().optional().describe('Description of what this kind represents'),\n })).optional().describe('New Metadata Types to recognize'),\n\n /**\n * Register System Hooks.\n * Declares that this plugin listens to specific system events.\n */\n events: z.array(z.string()).optional().describe('Events this plugin listens to'),\n\n /**\n * Register UI Menus.\n */\n menus: z.record(z.string(), z.array(z.object({\n id: z.string(),\n label: z.string(),\n command: z.string().optional(),\n }))).optional().describe('UI Menu contributions'),\n\n /**\n * Register Custom Themes.\n */\n themes: z.array(z.object({\n id: z.string(),\n label: z.string(),\n path: z.string(),\n })).optional().describe('Theme contributions'),\n\n /**\n * Register Translations.\n * Path to translation files (e.g. \"locales/en.json\").\n */\n translations: z.array(z.object({\n locale: z.string(),\n path: z.string(),\n })).optional().describe('Translation resources'),\n\n /**\n * Register Server Actions.\n * Invocable functions exposed to Flows or API.\n */\n actions: z.array(z.object({\n name: z.string().describe('Unique action name'),\n label: z.string().optional(),\n description: z.string().optional(),\n input: z.any().optional().describe('Input validation schema'),\n output: z.any().optional().describe('Output schema'),\n })).optional().describe('Exposed server actions'),\n\n /**\n * Register Storage Drivers.\n * Enables connecting to new types of datasources.\n */\n drivers: z.array(z.object({\n id: z.string().describe('Driver unique identifier (e.g. \"postgres\", \"mongo\")'),\n label: z.string().describe('Human readable name'),\n description: z.string().optional(),\n })).optional().describe('Driver contributions'),\n\n /**\n * Register Custom Field Types.\n * Extends the data model with new widget types.\n */\n fieldTypes: z.array(z.object({\n name: z.string().describe('Unique field type name (e.g. \"vector\")'),\n label: z.string().describe('Display label'),\n description: z.string().optional(),\n })).optional().describe('Field Type contributions'),\n \n /**\n * Register Custom Query Operators/Functions.\n * Extends ObjectQL with new functions (e.g. distance()).\n */\n functions: z.array(z.object({\n name: z.string().describe('Function name (e.g. \"distance\")'),\n description: z.string().optional(),\n args: z.array(z.string()).optional().describe('Argument types'),\n returnType: z.string().optional(),\n })).optional().describe('Query Function contributions'),\n }).optional().describe('Platform contributions'),\n\n /** \n * Initial data seeding configuration.\n * Defines default records to be inserted when the package is installed.\n */\n data: z.array(z.object({\n object: z.string().describe('Target Object Name'),\n records: z.array(z.record(z.string(), z.any())).describe('List of records to insert'),\n mode: z.enum(['upsert', 'insert', 'ignore']).default('upsert').describe('Seeding mode')\n })).optional().describe('Initial seed data'),\n\n /**\n * Plugin Capability Manifest.\n * Declares protocols implemented, interfaces provided, dependencies, and extension points.\n * This enables plugin interoperability and automatic discovery.\n */\n capabilities: PluginCapabilityManifestSchema.optional()\n .describe('Plugin capability declarations for interoperability'),\n\n /** \n * Extension points contributed by this package.\n * Allows packages to extend UI components, add functionality, etc.\n */\n extensions: z.record(z.string(), z.any()).optional().describe('Extension points and contributions'),\n\n /**\n * Plugin Loading Configuration.\n * Configures how the plugin is loaded, initialized, and managed at runtime.\n * Includes strategies for lazy loading, code splitting, caching, and hot reload.\n */\n loading: PluginLoadingConfigSchema.optional()\n .describe('Plugin loading and runtime behavior configuration'),\n});\n\n/**\n * TypeScript type inferred from the ManifestSchema.\n * Use this type for type-safe manifest handling in TypeScript code.\n */\nexport type ObjectStackManifest = z.infer<typeof ManifestSchema>;\n\n","import { z } from 'zod';\n\n/**\n * # Plugin Capability Protocol\n * \n * Defines the standard way plugins declare their capabilities, implementations,\n * and conformance levels to ensure interoperability across vendors.\n * \n * Based on the Protocol-Oriented Architecture pattern similar to:\n * - Kubernetes CRDs (Custom Resource Definitions)\n * - OSGi Service Registry\n * - Eclipse Extension Points\n */\n\n/**\n * Capability Conformance Level\n * Indicates how completely a plugin implements a given protocol.\n */\nexport const CapabilityConformanceLevelSchema = z.enum([\n 'full', // Complete implementation of all protocol features\n 'partial', // Subset implementation with specific features listed\n 'experimental', // Unstable/preview implementation\n 'deprecated', // Still supported but scheduled for removal\n]).describe('Level of protocol conformance');\n\n/**\n * Protocol Version Schema\n * Uses semantic versioning to track protocol evolution.\n */\nexport const ProtocolVersionSchema = z.object({\n major: z.number().int().min(0),\n minor: z.number().int().min(0),\n patch: z.number().int().min(0),\n}).describe('Semantic version of the protocol');\n\n/**\n * Protocol Reference\n * Uniquely identifies a protocol/interface that a plugin can implement.\n * \n * Examples:\n * - com.objectstack.protocol.storage.v1\n * - com.objectstack.protocol.auth.oauth2.v2\n * - com.acme.protocol.payment.stripe.v1\n */\nexport const ProtocolReferenceSchema = z.object({\n /**\n * Protocol identifier using reverse domain notation.\n * Format: {domain}.protocol.{category}.{name}[.{subcategory}].v{major}\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+protocol\\.[a-z][a-z0-9._]*\\.v\\d+$/)\n .describe('Unique protocol identifier (e.g., com.objectstack.protocol.storage.v1)'),\n \n /**\n * Human-readable protocol name\n */\n label: z.string(),\n \n /**\n * Protocol version\n */\n version: ProtocolVersionSchema,\n \n /**\n * Detailed protocol specification URL or file reference\n */\n specification: z.string().optional().describe('URL or path to protocol specification'),\n \n /**\n * Brief description of what this protocol defines\n */\n description: z.string().optional(),\n});\n\n/**\n * Protocol Feature\n * Represents a specific capability within a protocol.\n */\nexport const ProtocolFeatureSchema = z.object({\n name: z.string().describe('Feature identifier within the protocol'),\n enabled: z.boolean().default(true),\n description: z.string().optional(),\n sinceVersion: z.string().optional().describe('Version when this feature was added'),\n deprecatedSince: z.string().optional().describe('Version when deprecated'),\n});\n\n/**\n * Plugin Capability Declaration\n * Documents what protocols a plugin implements and to what extent.\n */\nexport const PluginCapabilitySchema = z.object({\n /**\n * The protocol being implemented\n */\n protocol: ProtocolReferenceSchema,\n \n /**\n * Conformance level\n */\n conformance: CapabilityConformanceLevelSchema.default('full'),\n \n /**\n * Specific features implemented (required if conformance is 'partial')\n */\n implementedFeatures: z.array(z.string()).optional().describe('List of implemented feature names'),\n \n /**\n * Optional feature flags indicating advanced capabilities\n */\n features: z.array(ProtocolFeatureSchema).optional(),\n \n /**\n * Custom metadata for vendor-specific information\n */\n metadata: z.record(z.string(), z.any()).optional(),\n \n /**\n * Testing/Certification status\n */\n certified: z.boolean().default(false).describe('Has passed official conformance tests'),\n certificationDate: z.string().datetime().optional(),\n});\n\n/**\n * Plugin Interface Declaration\n * Defines the contract for services this plugin provides to other plugins.\n */\nexport const PluginInterfaceSchema = z.object({\n /**\n * Unique interface identifier\n * Format: {plugin-id}.interface.{name}\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+interface\\.[a-z][a-z0-9._]+$/)\n .describe('Unique interface identifier'),\n \n /**\n * Interface name\n */\n name: z.string(),\n \n /**\n * Description of what this interface provides\n */\n description: z.string().optional(),\n \n /**\n * Interface version\n */\n version: ProtocolVersionSchema,\n \n /**\n * Methods exposed by this interface\n */\n methods: z.array(z.object({\n name: z.string().describe('Method name'),\n description: z.string().optional(),\n parameters: z.array(z.object({\n name: z.string(),\n type: z.string().describe('Type notation (e.g., string, number, User)'),\n required: z.boolean().default(true),\n description: z.string().optional(),\n })).optional(),\n returnType: z.string().optional().describe('Return value type'),\n async: z.boolean().default(false).describe('Whether method returns a Promise'),\n })),\n \n /**\n * Events emitted by this interface\n */\n events: z.array(z.object({\n name: z.string().describe('Event name'),\n description: z.string().optional(),\n payload: z.string().optional().describe('Event payload type'),\n })).optional(),\n \n /**\n * Stability level\n */\n stability: z.enum(['stable', 'beta', 'alpha', 'experimental']).default('stable'),\n});\n\n/**\n * Plugin Dependency Declaration\n * Specifies what other plugins or capabilities this plugin requires.\n */\nexport const PluginDependencySchema = z.object({\n /**\n * Plugin ID using reverse domain notation\n */\n pluginId: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+[a-z][a-z0-9-]+$/)\n .describe('Required plugin identifier'),\n \n /**\n * Version constraint (supports semver ranges)\n * Examples: \"1.0.0\", \"^1.2.3\", \">=2.0.0 <3.0.0\"\n */\n version: z.string().describe('Semantic version constraint'),\n \n /**\n * Whether this dependency is optional\n */\n optional: z.boolean().default(false),\n \n /**\n * Reason for the dependency\n */\n reason: z.string().optional(),\n \n /**\n * Minimum required capabilities from the dependency\n */\n requiredCapabilities: z.array(z.string()).optional().describe('Protocol IDs the dependency must support'),\n});\n\n/**\n * Extension Point Declaration\n * Defines hooks where other plugins can extend this plugin's functionality.\n */\nexport const ExtensionPointSchema = z.object({\n /**\n * Extension point identifier\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+extension\\.[a-z][a-z0-9._]+$/)\n .describe('Unique extension point identifier'),\n \n /**\n * Extension point name\n */\n name: z.string(),\n \n /**\n * Description\n */\n description: z.string().optional(),\n \n /**\n * Type of extension point\n */\n type: z.enum([\n 'action', // Plugins can register executable actions\n 'hook', // Plugins can listen to lifecycle events\n 'widget', // Plugins can contribute UI widgets\n 'provider', // Plugins can provide data/services\n 'transformer', // Plugins can transform data\n 'validator', // Plugins can validate data\n 'decorator', // Plugins can enhance/wrap functionality\n ]),\n \n /**\n * Expected interface contract for extensions\n */\n contract: z.object({\n input: z.string().optional().describe('Input type/schema'),\n output: z.string().optional().describe('Output type/schema'),\n signature: z.string().optional().describe('Function signature if applicable'),\n }).optional(),\n \n /**\n * Cardinality\n */\n cardinality: z.enum(['single', 'multiple']).default('multiple')\n .describe('Whether multiple extensions can register to this point'),\n});\n\n/**\n * Complete Plugin Capability Manifest\n * This is included in the main plugin manifest to declare all capabilities.\n */\nexport const PluginCapabilityManifestSchema = z.object({\n /**\n * Protocols this plugin implements\n */\n implements: z.array(PluginCapabilitySchema).optional()\n .describe('List of protocols this plugin conforms to'),\n \n /**\n * Interfaces this plugin exposes to other plugins\n */\n provides: z.array(PluginInterfaceSchema).optional()\n .describe('Services/APIs this plugin offers to others'),\n \n /**\n * Dependencies on other plugins\n */\n requires: z.array(PluginDependencySchema).optional()\n .describe('Required plugins and their capabilities'),\n \n /**\n * Extension points this plugin defines\n */\n extensionPoints: z.array(ExtensionPointSchema).optional()\n .describe('Points where other plugins can extend this plugin'),\n \n /**\n * Extensions this plugin contributes to other plugins\n */\n extensions: z.array(z.object({\n targetPluginId: z.string().describe('Plugin ID being extended'),\n extensionPointId: z.string().describe('Extension point identifier'),\n implementation: z.string().describe('Path to implementation module'),\n priority: z.number().int().default(100).describe('Registration priority (lower = higher priority)'),\n })).optional().describe('Extensions contributed to other plugins'),\n});\n\n// Export types\nexport type CapabilityConformanceLevel = z.infer<typeof CapabilityConformanceLevelSchema>;\nexport type ProtocolVersion = z.infer<typeof ProtocolVersionSchema>;\nexport type ProtocolReference = z.infer<typeof ProtocolReferenceSchema>;\nexport type ProtocolFeature = z.infer<typeof ProtocolFeatureSchema>;\nexport type PluginCapability = z.infer<typeof PluginCapabilitySchema>;\nexport type PluginInterface = z.infer<typeof PluginInterfaceSchema>;\nexport type PluginDependency = z.infer<typeof PluginDependencySchema>;\nexport type ExtensionPoint = z.infer<typeof ExtensionPointSchema>;\nexport type PluginCapabilityManifest = z.infer<typeof PluginCapabilityManifestSchema>;\n","import { z } from 'zod';\n\n/**\n * # Plugin Loading Protocol\n * \n * Defines the enhanced plugin loading mechanism for the microkernel architecture.\n * Inspired by industry best practices from:\n * - Kubernetes CRDs and Operators\n * - OSGi Dynamic Module System\n * - Eclipse Plugin Framework\n * - Webpack Module Federation\n * \n * This protocol enables:\n * - Lazy loading and code splitting\n * - Dynamic imports and parallel initialization\n * - Capability-based discovery\n * - Hot reload in development\n * - Advanced caching strategies\n */\n\n/**\n * Plugin Loading Strategy\n * Determines how and when a plugin is loaded into memory\n */\nexport const PluginLoadingStrategySchema = z.enum([\n 'eager', // Load immediately during bootstrap (critical plugins)\n 'lazy', // Load on first use (feature plugins)\n 'parallel', // Load in parallel with other plugins\n 'deferred', // Load after initial bootstrap complete\n 'on-demand', // Load only when explicitly requested\n]).describe('Plugin loading strategy');\n\n/**\n * Plugin Preloading Configuration\n * Configures preloading behavior for faster activation\n */\nexport const PluginPreloadConfigSchema = z.object({\n /**\n * Enable preloading for this plugin\n */\n enabled: z.boolean().default(false),\n \n /**\n * Preload priority (lower = higher priority)\n */\n priority: z.number().int().min(0).default(100),\n \n /**\n * Resources to preload\n */\n resources: z.array(z.enum([\n 'metadata', // Plugin manifest and metadata\n 'dependencies', // Plugin dependencies\n 'assets', // Static assets (icons, translations)\n 'code', // JavaScript code chunks\n 'services', // Service definitions\n ])).optional(),\n \n /**\n * Conditions for preloading\n */\n conditions: z.object({\n /**\n * Preload only on specific routes\n */\n routes: z.array(z.string()).optional(),\n \n /**\n * Preload only for specific user roles\n */\n roles: z.array(z.string()).optional(),\n \n /**\n * Preload based on device type\n */\n deviceType: z.array(z.enum(['desktop', 'mobile', 'tablet'])).optional(),\n \n /**\n * Network connection quality threshold\n */\n minNetworkSpeed: z.enum(['slow-2g', '2g', '3g', '4g']).optional(),\n }).optional(),\n}).describe('Plugin preloading configuration');\n\n/**\n * Plugin Code Splitting Configuration\n * Configures how plugin code is split for optimal loading\n */\nexport const PluginCodeSplittingSchema = z.object({\n /**\n * Enable code splitting for this plugin\n */\n enabled: z.boolean().default(true),\n \n /**\n * Split strategy\n */\n strategy: z.enum([\n 'route', // Split by UI routes\n 'feature', // Split by feature modules\n 'size', // Split by bundle size threshold\n 'custom', // Custom split points defined by plugin\n ]).default('feature'),\n \n /**\n * Chunk naming strategy\n */\n chunkNaming: z.enum(['hashed', 'named', 'sequential']).default('hashed'),\n \n /**\n * Maximum chunk size in KB\n */\n maxChunkSize: z.number().int().min(10).optional().describe('Max chunk size in KB'),\n \n /**\n * Shared dependencies optimization\n */\n sharedDependencies: z.object({\n enabled: z.boolean().default(true),\n /**\n * Minimum times a module must be shared before extraction\n */\n minChunks: z.number().int().min(1).default(2),\n }).optional(),\n}).describe('Plugin code splitting configuration');\n\n/**\n * Plugin Dynamic Import Configuration\n * Configures dynamic import behavior for runtime module loading\n */\nexport const PluginDynamicImportSchema = z.object({\n /**\n * Enable dynamic imports\n */\n enabled: z.boolean().default(true),\n \n /**\n * Import mode\n */\n mode: z.enum([\n 'async', // Asynchronous import (recommended)\n 'sync', // Synchronous import (blocking)\n 'eager', // Eager evaluation\n 'lazy', // Lazy evaluation\n ]).default('async'),\n \n /**\n * Prefetch strategy\n */\n prefetch: z.boolean().default(false).describe('Prefetch module in idle time'),\n \n /**\n * Preload strategy\n */\n preload: z.boolean().default(false).describe('Preload module in parallel with parent'),\n \n /**\n * Webpack magic comments support\n */\n webpackChunkName: z.string().optional().describe('Custom chunk name for webpack'),\n \n /**\n * Import timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000).describe('Dynamic import timeout (ms)'),\n \n /**\n * Retry configuration on import failure\n */\n retry: z.object({\n enabled: z.boolean().default(true),\n maxAttempts: z.number().int().min(1).max(10).default(3),\n backoffMs: z.number().int().min(0).default(1000).describe('Exponential backoff base delay'),\n }).optional(),\n}).describe('Plugin dynamic import configuration');\n\n/**\n * Plugin Initialization Configuration\n * Configures how plugin initialization is executed\n */\nexport const PluginInitializationSchema = z.object({\n /**\n * Initialization mode\n */\n mode: z.enum([\n 'sync', // Synchronous initialization\n 'async', // Asynchronous initialization\n 'parallel', // Parallel with other plugins\n 'sequential', // Must complete before next plugin\n ]).default('async'),\n \n /**\n * Initialization timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000),\n \n /**\n * Startup priority (lower = higher priority, earlier initialization)\n */\n priority: z.number().int().min(0).default(100),\n \n /**\n * Whether to continue bootstrap if this plugin fails\n */\n critical: z.boolean().default(false).describe('If true, kernel bootstrap fails if plugin fails'),\n \n /**\n * Retry configuration on initialization failure\n */\n retry: z.object({\n enabled: z.boolean().default(false),\n maxAttempts: z.number().int().min(1).max(5).default(3),\n backoffMs: z.number().int().min(0).default(1000),\n }).optional(),\n \n /**\n * Health check interval for monitoring\n */\n healthCheckInterval: z.number().int().min(0).optional().describe('Health check interval in ms (0 = disabled)'),\n}).describe('Plugin initialization configuration');\n\n/**\n * Plugin Dependency Resolution Configuration\n * Advanced dependency resolution using semantic versioning\n */\nexport const PluginDependencyResolutionSchema = z.object({\n /**\n * Dependency resolution strategy\n */\n strategy: z.enum([\n 'strict', // Exact version match required\n 'compatible', // Semver compatible versions (^)\n 'latest', // Always use latest compatible\n 'pinned', // Lock to specific version\n ]).default('compatible'),\n \n /**\n * Peer dependency handling\n */\n peerDependencies: z.object({\n /**\n * Whether to resolve peer dependencies\n */\n resolve: z.boolean().default(true),\n \n /**\n * Action on missing peer dependency\n */\n onMissing: z.enum(['error', 'warn', 'ignore']).default('warn'),\n \n /**\n * Action on peer version mismatch\n */\n onMismatch: z.enum(['error', 'warn', 'ignore']).default('warn'),\n }).optional(),\n \n /**\n * Optional dependency handling\n */\n optionalDependencies: z.object({\n /**\n * Whether to attempt loading optional dependencies\n */\n load: z.boolean().default(true),\n \n /**\n * Action on optional dependency load failure\n */\n onFailure: z.enum(['warn', 'ignore']).default('warn'),\n }).optional(),\n \n /**\n * Conflict resolution\n */\n conflictResolution: z.enum([\n 'fail', // Fail on any version conflict\n 'latest', // Use latest version\n 'oldest', // Use oldest version\n 'manual', // Require manual resolution\n ]).default('latest'),\n \n /**\n * Circular dependency handling\n */\n circularDependencies: z.enum([\n 'error', // Throw error on circular dependency\n 'warn', // Warn but continue\n 'allow', // Allow circular dependencies\n ]).default('warn'),\n}).describe('Plugin dependency resolution configuration');\n\n/**\n * Plugin Hot Reload Configuration\n * Enables hot module replacement for development\n */\nexport const PluginHotReloadSchema = z.object({\n /**\n * Enable hot reload\n */\n enabled: z.boolean().default(false),\n \n /**\n * Hot reload strategy\n */\n strategy: z.enum([\n 'full', // Full plugin reload (destroy and reinitialize)\n 'partial', // Partial reload (update changed modules only)\n 'state-preserve', // Preserve plugin state during reload\n ]).default('full'),\n \n /**\n * Files to watch for changes\n */\n watchPatterns: z.array(z.string()).optional().describe('Glob patterns for files to watch'),\n \n /**\n * Files to ignore\n */\n ignorePatterns: z.array(z.string()).optional().describe('Glob patterns for files to ignore'),\n \n /**\n * Debounce delay in milliseconds\n */\n debounceMs: z.number().int().min(0).default(300),\n \n /**\n * Whether to preserve state during reload\n */\n preserveState: z.boolean().default(false),\n \n /**\n * State serialization\n */\n stateSerialization: z.object({\n enabled: z.boolean().default(false),\n /**\n * Path to state serialization handler\n */\n handler: z.string().optional(),\n }).optional(),\n \n /**\n * Hooks for hot reload lifecycle\n */\n hooks: z.object({\n beforeReload: z.string().optional().describe('Function to call before reload'),\n afterReload: z.string().optional().describe('Function to call after reload'),\n onError: z.string().optional().describe('Function to call on reload error'),\n }).optional(),\n}).describe('Plugin hot reload configuration');\n\n/**\n * Plugin Caching Configuration\n * Configures caching strategy for faster subsequent loads\n */\nexport const PluginCachingSchema = z.object({\n /**\n * Enable caching\n */\n enabled: z.boolean().default(true),\n \n /**\n * Cache storage type\n */\n storage: z.enum([\n 'memory', // In-memory cache (fastest, not persistent)\n 'disk', // Disk cache (persistent)\n 'indexeddb', // Browser IndexedDB (persistent, browser only)\n 'hybrid', // Memory + Disk hybrid\n ]).default('memory'),\n \n /**\n * Cache key strategy\n */\n keyStrategy: z.enum([\n 'version', // Cache by plugin version\n 'hash', // Cache by content hash\n 'timestamp', // Cache by last modified timestamp\n ]).default('version'),\n \n /**\n * Cache TTL in seconds\n */\n ttl: z.number().int().min(0).optional().describe('Time to live in seconds (0 = infinite)'),\n \n /**\n * Maximum cache size in MB\n */\n maxSize: z.number().int().min(1).optional().describe('Max cache size in MB'),\n \n /**\n * Cache invalidation triggers\n */\n invalidateOn: z.array(z.enum([\n 'version-change',\n 'dependency-change',\n 'manual',\n 'error',\n ])).optional(),\n \n /**\n * Compression\n */\n compression: z.object({\n enabled: z.boolean().default(false),\n algorithm: z.enum(['gzip', 'brotli', 'deflate']).default('gzip'),\n }).optional(),\n}).describe('Plugin caching configuration');\n\n/**\n * Plugin Sandboxing Configuration\n * Security isolation for untrusted plugins\n */\nexport const PluginSandboxingSchema = z.object({\n /**\n * Enable sandboxing\n */\n enabled: z.boolean().default(false),\n \n /**\n * Sandbox isolation level\n */\n isolationLevel: z.enum([\n 'none', // No isolation\n 'process', // Separate process (Node.js worker threads)\n 'vm', // VM context isolation\n 'iframe', // iframe isolation (browser)\n 'web-worker', // Web Worker (browser)\n ]).default('none'),\n \n /**\n * Allowed capabilities\n */\n allowedCapabilities: z.array(z.string()).optional().describe('List of allowed capability IDs'),\n \n /**\n * Resource quotas\n */\n resourceQuotas: z.object({\n /**\n * Maximum memory usage in MB\n */\n maxMemoryMB: z.number().int().min(1).optional(),\n \n /**\n * Maximum CPU time in milliseconds\n */\n maxCpuTimeMs: z.number().int().min(100).optional(),\n \n /**\n * Maximum number of file descriptors\n */\n maxFileDescriptors: z.number().int().min(1).optional(),\n \n /**\n * Maximum network bandwidth in KB/s\n */\n maxNetworkKBps: z.number().int().min(1).optional(),\n }).optional(),\n \n /**\n * Permissions\n */\n permissions: z.object({\n /**\n * Allowed API access\n */\n allowedAPIs: z.array(z.string()).optional(),\n \n /**\n * Allowed file system paths\n */\n allowedPaths: z.array(z.string()).optional(),\n \n /**\n * Allowed network endpoints\n */\n allowedEndpoints: z.array(z.string()).optional(),\n \n /**\n * Allowed environment variables\n */\n allowedEnvVars: z.array(z.string()).optional(),\n }).optional(),\n}).describe('Plugin sandboxing configuration');\n\n/**\n * Plugin Performance Monitoring Configuration\n * Telemetry and performance tracking\n */\nexport const PluginPerformanceMonitoringSchema = z.object({\n /**\n * Enable performance monitoring\n */\n enabled: z.boolean().default(false),\n \n /**\n * Metrics to collect\n */\n metrics: z.array(z.enum([\n 'load-time',\n 'init-time',\n 'memory-usage',\n 'cpu-usage',\n 'api-calls',\n 'error-rate',\n 'cache-hit-rate',\n ])).optional(),\n \n /**\n * Sampling rate (0-1, where 1 = 100%)\n */\n samplingRate: z.number().min(0).max(1).default(1),\n \n /**\n * Reporting interval in seconds\n */\n reportingInterval: z.number().int().min(1).default(60),\n \n /**\n * Performance budget thresholds\n */\n budgets: z.object({\n /**\n * Maximum load time in milliseconds\n */\n maxLoadTimeMs: z.number().int().min(0).optional(),\n \n /**\n * Maximum init time in milliseconds\n */\n maxInitTimeMs: z.number().int().min(0).optional(),\n \n /**\n * Maximum memory usage in MB\n */\n maxMemoryMB: z.number().int().min(0).optional(),\n }).optional(),\n \n /**\n * Action on budget violation\n */\n onBudgetViolation: z.enum(['warn', 'error', 'ignore']).default('warn'),\n}).describe('Plugin performance monitoring configuration');\n\n/**\n * Complete Plugin Loading Configuration\n * Combines all loading-related configurations\n */\nexport const PluginLoadingConfigSchema = z.object({\n /**\n * Loading strategy\n */\n strategy: PluginLoadingStrategySchema.default('lazy'),\n \n /**\n * Preloading configuration\n */\n preload: PluginPreloadConfigSchema.optional(),\n \n /**\n * Code splitting configuration\n */\n codeSplitting: PluginCodeSplittingSchema.optional(),\n \n /**\n * Dynamic import configuration\n */\n dynamicImport: PluginDynamicImportSchema.optional(),\n \n /**\n * Initialization configuration\n */\n initialization: PluginInitializationSchema.optional(),\n \n /**\n * Dependency resolution configuration\n */\n dependencyResolution: PluginDependencyResolutionSchema.optional(),\n \n /**\n * Hot reload configuration (development only)\n */\n hotReload: PluginHotReloadSchema.optional(),\n \n /**\n * Caching configuration\n */\n caching: PluginCachingSchema.optional(),\n \n /**\n * Sandboxing configuration\n */\n sandboxing: PluginSandboxingSchema.optional(),\n \n /**\n * Performance monitoring\n */\n monitoring: PluginPerformanceMonitoringSchema.optional(),\n}).describe('Complete plugin loading configuration');\n\n/**\n * Plugin Loading Event\n * Emitted during plugin loading lifecycle\n */\nexport const PluginLoadingEventSchema = z.object({\n /**\n * Event type\n */\n type: z.enum([\n 'load-started',\n 'load-completed',\n 'load-failed',\n 'init-started',\n 'init-completed',\n 'init-failed',\n 'preload-started',\n 'preload-completed',\n 'cache-hit',\n 'cache-miss',\n 'hot-reload',\n ]),\n \n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Timestamp\n */\n timestamp: z.number().int().min(0),\n \n /**\n * Duration in milliseconds\n */\n durationMs: z.number().int().min(0).optional(),\n \n /**\n * Additional metadata\n */\n metadata: z.record(z.string(), z.any()).optional(),\n \n /**\n * Error if event represents a failure\n */\n error: z.object({\n message: z.string(),\n code: z.string().optional(),\n stack: z.string().optional(),\n }).optional(),\n}).describe('Plugin loading lifecycle event');\n\n/**\n * Plugin Loading State\n * Tracks the current loading state of a plugin\n */\nexport const PluginLoadingStateSchema = z.object({\n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Current state\n */\n state: z.enum([\n 'pending', // Not yet loaded\n 'loading', // Currently loading\n 'loaded', // Code loaded, not initialized\n 'initializing', // Currently initializing\n 'ready', // Fully initialized and ready\n 'failed', // Failed to load or initialize\n 'reloading', // Hot reloading in progress\n ]),\n \n /**\n * Load progress (0-100)\n */\n progress: z.number().min(0).max(100).default(0),\n \n /**\n * Loading start time\n */\n startedAt: z.number().int().min(0).optional(),\n \n /**\n * Loading completion time\n */\n completedAt: z.number().int().min(0).optional(),\n \n /**\n * Last error\n */\n lastError: z.string().optional(),\n \n /**\n * Retry count\n */\n retryCount: z.number().int().min(0).default(0),\n}).describe('Plugin loading state');\n\n// Export types\nexport type PluginLoadingStrategy = z.infer<typeof PluginLoadingStrategySchema>;\nexport type PluginPreloadConfig = z.infer<typeof PluginPreloadConfigSchema>;\nexport type PluginCodeSplitting = z.infer<typeof PluginCodeSplittingSchema>;\nexport type PluginDynamicImport = z.infer<typeof PluginDynamicImportSchema>;\nexport type PluginInitialization = z.infer<typeof PluginInitializationSchema>;\nexport type PluginDependencyResolution = z.infer<typeof PluginDependencyResolutionSchema>;\nexport type PluginHotReload = z.infer<typeof PluginHotReloadSchema>;\nexport type PluginCaching = z.infer<typeof PluginCachingSchema>;\nexport type PluginSandboxing = z.infer<typeof PluginSandboxingSchema>;\nexport type PluginPerformanceMonitoring = z.infer<typeof PluginPerformanceMonitoringSchema>;\nexport type PluginLoadingConfig = z.infer<typeof PluginLoadingConfigSchema>;\nexport type PluginLoadingEvent = z.infer<typeof PluginLoadingEventSchema>;\nexport type PluginLoadingState = z.infer<typeof PluginLoadingStateSchema>;\n","import { z } from 'zod';\nimport { PluginVendorSchema } from './plugin-registry.zod';\n\n/**\n * # Marketplace Protocol\n * \n * Defines the schema for the ObjectStack Plugin Marketplace.\n * This is the catalog of available extensions sourced from NPM or private registries.\n */\n\nexport const PluginAuthorSchema = PluginVendorSchema;\n\n/**\n * Plugin Pricing Model Schema\n */\nexport const PluginPricingSchema = z.object({\n type: z.enum(['free', 'one_time', 'recurring']),\n currency: z.string().default('USD'),\n amount: z.number().min(0),\n interval: z.enum(['month', 'year']).optional().describe('Required if type is recurring'),\n trialDays: z.number().int().optional(),\n});\n\n/**\n * Plugin Version Schema\n * Specific release version details\n */\nexport const PluginVersionSchema = z.object({\n version: z.string().describe('SemVer string (e.g. 1.0.0)'),\n publishedAt: z.string().datetime().describe('Publication date'),\n downloadUrl: z.string().url().describe('Archive download URL'),\n checksum: z.string().optional().describe('Integrity checksum (shasum)'),\n engine: z.object({\n node: z.string().optional(),\n objectstack: z.string().describe('Required ObjectStack kernel version range'),\n }).optional().describe('Engine compatibility'),\n dependencies: z.record(z.string(), z.string()).optional().describe('Runtime plugin dependencies'),\n changeLog: z.string().optional().describe('Release notes'),\n});\n\n/**\n * Plugin Registry Entry Schema\n * Represents a listing in the Marketplace.\n */\nexport const MarketplacePluginSchema = z.object({\n /**\n * Package Identifier\n * Usually the NPM package name (e.g. \"@steedos/plugin-crm\")\n */\n id: z.string(),\n \n /**\n * Version History\n * Registry of all available versions\n */\n versions: z.record(z.string(), PluginVersionSchema).optional().describe('Map of versions (1.0.0) -> Details'),\n\n /**\n * Display Name\n */\n label: z.string(),\n \n /**\n * Short Description\n */\n description: z.string().optional(),\n \n /**\n * Detailed README / Documentation content\n */\n readme: z.string().optional(),\n \n /**\n * Latest Version\n */\n version: z.string(),\n \n /**\n * Vendor / Publisher\n */\n vendor: PluginVendorSchema.optional(),\n \n /**\n * Categorization\n */\n tags: z.array(z.string()).optional(),\n category: z.enum([\n 'app', \n 'integration', \n 'theme', \n 'utility', \n 'driver',\n 'analytics',\n 'security',\n 'automation',\n 'ai',\n 'data'\n ]).optional(),\n \n /**\n * Assets\n */\n icon: z.string().url().optional(),\n screenshots: z.array(z.string().url()).optional(),\n \n /**\n * Links\n */\n homepage: z.string().url().optional(),\n repository: z.string().url().optional(),\n bugs: z.string().url().optional(),\n \n /**\n * Statistics\n */\n downloads: z.number().int().optional(),\n rating: z.number().min(0).max(5).optional(),\n\n /**\n * Commercial Information\n */\n pricing: PluginPricingSchema.optional(),\n\n verified: z.boolean().default(false).describe('Is verified maintaned by ObjectStack'),\n});\n\nexport type PluginAuthor = z.infer<typeof PluginAuthorSchema>;\nexport type MarketplacePlugin = z.infer<typeof MarketplacePluginSchema>;\nexport type MarketplaceListing = MarketplacePlugin; // Alias for backwards compatibility\n","import { z } from 'zod';\nimport { PluginCapabilityManifestSchema } from '../kernel/plugin-capability.zod';\n\n/**\n * # Plugin Registry Protocol\n * \n * Defines the schema for the plugin discovery and registry system.\n * This enables plugins from different vendors to be discovered, validated,\n * and composed together in the ObjectStack ecosystem.\n */\n\n/**\n * Plugin Vendor Information\n */\nexport const PluginVendorSchema = z.object({\n /**\n * Vendor identifier (reverse domain notation)\n * Example: \"com.acme\", \"org.apache\", \"com.objectstack\"\n */\n id: z.string()\n .regex(/^[a-z][a-z0-9]*(\\.[a-z][a-z0-9]*)+$/)\n .describe('Vendor identifier (reverse domain)'),\n \n /**\n * Vendor display name\n */\n name: z.string(),\n \n /**\n * Vendor website\n */\n website: z.string().url().optional(),\n \n /**\n * Contact email\n */\n email: z.string().email().optional(),\n \n /**\n * Verification status\n */\n verified: z.boolean().default(false).describe('Whether vendor is verified by ObjectStack'),\n \n /**\n * Trust level\n */\n trustLevel: z.enum(['official', 'verified', 'community', 'unverified']).default('unverified'),\n});\n\n/**\n * Plugin Quality Metrics\n */\nexport const PluginQualityMetricsSchema = z.object({\n /**\n * Test coverage percentage\n */\n testCoverage: z.number().min(0).max(100).optional(),\n \n /**\n * Documentation score (0-100)\n */\n documentationScore: z.number().min(0).max(100).optional(),\n \n /**\n * Code quality score (0-100)\n */\n codeQuality: z.number().min(0).max(100).optional(),\n \n /**\n * Security scan status\n */\n securityScan: z.object({\n lastScanDate: z.string().datetime().optional(),\n vulnerabilities: z.object({\n critical: z.number().int().min(0).default(0),\n high: z.number().int().min(0).default(0),\n medium: z.number().int().min(0).default(0),\n low: z.number().int().min(0).default(0),\n }).optional(),\n passed: z.boolean().default(false),\n }).optional(),\n \n /**\n * Conformance test results\n */\n conformanceTests: z.array(z.object({\n protocolId: z.string().describe('Protocol being tested'),\n passed: z.boolean(),\n totalTests: z.number().int().min(0),\n passedTests: z.number().int().min(0),\n lastRunDate: z.string().datetime().optional(),\n })).optional(),\n});\n\n/**\n * Plugin Usage Statistics\n */\nexport const PluginStatisticsSchema = z.object({\n /**\n * Total downloads\n */\n downloads: z.number().int().min(0).default(0),\n \n /**\n * Downloads in the last 30 days\n */\n downloadsLastMonth: z.number().int().min(0).default(0),\n \n /**\n * Number of active installations\n */\n activeInstallations: z.number().int().min(0).default(0),\n \n /**\n * User ratings\n */\n ratings: z.object({\n average: z.number().min(0).max(5).default(0),\n count: z.number().int().min(0).default(0),\n distribution: z.object({\n '5': z.number().int().min(0).default(0),\n '4': z.number().int().min(0).default(0),\n '3': z.number().int().min(0).default(0),\n '2': z.number().int().min(0).default(0),\n '1': z.number().int().min(0).default(0),\n }).optional(),\n }).optional(),\n \n /**\n * GitHub stars (if open source)\n */\n stars: z.number().int().min(0).optional(),\n \n /**\n * Number of dependent plugins\n */\n dependents: z.number().int().min(0).default(0),\n});\n\n/**\n * Plugin Registry Entry\n * Complete metadata for a plugin in the registry.\n */\nexport const PluginRegistryEntrySchema = z.object({\n /**\n * Plugin identifier (must match manifest.id)\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+[a-z][a-z0-9-]+$/)\n .describe('Plugin identifier (reverse domain notation)'),\n \n /**\n * Current version\n */\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/),\n \n /**\n * Plugin display name\n */\n name: z.string(),\n \n /**\n * Short description\n */\n description: z.string().optional(),\n \n /**\n * Detailed documentation/README\n */\n readme: z.string().optional(),\n \n /**\n * Plugin type/category\n */\n category: z.enum([\n 'data', // Data management, storage, databases\n 'integration', // External service integrations\n 'ui', // UI components and themes\n 'analytics', // Analytics and reporting\n 'security', // Security, auth, compliance\n 'automation', // Workflows and automation\n 'ai', // AI/ML capabilities\n 'utility', // General utilities\n 'driver', // Database/storage drivers\n 'gateway', // API gateways\n 'adapter', // Runtime adapters\n ]).optional(),\n \n /**\n * Tags for categorization\n */\n tags: z.array(z.string()).optional(),\n \n /**\n * Vendor information\n */\n vendor: PluginVendorSchema,\n \n /**\n * Capability manifest (what the plugin implements/provides)\n */\n capabilities: PluginCapabilityManifestSchema.optional(),\n \n /**\n * Compatibility information\n */\n compatibility: z.object({\n /**\n * Minimum ObjectStack version required\n */\n minObjectStackVersion: z.string().optional(),\n \n /**\n * Maximum ObjectStack version supported\n */\n maxObjectStackVersion: z.string().optional(),\n \n /**\n * Node.js version requirement\n */\n nodeVersion: z.string().optional(),\n \n /**\n * Supported platforms\n */\n platforms: z.array(z.enum(['linux', 'darwin', 'win32', 'browser'])).optional(),\n }).optional(),\n \n /**\n * Links and resources\n */\n links: z.object({\n homepage: z.string().url().optional(),\n repository: z.string().url().optional(),\n documentation: z.string().url().optional(),\n bugs: z.string().url().optional(),\n changelog: z.string().url().optional(),\n }).optional(),\n \n /**\n * Media assets\n */\n media: z.object({\n icon: z.string().url().optional(),\n logo: z.string().url().optional(),\n screenshots: z.array(z.string().url()).optional(),\n video: z.string().url().optional(),\n }).optional(),\n \n /**\n * Quality metrics\n */\n quality: PluginQualityMetricsSchema.optional(),\n \n /**\n * Usage statistics\n */\n statistics: PluginStatisticsSchema.optional(),\n \n /**\n * License information\n */\n license: z.string().optional().describe('SPDX license identifier'),\n \n /**\n * Pricing (if commercial)\n */\n pricing: z.object({\n model: z.enum(['free', 'freemium', 'paid', 'enterprise']),\n price: z.number().min(0).optional(),\n currency: z.string().default('USD').optional(),\n billingPeriod: z.enum(['one-time', 'monthly', 'yearly']).optional(),\n }).optional(),\n \n /**\n * Publication dates\n */\n publishedAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n \n /**\n * Deprecation status\n */\n deprecated: z.boolean().default(false),\n deprecationMessage: z.string().optional(),\n replacedBy: z.string().optional().describe('Plugin ID that replaces this one'),\n \n /**\n * Feature flags\n */\n flags: z.object({\n experimental: z.boolean().default(false),\n beta: z.boolean().default(false),\n featured: z.boolean().default(false),\n verified: z.boolean().default(false),\n }).optional(),\n});\n\n/**\n * Plugin Search Filters\n */\nexport const PluginSearchFiltersSchema = z.object({\n /**\n * Search query\n */\n query: z.string().optional(),\n \n /**\n * Filter by category\n */\n category: z.array(z.string()).optional(),\n \n /**\n * Filter by tags\n */\n tags: z.array(z.string()).optional(),\n \n /**\n * Filter by vendor trust level\n */\n trustLevel: z.array(z.enum(['official', 'verified', 'community', 'unverified'])).optional(),\n \n /**\n * Filter by protocols implemented\n */\n implementsProtocols: z.array(z.string()).optional(),\n \n /**\n * Filter by pricing model\n */\n pricingModel: z.array(z.enum(['free', 'freemium', 'paid', 'enterprise'])).optional(),\n \n /**\n * Minimum rating\n */\n minRating: z.number().min(0).max(5).optional(),\n \n /**\n * Sort options\n */\n sortBy: z.enum([\n 'relevance',\n 'downloads',\n 'rating',\n 'updated',\n 'name',\n ]).optional(),\n \n /**\n * Sort order\n */\n sortOrder: z.enum(['asc', 'desc']).default('desc').optional(),\n \n /**\n * Pagination\n */\n page: z.number().int().min(1).default(1).optional(),\n limit: z.number().int().min(1).max(100).default(20).optional(),\n});\n\n/**\n * Plugin Installation Configuration\n */\nexport const PluginInstallConfigSchema = z.object({\n /**\n * Plugin identifier to install\n */\n pluginId: z.string(),\n \n /**\n * Version to install (supports semver ranges)\n */\n version: z.string().optional().describe('Defaults to latest'),\n \n /**\n * Plugin-specific configuration values\n */\n config: z.record(z.string(), z.any()).optional(),\n \n /**\n * Whether to auto-update\n */\n autoUpdate: z.boolean().default(false).optional(),\n \n /**\n * Installation options\n */\n options: z.object({\n /**\n * Skip dependency installation\n */\n skipDependencies: z.boolean().default(false).optional(),\n \n /**\n * Force reinstall\n */\n force: z.boolean().default(false).optional(),\n \n /**\n * Installation target\n */\n target: z.enum(['system', 'space', 'user']).default('space').optional(),\n }).optional(),\n});\n\n// Export types\nexport type PluginVendor = z.infer<typeof PluginVendorSchema>;\nexport type PluginQualityMetrics = z.infer<typeof PluginQualityMetricsSchema>;\nexport type PluginStatistics = z.infer<typeof PluginStatisticsSchema>;\nexport type PluginRegistryEntry = z.infer<typeof PluginRegistryEntrySchema>;\nexport type PluginSearchFilters = z.infer<typeof PluginSearchFiltersSchema>;\nexport type PluginInstallConfig = z.infer<typeof PluginInstallConfigSchema>;\n","import { z } from 'zod';\n\n/**\n * # Registry Configuration Protocol\n * \n * Defines the configuration for the ObjectStack Registry Service.\n * Includes federation, synchronization, and storage settings.\n */\n\n/**\n * Registry Sync Policy\n * Defines how registries synchronize with upstreams\n */\nexport const RegistrySyncPolicySchema = z.enum([\n 'manual', // Manual synchronization only\n 'auto', // Automatic synchronization\n 'proxy', // Proxy requests to upstream without caching\n]).describe('Registry synchronization strategy');\n\n/**\n * Registry Upstream Configuration\n * Configuration for upstream registry connection\n */\nexport const RegistryUpstreamSchema = z.object({\n /**\n * Upstream registry URL\n */\n url: z.string().url()\n .describe('Upstream registry endpoint'),\n \n /**\n * Synchronization policy\n */\n syncPolicy: RegistrySyncPolicySchema.default('auto'),\n \n /**\n * Sync interval in seconds (for auto sync)\n */\n syncInterval: z.number().int().min(60).optional()\n .describe('Auto-sync interval in seconds'),\n \n /**\n * Authentication credentials\n */\n auth: z.object({\n type: z.enum(['none', 'basic', 'bearer', 'api-key', 'oauth2']).default('none'),\n username: z.string().optional(),\n password: z.string().optional(),\n token: z.string().optional(),\n apiKey: z.string().optional(),\n }).optional(),\n \n /**\n * TLS/SSL configuration\n */\n tls: z.object({\n enabled: z.boolean().default(true),\n verifyCertificate: z.boolean().default(true),\n certificate: z.string().optional(),\n privateKey: z.string().optional(),\n }).optional(),\n \n /**\n * Timeout settings\n */\n timeout: z.number().int().min(1000).default(30000)\n .describe('Request timeout in milliseconds'),\n \n /**\n * Retry configuration\n */\n retry: z.object({\n maxAttempts: z.number().int().min(0).default(3),\n backoff: z.enum(['fixed', 'linear', 'exponential']).default('exponential'),\n }).optional(),\n});\n\n/**\n * Registry Configuration\n * Complete registry configuration supporting federation\n */\nexport const RegistryConfigSchema = z.object({\n /**\n * Registry type\n */\n type: z.enum([\n 'public', // Public marketplace (e.g., plugins.objectstack.com)\n 'private', // Private enterprise registry\n 'hybrid', // Hybrid with upstream federation\n ]).describe('Registry deployment type'),\n \n /**\n * Upstream registries (for hybrid/private registries)\n */\n upstream: z.array(RegistryUpstreamSchema).optional()\n .describe('Upstream registries to sync from or proxy to'),\n \n /**\n * Scopes managed by this registry\n */\n scope: z.array(z.string()).optional()\n .describe('npm-style scopes managed by this registry (e.g., @my-corp, @enterprise)'),\n \n /**\n * Default scope for new plugins\n */\n defaultScope: z.string().optional()\n .describe('Default scope prefix for new plugins'),\n \n /**\n * Registry storage configuration\n */\n storage: z.object({\n /**\n * Storage backend type\n */\n backend: z.enum(['local', 's3', 'gcs', 'azure-blob', 'oss']).default('local'),\n \n /**\n * Storage path or bucket name\n */\n path: z.string().optional(),\n \n /**\n * Credentials\n */\n credentials: z.record(z.string(), z.any()).optional(),\n }).optional(),\n \n /**\n * Registry visibility\n */\n visibility: z.enum(['public', 'private', 'internal']).default('private')\n .describe('Who can access this registry'),\n \n /**\n * Access control\n */\n accessControl: z.object({\n /**\n * Require authentication for read\n */\n requireAuthForRead: z.boolean().default(false),\n \n /**\n * Require authentication for write\n */\n requireAuthForWrite: z.boolean().default(true),\n \n /**\n * Allowed users/teams\n */\n allowedPrincipals: z.array(z.string()).optional(),\n }).optional(),\n \n /**\n * Caching configuration\n */\n cache: z.object({\n enabled: z.boolean().default(true),\n ttl: z.number().int().min(0).default(3600)\n .describe('Cache TTL in seconds'),\n maxSize: z.number().int().optional()\n .describe('Maximum cache size in bytes'),\n }).optional(),\n \n /**\n * Mirroring configuration (for high availability)\n */\n mirrors: z.array(z.object({\n url: z.string().url(),\n priority: z.number().int().min(1).default(1),\n })).optional()\n .describe('Mirror registries for redundancy'),\n});\n\nexport type RegistrySyncPolicy = z.infer<typeof RegistrySyncPolicySchema>;\nexport type RegistryUpstream = z.infer<typeof RegistryUpstreamSchema>;\nexport type RegistryConfig = z.infer<typeof RegistryConfigSchema>;\n","import { z } from 'zod';\nimport { BillOfMaterialsSchema } from './composer.zod';\nimport { TenantIsolationLevel, TenantQuotaSchema } from './tenant.zod';\n\n/**\n * # Space Protocol\n * \n * Defines the SaaS-side representation of a Space (formerly Project).\n * A Space is a logical container for business apps, data, and logic.\n * Corresponds to an entry in the Hub's database.\n */\n\n/**\n * Subscription Status Enum\n */\nexport const SubscriptionStatus = z.enum([\n 'active',\n 'past_due',\n 'canceled',\n 'trialing',\n 'incomplete'\n]);\n\n/**\n * Space Subscription Info\n */\nexport const SpaceSubscriptionSchema = z.object({\n planId: z.string().describe('Reference to Plan Code'),\n status: SubscriptionStatus,\n currentPeriodEnd: z.string().datetime().optional(),\n stripeCustomerId: z.string().optional(),\n stripeSubscriptionId: z.string().optional(),\n \n /**\n * Purchased Add-ons from Marketplace\n */\n addons: z.array(z.object({\n pluginId: z.string().describe('Marketplace Plugin ID (NPM package name)'),\n quantity: z.number().default(1),\n status: SubscriptionStatus.default('active'),\n })).optional(),\n\n /**\n * Quota Usage Snapshot\n * Cached usage metrics for quick display/validation.\n */\n usage: z.record(z.string(), z.number()).optional(),\n});\n\n/**\n * Deployment Target\n * Vercel or Container configuration.\n */\nexport const DeploymentTargetSchema = z.object({\n provider: z.enum(['vercel', 'docker', 'kubernetes']),\n region: z.string().optional(),\n url: z.string().url().optional().describe('Public Access URL'),\n env: z.record(z.string(), z.string()).optional().describe('Runtime Environment Variables'),\n});\n\n/**\n * Hub Space Schema\n */\nexport const HubSpaceSchema = z.object({\n id: z.string().uuid(),\n \n /**\n * Display Name\n */\n name: z.string(),\n slug: z.string().describe('URL friendly identifier'),\n \n /**\n * Owner (User or Org ID in Hub)\n */\n ownerId: z.string(),\n\n /**\n * The Runtime Instance Definition\n * Defines the technical execution environment.\n */\n runtime: z.object({\n isolation: TenantIsolationLevel.describe('Data isolation strategy'),\n quotas: TenantQuotaSchema.optional().describe('Resource quotas'),\n }).optional().describe('Runtime instance configuration'),\n \n /**\n * The Desired State (Bill of Materials)\n * This is what the user configures in the UI.\n */\n bom: BillOfMaterialsSchema,\n \n /**\n * The Current Actual State (Last Successful Build)\n */\n lastBuild: z.object({\n id: z.string(),\n timestamp: z.string().datetime(),\n manifestUrl: z.string().url().optional(),\n status: z.enum(['pending', 'success', 'failed']),\n }).optional(),\n \n /**\n * Commercial / Billing Info\n */\n subscription: SpaceSubscriptionSchema.optional(),\n \n /**\n * Infrastructure Settings\n */\n deployment: DeploymentTargetSchema.optional(),\n \n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport type SubscriptionStatus = z.infer<typeof SubscriptionStatus>;\nexport type SpaceSubscription = z.infer<typeof SpaceSubscriptionSchema>;\nexport type DeploymentTarget = z.infer<typeof DeploymentTargetSchema>;\nexport type HubSpace = z.infer<typeof HubSpaceSchema>;\nexport type Space = HubSpace; // Alias for backwards compatibility\n","import { z } from 'zod';\n\n/**\n * Tenant Schema (Multi-Tenant Architecture)\n * \n * Defines the tenant/tenancy model for ObjectStack SaaS deployments.\n * Supports different levels of data isolation to meet varying security,\n * performance, and compliance requirements.\n * \n * Isolation Levels:\n * - shared_schema: All tenants share the same database and schema (row-level isolation)\n * - isolated_schema: Tenants have separate schemas within a shared database\n * - isolated_db: Each tenant has a completely separate database\n */\n\n/**\n * Tenant Isolation Level Enum\n * Defines how tenant data is separated in the system\n */\nexport const TenantIsolationLevel = z.enum([\n 'shared_schema', // Shared DB, shared schema, row-level isolation (most economical)\n 'isolated_schema', // Shared DB, separate schema per tenant (balanced)\n 'isolated_db', // Separate database per tenant (maximum isolation)\n]);\n\nexport type TenantIsolationLevel = z.infer<typeof TenantIsolationLevel>;\n\n/**\n * Tenant Quota Schema\n * Defines resource limits and usage quotas for a tenant\n */\nexport const TenantQuotaSchema = z.object({\n /**\n * Maximum number of users allowed for this tenant\n */\n maxUsers: z.number().int().positive().optional().describe('Maximum number of users'),\n \n /**\n * Maximum storage space in bytes\n */\n maxStorage: z.number().int().positive().optional().describe('Maximum storage in bytes'),\n \n /**\n * API rate limit (requests per minute)\n */\n apiRateLimit: z.number().int().positive().optional().describe('API requests per minute'),\n});\n\nexport type TenantQuota = z.infer<typeof TenantQuotaSchema>;\n\n/**\n * Tenant Schema\n * \n * @deprecated This schema is maintained for backward compatibility only.\n * New implementations should use HubSpaceSchema which embeds tenant concepts.\n * \n * **Migration Guide:**\n * ```typescript\n * // Old approach (deprecated):\n * const tenant: Tenant = {\n * id: 'tenant_123',\n * name: 'My Tenant',\n * isolationLevel: 'shared_schema',\n * quotas: { maxUsers: 100 }\n * };\n * \n * // New approach (recommended):\n * const space: HubSpace = {\n * id: '...uuid...',\n * name: 'My Tenant',\n * slug: 'my-tenant',\n * ownerId: 'user_id',\n * runtime: {\n * isolation: 'shared_schema',\n * quotas: { maxUsers: 100 }\n * },\n * bom: { ... }\n * };\n * ```\n * \n * See HubSpaceSchema in space.zod.ts for the recommended approach.\n */\nexport const TenantSchema = z.object({\n /**\n * Unique tenant identifier\n */\n id: z.string().describe('Unique tenant identifier'),\n \n /**\n * Tenant display name\n */\n name: z.string().describe('Tenant display name'),\n \n /**\n * Data isolation level\n */\n isolationLevel: TenantIsolationLevel,\n \n /**\n * Custom configuration values\n */\n customizations: z.record(z.string(), z.any()).optional().describe('Custom configuration values'),\n \n /**\n * Resource quotas\n */\n quotas: TenantQuotaSchema.optional(),\n});\n\nexport type Tenant = z.infer<typeof TenantSchema>;\n\n/**\n * Tenant Isolation Strategy Documentation\n * \n * Comprehensive documentation of three isolation strategies for multi-tenant systems.\n * Each strategy has different trade-offs in terms of security, cost, complexity, and compliance.\n */\n\n/**\n * Row-Level Isolation Strategy (shared_schema)\n * \n * Recommended for: Most SaaS applications, cost-sensitive deployments\n * \n * IMPLEMENTATION:\n * - All tenants share the same database and schema\n * - Each table includes a tenant_id column\n * - PostgreSQL Row-Level Security (RLS) enforces isolation\n * - Queries automatically filter by tenant_id via RLS policies\n * \n * ADVANTAGES:\n * ✅ Simple backup and restore (single database)\n * ✅ Cost-effective (shared resources, minimal overhead)\n * ✅ Easy tenant migration (update tenant_id)\n * ✅ Efficient resource utilization (connection pooling)\n * ✅ Simple schema migrations (single schema to update)\n * ✅ Lower operational complexity\n * \n * DISADVANTAGES:\n * ❌ RLS misconfiguration can lead to data leakage\n * ❌ Performance impact from RLS policy evaluation\n * ❌ Noisy neighbor problem (one tenant can affect others)\n * ❌ Cannot easily isolate tenant to different hardware\n * ❌ Compliance challenges for regulated industries\n * \n * SECURITY CONSIDERATIONS:\n * - Requires careful RLS policy configuration\n * - Must validate tenant_id in all queries\n * - Need comprehensive testing of RLS policies\n * - Audit all database access patterns\n * - Implement application-level validation as defense-in-depth\n * \n * EXAMPLE RLS POLICY (PostgreSQL):\n * ```sql\n * -- Example: Apply RLS policy to a table (e.g., \"app_data\")\n * CREATE POLICY tenant_isolation ON app_data\n * USING (tenant_id = current_setting('app.current_tenant')::text);\n * \n * ALTER TABLE app_data ENABLE ROW LEVEL SECURITY;\n * ```\n */\nexport const RowLevelIsolationStrategySchema = z.object({\n strategy: z.literal('shared_schema').describe('Row-level isolation strategy'),\n \n /**\n * Database configuration for row-level isolation\n */\n database: z.object({\n /**\n * Whether to enable Row-Level Security (RLS)\n */\n enableRLS: z.boolean().default(true).describe('Enable PostgreSQL Row-Level Security'),\n \n /**\n * Tenant context setting method\n */\n contextMethod: z.enum([\n 'session_variable', // SET app.current_tenant = 'tenant_123'\n 'search_path', // SET search_path = tenant_123, public\n 'application_name', // SET application_name = 'tenant_123'\n ]).default('session_variable').describe('How to set tenant context'),\n \n /**\n * Session variable name for tenant context\n */\n contextVariable: z.string().default('app.current_tenant').describe('Session variable name'),\n \n /**\n * Whether to validate tenant_id at application level\n */\n applicationValidation: z.boolean().default(true).describe('Application-level tenant validation'),\n }).optional().describe('Database configuration'),\n \n /**\n * Performance optimization settings\n */\n performance: z.object({\n /**\n * Whether to use partial indexes for tenant_id\n */\n usePartialIndexes: z.boolean().default(true).describe('Use partial indexes per tenant'),\n \n /**\n * Whether to use table partitioning\n */\n usePartitioning: z.boolean().default(false).describe('Use table partitioning by tenant_id'),\n \n /**\n * Connection pool size per tenant\n */\n poolSizePerTenant: z.number().int().positive().optional().describe('Connection pool size per tenant'),\n }).optional().describe('Performance settings'),\n});\n\nexport type RowLevelIsolationStrategy = z.infer<typeof RowLevelIsolationStrategySchema>;\n\n/**\n * Schema-Level Isolation Strategy (isolated_schema)\n * \n * Recommended for: Enterprise SaaS, B2B platforms with compliance needs\n * \n * IMPLEMENTATION:\n * - All tenants share the same database server\n * - Each tenant has a separate database schema\n * - Schema name typically: tenant_<tenant_id>\n * - Application switches schema using SET search_path\n * \n * ADVANTAGES:\n * ✅ Better isolation than row-level (schema boundaries)\n * ✅ Easier to debug (separate schemas)\n * ✅ Can grant different database permissions per schema\n * ✅ Reduced risk of data leakage\n * ✅ Performance isolation (indexes, statistics per schema)\n * ✅ Simplified queries (no tenant_id filtering needed)\n * \n * DISADVANTAGES:\n * ❌ More complex backups (must backup all schemas)\n * ❌ Higher migration costs (schema changes across all tenants)\n * ❌ Schema proliferation (PostgreSQL has limits)\n * ❌ Connection overhead (switching schemas)\n * ❌ More complex monitoring and maintenance\n * \n * SECURITY CONSIDERATIONS:\n * - Ensure proper schema permissions (GRANT USAGE ON SCHEMA)\n * - Validate schema name to prevent SQL injection\n * - Implement connection-level schema switching\n * - Audit schema access patterns\n * - Prevent cross-schema queries in application\n * \n * EXAMPLE IMPLEMENTATION (PostgreSQL):\n * ```sql\n * -- Create tenant schema\n * CREATE SCHEMA tenant_123;\n * \n * -- Grant access\n * GRANT USAGE ON SCHEMA tenant_123 TO app_user;\n * \n * -- Switch to tenant schema\n * SET search_path TO tenant_123, public;\n * ```\n */\nexport const SchemaLevelIsolationStrategySchema = z.object({\n strategy: z.literal('isolated_schema').describe('Schema-level isolation strategy'),\n \n /**\n * Schema configuration\n */\n schema: z.object({\n /**\n * Schema naming pattern\n * Use {tenant_id} as placeholder (must contain only alphanumeric and underscores)\n * The tenant_id will be sanitized before substitution to prevent SQL injection\n */\n namingPattern: z.string().default('tenant_{tenant_id}').describe('Schema naming pattern'),\n \n /**\n * Whether to include public schema in search_path\n */\n includePublicSchema: z.boolean().default(true).describe('Include public schema'),\n \n /**\n * Default schema for shared resources\n */\n sharedSchema: z.string().default('public').describe('Schema for shared resources'),\n \n /**\n * Whether to automatically create schema on tenant creation\n */\n autoCreateSchema: z.boolean().default(true).describe('Auto-create schema'),\n }).optional().describe('Schema configuration'),\n \n /**\n * Migration configuration\n */\n migrations: z.object({\n /**\n * Migration strategy\n */\n strategy: z.enum([\n 'parallel', // Run migrations on all schemas in parallel\n 'sequential', // Run migrations one schema at a time\n 'on_demand', // Run migrations when tenant accesses system\n ]).default('parallel').describe('Migration strategy'),\n \n /**\n * Maximum concurrent migrations\n */\n maxConcurrent: z.number().int().positive().default(10).describe('Max concurrent migrations'),\n \n /**\n * Whether to rollback on first failure\n */\n rollbackOnError: z.boolean().default(true).describe('Rollback on error'),\n }).optional().describe('Migration configuration'),\n \n /**\n * Performance optimization settings\n */\n performance: z.object({\n /**\n * Whether to use connection pooling per schema\n */\n poolPerSchema: z.boolean().default(false).describe('Separate pool per schema'),\n \n /**\n * Schema cache TTL in seconds\n */\n schemaCacheTTL: z.number().int().positive().default(3600).describe('Schema cache TTL'),\n }).optional().describe('Performance settings'),\n});\n\nexport type SchemaLevelIsolationStrategy = z.infer<typeof SchemaLevelIsolationStrategySchema>;\n\n/**\n * Database-Level Isolation Strategy (isolated_db)\n * \n * Recommended for: Regulated industries (healthcare, finance), strict compliance requirements\n * \n * IMPLEMENTATION:\n * - Each tenant has a completely separate database\n * - Database name typically: tenant_<tenant_id>\n * - Requires separate connection pool per tenant\n * - Complete physical and logical isolation\n * \n * ADVANTAGES:\n * ✅ Perfect data isolation (strongest security)\n * ✅ Meets strict regulatory requirements (HIPAA, SOX, PCI-DSS)\n * ✅ Complete performance isolation (no noisy neighbors)\n * ✅ Can place databases on different hardware\n * ✅ Easy to backup/restore individual tenant\n * ✅ Simplified compliance auditing per tenant\n * ✅ Can apply different encryption keys per database\n * \n * DISADVANTAGES:\n * ❌ Most expensive option (resource overhead)\n * ❌ Complex database server management (many databases)\n * ❌ Connection pool limits (max connections per server)\n * ❌ Difficult cross-tenant analytics\n * ❌ Higher operational complexity\n * ❌ Schema migrations take longer (many databases)\n * \n * SECURITY CONSIDERATIONS:\n * - Each database can have separate credentials\n * - Enables per-tenant encryption at rest\n * - Simplifies compliance and audit trails\n * - Prevents any cross-tenant data access\n * - Supports tenant-specific backup schedules\n * \n * EXAMPLE IMPLEMENTATION (PostgreSQL):\n * ```sql\n * -- Create tenant database\n * CREATE DATABASE tenant_123\n * WITH OWNER = tenant_123_user\n * ENCODING = 'UTF8'\n * LC_COLLATE = 'en_US.UTF-8'\n * LC_CTYPE = 'en_US.UTF-8';\n * \n * -- Connect to tenant database\n * \\c tenant_123\n * ```\n */\nexport const DatabaseLevelIsolationStrategySchema = z.object({\n strategy: z.literal('isolated_db').describe('Database-level isolation strategy'),\n \n /**\n * Database configuration\n */\n database: z.object({\n /**\n * Database naming pattern\n * Use {tenant_id} as placeholder (must contain only alphanumeric and underscores)\n * The tenant_id will be sanitized before substitution to prevent SQL injection\n */\n namingPattern: z.string().default('tenant_{tenant_id}').describe('Database naming pattern'),\n \n /**\n * Database server/cluster assignment strategy\n */\n serverStrategy: z.enum([\n 'shared', // All tenant databases on same server\n 'sharded', // Tenant databases distributed across servers\n 'dedicated', // Each tenant gets dedicated server (enterprise)\n ]).default('shared').describe('Server assignment strategy'),\n \n /**\n * Whether to use separate credentials per tenant\n */\n separateCredentials: z.boolean().default(true).describe('Separate credentials per tenant'),\n \n /**\n * Whether to automatically create database on tenant creation\n */\n autoCreateDatabase: z.boolean().default(true).describe('Auto-create database'),\n }).optional().describe('Database configuration'),\n \n /**\n * Connection pooling configuration\n */\n connectionPool: z.object({\n /**\n * Pool size per tenant database\n */\n poolSize: z.number().int().positive().default(10).describe('Connection pool size'),\n \n /**\n * Maximum number of tenant pools to keep active\n */\n maxActivePools: z.number().int().positive().default(100).describe('Max active pools'),\n \n /**\n * Idle pool timeout in seconds\n */\n idleTimeout: z.number().int().positive().default(300).describe('Idle pool timeout'),\n \n /**\n * Whether to use connection pooler (PgBouncer, etc.)\n */\n usePooler: z.boolean().default(true).describe('Use connection pooler'),\n }).optional().describe('Connection pool configuration'),\n \n /**\n * Backup and restore configuration\n */\n backup: z.object({\n /**\n * Backup strategy per tenant\n */\n strategy: z.enum([\n 'individual', // Separate backup per tenant\n 'consolidated', // Combined backup with all tenants\n 'on_demand', // Backup only when requested\n ]).default('individual').describe('Backup strategy'),\n \n /**\n * Backup frequency in hours\n */\n frequencyHours: z.number().int().positive().default(24).describe('Backup frequency'),\n \n /**\n * Retention period in days\n */\n retentionDays: z.number().int().positive().default(30).describe('Backup retention days'),\n }).optional().describe('Backup configuration'),\n \n /**\n * Encryption configuration\n */\n encryption: z.object({\n /**\n * Whether to use per-tenant encryption keys\n */\n perTenantKeys: z.boolean().default(false).describe('Per-tenant encryption keys'),\n \n /**\n * Encryption algorithm\n */\n algorithm: z.string().default('AES-256-GCM').describe('Encryption algorithm'),\n \n /**\n * Key management service\n */\n keyManagement: z.enum(['aws_kms', 'azure_key_vault', 'gcp_kms', 'hashicorp_vault', 'custom']).optional().describe('Key management service'),\n }).optional().describe('Encryption configuration'),\n});\n\nexport type DatabaseLevelIsolationStrategy = z.infer<typeof DatabaseLevelIsolationStrategySchema>;\n\n/**\n * Tenant Isolation Configuration Schema\n * \n * Complete configuration for tenant isolation strategy.\n * Supports all three isolation levels with detailed configuration options.\n */\nexport const TenantIsolationConfigSchema = z.discriminatedUnion('strategy', [\n RowLevelIsolationStrategySchema,\n SchemaLevelIsolationStrategySchema,\n DatabaseLevelIsolationStrategySchema,\n]);\n\nexport type TenantIsolationConfig = z.infer<typeof TenantIsolationConfigSchema>;\n\n/**\n * Tenant Security Policy Schema\n * Defines security policies and compliance requirements for tenants\n */\nexport const TenantSecurityPolicySchema = z.object({\n /**\n * Encryption requirements\n */\n encryption: z.object({\n /**\n * Require encryption at rest\n */\n atRest: z.boolean().default(true).describe('Require encryption at rest'),\n \n /**\n * Require encryption in transit\n */\n inTransit: z.boolean().default(true).describe('Require encryption in transit'),\n \n /**\n * Require field-level encryption for sensitive data\n */\n fieldLevel: z.boolean().default(false).describe('Require field-level encryption'),\n }).optional().describe('Encryption requirements'),\n \n /**\n * Access control requirements\n */\n accessControl: z.object({\n /**\n * Require multi-factor authentication\n */\n requireMFA: z.boolean().default(false).describe('Require MFA'),\n \n /**\n * Require SSO/SAML authentication\n */\n requireSSO: z.boolean().default(false).describe('Require SSO'),\n \n /**\n * IP whitelist\n */\n ipWhitelist: z.array(z.string()).optional().describe('Allowed IP addresses'),\n \n /**\n * Session timeout in seconds\n */\n sessionTimeout: z.number().int().positive().default(3600).describe('Session timeout'),\n }).optional().describe('Access control requirements'),\n \n /**\n * Audit and compliance requirements\n */\n compliance: z.object({\n /**\n * Compliance standards to enforce\n */\n standards: z.array(z.enum([\n 'sox',\n 'hipaa',\n 'gdpr',\n 'pci_dss',\n 'iso_27001',\n 'fedramp',\n ])).optional().describe('Compliance standards'),\n \n /**\n * Require audit logging for all operations\n */\n requireAuditLog: z.boolean().default(true).describe('Require audit logging'),\n \n /**\n * Audit log retention period in days\n */\n auditRetentionDays: z.number().int().positive().default(365).describe('Audit retention days'),\n \n /**\n * Data residency requirements\n */\n dataResidency: z.object({\n /**\n * Required geographic region\n */\n region: z.string().optional().describe('Required region (e.g., US, EU, APAC)'),\n \n /**\n * Prohibited regions\n */\n excludeRegions: z.array(z.string()).optional().describe('Prohibited regions'),\n }).optional().describe('Data residency requirements'),\n }).optional().describe('Compliance requirements'),\n});\n\nexport type TenantSecurityPolicy = z.infer<typeof TenantSecurityPolicySchema>;\n","import { z } from 'zod';\n\n/**\n * Metric Type Classification\n */\nexport const MetricType = z.enum([\n 'boolean', // Feature Flag (Enabled/Disabled)\n 'counter', // Usage Count (e.g. API Calls, Records Created) - Accumulates\n 'gauge', // Current Level (e.g. Storage Used, Users Active) - Point in time\n]);\n\n/**\n * Feature/Limit Definition Schema\n * Defines a controllable capability of the system.\n */\nexport const FeatureSchema = z.object({\n code: z.string().regex(/^[a-z_][a-z0-9_.]*$/).describe('Feature code (e.g. core.api_access)'),\n label: z.string(),\n description: z.string().optional(),\n \n type: MetricType.default('boolean'),\n \n /** For counters/gauges */\n unit: z.enum(['count', 'bytes', 'seconds', 'percent']).optional(),\n \n /** Dependencies (e.g. 'audit_log' requires 'enterprise_tier') */\n requires: z.array(z.string()).optional(),\n});\n\n/**\n * Subscription Plan Schema\n * Defines a tier of service (e.g. \"Free\", \"Pro\", \"Enterprise\").\n */\nexport const PlanSchema = z.object({\n code: z.string().describe('Plan code (e.g. pro_v1)'),\n label: z.string(),\n active: z.boolean().default(true),\n \n /** Feature Entitlements */\n features: z.array(z.string()).describe('List of enabled boolean features'),\n \n /** Limit Quotas */\n limits: z.record(z.string(), z.number()).describe('Map of metric codes to limit values (e.g. { storage_gb: 10 })'),\n \n /** Pricing (Optional Metadata) */\n currency: z.string().default('USD').optional(),\n priceMonthly: z.number().optional(),\n priceYearly: z.number().optional(),\n});\n\n/**\n * License Schema\n * The actual entitlement object assigned to a Space.\n * Often signed as a JWT.\n */\nexport const LicenseSchema = z.object({\n /** Identity */\n spaceId: z.string().describe('Target Space ID'),\n planCode: z.string(),\n \n /** Validity */\n issuedAt: z.string().datetime(),\n expiresAt: z.string().datetime().optional(), // Null = Perpetual\n \n /** Status */\n status: z.enum(['active', 'expired', 'suspended', 'trial']),\n \n /** Overrides (Specific to this space, exceeding the plan) */\n customFeatures: z.array(z.string()).optional(),\n customLimits: z.record(z.string(), z.number()).optional(),\n \n /** Authorized Add-ons */\n plugins: z.array(z.string()).optional().describe('List of enabled plugin package IDs'),\n\n /** Signature */\n signature: z.string().optional().describe('Cryptographic signature of the license'),\n});\n\nexport type Feature = z.infer<typeof FeatureSchema>;\nexport type Plan = z.infer<typeof PlanSchema>;\nexport type License = z.infer<typeof LicenseSchema>;\n","import { z } from 'zod';\n\n/**\n * # Hub Federation Protocol\n * \n * Enables distributed ObjectStack Hub deployments across multiple regions,\n * data centers, or cloud providers. Supports:\n * - Multi-region plugin distribution\n * - Federated identity and tenant management\n * - Cross-region data replication\n * - Global load balancing\n * - Disaster recovery\n * \n * Use cases:\n * - Global SaaS deployments with regional data residency\n * - Multi-cloud resilience\n * - Edge computing with central management\n * - Hybrid cloud deployments\n */\n\n// ============================================================================\n// Region & Deployment Topology\n// ============================================================================\n\n/**\n * Geographic Region\n */\nexport const RegionSchema = z.object({\n /**\n * Region identifier (e.g., us-east-1, eu-west-1, ap-southeast-1)\n */\n id: z.string().regex(/^[a-z]{2}-[a-z]+-\\d+$/).describe('Region identifier'),\n \n /**\n * Display name\n */\n name: z.string().describe('Human-readable region name'),\n \n /**\n * Geographic location\n */\n location: z.object({\n continent: z.enum(['NA', 'SA', 'EU', 'AF', 'AS', 'OC', 'AN']),\n country: z.string().regex(/^[A-Z]{2}$/).describe('ISO 3166-1 alpha-2 country code'),\n city: z.string().optional(),\n latitude: z.number().min(-90).max(90).optional(),\n longitude: z.number().min(-180).max(180).optional(),\n }),\n \n /**\n * Cloud provider and region mapping\n */\n provider: z.object({\n name: z.enum(['aws', 'azure', 'gcp', 'cloudflare', 'vercel', 'self-hosted']),\n region: z.string().describe('Provider-specific region identifier'),\n }).optional(),\n \n /**\n * Region capabilities\n */\n capabilities: z.object({\n databases: z.array(z.enum(['postgres', 'mysql', 'mongodb', 'redis'])).default([]),\n storage: z.array(z.enum(['s3', 'azure-blob', 'gcs'])).default([]),\n compute: z.array(z.enum(['containers', 'serverless', 'vm'])).default([]),\n cdn: z.boolean().default(false),\n }).optional(),\n \n /**\n * Compliance and certifications\n */\n compliance: z.array(z.enum(['gdpr', 'hipaa', 'soc2', 'iso27001', 'pci-dss'])).default([]),\n \n /**\n * Region status\n */\n status: z.enum(['active', 'read-only', 'maintenance', 'deprecated']).default('active'),\n \n /**\n * Resource limits for this region\n */\n limits: z.object({\n maxSpaces: z.number().int().positive().optional(),\n maxTenants: z.number().int().positive().optional(),\n maxStorage: z.number().int().positive().optional().describe('Bytes'),\n }).optional(),\n});\n\nexport type Region = z.infer<typeof RegionSchema>;\n\n/**\n * Hub Instance\n * Represents a single Hub deployment in a region\n */\nexport const HubInstanceSchema = z.object({\n /**\n * Instance identifier\n */\n id: z.string().uuid(),\n \n /**\n * Region where this hub is deployed\n */\n regionId: z.string(),\n \n /**\n * Hub role in federation\n */\n role: z.enum([\n 'primary', // Primary/master hub\n 'secondary', // Read-replica hub\n 'edge', // Edge location for caching\n ]),\n \n /**\n * Endpoint URLs\n */\n endpoints: z.object({\n api: z.string().url().describe('Public API endpoint'),\n admin: z.string().url().optional().describe('Admin console'),\n grpc: z.string().optional().describe('gRPC endpoint for inter-hub communication'),\n }),\n \n /**\n * Replication configuration\n */\n replication: z.object({\n /**\n * Source hub for replication (if this is a secondary)\n */\n primaryHubId: z.string().uuid().optional(),\n \n /**\n * Replication lag tolerance in seconds\n */\n lagTolerance: z.number().int().positive().default(5),\n \n /**\n * Replication mode\n */\n mode: z.enum(['sync', 'async', 'semi-sync']).default('async'),\n }).optional(),\n \n /**\n * Health status\n */\n health: z.object({\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n lastCheck: z.string().datetime(),\n uptime: z.number().describe('Seconds'),\n }).optional(),\n \n /**\n * Version\n */\n version: z.string(),\n \n /**\n * Metadata\n */\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport type HubInstance = z.infer<typeof HubInstanceSchema>;\n\n// ============================================================================\n// Federation Topology\n// ============================================================================\n\n/**\n * Federation Topology\n * Defines the global hub network architecture\n */\nexport const FederationTopologySchema = z.object({\n /**\n * Federation identifier\n */\n id: z.string().uuid(),\n \n /**\n * Federation name\n */\n name: z.string(),\n \n /**\n * Regions in this federation\n */\n regions: z.array(RegionSchema),\n \n /**\n * Hub instances\n */\n hubs: z.array(HubInstanceSchema),\n \n /**\n * Routing strategy\n */\n routing: z.object({\n /**\n * How to route tenant requests\n */\n strategy: z.enum([\n 'geo-proximity', // Route to nearest region\n 'data-residency', // Route based on tenant data location\n 'least-loaded', // Route to least busy hub\n 'custom', // Custom routing logic\n ]).default('geo-proximity'),\n \n /**\n * Failover behavior\n */\n failover: z.object({\n enabled: z.boolean().default(true),\n maxRetries: z.number().int().min(0).default(3),\n timeout: z.number().int().positive().default(5000).describe('Milliseconds'),\n }),\n }),\n \n /**\n * Data synchronization settings\n */\n synchronization: z.object({\n /**\n * What data to sync across regions\n */\n scope: z.object({\n /**\n * Sync plugin registry\n */\n plugins: z.boolean().default(true),\n \n /**\n * Sync tenant metadata (not data)\n */\n tenants: z.boolean().default(true),\n \n /**\n * Sync spaces metadata\n */\n spaces: z.boolean().default(false),\n \n /**\n * Sync licenses\n */\n licenses: z.boolean().default(true),\n }),\n \n /**\n * Sync frequency\n */\n frequency: z.enum(['realtime', 'hourly', 'daily']).default('realtime'),\n \n /**\n * Conflict resolution\n */\n conflictResolution: z.enum(['last-write-wins', 'primary-wins', 'manual']).default('last-write-wins'),\n }),\n});\n\nexport type FederationTopology = z.infer<typeof FederationTopologySchema>;\n\n// ============================================================================\n// Tenant Placement\n// ============================================================================\n\n/**\n * Tenant Placement Policy\n * Determines where a tenant's data and runtime reside\n */\nexport const TenantPlacementPolicySchema = z.object({\n /**\n * Tenant identifier\n */\n tenantId: z.string(),\n \n /**\n * Primary region (where tenant data lives)\n */\n primaryRegion: z.string(),\n \n /**\n * Replica regions (for disaster recovery)\n */\n replicaRegions: z.array(z.string()).default([]),\n \n /**\n * Data residency constraints\n */\n dataResidency: z.object({\n /**\n * Allowed regions for data storage\n */\n allowedRegions: z.array(z.string()).optional(),\n \n /**\n * Prohibited regions\n */\n prohibitedRegions: z.array(z.string()).default([]),\n \n /**\n * Continent restriction\n */\n continent: z.enum(['NA', 'SA', 'EU', 'AF', 'AS', 'OC', 'AN']).optional(),\n }).optional(),\n \n /**\n * Failover policy\n */\n failover: z.object({\n /**\n * Enable automatic failover\n */\n enabled: z.boolean().default(true),\n \n /**\n * Preferred failover order (region IDs)\n */\n preferredOrder: z.array(z.string()).default([]),\n \n /**\n * Maximum acceptable latency for failover target (ms)\n */\n maxLatency: z.number().int().positive().default(100),\n }).optional(),\n \n /**\n * Latency requirements\n */\n latency: z.object({\n /**\n * Maximum acceptable latency for primary region (ms)\n */\n maxPrimaryLatency: z.number().int().positive().default(50),\n \n /**\n * Maximum acceptable latency for replicas (ms)\n */\n maxReplicaLatency: z.number().int().positive().default(200),\n }).optional(),\n});\n\nexport type TenantPlacementPolicy = z.infer<typeof TenantPlacementPolicySchema>;\n\n// ============================================================================\n// Cross-Region Operations\n// ============================================================================\n\n/**\n * Cross-Region Replication Job\n */\nexport const ReplicationJobSchema = z.object({\n /**\n * Job identifier\n */\n id: z.string().uuid(),\n \n /**\n * Job type\n */\n type: z.enum([\n 'initial-sync', // First-time full sync\n 'incremental', // Delta sync\n 'conflict-resolution', // Resolve conflicts\n ]),\n \n /**\n * Source hub\n */\n sourceHubId: z.string().uuid(),\n \n /**\n * Target hub(s)\n */\n targetHubIds: z.array(z.string().uuid()),\n \n /**\n * Resource scope\n */\n scope: z.object({\n /**\n * Resource type\n */\n resourceType: z.enum(['plugin', 'tenant', 'space', 'license', 'all']),\n \n /**\n * Specific resource IDs (empty = all)\n */\n resourceIds: z.array(z.string()).default([]),\n }),\n \n /**\n * Job status\n */\n status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']),\n \n /**\n * Progress\n */\n progress: z.object({\n total: z.number().int().min(0),\n completed: z.number().int().min(0),\n failed: z.number().int().min(0),\n }).optional(),\n \n /**\n * Timestamps\n */\n createdAt: z.string().datetime(),\n startedAt: z.string().datetime().optional(),\n completedAt: z.string().datetime().optional(),\n \n /**\n * Errors\n */\n errors: z.array(z.object({\n timestamp: z.string().datetime(),\n resourceId: z.string(),\n error: z.string(),\n })).default([]),\n});\n\nexport type ReplicationJob = z.infer<typeof ReplicationJobSchema>;\n\n/**\n * Global Registry Entry\n * Tracks where a resource exists across regions\n */\nexport const GlobalRegistryEntrySchema = z.object({\n /**\n * Resource identifier\n */\n resourceId: z.string(),\n \n /**\n * Resource type\n */\n resourceType: z.enum(['plugin', 'tenant', 'space', 'license']),\n \n /**\n * Regions where this resource exists\n */\n locations: z.array(z.object({\n regionId: z.string(),\n hubId: z.string().uuid(),\n isPrimary: z.boolean().default(false),\n lastSyncedAt: z.string().datetime().optional(),\n version: z.string().optional(),\n })),\n \n /**\n * Global version vector clock (for conflict detection)\n */\n versionVector: z.record(z.string(), z.number().int()).optional(),\n});\n\nexport type GlobalRegistryEntry = z.infer<typeof GlobalRegistryEntrySchema>;\n\n// ============================================================================\n// Edge Computing\n// ============================================================================\n\n/**\n * Edge Location\n * Represents a CDN/edge cache location\n */\nexport const EdgeLocationSchema = z.object({\n /**\n * Location identifier\n */\n id: z.string(),\n \n /**\n * Parent region\n */\n regionId: z.string(),\n \n /**\n * Location details\n */\n location: RegionSchema.shape.location,\n \n /**\n * Caching configuration\n */\n cache: z.object({\n /**\n * What to cache at edge\n */\n resources: z.array(z.enum(['plugins', 'static-assets', 'api-responses'])).default([]),\n \n /**\n * TTL in seconds\n */\n ttl: z.number().int().positive().default(3600),\n \n /**\n * Cache size limit (bytes)\n */\n maxSize: z.number().int().positive().optional(),\n }),\n \n /**\n * Status\n */\n status: z.enum(['active', 'inactive']).default('active'),\n});\n\nexport type EdgeLocation = z.infer<typeof EdgeLocationSchema>;\n\n// ============================================================================\n// Export All\n// ============================================================================\n\nexport const HubFederationProtocol = {\n Region: RegionSchema,\n HubInstance: HubInstanceSchema,\n FederationTopology: FederationTopologySchema,\n TenantPlacementPolicy: TenantPlacementPolicySchema,\n ReplicationJob: ReplicationJobSchema,\n GlobalRegistryEntry: GlobalRegistryEntrySchema,\n EdgeLocation: EdgeLocationSchema,\n} as const;\n","import { z } from 'zod';\n\n/**\n * # Plugin Security & Dependency Resolution Protocol\n * \n * Provides comprehensive security scanning, vulnerability management,\n * and dependency resolution for the ObjectStack plugin ecosystem.\n * \n * Features:\n * - CVE/vulnerability scanning\n * - Dependency graph resolution\n * - Semantic version conflict detection\n * - Supply chain security\n * - Plugin sandboxing policies\n * - Trust and verification workflows\n */\n\n// ============================================================================\n// Security Scanning\n// ============================================================================\n\n/**\n * Vulnerability Severity\n */\nexport const VulnerabilitySeverity = z.enum([\n 'critical',\n 'high',\n 'medium',\n 'low',\n 'info',\n]);\n\nexport type VulnerabilitySeverity = z.infer<typeof VulnerabilitySeverity>;\n\n/**\n * Security Vulnerability\n */\nexport const SecurityVulnerabilitySchema = z.object({\n /**\n * CVE identifier (if applicable)\n */\n cve: z.string().regex(/^CVE-\\d{4}-\\d+$/).optional().describe('CVE identifier'),\n \n /**\n * Vulnerability identifier (GHSA, SNYK, etc.)\n */\n id: z.string().describe('Vulnerability ID'),\n \n /**\n * Title\n */\n title: z.string(),\n \n /**\n * Description\n */\n description: z.string(),\n \n /**\n * Severity\n */\n severity: VulnerabilitySeverity,\n \n /**\n * CVSS score (0-10)\n */\n cvss: z.number().min(0).max(10).optional(),\n \n /**\n * Affected package\n */\n package: z.object({\n name: z.string(),\n version: z.string(),\n ecosystem: z.string().optional(),\n }),\n \n /**\n * Vulnerable version range\n */\n vulnerableVersions: z.string().describe('Semver range of vulnerable versions'),\n \n /**\n * Patched versions\n */\n patchedVersions: z.string().optional().describe('Semver range of patched versions'),\n \n /**\n * References\n */\n references: z.array(z.object({\n type: z.enum(['advisory', 'article', 'report', 'web']),\n url: z.string().url(),\n })).default([]),\n \n /**\n * CWE (Common Weakness Enumeration)\n */\n cwe: z.array(z.string()).default([]),\n \n /**\n * Published date\n */\n publishedAt: z.string().datetime().optional(),\n \n /**\n * Mitigation advice\n */\n mitigation: z.string().optional(),\n});\n\nexport type SecurityVulnerability = z.infer<typeof SecurityVulnerabilitySchema>;\n\n/**\n * Security Scan Result\n */\nexport const SecurityScanResultSchema = z.object({\n /**\n * Scan identifier\n */\n scanId: z.string().uuid(),\n \n /**\n * Plugin being scanned\n */\n plugin: z.object({\n id: z.string(),\n version: z.string(),\n }),\n \n /**\n * Scan timestamp\n */\n scannedAt: z.string().datetime(),\n \n /**\n * Scanner information\n */\n scanner: z.object({\n name: z.string().describe('Scanner name (e.g., snyk, osv, trivy)'),\n version: z.string(),\n }),\n \n /**\n * Scan status\n */\n status: z.enum(['passed', 'failed', 'warning']),\n \n /**\n * Vulnerabilities found\n */\n vulnerabilities: z.array(SecurityVulnerabilitySchema),\n \n /**\n * Vulnerability summary\n */\n summary: z.object({\n critical: z.number().int().min(0).default(0),\n high: z.number().int().min(0).default(0),\n medium: z.number().int().min(0).default(0),\n low: z.number().int().min(0).default(0),\n info: z.number().int().min(0).default(0),\n total: z.number().int().min(0).default(0),\n }),\n \n /**\n * License compliance issues\n */\n licenseIssues: z.array(z.object({\n package: z.string(),\n license: z.string(),\n reason: z.string(),\n severity: z.enum(['error', 'warning', 'info']),\n })).default([]),\n \n /**\n * Code quality issues\n */\n codeQuality: z.object({\n score: z.number().min(0).max(100).optional(),\n issues: z.array(z.object({\n type: z.enum(['security', 'quality', 'style']),\n severity: z.enum(['error', 'warning', 'info']),\n message: z.string(),\n file: z.string().optional(),\n line: z.number().int().optional(),\n })).default([]),\n }).optional(),\n \n /**\n * Next scan scheduled\n */\n nextScanAt: z.string().datetime().optional(),\n});\n\nexport type SecurityScanResult = z.infer<typeof SecurityScanResultSchema>;\n\n/**\n * Security Policy\n */\nexport const SecurityPolicySchema = z.object({\n /**\n * Policy identifier\n */\n id: z.string(),\n \n /**\n * Policy name\n */\n name: z.string(),\n \n /**\n * Automatic scanning\n */\n autoScan: z.object({\n enabled: z.boolean().default(true),\n frequency: z.enum(['on-publish', 'daily', 'weekly', 'monthly']).default('daily'),\n }),\n \n /**\n * Vulnerability thresholds\n */\n thresholds: z.object({\n /**\n * Block plugin if critical vulnerabilities exceed this\n */\n maxCritical: z.number().int().min(0).default(0),\n \n /**\n * Block plugin if high vulnerabilities exceed this\n */\n maxHigh: z.number().int().min(0).default(0),\n \n /**\n * Warn if medium vulnerabilities exceed this\n */\n maxMedium: z.number().int().min(0).default(5),\n }),\n \n /**\n * Allowed licenses\n */\n allowedLicenses: z.array(z.string()).default([\n 'MIT',\n 'Apache-2.0',\n 'BSD-3-Clause',\n 'BSD-2-Clause',\n 'ISC',\n ]),\n \n /**\n * Prohibited licenses\n */\n prohibitedLicenses: z.array(z.string()).default([\n 'GPL-3.0',\n 'AGPL-3.0',\n ]),\n \n /**\n * Code signing requirements\n */\n codeSigning: z.object({\n required: z.boolean().default(false),\n allowedSigners: z.array(z.string()).default([]),\n }).optional(),\n \n /**\n * Sandbox restrictions\n */\n sandbox: z.object({\n /**\n * Restrict network access\n */\n networkAccess: z.enum(['none', 'localhost', 'allowlist', 'all']).default('all'),\n \n /**\n * Allowed network destinations (if allowlist)\n */\n allowedDestinations: z.array(z.string()).default([]),\n \n /**\n * File system access\n */\n filesystemAccess: z.enum(['none', 'read-only', 'temp-only', 'full']).default('full'),\n \n /**\n * Maximum memory (MB)\n */\n maxMemoryMB: z.number().int().positive().optional(),\n \n /**\n * Maximum CPU time (seconds)\n */\n maxCPUSeconds: z.number().int().positive().optional(),\n }).optional(),\n});\n\nexport type SecurityPolicy = z.infer<typeof SecurityPolicySchema>;\n\n// ============================================================================\n// Dependency Resolution\n// ============================================================================\n\n/**\n * Package Dependency\n */\nexport const PackageDependencySchema = z.object({\n /**\n * Package name/ID\n */\n name: z.string(),\n \n /**\n * Version constraint (semver range)\n */\n versionConstraint: z.string().describe('Semver range (e.g., `^1.0.0`, `>=2.0.0 <3.0.0`)'),\n \n /**\n * Dependency type\n */\n type: z.enum(['required', 'optional', 'peer', 'dev']).default('required'),\n \n /**\n * Resolved version (filled during resolution)\n */\n resolvedVersion: z.string().optional(),\n});\n\nexport type PackageDependency = z.infer<typeof PackageDependencySchema>;\n\n/**\n * Dependency Graph Node\n */\nexport const DependencyGraphNodeSchema = z.object({\n /**\n * Package identifier\n */\n id: z.string(),\n \n /**\n * Package version\n */\n version: z.string(),\n \n /**\n * Dependencies of this package\n */\n dependencies: z.array(PackageDependencySchema).default([]),\n \n /**\n * Depth in dependency tree\n */\n depth: z.number().int().min(0),\n \n /**\n * Whether this is a direct dependency\n */\n isDirect: z.boolean(),\n \n /**\n * Package metadata\n */\n metadata: z.object({\n name: z.string(),\n description: z.string().optional(),\n license: z.string().optional(),\n homepage: z.string().url().optional(),\n }).optional(),\n});\n\nexport type DependencyGraphNode = z.infer<typeof DependencyGraphNodeSchema>;\n\n/**\n * Dependency Graph\n */\nexport const DependencyGraphSchema = z.object({\n /**\n * Root package\n */\n root: z.object({\n id: z.string(),\n version: z.string(),\n }),\n \n /**\n * All nodes in the graph\n */\n nodes: z.array(DependencyGraphNodeSchema),\n \n /**\n * Edges (dependency relationships)\n */\n edges: z.array(z.object({\n from: z.string().describe('Package ID'),\n to: z.string().describe('Package ID'),\n constraint: z.string().describe('Version constraint'),\n })),\n \n /**\n * Resolution statistics\n */\n stats: z.object({\n totalDependencies: z.number().int().min(0),\n directDependencies: z.number().int().min(0),\n maxDepth: z.number().int().min(0),\n }),\n});\n\nexport type DependencyGraph = z.infer<typeof DependencyGraphSchema>;\n\n/**\n * Dependency Conflict\n */\nexport const DependencyConflictSchema = z.object({\n /**\n * Package with conflict\n */\n package: z.string(),\n \n /**\n * Conflicting versions\n */\n conflicts: z.array(z.object({\n version: z.string(),\n requestedBy: z.array(z.string()).describe('Packages that require this version'),\n constraint: z.string(),\n })),\n \n /**\n * Suggested resolution\n */\n resolution: z.object({\n strategy: z.enum(['pick-highest', 'pick-lowest', 'manual']),\n version: z.string().optional(),\n reason: z.string().optional(),\n }).optional(),\n \n /**\n * Severity\n */\n severity: z.enum(['error', 'warning', 'info']),\n});\n\nexport type DependencyConflict = z.infer<typeof DependencyConflictSchema>;\n\n/**\n * Dependency Resolution Result\n */\nexport const DependencyResolutionResultSchema = z.object({\n /**\n * Resolution status\n */\n status: z.enum(['success', 'conflict', 'error']),\n \n /**\n * Resolved dependency graph\n */\n graph: DependencyGraphSchema.optional(),\n \n /**\n * Conflicts detected\n */\n conflicts: z.array(DependencyConflictSchema).default([]),\n \n /**\n * Errors encountered\n */\n errors: z.array(z.object({\n package: z.string(),\n error: z.string(),\n })).default([]),\n \n /**\n * Installation order (topological sort)\n */\n installOrder: z.array(z.string()).default([]),\n \n /**\n * Resolution time (ms)\n */\n resolvedIn: z.number().int().min(0).optional(),\n});\n\nexport type DependencyResolutionResult = z.infer<typeof DependencyResolutionResultSchema>;\n\n// ============================================================================\n// Supply Chain Security\n// ============================================================================\n\n/**\n * SBOM (Software Bill of Materials) Entry\n */\nexport const SBOMEntrySchema = z.object({\n /**\n * Component name\n */\n name: z.string(),\n \n /**\n * Component version\n */\n version: z.string(),\n \n /**\n * Package URL (purl)\n */\n purl: z.string().optional().describe('Package URL identifier'),\n \n /**\n * License\n */\n license: z.string().optional(),\n \n /**\n * Hashes\n */\n hashes: z.object({\n sha256: z.string().optional(),\n sha512: z.string().optional(),\n }).optional(),\n \n /**\n * Supplier\n */\n supplier: z.object({\n name: z.string(),\n url: z.string().url().optional(),\n }).optional(),\n \n /**\n * External references\n */\n externalRefs: z.array(z.object({\n type: z.enum(['website', 'repository', 'documentation', 'issue-tracker']),\n url: z.string().url(),\n })).default([]),\n});\n\nexport type SBOMEntry = z.infer<typeof SBOMEntrySchema>;\n\n/**\n * Software Bill of Materials (SBOM)\n */\nexport const SBOMSchema = z.object({\n /**\n * SBOM format\n */\n format: z.enum(['spdx', 'cyclonedx']).default('cyclonedx'),\n \n /**\n * SBOM version\n */\n version: z.string(),\n \n /**\n * Plugin metadata\n */\n plugin: z.object({\n id: z.string(),\n version: z.string(),\n name: z.string(),\n }),\n \n /**\n * Components (dependencies)\n */\n components: z.array(SBOMEntrySchema),\n \n /**\n * Generation timestamp\n */\n generatedAt: z.string().datetime(),\n \n /**\n * Generator tool\n */\n generator: z.object({\n name: z.string(),\n version: z.string(),\n }).optional(),\n});\n\nexport type SBOM = z.infer<typeof SBOMSchema>;\n\n/**\n * Plugin Provenance\n * Verifiable chain of custody for plugin artifacts\n */\nexport const PluginProvenanceSchema = z.object({\n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Plugin version\n */\n version: z.string(),\n \n /**\n * Build information\n */\n build: z.object({\n /**\n * Build timestamp\n */\n timestamp: z.string().datetime(),\n \n /**\n * Build environment\n */\n environment: z.object({\n os: z.string(),\n arch: z.string(),\n nodeVersion: z.string(),\n }).optional(),\n \n /**\n * Source repository\n */\n source: z.object({\n repository: z.string().url(),\n commit: z.string().regex(/^[a-f0-9]{40}$/),\n branch: z.string().optional(),\n tag: z.string().optional(),\n }).optional(),\n \n /**\n * Builder identity\n */\n builder: z.object({\n name: z.string(),\n email: z.string().email().optional(),\n }).optional(),\n }),\n \n /**\n * Artifact hashes\n */\n artifacts: z.array(z.object({\n filename: z.string(),\n sha256: z.string(),\n size: z.number().int().positive(),\n })),\n \n /**\n * Signatures\n */\n signatures: z.array(z.object({\n algorithm: z.enum(['rsa', 'ecdsa', 'ed25519']),\n publicKey: z.string(),\n signature: z.string(),\n signedBy: z.string(),\n timestamp: z.string().datetime(),\n })).default([]),\n \n /**\n * Attestations\n */\n attestations: z.array(z.object({\n type: z.enum(['code-review', 'security-scan', 'test-results', 'ci-build']),\n status: z.enum(['passed', 'failed']),\n url: z.string().url().optional(),\n timestamp: z.string().datetime(),\n })).default([]),\n});\n\nexport type PluginProvenance = z.infer<typeof PluginProvenanceSchema>;\n\n// ============================================================================\n// Trust & Verification\n// ============================================================================\n\n/**\n * Plugin Trust Score\n */\nexport const PluginTrustScoreSchema = z.object({\n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Overall trust score (0-100)\n */\n score: z.number().min(0).max(100),\n \n /**\n * Score components\n */\n components: z.object({\n /**\n * Vendor reputation (0-100)\n */\n vendorReputation: z.number().min(0).max(100),\n \n /**\n * Security scan results (0-100)\n */\n securityScore: z.number().min(0).max(100),\n \n /**\n * Code quality (0-100)\n */\n codeQuality: z.number().min(0).max(100),\n \n /**\n * Community engagement (0-100)\n */\n communityScore: z.number().min(0).max(100),\n \n /**\n * Update frequency (0-100)\n */\n maintenanceScore: z.number().min(0).max(100),\n }),\n \n /**\n * Trust level\n */\n level: z.enum(['verified', 'trusted', 'neutral', 'untrusted', 'blocked']),\n \n /**\n * Verification badges\n */\n badges: z.array(z.enum([\n 'official', // Official ObjectStack plugin\n 'verified-vendor', // Verified vendor\n 'security-scanned', // Passed security scan\n 'code-signed', // Digitally signed\n 'open-source', // Open source\n 'popular', // High downloads\n ])).default([]),\n \n /**\n * Last updated\n */\n updatedAt: z.string().datetime(),\n});\n\nexport type PluginTrustScore = z.infer<typeof PluginTrustScoreSchema>;\n\n// ============================================================================\n// Export All\n// ============================================================================\n\nexport const PluginSecurityProtocol = {\n VulnerabilitySeverity,\n SecurityVulnerability: SecurityVulnerabilitySchema,\n SecurityScanResult: SecurityScanResultSchema,\n SecurityPolicy: SecurityPolicySchema,\n PackageDependency: PackageDependencySchema,\n DependencyGraphNode: DependencyGraphNodeSchema,\n DependencyGraph: DependencyGraphSchema,\n DependencyConflict: DependencyConflictSchema,\n DependencyResolutionResult: DependencyResolutionResultSchema,\n SBOMEntry: SBOMEntrySchema,\n SBOM: SBOMSchema,\n PluginProvenance: PluginProvenanceSchema,\n PluginTrustScore: PluginTrustScoreSchema,\n} as const;\n","import { z } from 'zod';\nimport { HttpMethod } from '../shared/http.zod';\n\n/**\n * REST API Server Protocol\n * \n * Defines the REST API server configuration for automatically generating\n * RESTful CRUD endpoints, metadata endpoints, and batch operations.\n * \n * Features:\n * - Automatic CRUD endpoint generation from Object definitions\n * - Standard REST conventions (GET, POST, PUT, PATCH, DELETE)\n * - Metadata API endpoints\n * - Batch operation endpoints\n * - OpenAPI/Swagger documentation generation\n * \n * Architecture alignment:\n * - Salesforce: REST API with Object CRUD\n * - Microsoft Dynamics: Web API with entity operations\n * - Strapi: Auto-generated REST endpoints\n */\n\n// ==========================================\n// REST API Configuration\n// ==========================================\n\n/**\n * REST API Configuration Schema\n * Core configuration for REST API server\n * \n * @example\n * {\n * \"version\": \"v1\",\n * \"basePath\": \"/api\",\n * \"enableCrud\": true,\n * \"enableMetadata\": true,\n * \"enableBatch\": true,\n * \"documentation\": {\n * \"enabled\": true,\n * \"title\": \"ObjectStack API\"\n * }\n * }\n */\nexport const RestApiConfigSchema = z.object({\n /**\n * API version identifier\n */\n version: z.string().regex(/^[a-zA-Z0-9_\\-\\.]+$/).default('v1').describe('API version (e.g., v1, v2, 2024-01)'),\n \n /**\n * Base path for all API routes\n */\n basePath: z.string().default('/api').describe('Base URL path for API'),\n \n /**\n * Full API path (combines basePath and version)\n */\n apiPath: z.string().optional().describe('Full API path (defaults to {basePath}/{version})'),\n \n /**\n * Enable automatic CRUD endpoints\n */\n enableCrud: z.boolean().default(true).describe('Enable automatic CRUD endpoint generation'),\n \n /**\n * Enable metadata endpoints\n */\n enableMetadata: z.boolean().default(true).describe('Enable metadata API endpoints'),\n \n /**\n * Enable batch operation endpoints\n */\n enableBatch: z.boolean().default(true).describe('Enable batch operation endpoints'),\n \n /**\n * Enable discovery endpoint\n */\n enableDiscovery: z.boolean().default(true).describe('Enable API discovery endpoint'),\n \n /**\n * API documentation configuration\n */\n documentation: z.object({\n enabled: z.boolean().default(true).describe('Enable API documentation'),\n title: z.string().default('ObjectStack API').describe('API documentation title'),\n description: z.string().optional().describe('API description'),\n version: z.string().optional().describe('Documentation version'),\n termsOfService: z.string().optional().describe('Terms of service URL'),\n contact: z.object({\n name: z.string().optional(),\n url: z.string().optional(),\n email: z.string().optional(),\n }).optional(),\n license: z.object({\n name: z.string(),\n url: z.string().optional(),\n }).optional(),\n }).optional().describe('OpenAPI/Swagger documentation config'),\n \n /**\n * Response format configuration\n */\n responseFormat: z.object({\n envelope: z.boolean().default(true).describe('Wrap responses in standard envelope'),\n includeMetadata: z.boolean().default(true).describe('Include response metadata (timestamp, requestId)'),\n includePagination: z.boolean().default(true).describe('Include pagination info in list responses'),\n }).optional().describe('Response format options'),\n});\n\nexport type RestApiConfig = z.infer<typeof RestApiConfigSchema>;\n\n// ==========================================\n// CRUD Endpoint Configuration\n// ==========================================\n\n/**\n * CRUD Operation Type Enum\n */\nexport const CrudOperation = z.enum([\n 'create', // POST /api/v1/data/{object}\n 'read', // GET /api/v1/data/{object}/:id\n 'update', // PATCH /api/v1/data/{object}/:id\n 'delete', // DELETE /api/v1/data/{object}/:id\n 'list', // GET /api/v1/data/{object}\n]);\n\nexport type CrudOperation = z.infer<typeof CrudOperation>;\n\n/**\n * CRUD Endpoint Pattern Schema\n * Defines the URL pattern for CRUD operations\n * \n * @example\n * {\n * \"create\": { \"method\": \"POST\", \"path\": \"/data/{object}\" },\n * \"read\": { \"method\": \"GET\", \"path\": \"/data/{object}/:id\" },\n * \"update\": { \"method\": \"PATCH\", \"path\": \"/data/{object}/:id\" },\n * \"delete\": { \"method\": \"DELETE\", \"path\": \"/data/{object}/:id\" },\n * \"list\": { \"method\": \"GET\", \"path\": \"/data/{object}\" }\n * }\n */\nexport const CrudEndpointPatternSchema = z.object({\n /**\n * HTTP method\n */\n method: HttpMethod.describe('HTTP method'),\n \n /**\n * URL path pattern (relative to API base)\n */\n path: z.string().describe('URL path pattern'),\n \n /**\n * Operation summary for documentation\n */\n summary: z.string().optional().describe('Operation summary'),\n \n /**\n * Operation description\n */\n description: z.string().optional().describe('Operation description'),\n});\n\nexport type CrudEndpointPattern = z.infer<typeof CrudEndpointPatternSchema>;\n\n/**\n * CRUD Endpoints Configuration Schema\n * Configuration for automatic CRUD endpoint generation\n */\nexport const CrudEndpointsConfigSchema = z.object({\n /**\n * Enable/disable specific CRUD operations\n */\n operations: z.object({\n create: z.boolean().default(true).describe('Enable create operation'),\n read: z.boolean().default(true).describe('Enable read operation'),\n update: z.boolean().default(true).describe('Enable update operation'),\n delete: z.boolean().default(true).describe('Enable delete operation'),\n list: z.boolean().default(true).describe('Enable list operation'),\n }).optional().describe('Enable/disable operations'),\n \n /**\n * Custom endpoint patterns (override defaults)\n */\n patterns: z.record(CrudOperation, CrudEndpointPatternSchema.optional()).optional()\n .describe('Custom URL patterns for operations'),\n \n /**\n * Path prefix for data operations\n */\n dataPrefix: z.string().default('/data').describe('URL prefix for data endpoints'),\n \n /**\n * Object name parameter style\n */\n objectParamStyle: z.enum(['path', 'query']).default('path')\n .describe('How object name is passed (path param or query param)'),\n});\n\nexport type CrudEndpointsConfig = z.infer<typeof CrudEndpointsConfigSchema>;\n\n// ==========================================\n// Metadata Endpoint Configuration\n// ==========================================\n\n/**\n * Metadata Endpoint Configuration Schema\n * Configuration for metadata API endpoints\n * \n * @example\n * {\n * \"prefix\": \"/meta\",\n * \"enableCache\": true,\n * \"endpoints\": {\n * \"types\": true,\n * \"objects\": true,\n * \"fields\": true\n * }\n * }\n */\nexport const MetadataEndpointsConfigSchema = z.object({\n /**\n * Path prefix for metadata operations\n */\n prefix: z.string().default('/meta').describe('URL prefix for metadata endpoints'),\n \n /**\n * Enable HTTP caching for metadata\n */\n enableCache: z.boolean().default(true).describe('Enable HTTP cache headers (ETag, Last-Modified)'),\n \n /**\n * Cache TTL in seconds\n */\n cacheTtl: z.number().int().default(3600).describe('Cache TTL in seconds'),\n \n /**\n * Enable specific metadata endpoints\n */\n endpoints: z.object({\n types: z.boolean().default(true).describe('GET /meta - List all metadata types'),\n items: z.boolean().default(true).describe('GET /meta/:type - List items of type'),\n item: z.boolean().default(true).describe('GET /meta/:type/:name - Get specific item'),\n schema: z.boolean().default(true).describe('GET /meta/:type/:name/schema - Get JSON schema'),\n }).optional().describe('Enable/disable specific endpoints'),\n});\n\nexport type MetadataEndpointsConfig = z.infer<typeof MetadataEndpointsConfigSchema>;\n\n// ==========================================\n// Batch Operation Endpoint Configuration\n// ==========================================\n\n/**\n * Batch Operation Endpoint Configuration Schema\n * Configuration for batch/bulk operation endpoints\n * \n * @example\n * {\n * \"maxBatchSize\": 200,\n * \"enableBatchEndpoint\": true,\n * \"enableCreateMany\": true,\n * \"enableUpdateMany\": true,\n * \"enableDeleteMany\": true\n * }\n */\nexport const BatchEndpointsConfigSchema = z.object({\n /**\n * Maximum batch size\n */\n maxBatchSize: z.number().int().min(1).max(1000).default(200)\n .describe('Maximum records per batch operation'),\n \n /**\n * Enable generic batch endpoint\n */\n enableBatchEndpoint: z.boolean().default(true)\n .describe('Enable POST /data/:object/batch endpoint'),\n \n /**\n * Enable specific batch operations\n */\n operations: z.object({\n createMany: z.boolean().default(true).describe('Enable POST /data/:object/createMany'),\n updateMany: z.boolean().default(true).describe('Enable POST /data/:object/updateMany'),\n deleteMany: z.boolean().default(true).describe('Enable POST /data/:object/deleteMany'),\n upsertMany: z.boolean().default(true).describe('Enable POST /data/:object/upsertMany'),\n }).optional().describe('Enable/disable specific batch operations'),\n \n /**\n * Transaction mode default\n */\n defaultAtomic: z.boolean().default(true)\n .describe('Default atomic/transaction mode for batch operations'),\n});\n\nexport type BatchEndpointsConfig = z.infer<typeof BatchEndpointsConfigSchema>;\n\n// ==========================================\n// Route Generation Configuration\n// ==========================================\n\n/**\n * Route Generation Configuration Schema\n * Controls automatic route generation for objects\n */\nexport const RouteGenerationConfigSchema = z.object({\n /**\n * Objects to include (if empty, include all)\n */\n includeObjects: z.array(z.string()).optional()\n .describe('Specific objects to generate routes for (empty = all)'),\n \n /**\n * Objects to exclude\n */\n excludeObjects: z.array(z.string()).optional()\n .describe('Objects to exclude from route generation'),\n \n /**\n * Object name transformations\n */\n nameTransform: z.enum(['none', 'plural', 'kebab-case', 'camelCase']).default('none')\n .describe('Transform object names in URLs'),\n \n /**\n * Custom route overrides per object\n */\n overrides: z.record(z.string(), z.object({\n enabled: z.boolean().optional().describe('Enable/disable routes for this object'),\n basePath: z.string().optional().describe('Custom base path'),\n operations: z.record(CrudOperation, z.boolean()).optional()\n .describe('Enable/disable specific operations'),\n })).optional().describe('Per-object route customization'),\n});\n\nexport type RouteGenerationConfig = z.infer<typeof RouteGenerationConfigSchema>;\n\n// ==========================================\n// Complete REST Server Configuration\n// ==========================================\n\n/**\n * REST Server Configuration Schema\n * Complete configuration for REST API server with auto-generated endpoints\n * \n * @example\n * {\n * \"api\": {\n * \"version\": \"v1\",\n * \"basePath\": \"/api\",\n * \"enableCrud\": true,\n * \"enableMetadata\": true,\n * \"enableBatch\": true\n * },\n * \"crud\": {\n * \"dataPrefix\": \"/data\"\n * },\n * \"metadata\": {\n * \"prefix\": \"/meta\",\n * \"enableCache\": true\n * },\n * \"batch\": {\n * \"maxBatchSize\": 200\n * },\n * \"routes\": {\n * \"excludeObjects\": [\"system_log\"]\n * }\n * }\n */\nexport const RestServerConfigSchema = z.object({\n /**\n * API configuration\n */\n api: RestApiConfigSchema.optional().describe('REST API configuration'),\n \n /**\n * CRUD endpoints configuration\n */\n crud: CrudEndpointsConfigSchema.optional().describe('CRUD endpoints configuration'),\n \n /**\n * Metadata endpoints configuration\n */\n metadata: MetadataEndpointsConfigSchema.optional().describe('Metadata endpoints configuration'),\n \n /**\n * Batch endpoints configuration\n */\n batch: BatchEndpointsConfigSchema.optional().describe('Batch endpoints configuration'),\n \n /**\n * Route generation configuration\n */\n routes: RouteGenerationConfigSchema.optional().describe('Route generation configuration'),\n});\n\nexport type RestServerConfig = z.infer<typeof RestServerConfigSchema>;\n\n// ==========================================\n// Endpoint Registry\n// ==========================================\n\n/**\n * Generated Endpoint Schema\n * Represents a generated REST endpoint\n */\nexport const GeneratedEndpointSchema = z.object({\n /**\n * Endpoint identifier\n */\n id: z.string().describe('Unique endpoint identifier'),\n \n /**\n * HTTP method\n */\n method: HttpMethod.describe('HTTP method'),\n \n /**\n * Full URL path\n */\n path: z.string().describe('Full URL path'),\n \n /**\n * Object this endpoint operates on\n */\n object: z.string().describe('Object name (snake_case)'),\n \n /**\n * Operation type\n */\n operation: z.union([CrudOperation, z.string()]).describe('Operation type'),\n \n /**\n * Handler reference\n */\n handler: z.string().describe('Handler function identifier'),\n \n /**\n * Endpoint metadata\n */\n metadata: z.object({\n summary: z.string().optional(),\n description: z.string().optional(),\n tags: z.array(z.string()).optional(),\n deprecated: z.boolean().optional(),\n }).optional(),\n});\n\nexport type GeneratedEndpoint = z.infer<typeof GeneratedEndpointSchema>;\n\n/**\n * Endpoint Registry Schema\n * Registry of all generated endpoints\n */\nexport const EndpointRegistrySchema = z.object({\n /**\n * Generated endpoints\n */\n endpoints: z.array(GeneratedEndpointSchema).describe('All generated endpoints'),\n \n /**\n * Total endpoint count\n */\n total: z.number().int().describe('Total number of endpoints'),\n \n /**\n * Endpoints by object\n */\n byObject: z.record(z.string(), z.array(GeneratedEndpointSchema)).optional()\n .describe('Endpoints grouped by object'),\n \n /**\n * Endpoints by operation\n */\n byOperation: z.record(z.string(), z.array(GeneratedEndpointSchema)).optional()\n .describe('Endpoints grouped by operation'),\n});\n\nexport type EndpointRegistry = z.infer<typeof EndpointRegistrySchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Helper to create REST API configuration\n */\nexport const RestApiConfig = Object.assign(RestApiConfigSchema, {\n create: <T extends z.input<typeof RestApiConfigSchema>>(config: T) => config,\n});\n\n/**\n * Helper to create REST server configuration\n */\nexport const RestServerConfig = Object.assign(RestServerConfigSchema, {\n create: <T extends z.input<typeof RestServerConfigSchema>>(config: T) => config,\n});\n","import { z } from 'zod';\nimport { HttpMethod, RateLimitConfigSchema } from '../shared/http.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * Unified API Registry Protocol\n * \n * Provides a centralized registry for managing all API endpoints across different\n * API types (REST, GraphQL, OData, WebSocket, Auth, File, Plugin-registered).\n * \n * This enables:\n * - Unified API discovery and documentation (similar to Swagger/OpenAPI)\n * - API testing interfaces\n * - API governance and monitoring\n * - Plugin API registration\n * - Multi-protocol support\n * \n * Architecture Alignment:\n * - Kubernetes: Service Discovery & API Server\n * - AWS API Gateway: Unified API Management\n * - Kong Gateway: Plugin-based API Management\n * \n * @example API Registry Entry\n * ```typescript\n * const apiEntry: ApiRegistryEntry = {\n * id: 'customer_crud',\n * name: 'Customer CRUD API',\n * type: 'rest',\n * version: 'v1',\n * basePath: '/api/v1/data/customer',\n * endpoints: [...],\n * metadata: {\n * owner: 'sales_team',\n * tags: ['customer', 'crm']\n * }\n * }\n * ```\n */\n\n// ==========================================\n// API Type Enumeration\n// ==========================================\n\n/**\n * API Protocol Type\n * \n * Defines the different types of APIs supported by ObjectStack.\n */\nexport const ApiProtocolType = z.enum([\n 'rest', // RESTful API (CRUD operations)\n 'graphql', // GraphQL API (flexible queries)\n 'odata', // OData v4 API (enterprise integration)\n 'websocket', // WebSocket API (real-time)\n 'file', // File/Storage API (uploads/downloads)\n 'auth', // Authentication/Authorization API\n 'metadata', // Metadata/Schema API\n 'plugin', // Plugin-registered custom API\n 'webhook', // Webhook endpoints\n 'rpc', // JSON-RPC or similar\n]);\n\nexport type ApiProtocolType = z.infer<typeof ApiProtocolType>;\n\n// ==========================================\n// API Endpoint Registration\n// ==========================================\n\n/**\n * HTTP Status Code\n */\nexport const HttpStatusCode = z.union([\n z.number().int().min(100).max(599),\n z.enum(['2xx', '3xx', '4xx', '5xx']), // Pattern matching\n]);\n\nexport type HttpStatusCode = z.infer<typeof HttpStatusCode>;\n\n// ==========================================\n// Schema Reference Types\n// ==========================================\n\n/**\n * ObjectQL Reference Schema\n * \n * Allows referencing ObjectStack data objects instead of static JSON schemas.\n * When an API parameter or response references an ObjectQL object, the schema\n * is dynamically derived from the object definition, enabling automatic updates\n * when the object schema changes.\n * \n * **IMPORTANT - Schema Resolution Responsibility:**\n * The API Registry STORES these references as metadata but does NOT resolve them.\n * Schema resolution (expanding references into actual JSON Schema) is performed by:\n * - **API Gateway**: For runtime request/response validation\n * - **OpenAPI Generator**: For Swagger/OpenAPI documentation\n * - **GraphQL Schema Builder**: For GraphQL type generation\n * - **Documentation Tools**: For developer documentation\n * \n * This separation allows the Registry to remain lightweight and focused on\n * registration/discovery, while specialized tools handle schema transformation.\n * \n * **Benefits:**\n * - Auto-updating API documentation when object schemas change\n * - Consistent type definitions across API and database\n * - Reduced duplication and maintenance\n * - Registry remains protocol-agnostic and lightweight\n * \n * @example Reference Customer object\n * ```json\n * {\n * \"objectId\": \"customer\",\n * \"includeFields\": [\"id\", \"name\", \"email\"],\n * \"excludeFields\": [\"internal_notes\"]\n * }\n * ```\n */\nexport const ObjectQLReferenceSchema = z.object({\n /** Referenced object name (snake_case) */\n objectId: SnakeCaseIdentifierSchema.describe('Object name to reference'),\n \n /** Include only specific fields (optional) */\n includeFields: z.array(z.string()).optional()\n .describe('Include only these fields in the schema'),\n \n /** Exclude specific fields (optional) */\n excludeFields: z.array(z.string()).optional()\n .describe('Exclude these fields from the schema'),\n \n /** Include related objects via lookup fields */\n includeRelated: z.array(z.string()).optional()\n .describe('Include related objects via lookup fields'),\n});\n\nexport type ObjectQLReference = z.infer<typeof ObjectQLReferenceSchema>;\n\n/**\n * Schema Definition\n * \n * Unified schema definition that supports both:\n * 1. Static JSON Schema (traditional approach)\n * 2. Dynamic ObjectQL reference (linked to object definitions)\n * \n * When using ObjectQL references, the API documentation and validation\n * automatically update when object schemas change, eliminating the need\n * to manually sync API schemas with data models.\n */\nexport const SchemaDefinition = z.union([\n z.any().describe('Static JSON Schema definition'),\n z.object({\n $ref: ObjectQLReferenceSchema.describe('Dynamic reference to ObjectQL object'),\n }).describe('Dynamic ObjectQL reference'),\n]);\n\nexport type SchemaDefinition = z.infer<typeof SchemaDefinition>;\n\n// ==========================================\n// API Parameter & Response Schemas\n// ==========================================\n\n/**\n * API Parameter Schema\n * \n * Defines a single API parameter (path, query, header, or body).\n * \n * **Enhancement: Dynamic Schema Linking**\n * - Supports both static JSON Schema and dynamic ObjectQL references\n * - When using ObjectQL references, parameter validation automatically updates\n * when the referenced object schema changes\n * \n * @example Static schema\n * ```json\n * {\n * \"name\": \"customer_id\",\n * \"in\": \"path\",\n * \"schema\": {\n * \"type\": \"string\",\n * \"format\": \"uuid\"\n * }\n * }\n * ```\n * \n * @example Dynamic ObjectQL reference\n * ```json\n * {\n * \"name\": \"customer\",\n * \"in\": \"body\",\n * \"schema\": {\n * \"$ref\": {\n * \"objectId\": \"customer\",\n * \"excludeFields\": [\"internal_notes\"]\n * }\n * }\n * }\n * ```\n */\nexport const ApiParameterSchema = z.object({\n /** Parameter name */\n name: z.string().describe('Parameter name'),\n \n /** Parameter location */\n in: z.enum(['path', 'query', 'header', 'body', 'cookie']).describe('Parameter location'),\n \n /** Parameter description */\n description: z.string().optional().describe('Parameter description'),\n \n /** Required flag */\n required: z.boolean().default(false).describe('Whether parameter is required'),\n \n /** Parameter type/schema - supports static or dynamic (ObjectQL) schemas */\n schema: z.union([\n z.object({\n type: z.enum(['string', 'number', 'integer', 'boolean', 'array', 'object']).describe('Parameter type'),\n format: z.string().optional().describe('Format (e.g., date-time, email, uuid)'),\n enum: z.array(z.any()).optional().describe('Allowed values'),\n default: z.any().optional().describe('Default value'),\n items: z.any().optional().describe('Array item schema'),\n properties: z.record(z.string(), z.any()).optional().describe('Object properties'),\n }).describe('Static JSON Schema'),\n z.object({\n $ref: ObjectQLReferenceSchema,\n }).describe('Dynamic ObjectQL reference'),\n ]).describe('Parameter schema definition'),\n \n /** Example value */\n example: z.any().optional().describe('Example value'),\n});\n\nexport type ApiParameter = z.infer<typeof ApiParameterSchema>;\n\n/**\n * API Response Schema\n * \n * Defines an API response for a specific status code.\n * \n * **Enhancement: Dynamic Schema Linking**\n * - Response schema can reference ObjectQL objects\n * - When object definitions change, response documentation auto-updates\n * \n * @example Response with ObjectQL reference\n * ```json\n * {\n * \"statusCode\": 200,\n * \"description\": \"Customer retrieved successfully\",\n * \"schema\": {\n * \"$ref\": {\n * \"objectId\": \"customer\",\n * \"excludeFields\": [\"password_hash\"]\n * }\n * }\n * }\n * ```\n */\nexport const ApiResponseSchema = z.object({\n /** HTTP status code */\n statusCode: HttpStatusCode.describe('HTTP status code'),\n \n /** Response description */\n description: z.string().describe('Response description'),\n \n /** Response content type */\n contentType: z.string().default('application/json').describe('Response content type'),\n \n /** Response schema - supports static or dynamic (ObjectQL) schemas */\n schema: z.union([\n z.any().describe('Static JSON Schema'),\n z.object({\n $ref: ObjectQLReferenceSchema,\n }).describe('Dynamic ObjectQL reference'),\n ]).optional().describe('Response body schema'),\n \n /** Response headers */\n headers: z.record(z.string(), z.object({\n description: z.string().optional(),\n schema: z.any(),\n })).optional().describe('Response headers'),\n \n /** Example response */\n example: z.any().optional().describe('Example response'),\n});\n\nexport type ApiResponse = z.infer<typeof ApiResponseSchema>;\nexport type ApiResponseInput = z.input<typeof ApiResponseSchema>;\n\n/**\n * API Endpoint Registration Schema\n * \n * Represents a single API endpoint registration with complete metadata.\n * \n * **Enhancements:**\n * 1. **RBAC Integration**: `requiredPermissions` field for automatic permission checking\n * 2. **Dynamic Schema Linking**: Parameters and responses can reference ObjectQL objects\n * 3. **Route Priority**: `priority` field for conflict resolution\n * 4. **Protocol Config**: `protocolConfig` for protocol-specific extensions\n * \n * @example REST Endpoint with RBAC\n * ```json\n * {\n * \"id\": \"get_customer_by_id\",\n * \"method\": \"GET\",\n * \"path\": \"/api/v1/data/customer/:id\",\n * \"summary\": \"Get customer by ID\",\n * \"requiredPermissions\": [\"customer.read\"],\n * \"parameters\": [\n * {\n * \"name\": \"id\",\n * \"in\": \"path\",\n * \"required\": true,\n * \"schema\": { \"type\": \"string\" }\n * }\n * ],\n * \"responses\": [\n * {\n * \"statusCode\": 200,\n * \"description\": \"Customer found\",\n * \"schema\": {\n * \"$ref\": {\n * \"objectId\": \"customer\"\n * }\n * }\n * }\n * ],\n * \"priority\": 100\n * }\n * ```\n * \n * @example Plugin Endpoint with Protocol Config\n * ```json\n * {\n * \"id\": \"grpc_service_method\",\n * \"path\": \"/grpc/ServiceName/MethodName\",\n * \"summary\": \"gRPC service method\",\n * \"protocolConfig\": {\n * \"subProtocol\": \"grpc\",\n * \"serviceName\": \"CustomerService\",\n * \"methodName\": \"GetCustomer\"\n * },\n * \"priority\": 50\n * }\n * ```\n */\nexport const ApiEndpointRegistrationSchema = z.object({\n /** Unique endpoint identifier */\n id: z.string().describe('Unique endpoint identifier'),\n \n /** HTTP method (for HTTP-based APIs) */\n method: HttpMethod.optional().describe('HTTP method'),\n \n /** URL path pattern */\n path: z.string().describe('URL path pattern'),\n \n /** Short summary */\n summary: z.string().optional().describe('Short endpoint summary'),\n \n /** Detailed description */\n description: z.string().optional().describe('Detailed endpoint description'),\n \n /** Operation ID (OpenAPI) */\n operationId: z.string().optional().describe('Unique operation identifier'),\n \n /** Tags for grouping */\n tags: z.array(z.string()).optional().default([]).describe('Tags for categorization'),\n \n /** Parameters */\n parameters: z.array(ApiParameterSchema).optional().default([]).describe('Endpoint parameters'),\n \n /** Request body schema */\n requestBody: z.object({\n description: z.string().optional(),\n required: z.boolean().default(false),\n contentType: z.string().default('application/json'),\n schema: z.any().optional(),\n example: z.any().optional(),\n }).optional().describe('Request body specification'),\n \n /** Response definitions */\n responses: z.array(ApiResponseSchema).optional().default([]).describe('Possible responses'),\n \n /** Rate Limiting */\n rateLimit: RateLimitConfigSchema.optional().describe('Endpoint specific rate limiting'),\n\n /** Security Requirements */\n security: z.array(z.record(z.string(), z.array(z.string()))).optional().describe('Security requirements (e.g. [{\"bearerAuth\": []}])'),\n \n /**\n * Required Permissions (RBAC Integration)\n * \n * Array of permission names required to access this endpoint.\n * The gateway layer automatically validates these permissions before\n * allowing the request to proceed, eliminating the need for permission\n * checks in individual API handlers.\n * \n * **Format:** `<object>.<operation>` or system permission name\n * \n * **Object Permissions:**\n * - `customer.read` - Read customer records\n * - `customer.create` - Create customer records\n * - `customer.edit` - Update customer records\n * - `customer.delete` - Delete customer records\n * - `customer.viewAll` - View all customer records (bypass sharing)\n * - `customer.modifyAll` - Modify all customer records (bypass sharing)\n * \n * **System Permissions:**\n * - `manage_users` - User management\n * - `view_setup` - Access to system setup\n * - `customize_application` - Modify metadata\n * - `api_enabled` - API access\n * \n * @example Object-level permissions\n * ```json\n * {\n * \"requiredPermissions\": [\"customer.read\"]\n * }\n * ```\n * \n * @example Multiple permissions (ALL required)\n * ```json\n * {\n * \"requiredPermissions\": [\"customer.read\", \"account.read\"]\n * }\n * ```\n * \n * @example System permission\n * ```json\n * {\n * \"requiredPermissions\": [\"manage_users\"]\n * }\n * ```\n * \n * @see {@link file://../../permission/permission.zod.ts} for permission definitions\n */\n requiredPermissions: z.array(z.string()).optional().default([])\n .describe('Required RBAC permissions (e.g., \"customer.read\", \"manage_users\")'),\n \n /**\n * Route Priority\n * \n * Priority level for route conflict resolution. Higher priority routes\n * are registered first and take precedence when multiple routes match\n * the same path pattern.\n * \n * **Default:** 100 (medium priority)\n * **Range:** 0-1000 (higher = more important)\n * \n * **Use Cases:**\n * - Core system APIs: 900-1000\n * - Plugin APIs: 100-500\n * - Custom/override APIs: 500-900\n * - Fallback routes: 0-100\n * \n * @example High priority core endpoint\n * ```json\n * {\n * \"path\": \"/api/v1/data/:object/:id\",\n * \"priority\": 950\n * }\n * ```\n * \n * @example Medium priority plugin endpoint\n * ```json\n * {\n * \"path\": \"/api/v1/custom/action\",\n * \"priority\": 300\n * }\n * ```\n */\n priority: z.number().int().min(0).max(1000).optional().default(100)\n .describe('Route priority for conflict resolution (0-1000, higher = more important)'),\n \n /**\n * Protocol-Specific Configuration\n * \n * Allows plugins and custom APIs to define protocol-specific metadata\n * that can be used for specialized handling or documentation generation.\n * \n * **Examples:**\n * - gRPC: Service and method names\n * - tRPC: Procedure type (query/mutation)\n * - WebSocket: Event names and handlers\n * - Custom protocols: Any metadata needed\n * \n * @example gRPC configuration\n * ```json\n * {\n * \"protocolConfig\": {\n * \"subProtocol\": \"grpc\",\n * \"serviceName\": \"CustomerService\",\n * \"methodName\": \"GetCustomer\",\n * \"streaming\": false\n * }\n * }\n * ```\n * \n * @example tRPC configuration\n * ```json\n * {\n * \"protocolConfig\": {\n * \"subProtocol\": \"trpc\",\n * \"procedureType\": \"query\",\n * \"router\": \"customer\"\n * }\n * }\n * ```\n * \n * @example WebSocket configuration\n * ```json\n * {\n * \"protocolConfig\": {\n * \"subProtocol\": \"websocket\",\n * \"eventName\": \"customer.updated\",\n * \"direction\": \"server-to-client\"\n * }\n * }\n * ```\n */\n protocolConfig: z.record(z.string(), z.any()).optional()\n .describe('Protocol-specific configuration for custom protocols (gRPC, tRPC, etc.)'),\n \n /** Deprecation flag */\n deprecated: z.boolean().default(false).describe('Whether endpoint is deprecated'),\n \n /** External documentation */\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional().describe('External documentation link'),\n});\n\nexport type ApiEndpointRegistration = z.infer<typeof ApiEndpointRegistrationSchema>;\nexport type ApiEndpointRegistrationInput = z.input<typeof ApiEndpointRegistrationSchema>;\n\n// ==========================================\n// API Registry Entry\n// ==========================================\n\n/**\n * API Metadata Schema\n * \n * Additional metadata for an API registration.\n */\nexport const ApiMetadataSchema = z.object({\n /** API owner/team */\n owner: z.string().optional().describe('Owner team or person'),\n \n /** API status */\n status: z.enum(['active', 'deprecated', 'experimental', 'beta']).default('active')\n .describe('API lifecycle status'),\n \n /** Categorization tags */\n tags: z.array(z.string()).optional().default([]).describe('Classification tags'),\n \n /** Plugin source (if plugin-registered) */\n pluginSource: z.string().optional().describe('Source plugin name'),\n \n /** Custom metadata */\n custom: z.record(z.string(), z.any()).optional().describe('Custom metadata fields'),\n});\n\nexport type ApiMetadata = z.infer<typeof ApiMetadataSchema>;\nexport type ApiMetadataInput = z.input<typeof ApiMetadataSchema>;\n\n/**\n * API Registry Entry Schema\n * \n * Complete registration entry for an API in the unified registry.\n * \n * @example REST API Entry\n * ```json\n * {\n * \"id\": \"customer_api\",\n * \"name\": \"Customer Management API\",\n * \"type\": \"rest\",\n * \"version\": \"v1\",\n * \"basePath\": \"/api/v1/data/customer\",\n * \"description\": \"CRUD operations for customer records\",\n * \"endpoints\": [...],\n * \"metadata\": {\n * \"owner\": \"sales_team\",\n * \"status\": \"active\",\n * \"tags\": [\"customer\", \"crm\"]\n * }\n * }\n * ```\n * \n * @example Plugin API Entry\n * ```json\n * {\n * \"id\": \"payment_webhook\",\n * \"name\": \"Payment Webhook API\",\n * \"type\": \"plugin\",\n * \"version\": \"1.0.0\",\n * \"basePath\": \"/plugins/payment/webhook\",\n * \"endpoints\": [...],\n * \"metadata\": {\n * \"pluginSource\": \"payment_gateway_plugin\",\n * \"status\": \"active\"\n * }\n * }\n * ```\n */\nexport const ApiRegistryEntrySchema = z.object({\n /** Unique API identifier */\n id: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique API identifier (snake_case)'),\n \n /** Human-readable name */\n name: z.string().describe('API display name'),\n \n /** API protocol type */\n type: ApiProtocolType.describe('API protocol type'),\n \n /** API version */\n version: z.string().describe('API version (e.g., v1, 2024-01)'),\n \n /** Base URL path */\n basePath: z.string().describe('Base URL path for this API'),\n \n /** API description */\n description: z.string().optional().describe('API description'),\n \n /** Endpoints in this API */\n endpoints: z.array(ApiEndpointRegistrationSchema).describe('Registered endpoints'),\n \n /** OpenAPI/GraphQL/OData specific configuration */\n config: z.record(z.string(), z.any()).optional().describe('Protocol-specific configuration'),\n \n /** API metadata */\n metadata: ApiMetadataSchema.optional().describe('Additional metadata'),\n \n /** Terms of service URL */\n termsOfService: z.string().url().optional().describe('Terms of service URL'),\n \n /** Contact information */\n contact: z.object({\n name: z.string().optional(),\n url: z.string().url().optional(),\n email: z.string().email().optional(),\n }).optional().describe('Contact information'),\n \n /** License information */\n license: z.object({\n name: z.string(),\n url: z.string().url().optional(),\n }).optional().describe('License information'),\n});\n\nexport type ApiRegistryEntry = z.infer<typeof ApiRegistryEntrySchema>;\nexport type ApiRegistryEntryInput = z.input<typeof ApiRegistryEntrySchema>;\n\n// ==========================================\n// API Registry\n// ==========================================\n\n/**\n * Route Conflict Resolution Strategy\n * \n * Defines how to handle conflicts when multiple endpoints register\n * the same or overlapping URL patterns.\n */\nexport const ConflictResolutionStrategy = z.enum([\n 'error', // Throw error on conflict (safest, default)\n 'priority', // Use priority field to resolve (highest priority wins)\n 'first-wins', // First registered endpoint wins\n 'last-wins', // Last registered endpoint wins (override mode)\n]);\n\nexport type ConflictResolutionStrategy = z.infer<typeof ConflictResolutionStrategy>;\n\n/**\n * API Registry Schema\n * \n * Central registry containing all registered APIs.\n * \n * **Enhancement: Route Conflict Detection**\n * - `conflictResolution`: Strategy for handling route conflicts\n * - Prevents silent overwrites and unexpected routing behavior\n * \n * @example\n * ```json\n * {\n * \"version\": \"1.0.0\",\n * \"conflictResolution\": \"priority\",\n * \"apis\": [\n * { \"id\": \"customer_api\", \"type\": \"rest\", ... },\n * { \"id\": \"graphql_api\", \"type\": \"graphql\", ... },\n * { \"id\": \"file_upload_api\", \"type\": \"file\", ... }\n * ],\n * \"totalApis\": 3,\n * \"totalEndpoints\": 47\n * }\n * ```\n * \n * @example Priority-based conflict resolution\n * ```json\n * {\n * \"conflictResolution\": \"priority\",\n * \"apis\": [\n * {\n * \"id\": \"core_api\",\n * \"endpoints\": [\n * {\n * \"path\": \"/api/v1/data/:object\",\n * \"priority\": 950\n * }\n * ]\n * },\n * {\n * \"id\": \"plugin_api\",\n * \"endpoints\": [\n * {\n * \"path\": \"/api/v1/data/custom\",\n * \"priority\": 300\n * }\n * ]\n * }\n * ]\n * }\n * ```\n */\nexport const ApiRegistrySchema = z.object({\n /** Registry version */\n version: z.string().describe('Registry version'),\n \n /**\n * Conflict Resolution Strategy\n * \n * Defines how to handle route conflicts when multiple endpoints\n * register the same or overlapping URL patterns.\n * \n * **Strategies:**\n * - `error`: Throw error on conflict (safest, prevents silent overwrites)\n * - `priority`: Use endpoint priority field (highest priority wins)\n * - `first-wins`: First registered endpoint wins (stable, predictable)\n * - `last-wins`: Last registered endpoint wins (allows overrides)\n * \n * **Default:** `error`\n * \n * **Best Practices:**\n * - Use `error` in production to catch configuration issues\n * - Use `priority` when mixing core and plugin APIs\n * - Use `last-wins` for development/testing overrides\n * \n * @example Prevent accidental conflicts\n * ```json\n * {\n * \"conflictResolution\": \"error\"\n * }\n * ```\n * \n * @example Allow plugin overrides with priority\n * ```json\n * {\n * \"conflictResolution\": \"priority\"\n * }\n * ```\n */\n conflictResolution: ConflictResolutionStrategy.optional().default('error')\n .describe('Strategy for handling route conflicts'),\n \n /** Registered APIs */\n apis: z.array(ApiRegistryEntrySchema).describe('All registered APIs'),\n \n /** Total API count */\n totalApis: z.number().int().describe('Total number of registered APIs'),\n \n /** Total endpoint count across all APIs */\n totalEndpoints: z.number().int().describe('Total number of endpoints'),\n \n /** APIs grouped by type */\n byType: z.record(ApiProtocolType, z.array(ApiRegistryEntrySchema)).optional()\n .describe('APIs grouped by protocol type'),\n \n /** APIs grouped by status */\n byStatus: z.record(z.string(), z.array(ApiRegistryEntrySchema)).optional()\n .describe('APIs grouped by status'),\n \n /** Last updated timestamp */\n updatedAt: z.string().datetime().optional().describe('Last registry update time'),\n});\n\nexport type ApiRegistry = z.infer<typeof ApiRegistrySchema>;\n\n// ==========================================\n// API Discovery & Query\n// ==========================================\n\n/**\n * API Discovery Query Schema\n * \n * Query parameters for discovering/filtering APIs in the registry.\n * \n * @example\n * ```json\n * {\n * \"type\": \"rest\",\n * \"tags\": [\"customer\"],\n * \"status\": \"active\"\n * }\n * ```\n */\nexport const ApiDiscoveryQuerySchema = z.object({\n /** Filter by API type */\n type: ApiProtocolType.optional().describe('Filter by API protocol type'),\n \n /** Filter by tags */\n tags: z.array(z.string()).optional().describe('Filter by tags (ANY match)'),\n \n /** Filter by status */\n status: z.enum(['active', 'deprecated', 'experimental', 'beta']).optional()\n .describe('Filter by lifecycle status'),\n \n /** Filter by plugin source */\n pluginSource: z.string().optional().describe('Filter by plugin name'),\n \n /** Search in name/description */\n search: z.string().optional().describe('Full-text search in name/description'),\n \n /** Filter by version */\n version: z.string().optional().describe('Filter by specific version'),\n});\n\nexport type ApiDiscoveryQuery = z.infer<typeof ApiDiscoveryQuerySchema>;\n\n/**\n * API Discovery Response Schema\n * \n * Response for API discovery queries.\n */\nexport const ApiDiscoveryResponseSchema = z.object({\n /** Matching APIs */\n apis: z.array(ApiRegistryEntrySchema).describe('Matching API entries'),\n \n /** Total matches */\n total: z.number().int().describe('Total matching APIs'),\n \n /** Applied filters */\n filters: ApiDiscoveryQuerySchema.optional().describe('Applied query filters'),\n});\n\nexport type ApiDiscoveryResponse = z.infer<typeof ApiDiscoveryResponseSchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Helper to create API endpoint registration\n */\nexport const ApiEndpointRegistration = Object.assign(ApiEndpointRegistrationSchema, {\n create: <T extends z.input<typeof ApiEndpointRegistrationSchema>>(config: T) => config,\n});\n\n/**\n * Helper to create API registry entry\n */\nexport const ApiRegistryEntry = Object.assign(ApiRegistryEntrySchema, {\n create: <T extends z.input<typeof ApiRegistryEntrySchema>>(config: T) => config,\n});\n\n/**\n * Helper to create API registry\n */\nexport const ApiRegistry = Object.assign(ApiRegistrySchema, {\n create: <T extends z.input<typeof ApiRegistrySchema>>(config: T) => config,\n});\n","import { z } from 'zod';\n\n/**\n * API Documentation & Testing Interface Protocol\n * \n * Provides schemas for generating interactive API documentation and testing\n * interfaces similar to Swagger UI, GraphQL Playground, Postman, etc.\n * \n * Features:\n * - OpenAPI/Swagger specification generation\n * - Interactive API testing playground\n * - API versioning and changelog\n * - Code generation templates\n * - Mock server configuration\n * \n * Architecture Alignment:\n * - Swagger UI: Interactive API documentation\n * - Postman: API testing collections\n * - GraphQL Playground: GraphQL-specific testing\n * - Redoc: Documentation rendering\n * \n * @example Documentation Config\n * ```typescript\n * const docConfig: ApiDocumentationConfig = {\n * enabled: true,\n * title: 'ObjectStack API',\n * version: '1.0.0',\n * servers: [{ url: 'https://api.example.com', description: 'Production' }],\n * ui: {\n * type: 'swagger-ui',\n * theme: 'light',\n * enableTryItOut: true\n * }\n * }\n * ```\n */\n\n// ==========================================\n// OpenAPI Specification\n// ==========================================\n\n/**\n * OpenAPI Server Schema\n * \n * Server configuration for OpenAPI specification.\n */\nexport const OpenApiServerSchema = z.object({\n /** Server URL */\n url: z.string().url().describe('Server base URL'),\n \n /** Server description */\n description: z.string().optional().describe('Server description'),\n \n /** Server variables */\n variables: z.record(z.string(), z.object({\n default: z.string(),\n description: z.string().optional(),\n enum: z.array(z.string()).optional(),\n })).optional().describe('URL template variables'),\n});\n\nexport type OpenApiServer = z.infer<typeof OpenApiServerSchema>;\n\n/**\n * OpenAPI Security Scheme Schema\n * \n * Security scheme definition for OpenAPI.\n */\nexport const OpenApiSecuritySchemeSchema = z.object({\n /** Security scheme type */\n type: z.enum(['apiKey', 'http', 'oauth2', 'openIdConnect']).describe('Security type'),\n \n /** Scheme name */\n scheme: z.string().optional().describe('HTTP auth scheme (bearer, basic, etc.)'),\n \n /** Bearer format */\n bearerFormat: z.string().optional().describe('Bearer token format (e.g., JWT)'),\n \n /** API key name */\n name: z.string().optional().describe('API key parameter name'),\n \n /** API key location */\n in: z.enum(['header', 'query', 'cookie']).optional().describe('API key location'),\n \n /** OAuth flows */\n flows: z.object({\n implicit: z.any().optional(),\n password: z.any().optional(),\n clientCredentials: z.any().optional(),\n authorizationCode: z.any().optional(),\n }).optional().describe('OAuth2 flows'),\n \n /** OpenID Connect URL */\n openIdConnectUrl: z.string().url().optional().describe('OpenID Connect discovery URL'),\n \n /** Description */\n description: z.string().optional().describe('Security scheme description'),\n});\n\nexport type OpenApiSecurityScheme = z.infer<typeof OpenApiSecuritySchemeSchema>;\n\n/**\n * OpenAPI Specification Schema\n * \n * Complete OpenAPI 3.0 specification structure.\n * \n * @see https://swagger.io/specification/\n * \n * @example\n * ```json\n * {\n * \"openapi\": \"3.0.0\",\n * \"info\": {\n * \"title\": \"ObjectStack API\",\n * \"version\": \"1.0.0\",\n * \"description\": \"ObjectStack unified API\"\n * },\n * \"servers\": [\n * { \"url\": \"https://api.example.com\" }\n * ],\n * \"paths\": { ... },\n * \"components\": { ... }\n * }\n * ```\n */\nexport const OpenApiSpecSchema = z.object({\n /** OpenAPI version */\n openapi: z.string().default('3.0.0').describe('OpenAPI specification version'),\n \n /** API information */\n info: z.object({\n title: z.string().describe('API title'),\n version: z.string().describe('API version'),\n description: z.string().optional().describe('API description'),\n termsOfService: z.string().url().optional().describe('Terms of service URL'),\n contact: z.object({\n name: z.string().optional(),\n url: z.string().url().optional(),\n email: z.string().email().optional(),\n }).optional(),\n license: z.object({\n name: z.string(),\n url: z.string().url().optional(),\n }).optional(),\n }).describe('API metadata'),\n \n /** Servers */\n servers: z.array(OpenApiServerSchema).optional().default([]).describe('API servers'),\n \n /** API paths */\n paths: z.record(z.string(), z.any()).describe('API paths and operations'),\n \n /** Reusable components */\n components: z.object({\n schemas: z.record(z.string(), z.any()).optional(),\n responses: z.record(z.string(), z.any()).optional(),\n parameters: z.record(z.string(), z.any()).optional(),\n examples: z.record(z.string(), z.any()).optional(),\n requestBodies: z.record(z.string(), z.any()).optional(),\n headers: z.record(z.string(), z.any()).optional(),\n securitySchemes: z.record(z.string(), OpenApiSecuritySchemeSchema).optional(),\n links: z.record(z.string(), z.any()).optional(),\n callbacks: z.record(z.string(), z.any()).optional(),\n }).optional().describe('Reusable components'),\n \n /** Security requirements */\n security: z.array(z.record(z.string(), z.array(z.string()))).optional()\n .describe('Global security requirements'),\n \n /** Tags */\n tags: z.array(z.object({\n name: z.string(),\n description: z.string().optional(),\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional(),\n })).optional().describe('Tag definitions'),\n \n /** External documentation */\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional().describe('External documentation'),\n});\n\nexport type OpenApiSpec = z.infer<typeof OpenApiSpecSchema>;\n\n// ==========================================\n// API Testing Playground\n// ==========================================\n\n/**\n * API Testing UI Type\n */\nexport const ApiTestingUiType = z.enum([\n 'swagger-ui', // Swagger UI\n 'redoc', // Redoc\n 'rapidoc', // RapiDoc\n 'stoplight', // Stoplight Elements\n 'scalar', // Scalar API Reference\n 'graphql-playground', // GraphQL Playground\n 'graphiql', // GraphiQL\n 'postman', // Postman-like interface\n 'custom', // Custom implementation\n]);\n\nexport type ApiTestingUiType = z.infer<typeof ApiTestingUiType>;\n\n/**\n * API Testing UI Configuration Schema\n * \n * Configuration for interactive API testing interface.\n * \n * @example Swagger UI Config\n * ```json\n * {\n * \"type\": \"swagger-ui\",\n * \"path\": \"/api-docs\",\n * \"theme\": \"light\",\n * \"enableTryItOut\": true,\n * \"enableFilter\": true,\n * \"enableCors\": true,\n * \"defaultModelsExpandDepth\": 1\n * }\n * ```\n */\nexport const ApiTestingUiConfigSchema = z.object({\n /** UI type */\n type: ApiTestingUiType.describe('Testing UI implementation'),\n \n /** UI path */\n path: z.string().default('/api-docs').describe('URL path for documentation UI'),\n \n /** UI theme */\n theme: z.enum(['light', 'dark', 'auto']).default('light').describe('UI color theme'),\n \n /** Enable try-it-out feature */\n enableTryItOut: z.boolean().default(true).describe('Enable interactive API testing'),\n \n /** Enable filtering */\n enableFilter: z.boolean().default(true).describe('Enable endpoint filtering'),\n \n /** Enable CORS for testing */\n enableCors: z.boolean().default(true).describe('Enable CORS for browser testing'),\n \n /** Default expand depth for models */\n defaultModelsExpandDepth: z.number().int().min(-1).default(1)\n .describe('Default expand depth for schemas (-1 = fully expand)'),\n \n /** Display request duration */\n displayRequestDuration: z.boolean().default(true).describe('Show request duration'),\n \n /** Syntax highlighting */\n syntaxHighlighting: z.boolean().default(true).describe('Enable syntax highlighting'),\n \n /** Custom CSS URL */\n customCssUrl: z.string().url().optional().describe('Custom CSS stylesheet URL'),\n \n /** Custom JavaScript URL */\n customJsUrl: z.string().url().optional().describe('Custom JavaScript URL'),\n \n /** Layout options */\n layout: z.object({\n showExtensions: z.boolean().default(false).describe('Show vendor extensions'),\n showCommonExtensions: z.boolean().default(false).describe('Show common extensions'),\n deepLinking: z.boolean().default(true).describe('Enable deep linking'),\n displayOperationId: z.boolean().default(false).describe('Display operation IDs'),\n defaultModelRendering: z.enum(['example', 'model']).default('example')\n .describe('Default model rendering mode'),\n defaultModelsExpandDepth: z.number().int().default(1).describe('Models expand depth'),\n defaultModelExpandDepth: z.number().int().default(1).describe('Single model expand depth'),\n docExpansion: z.enum(['list', 'full', 'none']).default('list')\n .describe('Documentation expansion mode'),\n }).optional().describe('Layout configuration'),\n});\n\nexport type ApiTestingUiConfig = z.infer<typeof ApiTestingUiConfigSchema>;\n\n/**\n * API Test Request Schema\n * \n * Represents a saved/example API test request.\n * \n * @example\n * ```json\n * {\n * \"name\": \"Get Customer by ID\",\n * \"description\": \"Retrieves a customer record\",\n * \"method\": \"GET\",\n * \"url\": \"/api/v1/data/customer/123\",\n * \"headers\": {\n * \"Authorization\": \"Bearer {{token}}\"\n * },\n * \"variables\": {\n * \"token\": \"sample_token\"\n * }\n * }\n * ```\n */\nexport const ApiTestRequestSchema = z.object({\n /** Request name */\n name: z.string().describe('Test request name'),\n \n /** Request description */\n description: z.string().optional().describe('Request description'),\n \n /** HTTP method */\n method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'])\n .describe('HTTP method'),\n \n /** Request URL */\n url: z.string().describe('Request URL (can include variables)'),\n \n /** Request headers */\n headers: z.record(z.string(), z.string()).optional().default({})\n .describe('Request headers'),\n \n /** Query parameters */\n queryParams: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()]))\n .optional().default({}).describe('Query parameters'),\n \n /** Request body */\n body: z.any().optional().describe('Request body'),\n \n /** Environment variables */\n variables: z.record(z.string(), z.any()).optional().default({})\n .describe('Template variables'),\n \n /** Expected response */\n expectedResponse: z.object({\n statusCode: z.number().int(),\n body: z.any().optional(),\n }).optional().describe('Expected response for validation'),\n});\n\nexport type ApiTestRequest = z.infer<typeof ApiTestRequestSchema>;\n\n/**\n * API Test Collection Schema\n * \n * Collection of test requests (similar to Postman collections).\n * \n * @example\n * ```json\n * {\n * \"name\": \"Customer API Tests\",\n * \"description\": \"Test collection for customer endpoints\",\n * \"variables\": {\n * \"baseUrl\": \"https://api.example.com\",\n * \"apiKey\": \"test_key\"\n * },\n * \"requests\": [...]\n * }\n * ```\n */\nexport const ApiTestCollectionSchema = z.object({\n /** Collection name */\n name: z.string().describe('Collection name'),\n \n /** Collection description */\n description: z.string().optional().describe('Collection description'),\n \n /** Collection variables */\n variables: z.record(z.string(), z.any()).optional().default({})\n .describe('Shared variables'),\n \n /** Test requests */\n requests: z.array(ApiTestRequestSchema).describe('Test requests in this collection'),\n \n /** Folders/grouping */\n folders: z.array(z.object({\n name: z.string(),\n description: z.string().optional(),\n requests: z.array(ApiTestRequestSchema),\n })).optional().describe('Request folders for organization'),\n});\n\nexport type ApiTestCollection = z.infer<typeof ApiTestCollectionSchema>;\n\n// ==========================================\n// API Documentation Configuration\n// ==========================================\n\n/**\n * API Changelog Entry Schema\n * \n * Documents changes in API versions.\n */\nexport const ApiChangelogEntrySchema = z.object({\n /** Version */\n version: z.string().describe('API version'),\n \n /** Release date */\n date: z.string().date().describe('Release date'),\n \n /** Changes */\n changes: z.object({\n added: z.array(z.string()).optional().default([]).describe('New features'),\n changed: z.array(z.string()).optional().default([]).describe('Changes'),\n deprecated: z.array(z.string()).optional().default([]).describe('Deprecations'),\n removed: z.array(z.string()).optional().default([]).describe('Removed features'),\n fixed: z.array(z.string()).optional().default([]).describe('Bug fixes'),\n security: z.array(z.string()).optional().default([]).describe('Security fixes'),\n }).describe('Version changes'),\n \n /** Migration guide */\n migrationGuide: z.string().optional().describe('Migration guide URL or text'),\n});\n\nexport type ApiChangelogEntry = z.infer<typeof ApiChangelogEntrySchema>;\n\n/**\n * Code Generation Template Schema\n * \n * Templates for generating client code.\n */\nexport const CodeGenerationTemplateSchema = z.object({\n /** Language/framework */\n language: z.string().describe('Target language/framework (e.g., typescript, python, curl)'),\n \n /** Template name */\n name: z.string().describe('Template name'),\n \n /** Template content */\n template: z.string().describe('Code template with placeholders'),\n \n /** Template variables */\n variables: z.array(z.string()).optional().describe('Required template variables'),\n});\n\nexport type CodeGenerationTemplate = z.infer<typeof CodeGenerationTemplateSchema>;\n\n/**\n * API Documentation Configuration Schema\n * \n * Complete configuration for API documentation and testing interface.\n * \n * @example\n * ```json\n * {\n * \"enabled\": true,\n * \"title\": \"ObjectStack API Documentation\",\n * \"version\": \"1.0.0\",\n * \"description\": \"Unified API for ObjectStack platform\",\n * \"servers\": [\n * { \"url\": \"https://api.example.com\", \"description\": \"Production\" }\n * ],\n * \"ui\": {\n * \"type\": \"swagger-ui\",\n * \"theme\": \"light\",\n * \"enableTryItOut\": true\n * },\n * \"generateOpenApi\": true,\n * \"generateTestCollections\": true\n * }\n * ```\n */\nexport const ApiDocumentationConfigSchema = z.object({\n /** Enable documentation */\n enabled: z.boolean().default(true).describe('Enable API documentation'),\n \n /** Documentation title */\n title: z.string().default('API Documentation').describe('Documentation title'),\n \n /** API version */\n version: z.string().describe('API version'),\n \n /** API description */\n description: z.string().optional().describe('API description'),\n \n /** Server configurations */\n servers: z.array(OpenApiServerSchema).optional().default([])\n .describe('API server URLs'),\n \n /** UI configuration */\n ui: ApiTestingUiConfigSchema.optional().describe('Testing UI configuration'),\n \n /** Generate OpenAPI spec */\n generateOpenApi: z.boolean().default(true).describe('Generate OpenAPI 3.0 specification'),\n \n /** Generate test collections */\n generateTestCollections: z.boolean().default(true)\n .describe('Generate API test collections'),\n \n /** Test collections */\n testCollections: z.array(ApiTestCollectionSchema).optional().default([])\n .describe('Predefined test collections'),\n \n /** API changelog */\n changelog: z.array(ApiChangelogEntrySchema).optional().default([])\n .describe('API version changelog'),\n \n /** Code generation templates */\n codeTemplates: z.array(CodeGenerationTemplateSchema).optional().default([])\n .describe('Code generation templates'),\n \n /** Terms of service */\n termsOfService: z.string().url().optional().describe('Terms of service URL'),\n \n /** Contact information */\n contact: z.object({\n name: z.string().optional(),\n url: z.string().url().optional(),\n email: z.string().email().optional(),\n }).optional().describe('Contact information'),\n \n /** License */\n license: z.object({\n name: z.string(),\n url: z.string().url().optional(),\n }).optional().describe('API license'),\n \n /** External documentation */\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional().describe('External documentation link'),\n \n /** Security schemes */\n securitySchemes: z.record(z.string(), OpenApiSecuritySchemeSchema).optional()\n .describe('Security scheme definitions'),\n \n /** Global tags */\n tags: z.array(z.object({\n name: z.string(),\n description: z.string().optional(),\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional(),\n })).optional().describe('Global tag definitions'),\n});\n\nexport type ApiDocumentationConfig = z.infer<typeof ApiDocumentationConfigSchema>;\n\n// ==========================================\n// API Documentation Generation\n// ==========================================\n\n/**\n * Generated API Documentation Schema\n * \n * Output of documentation generation process.\n */\nexport const GeneratedApiDocumentationSchema = z.object({\n /** OpenAPI specification */\n openApiSpec: OpenApiSpecSchema.optional().describe('Generated OpenAPI specification'),\n \n /** Test collections */\n testCollections: z.array(ApiTestCollectionSchema).optional()\n .describe('Generated test collections'),\n \n /** Markdown documentation */\n markdown: z.string().optional().describe('Generated markdown documentation'),\n \n /** HTML documentation */\n html: z.string().optional().describe('Generated HTML documentation'),\n \n /** Generation timestamp */\n generatedAt: z.string().datetime().describe('Generation timestamp'),\n \n /** Source APIs */\n sourceApis: z.array(z.string()).describe('Source API IDs used for generation'),\n});\n\nexport type GeneratedApiDocumentation = z.infer<typeof GeneratedApiDocumentationSchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Helper to create API documentation config\n */\nexport const ApiDocumentationConfig = Object.assign(ApiDocumentationConfigSchema, {\n create: <T extends z.input<typeof ApiDocumentationConfigSchema>>(config: T) => config,\n});\n\n/**\n * Helper to create API test collection\n */\nexport const ApiTestCollection = Object.assign(ApiTestCollectionSchema, {\n create: <T extends z.input<typeof ApiTestCollectionSchema>>(config: T) => config,\n});\n\n/**\n * Helper to create OpenAPI specification\n */\nexport const OpenApiSpec = Object.assign(OpenApiSpecSchema, {\n create: <T extends z.input<typeof OpenApiSpecSchema>>(config: T) => config,\n});\n","import { z } from 'zod';\nimport { BaseResponseSchema } from './contract.zod';\n\n/**\n * Authentication Service Protocol\n * \n * Defines the standard API contracts for Identity, Session Management,\n * and Access Control.\n */\n\n// ==========================================\n// Authentication Types\n// ==========================================\n\nexport const AuthProvider = z.enum([\n 'local',\n 'google',\n 'github',\n 'microsoft',\n 'ldap',\n 'saml'\n]);\n\nexport const SessionUserSchema = z.object({\n id: z.string().describe('User ID'),\n email: z.string().email().describe('Email address'),\n emailVerified: z.boolean().default(false).describe('Is email verified?'),\n name: z.string().describe('Display name'),\n image: z.string().optional().describe('Avatar URL'),\n username: z.string().optional().describe('Username (optional)'),\n roles: z.array(z.string()).optional().default([]).describe('Assigned role IDs'),\n tenantId: z.string().optional().describe('Current tenant ID'),\n language: z.string().default('en').describe('Preferred language'),\n timezone: z.string().optional().describe('Preferred timezone'),\n createdAt: z.date().optional(),\n updatedAt: z.date().optional(),\n});\n\nexport const SessionSchema = z.object({\n id: z.string(),\n expiresAt: z.date(),\n token: z.string().optional(),\n ipAddress: z.string().optional(),\n userAgent: z.string().optional(),\n userId: z.string(),\n});\n\n// ==========================================\n// Requests\n// ==========================================\n\nexport const LoginType = z.enum(['email', 'username', 'phone', 'magic-link', 'social']);\n\nexport const LoginRequestSchema = z.object({\n type: LoginType.default('email').describe('Login method'),\n email: z.string().email().optional().describe('Required for email/magic-link'),\n username: z.string().optional().describe('Required for username login'),\n password: z.string().optional().describe('Required for password login'),\n provider: z.string().optional().describe('Required for social (google, github)'),\n redirectTo: z.string().optional().describe('Redirect URL after successful login'),\n});\n\nexport const RegisterRequestSchema = z.object({\n email: z.string().email(),\n password: z.string(),\n name: z.string(),\n image: z.string().optional(),\n});\n\nexport const RefreshTokenRequestSchema = z.object({\n refreshToken: z.string().describe('Refresh token'),\n});\n\n// ==========================================\n// Responses\n// ==========================================\n\nexport const SessionResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n session: SessionSchema.describe('Active Session Info'),\n user: SessionUserSchema.describe('Current User Details'),\n token: z.string().optional().describe('Bearer token if not using cookies'),\n }),\n});\n\nexport const UserProfileResponseSchema = BaseResponseSchema.extend({\n data: SessionUserSchema,\n});\n\nexport type AuthProvider = z.infer<typeof AuthProvider>;\nexport type SessionUser = z.infer<typeof SessionUserSchema>;\nexport type Session = z.infer<typeof SessionSchema>;\nexport type LoginType = z.infer<typeof LoginType>;\nexport type LoginRequest = z.infer<typeof LoginRequestSchema>;\nexport type RegisterRequest = z.infer<typeof RegisterRequestSchema>;\nexport type RefreshTokenRequest = z.infer<typeof RefreshTokenRequestSchema>;\nexport type SessionResponse = z.infer<typeof SessionResponseSchema>;\nexport type UserProfileResponse = z.infer<typeof UserProfileResponseSchema>;\n","import { z } from 'zod';\nimport { BaseResponseSchema } from './contract.zod';\nimport { FileMetadataSchema } from '../system/object-storage.zod';\n\n/**\n * Storage Service Protocol\n * \n * Defines the API contract for client-side file operations.\n * Focuses on secure, direct-to-cloud uploads (Presigned URLs)\n * rather than proxying bytes through the API server.\n */\n\n// ==========================================\n// Requests\n// ==========================================\n\nexport const GetPresignedUrlRequestSchema = z.object({\n filename: z.string().describe('Original filename'),\n mimeType: z.string().describe('File MIME type'),\n size: z.number().describe('File size in bytes'),\n scope: z.string().default('user').describe('Target storage scope (e.g. user, private, public)'),\n bucket: z.string().optional().describe('Specific bucket override (admin only)'),\n});\n\nexport const CompleteUploadRequestSchema = z.object({\n fileId: z.string().describe('File ID returned from presigned request'),\n eTag: z.string().optional().describe('S3 ETag verification'),\n});\n\n// ==========================================\n// Responses\n// ==========================================\n\nexport const PresignedUrlResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n uploadUrl: z.string().describe('PUT/POST URL for direct upload'),\n downloadUrl: z.string().optional().describe('Public/Private preview URL'),\n fileId: z.string().describe('Temporary File ID'),\n method: z.enum(['PUT', 'POST']).describe('HTTP Method to use'),\n headers: z.record(z.string(), z.string()).optional().describe('Required headers for upload'),\n expiresIn: z.number().describe('URL expiry in seconds'),\n }),\n});\n\nexport const FileUploadResponseSchema = BaseResponseSchema.extend({\n data: FileMetadataSchema.describe('Uploaded file metadata'),\n});\n\nexport type GetPresignedUrlRequest = z.infer<typeof GetPresignedUrlRequestSchema>;\nexport type CompleteUploadRequest = z.infer<typeof CompleteUploadRequestSchema>;\nexport type PresignedUrlResponse = z.infer<typeof PresignedUrlResponseSchema>;\nexport type FileUploadResponse = z.infer<typeof FileUploadResponseSchema>;\n","import { z } from 'zod';\nimport { SystemIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * Object Storage Protocol\n * \n * Unified storage protocol that combines:\n * - Object storage systems (S3, Azure Blob, GCS, MinIO)\n * - Scoped storage configuration (temp, cache, data, logs, config, public)\n * - Multi-cloud storage providers\n * - Bucket/container configuration\n * - Access control and permissions\n * - Lifecycle policies for data retention\n * - Presigned URLs for secure direct access\n * - Multipart uploads for large files\n */\n\n// ============================================================================\n// Storage Scope Protocol (formerly from scoped-storage.zod.ts)\n// ============================================================================\n\n/**\n * Storage Scope Enum\n * Defines the lifecycle and persistence guarantee of the storage area.\n */\nexport const StorageScopeSchema = z.enum([\n 'global', // Global application-wide storage\n 'tenant', // Tenant-scoped storage (multi-tenant apps)\n 'user', // User-scoped storage\n 'session', // Session-scoped storage (ephemeral)\n 'temp', // Ephemeral, cleared on restart\n 'cache', // Ephemeral, survives restarts, cleared on LRU/Expiration\n 'data', // Persistent, backed up\n 'logs', // Append-only, rotated\n 'config', // Read-heavy, versioned\n 'public' // Publicly accessible static assets\n]).describe('Storage scope classification');\n\nexport type StorageScope = z.infer<typeof StorageScopeSchema>;\n\n/**\n * File Metadata Schema\n * Standardized file attribute structure\n */\nexport const FileMetadataSchema = z.object({\n path: z.string().describe('File path'),\n name: z.string().describe('File name'),\n size: z.number().int().describe('File size in bytes'),\n mimeType: z.string().describe('MIME type'),\n lastModified: z.string().datetime().describe('Last modified timestamp'),\n created: z.string().datetime().describe('Creation timestamp'),\n etag: z.string().optional().describe('Entity tag'),\n});\n\nexport type FileMetadata = z.infer<typeof FileMetadataSchema>;\n\n// ============================================================================\n// Enums\n// ============================================================================\n\n/**\n * Storage Provider Types\n * \n * Supported cloud and self-hosted object storage providers.\n */\nexport const StorageProviderSchema = z.enum([\n 's3', // Amazon S3\n 'azure_blob', // Azure Blob Storage\n 'gcs', // Google Cloud Storage\n 'minio', // MinIO (self-hosted S3-compatible)\n 'r2', // Cloudflare R2\n 'spaces', // DigitalOcean Spaces\n 'wasabi', // Wasabi Hot Cloud Storage\n 'backblaze', // Backblaze B2\n 'local', // Local filesystem (development only)\n]).describe('Storage provider type');\n\nexport type StorageProvider = z.infer<typeof StorageProviderSchema>;\n\n/**\n * Storage Access Control List (ACL)\n * \n * Predefined access control configurations for objects and buckets.\n */\nexport const StorageAclSchema = z.enum([\n 'private', // Owner has full control, no one else has access\n 'public_read', // Owner has full control, everyone can read\n 'public_read_write', // Owner has full control, everyone can read/write (not recommended)\n 'authenticated_read', // Owner has full control, authenticated users can read\n 'bucket_owner_read', // Object owner has full control, bucket owner can read\n 'bucket_owner_full_control', // Both object and bucket owner have full control\n]).describe('Storage access control level');\n\nexport type StorageAcl = z.infer<typeof StorageAclSchema>;\n\n/**\n * Storage Class / Tier\n * \n * Different storage tiers for cost optimization.\n * Maps to provider-specific storage classes.\n */\nexport const StorageClassSchema = z.enum([\n 'standard', // Standard/hot storage for frequently accessed data\n 'intelligent', // Intelligent tiering (auto-moves between hot/cool)\n 'infrequent_access', // Infrequent access/cool storage\n 'glacier', // Archive/cold storage (slower retrieval)\n 'deep_archive', // Deep archive (cheapest, slowest retrieval)\n]).describe('Storage class/tier for cost optimization');\n\nexport type StorageClass = z.infer<typeof StorageClassSchema>;\n\n/**\n * Lifecycle Transition Action\n */\nexport const LifecycleActionSchema = z.enum([\n 'transition', // Move to different storage class\n 'delete', // Delete the object\n 'abort', // Abort incomplete multipart uploads\n]).describe('Lifecycle policy action type');\n\nexport type LifecycleAction = z.infer<typeof LifecycleActionSchema>;\n\n// ============================================================================\n// Configuration Schemas\n// ============================================================================\n\n/**\n * Object Metadata Schema\n * \n * Standard and custom metadata attached to stored objects.\n * \n * @example\n * {\n * contentType: 'image/jpeg',\n * contentLength: 1024000,\n * etag: '\"abc123\"',\n * lastModified: new Date('2024-01-01'),\n * custom: {\n * uploadedBy: 'user123',\n * department: 'marketing'\n * }\n * }\n */\nexport const ObjectMetadataSchema = z.object({\n contentType: z.string().describe('MIME type (e.g., image/jpeg, application/pdf)'),\n contentLength: z.number().min(0).describe('File size in bytes'),\n contentEncoding: z.string().optional().describe('Content encoding (e.g., gzip)'),\n contentDisposition: z.string().optional().describe('Content disposition header'),\n contentLanguage: z.string().optional().describe('Content language'),\n cacheControl: z.string().optional().describe('Cache control directives'),\n etag: z.string().optional().describe('Entity tag for versioning/caching'),\n lastModified: z.date().optional().describe('Last modification timestamp'),\n versionId: z.string().optional().describe('Object version identifier'),\n storageClass: StorageClassSchema.optional().describe('Storage class/tier'),\n encryption: z.object({\n algorithm: z.string().describe('Encryption algorithm (e.g., AES256, aws:kms)'),\n keyId: z.string().optional().describe('KMS key ID if using managed encryption'),\n }).optional().describe('Server-side encryption configuration'),\n custom: z.record(z.string(), z.string()).optional().describe('Custom user-defined metadata'),\n});\n\nexport type ObjectMetadata = z.infer<typeof ObjectMetadataSchema>;\n\n/**\n * Presigned URL Configuration\n * \n * Configuration for generating temporary URLs for direct access to objects.\n * Useful for secure file uploads/downloads without exposing credentials.\n * \n * @example\n * // Generate download URL valid for 1 hour\n * {\n * operation: 'get',\n * expiresIn: 3600,\n * contentType: 'image/jpeg'\n * }\n * \n * @example\n * // Generate upload URL valid for 15 minutes with size limit\n * {\n * operation: 'put',\n * expiresIn: 900,\n * contentType: 'application/pdf',\n * maxSize: 10485760\n * }\n */\nexport const PresignedUrlConfigSchema = z.object({\n operation: z.enum(['get', 'put', 'delete', 'head']).describe('Allowed operation'),\n expiresIn: z.number().min(1).max(604800).describe('Expiration time in seconds (max 7 days)'),\n contentType: z.string().optional().describe('Required content type for PUT operations'),\n maxSize: z.number().min(0).optional().describe('Maximum file size in bytes for PUT operations'),\n responseContentType: z.string().optional().describe('Override content-type for GET operations'),\n responseContentDisposition: z.string().optional().describe('Override content-disposition for GET operations'),\n});\n\nexport type PresignedUrlConfig = z.infer<typeof PresignedUrlConfigSchema>;\n\n/**\n * Multipart Upload Configuration\n * \n * Configuration for chunked uploads of large files.\n * Enables resumable uploads and parallel transfer.\n * \n * @example\n * // Enable multipart for files > 100MB with 10MB chunks\n * {\n * enabled: true,\n * partSize: 10485760,\n * maxParts: 10000,\n * threshold: 104857600,\n * maxConcurrent: 4\n * }\n */\nexport const MultipartUploadConfigSchema = z.object({\n enabled: z.boolean().default(true).describe('Enable multipart uploads'),\n partSize: z.number().min(5 * 1024 * 1024).max(5 * 1024 * 1024 * 1024).default(10 * 1024 * 1024).describe('Part size in bytes (min 5MB, max 5GB)'),\n maxParts: z.number().min(1).max(10000).default(10000).describe('Maximum number of parts (max 10,000)'),\n threshold: z.number().min(0).default(100 * 1024 * 1024).describe('File size threshold to trigger multipart upload (bytes)'),\n maxConcurrent: z.number().min(1).max(100).default(4).describe('Maximum concurrent part uploads'),\n abortIncompleteAfterDays: z.number().min(1).optional().describe('Auto-abort incomplete uploads after N days'),\n});\n\nexport type MultipartUploadConfig = z.infer<typeof MultipartUploadConfigSchema>;\n\n/**\n * Access Control Configuration\n * \n * Fine-grained access control for buckets and objects.\n * \n * @example\n * {\n * acl: 'private',\n * allowedOrigins: ['https://app.example.com'],\n * allowedMethods: ['GET', 'PUT'],\n * corsEnabled: true,\n * publicAccess: {\n * allowPublicRead: false,\n * allowPublicWrite: false\n * }\n * }\n */\nexport const AccessControlConfigSchema = z.object({\n acl: StorageAclSchema.default('private').describe('Default access control level'),\n allowedOrigins: z.array(z.string()).optional().describe('CORS allowed origins'),\n allowedMethods: z.array(z.enum(['GET', 'PUT', 'POST', 'DELETE', 'HEAD'])).optional().describe('CORS allowed HTTP methods'),\n allowedHeaders: z.array(z.string()).optional().describe('CORS allowed headers'),\n exposeHeaders: z.array(z.string()).optional().describe('CORS exposed headers'),\n maxAge: z.number().min(0).optional().describe('CORS preflight cache duration in seconds'),\n corsEnabled: z.boolean().default(false).describe('Enable CORS configuration'),\n publicAccess: z.object({\n allowPublicRead: z.boolean().default(false).describe('Allow public read access'),\n allowPublicWrite: z.boolean().default(false).describe('Allow public write access'),\n allowPublicList: z.boolean().default(false).describe('Allow public bucket listing'),\n }).optional().describe('Public access control'),\n allowedIps: z.array(z.string()).optional().describe('Allowed IP addresses/CIDR blocks'),\n blockedIps: z.array(z.string()).optional().describe('Blocked IP addresses/CIDR blocks'),\n});\n\nexport type AccessControlConfig = z.infer<typeof AccessControlConfigSchema>;\n\n/**\n * Lifecycle Policy Rule\n * \n * Individual rule for automatic object lifecycle management.\n * \n * @example\n * // Transition to infrequent access after 30 days\n * {\n * id: 'move_to_ia',\n * enabled: true,\n * action: 'transition',\n * daysAfterCreation: 30,\n * targetStorageClass: 'infrequent_access'\n * }\n * \n * @example\n * // Delete objects after 365 days\n * {\n * id: 'delete_old',\n * enabled: true,\n * action: 'delete',\n * daysAfterCreation: 365\n * }\n */\nexport const LifecyclePolicyRuleSchema = z.object({\n id: SystemIdentifierSchema.describe('Rule identifier'),\n enabled: z.boolean().default(true).describe('Enable this rule'),\n action: LifecycleActionSchema.describe('Action to perform'),\n prefix: z.string().optional().describe('Object key prefix filter (e.g., \"uploads/\")'),\n tags: z.record(z.string(), z.string()).optional().describe('Object tag filters'),\n daysAfterCreation: z.number().min(0).optional().describe('Days after object creation'),\n daysAfterModification: z.number().min(0).optional().describe('Days after last modification'),\n targetStorageClass: StorageClassSchema.optional().describe('Target storage class for transition action'),\n}).refine((data) => {\n // Validate that transition action has targetStorageClass\n if (data.action === 'transition' && !data.targetStorageClass) {\n return false;\n }\n return true;\n}, {\n message: 'targetStorageClass is required when action is \"transition\"',\n});\n\nexport type LifecyclePolicyRule = z.infer<typeof LifecyclePolicyRuleSchema>;\n\n/**\n * Lifecycle Policy Configuration\n * \n * Collection of lifecycle rules for automatic data management.\n * \n * @example\n * {\n * enabled: true,\n * rules: [\n * {\n * id: 'archive_old_files',\n * enabled: true,\n * action: 'transition',\n * daysAfterCreation: 90,\n * targetStorageClass: 'glacier'\n * },\n * {\n * id: 'delete_temp_files',\n * enabled: true,\n * action: 'delete',\n * prefix: 'temp/',\n * daysAfterCreation: 7\n * }\n * ]\n * }\n */\nexport const LifecyclePolicyConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable lifecycle policies'),\n rules: z.array(LifecyclePolicyRuleSchema).default([]).describe('Lifecycle rules'),\n});\n\nexport type LifecyclePolicyConfig = z.infer<typeof LifecyclePolicyConfigSchema>;\n\n/**\n * Bucket Configuration Schema\n * \n * Comprehensive configuration for a storage bucket/container.\n * \n * @example\n * {\n * name: 'user_uploads',\n * label: 'User Uploads',\n * bucketName: 'my-app-uploads',\n * region: 'us-east-1',\n * provider: 's3',\n * versioning: true,\n * accessControl: {\n * acl: 'private',\n * corsEnabled: true,\n * allowedOrigins: ['https://app.example.com']\n * },\n * multipartConfig: {\n * enabled: true,\n * threshold: 104857600\n * }\n * }\n */\nexport const BucketConfigSchema = z.object({\n name: SystemIdentifierSchema.describe('Bucket identifier in ObjectStack (snake_case)'),\n label: z.string().describe('Display label'),\n bucketName: z.string().describe('Actual bucket/container name in storage provider'),\n region: z.string().optional().describe('Storage region (e.g., us-east-1, westus)'),\n provider: StorageProviderSchema.describe('Storage provider'),\n endpoint: z.string().optional().describe('Custom endpoint URL (for S3-compatible providers)'),\n pathStyle: z.boolean().default(false).describe('Use path-style URLs (for S3-compatible providers)'),\n \n versioning: z.boolean().default(false).describe('Enable object versioning'),\n encryption: z.object({\n enabled: z.boolean().default(false).describe('Enable server-side encryption'),\n algorithm: z.enum(['AES256', 'aws:kms', 'azure:kms', 'gcp:kms']).default('AES256').describe('Encryption algorithm'),\n kmsKeyId: z.string().optional().describe('KMS key ID for managed encryption'),\n }).optional().describe('Server-side encryption configuration'),\n \n accessControl: AccessControlConfigSchema.optional().describe('Access control configuration'),\n lifecyclePolicy: LifecyclePolicyConfigSchema.optional().describe('Lifecycle policy configuration'),\n multipartConfig: MultipartUploadConfigSchema.optional().describe('Multipart upload configuration'),\n \n tags: z.record(z.string(), z.string()).optional().describe('Bucket tags for organization'),\n description: z.string().optional().describe('Bucket description'),\n enabled: z.boolean().default(true).describe('Enable this bucket'),\n});\n\nexport type BucketConfig = z.infer<typeof BucketConfigSchema>;\n\n/**\n * Storage Connection Configuration\n * \n * Provider-specific connection credentials and settings.\n * \n * @example S3\n * {\n * accessKeyId: '${AWS_ACCESS_KEY_ID}',\n * secretAccessKey: '${AWS_SECRET_ACCESS_KEY}',\n * sessionToken: '${AWS_SESSION_TOKEN}',\n * region: 'us-east-1'\n * }\n * \n * @example Azure\n * {\n * accountName: 'mystorageaccount',\n * accountKey: '${AZURE_STORAGE_KEY}',\n * endpoint: 'https://mystorageaccount.blob.core.windows.net'\n * }\n */\nexport const StorageConnectionSchema = z.object({\n // AWS S3 / MinIO\n accessKeyId: z.string().optional().describe('AWS access key ID or MinIO access key'),\n secretAccessKey: z.string().optional().describe('AWS secret access key or MinIO secret key'),\n sessionToken: z.string().optional().describe('AWS session token for temporary credentials'),\n \n // Azure Blob Storage\n accountName: z.string().optional().describe('Azure storage account name'),\n accountKey: z.string().optional().describe('Azure storage account key'),\n sasToken: z.string().optional().describe('Azure SAS token'),\n \n // Google Cloud Storage\n projectId: z.string().optional().describe('GCP project ID'),\n credentials: z.string().optional().describe('GCP service account credentials JSON'),\n \n // Common\n endpoint: z.string().optional().describe('Custom endpoint URL'),\n region: z.string().optional().describe('Default region'),\n useSSL: z.boolean().default(true).describe('Use SSL/TLS for connections'),\n timeout: z.number().min(0).optional().describe('Connection timeout in milliseconds'),\n});\n\nexport type StorageConnection = z.infer<typeof StorageConnectionSchema>;\n\n/**\n * Object Storage Configuration\n * \n * Complete object storage system configuration.\n * \n * @example\n * {\n * name: 'production_storage',\n * label: 'Production File Storage',\n * provider: 's3',\n * scope: 'global',\n * connection: {\n * accessKeyId: '${AWS_ACCESS_KEY_ID}',\n * secretAccessKey: '${AWS_SECRET_ACCESS_KEY}',\n * region: 'us-east-1'\n * },\n * buckets: [\n * {\n * name: 'user_uploads',\n * label: 'User Uploads',\n * bucketName: 'prod-uploads',\n * provider: 's3',\n * region: 'us-east-1'\n * }\n * ],\n * defaultBucket: 'user_uploads'\n * }\n */\nexport const ObjectStorageConfigSchema = z.object({\n name: SystemIdentifierSchema.describe('Storage configuration identifier'),\n label: z.string().describe('Display label'),\n provider: StorageProviderSchema.describe('Primary storage provider'),\n \n /**\n * Storage scope\n * Defines the lifecycle and access pattern for this storage\n */\n scope: StorageScopeSchema.optional().default('global').describe('Storage scope'),\n \n connection: StorageConnectionSchema.describe('Connection credentials'),\n buckets: z.array(BucketConfigSchema).default([]).describe('Configured buckets'),\n defaultBucket: z.string().optional().describe('Default bucket name for operations'),\n \n /**\n * Base path or location\n * For local/scoped storage configurations\n */\n location: z.string().optional().describe('Root path (local) or base location'),\n \n /**\n * Storage quota in bytes\n */\n quota: z.number().int().positive().optional().describe('Max size in bytes'),\n \n /**\n * Provider-specific options\n */\n options: z.record(z.string(), z.any()).optional().describe('Provider-specific configuration options'),\n \n enabled: z.boolean().default(true).describe('Enable this storage configuration'),\n description: z.string().optional().describe('Configuration description'),\n});\n\nexport type ObjectStorageConfig = z.infer<typeof ObjectStorageConfigSchema>;\n\n// ============================================================================\n// Helper Examples\n// ============================================================================\n\n/**\n * Example: AWS S3 Configuration\n */\nexport const s3StorageExample = ObjectStorageConfigSchema.parse({\n name: 'aws_s3_storage',\n label: 'AWS S3 Production Storage',\n provider: 's3',\n connection: {\n accessKeyId: '${AWS_ACCESS_KEY_ID}',\n secretAccessKey: '${AWS_SECRET_ACCESS_KEY}',\n region: 'us-east-1',\n },\n buckets: [\n {\n name: 'user_uploads',\n label: 'User Uploads',\n bucketName: 'my-app-user-uploads',\n region: 'us-east-1',\n provider: 's3',\n versioning: true,\n encryption: {\n enabled: true,\n algorithm: 'aws:kms',\n kmsKeyId: '${AWS_KMS_KEY_ID}',\n },\n accessControl: {\n acl: 'private',\n corsEnabled: true,\n allowedOrigins: ['https://app.example.com'],\n allowedMethods: ['GET', 'PUT', 'POST'],\n },\n lifecyclePolicy: {\n enabled: true,\n rules: [\n {\n id: 'archive_old_uploads',\n enabled: true,\n action: 'transition',\n daysAfterCreation: 90,\n targetStorageClass: 'glacier',\n },\n ],\n },\n multipartConfig: {\n enabled: true,\n partSize: 10 * 1024 * 1024,\n threshold: 100 * 1024 * 1024,\n maxConcurrent: 4,\n },\n },\n ],\n defaultBucket: 'user_uploads',\n enabled: true,\n});\n\n/**\n * Example: MinIO Configuration\n */\nexport const minioStorageExample = ObjectStorageConfigSchema.parse({\n name: 'minio_local',\n label: 'MinIO Local Storage',\n provider: 'minio',\n connection: {\n accessKeyId: 'minioadmin',\n secretAccessKey: 'minioadmin',\n endpoint: 'http://localhost:9000',\n useSSL: false,\n },\n buckets: [\n {\n name: 'development_files',\n label: 'Development Files',\n bucketName: 'dev-files',\n provider: 'minio',\n endpoint: 'http://localhost:9000',\n pathStyle: true,\n accessControl: {\n acl: 'private',\n },\n },\n ],\n defaultBucket: 'development_files',\n enabled: true,\n});\n\n/**\n * Example: Azure Blob Storage Configuration\n */\nexport const azureBlobStorageExample = ObjectStorageConfigSchema.parse({\n name: 'azure_blob_storage',\n label: 'Azure Blob Storage',\n provider: 'azure_blob',\n connection: {\n accountName: 'mystorageaccount',\n accountKey: '${AZURE_STORAGE_KEY}',\n endpoint: 'https://mystorageaccount.blob.core.windows.net',\n },\n buckets: [\n {\n name: 'media_files',\n label: 'Media Files',\n bucketName: 'media',\n provider: 'azure_blob',\n region: 'eastus',\n accessControl: {\n acl: 'public_read',\n publicAccess: {\n allowPublicRead: true,\n allowPublicWrite: false,\n allowPublicList: false,\n },\n },\n },\n ],\n defaultBucket: 'media_files',\n enabled: true,\n});\n\n/**\n * Example: Google Cloud Storage Configuration\n */\nexport const gcsStorageExample = ObjectStorageConfigSchema.parse({\n name: 'gcs_storage',\n label: 'Google Cloud Storage',\n provider: 'gcs',\n connection: {\n projectId: 'my-gcp-project',\n credentials: '${GCP_SERVICE_ACCOUNT_JSON}',\n },\n buckets: [\n {\n name: 'backup_storage',\n label: 'Backup Storage',\n bucketName: 'my-app-backups',\n region: 'us-central1',\n provider: 'gcs',\n lifecyclePolicy: {\n enabled: true,\n rules: [\n {\n id: 'delete_old_backups',\n enabled: true,\n action: 'delete',\n daysAfterCreation: 30,\n },\n ],\n },\n },\n ],\n defaultBucket: 'backup_storage',\n enabled: true,\n});\n","import { z } from 'zod';\nimport { BaseResponseSchema } from './contract.zod';\nimport { ObjectSchema } from '../data/object.zod';\nimport { AppSchema } from '../ui/app.zod';\n\n/**\n * Metadata Service Protocol\n * \n * Defines the standard API contracts for fetching system metadata.\n * Frontend, IDEs, and Mobile apps use this to build dynamic UIs.\n */\n\n// ==========================================\n// Responses\n// ==========================================\n\n/**\n * Single Object Definition Response\n * Returns the full JSON schema for an Entity (Fields, Actions, Config).\n */\nexport const ObjectDefinitionResponseSchema = BaseResponseSchema.extend({\n data: ObjectSchema.describe('Full Object Schema'),\n});\n\n/**\n * App Definition Response\n * Returns the navigation, branding, and layout for an App.\n */\nexport const AppDefinitionResponseSchema = BaseResponseSchema.extend({\n data: AppSchema.describe('Full App Configuration'),\n});\n\n/**\n * All Concepts Response\n * Bulk load lightweight definitions for autocomplete/pickers.\n */\nexport const ConceptListResponseSchema = BaseResponseSchema.extend({\n data: z.array(z.object({\n name: z.string(),\n label: z.string(),\n icon: z.string().optional(),\n description: z.string().optional(),\n })).describe('List of available concepts (Objects, Apps, Flows)'),\n});\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 * 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 * Base Navigation Item Schema\n * Shared properties for all navigation types.\n * \n * **NAMING CONVENTION:**\n * Navigation item IDs are used in URLs and configuration and must be lowercase snake_case.\n * \n * @example Good IDs\n * - 'menu_accounts'\n * - 'page_dashboard'\n * - 'nav_settings'\n * \n * @example Bad IDs (will be rejected)\n * - 'MenuAccounts' (PascalCase)\n * - 'Page Dashboard' (spaces)\n */\nconst BaseNavItemSchema = z.object({\n /** Unique identifier for the item */\n id: SnakeCaseIdentifierSchema.describe('Unique identifier for this navigation item (lowercase snake_case)'),\n \n /** Display label */\n label: z.string().describe('Display proper label'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** \n * Visibility condition. \n * Formula expression returning boolean. \n * e.g. \"user.is_admin || user.department == 'sales'\"\n */\n visible: z.string().optional().describe('Visibility formula condition'),\n});\n\n/**\n * 1. Object Navigation Item\n * Navigates to an object's list view.\n */\nexport const ObjectNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('object'),\n objectName: z.string().describe('Target object name'),\n viewName: z.string().optional().describe('Default list view to open. Defaults to \"all\"'),\n});\n\n/**\n * 2. Dashboard Navigation Item\n * Navigates to a specific dashboard.\n */\nexport const DashboardNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('dashboard'),\n dashboardName: z.string().describe('Target dashboard name'),\n});\n\n/**\n * 3. Page Navigation Item\n * Navigates to a custom UI page/component.\n */\nexport const PageNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('page'),\n pageName: z.string().describe('Target custom page component name'),\n params: z.record(z.string(), z.any()).optional().describe('Parameters passed to the page context'),\n});\n\n/**\n * 4. URL Navigation Item\n * Navigates to an external or absolute URL.\n */\nexport const UrlNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('url'),\n url: z.string().describe('Target external URL'),\n target: z.enum(['_self', '_blank']).default('_self').describe('Link target window'),\n});\n\n/**\n * 5. Group Navigation Item\n * A container for child navigation items (Sub-menu).\n * Does not perform navigation itself.\n */\nexport const GroupNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('group'),\n expanded: z.boolean().default(false).describe('Default expansion state in sidebar'),\n // children property is added in the recursive definition below\n});\n\n/**\n * Recursive Union of all navigation item types.\n * Allows constructing a navigation tree.\n */\nexport const NavigationItemSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n // Object Item can now have children (Airtable style: Object -> Views)\n ObjectNavItemSchema.extend({\n children: z.array(NavigationItemSchema).optional().describe('Child navigation items (e.g. specific views)'),\n }),\n DashboardNavItemSchema,\n PageNavItemSchema,\n UrlNavItemSchema,\n GroupNavItemSchema.extend({\n children: z.array(NavigationItemSchema).describe('Child navigation items'),\n })\n ])\n);\n\n/**\n * App Branding Configuration\n * Allows configuring the look and feel of the specific app.\n */\nexport const AppBrandingSchema = z.object({\n primaryColor: z.string().optional().describe('Primary theme color hex code'),\n logo: z.string().optional().describe('Custom logo URL for this app'),\n favicon: z.string().optional().describe('Custom favicon URL for this app'),\n});\n\n/**\n * Schema for Applications (Apps).\n * A logical container for business functionality (e.g., \"Sales CRM\", \"HR Portal\").\n * \n * **NAMING CONVENTION:**\n * App names are used in URLs and routing and must be lowercase snake_case.\n * Prefix with 'app_' is recommended for clarity.\n * \n * @example Good app names\n * - 'app_crm'\n * - 'app_finance'\n * - 'app_portal'\n * - 'sales_app'\n * \n * @example Bad app names (will be rejected)\n * - 'CRM' (uppercase)\n * - 'FinanceApp' (mixed case)\n * - 'Sales App' (spaces)\n */\n/**\n * App Configuration Schema\n * Defines a business application container, including its navigation, branding, and permissions.\n * \n * @example CRM App\n * {\n * name: \"crm\",\n * label: \"Sales CRM\",\n * icon: \"briefcase\",\n * navigation: [\n * { type: \"object\", id: \"nav_leads\", label: \"Leads\", objectName: \"leads\" },\n * { type: \"object\", id: \"nav_deals\", label: \"Deals\", objectName: \"deals\" }\n * ],\n * requiredPermissions: [\"app.crm.access\"]\n * }\n */\nexport const AppSchema = z.object({\n /** Machine name (id) */\n name: SnakeCaseIdentifierSchema.describe('App unique machine name (lowercase snake_case)'),\n \n /** Display label */\n label: z.string().describe('App display label'),\n\n /** App version */\n version: z.string().optional().describe('App version'),\n \n /** Description */\n description: z.string().optional().describe('App description'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('App icon used in the App Launcher'),\n \n /** Branding/Theming Configuration */\n branding: AppBrandingSchema.optional().describe('App-specific branding'),\n \n /** Application status */\n active: z.boolean().optional().default(true).describe('Whether the app is enabled'),\n\n /** Is this the default app for new users? */\n isDefault: z.boolean().optional().default(false).describe('Is default app'),\n \n /** \n * Navigation Tree Structure.\n * Replaces the old flat 'tabs' list with a structured menu.\n */\n navigation: z.array(NavigationItemSchema).optional().describe('Structured navigation menu tree'),\n \n /** \n * App-level Home Page Override\n * ID of the navigation item to act as the landing page.\n * If not set, usually defaults to the first navigation item.\n */\n homePageId: z.string().optional().describe('ID of the navigation item to serve as landing page'),\n\n /** \n * Access Control\n * List of permissions required to access this app.\n * Modern replacement for role/profile based assignment.\n * Example: [\"app.access.crm\"]\n */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this app'),\n \n /** \n * Package Components (For config file convenience)\n * In a real monorepo these might be auto-discovered, but here we allow explicit registration.\n */\n objects: z.array(z.any()).optional().describe('Objects belonging to this app'),\n apis: z.array(z.any()).optional().describe('Custom APIs belonging to this app'),\n});\n\nexport const App = Object.assign(AppSchema, {\n create: <T extends z.input<typeof AppSchema>>(config: T) => config,\n});\n\n// Main Types\nexport type App = z.infer<typeof AppSchema>;\nexport type AppBranding = z.infer<typeof AppBrandingSchema>;\nexport type NavigationItem = z.infer<typeof NavigationItemSchema>;\n\n// Discriminated Item Types (Helper exports)\nexport type ObjectNavItem = z.infer<typeof ObjectNavItemSchema>;\nexport type DashboardNavItem = z.infer<typeof DashboardNavItemSchema>;\nexport type PageNavItem = z.infer<typeof PageNavItemSchema>;\nexport type UrlNavItem = z.infer<typeof UrlNavItemSchema>;\nexport type GroupNavItem = z.infer<typeof GroupNavItemSchema> & { children: NavigationItem[] };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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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","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","MetricType","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"]}
|
|
1
|
+
{"version":3,"sources":["../../src/api/index.ts","../../src/api/contract.zod.ts","../../src/data/query.zod.ts","../../src/data/filter.zod.ts","../../src/api/endpoint.zod.ts","../../src/shared/http.zod.ts","../../src/api/discovery.zod.ts","../../src/api/realtime.zod.ts","../../src/api/websocket.zod.ts","../../src/shared/identifiers.zod.ts","../../src/api/router.zod.ts","../../src/api/odata.zod.ts","../../src/api/graphql.zod.ts","../../src/api/batch.zod.ts","../../src/api/http-cache.zod.ts","../../src/api/errors.zod.ts","../../src/api/protocol.zod.ts","../../src/ui/view.zod.ts","../../src/api/analytics.zod.ts","../../src/data/analytics.zod.ts","../../src/api/hub.zod.ts","../../src/hub/composer.zod.ts","../../src/kernel/manifest.zod.ts","../../src/kernel/plugin-capability.zod.ts","../../src/kernel/plugin-loading.zod.ts","../../src/kernel/plugin.zod.ts","../../src/hub/marketplace.zod.ts","../../src/hub/plugin-registry.zod.ts","../../src/hub/registry-config.zod.ts","../../src/hub/space.zod.ts","../../src/hub/tenant.zod.ts","../../src/hub/license.zod.ts","../../src/hub/hub-federation.zod.ts","../../src/hub/plugin-security.zod.ts","../../src/api/rest-server.zod.ts","../../src/api/registry.zod.ts","../../src/api/documentation.zod.ts","../../src/api/auth.zod.ts","../../src/api/storage.zod.ts","../../src/system/object-storage.zod.ts","../../src/api/metadata.zod.ts","../../src/data/object.zod.ts","../../src/data/field.zod.ts","../../src/system/encryption.zod.ts","../../src/system/masking.zod.ts","../../src/data/validation.zod.ts","../../src/ui/app.zod.ts"],"sourcesContent":["/**\n * API Protocol Exports\n * \n * API Contracts & Envelopes\n * - Request/Response schemas\n * - Error handling\n * - OData v4 compatibility\n * - Batch operations\n * - Metadata caching\n * - Hub Management APIs\n */\n\nexport * from './contract.zod';\nexport * from './endpoint.zod';\nexport * from './discovery.zod';\nexport * from './realtime.zod';\nexport * from './websocket.zod';\nexport * from './router.zod';\nexport * from './odata.zod';\nexport * from './graphql.zod';\nexport * from './batch.zod';\nexport * from './http-cache.zod';\nexport * from './errors.zod';\nexport * from './protocol.zod';\nexport * from './rest-server.zod';\nexport * from './hub.zod';\nexport * from './registry.zod';\nexport * from './documentation.zod';\nexport * from './analytics.zod';\n\n// Legacy interface export (deprecated)\n// export type { IObjectStackProtocol } from './protocol';\n\nexport * from './auth.zod';\nexport * from './storage.zod';\nexport * from './metadata.zod';\nexport * from './auth.zod';\nexport * from './storage.zod';\n","import { z } from 'zod';\nimport { QuerySchema } from '../data/query.zod';\n\n// ==========================================\n// 1. Base Envelopes\n// ==========================================\n\nexport const ApiErrorSchema = z.object({\n code: z.string().describe('Error code (e.g. validation_error)'),\n message: z.string().describe('Readable error message'),\n category: z.string().optional().describe('Error category (e.g. validation, authorization)'),\n details: z.any().optional().describe('Additional error context (e.g. field validation errors)'),\n requestId: z.string().optional().describe('Request ID for tracking'),\n});\n\nexport const BaseResponseSchema = z.object({\n success: z.boolean().describe('Operation success status'),\n error: ApiErrorSchema.optional().describe('Error details if success is false'),\n meta: z.object({\n timestamp: z.string(),\n duration: z.number().optional(),\n requestId: z.string().optional(),\n traceId: z.string().optional(),\n }).optional().describe('Response metadata'),\n});\n\n// ==========================================\n// 2. Request Payloads (Inputs)\n// ==========================================\n\nexport const RecordDataSchema = z.record(z.string(), z.any()).describe('Key-value map of record data');\n\n/**\n * Standard Create Request\n */\nexport const CreateRequestSchema = z.object({\n data: RecordDataSchema.describe('Record data to insert'),\n});\n\n/**\n * Standard Update Request\n */\nexport const UpdateRequestSchema = z.object({\n data: RecordDataSchema.describe('Partial record data to update'),\n});\n\n/**\n * Standard Bulk Request\n */\nexport const BulkRequestSchema = z.object({\n records: z.array(RecordDataSchema).describe('Array of records to process'),\n allOrNone: z.boolean().default(true).describe('If true, rollback entire transaction on any failure'),\n});\n\n/**\n * Export Request\n */\nexport const ExportRequestSchema = z.intersection(\n QuerySchema,\n z.object({\n format: z.enum(['csv', 'json', 'xlsx']).default('csv'),\n })\n);\n\n// ==========================================\n// 3. Response Payloads (Outputs)\n// ==========================================\n\n/**\n * Single Record Response (Get/Create/Update)\n */\nexport const SingleRecordResponseSchema = BaseResponseSchema.extend({\n data: RecordDataSchema.describe('The requested or modified record'),\n});\n\n/**\n * List/Query Response\n */\nexport const ListRecordResponseSchema = BaseResponseSchema.extend({\n data: z.array(RecordDataSchema).describe('Array of matching records'),\n pagination: z.object({\n total: z.number().optional().describe('Total matching records count'),\n limit: z.number().optional().describe('Page size'),\n offset: z.number().optional().describe('Page offset'),\n cursor: z.string().optional().describe('Cursor for next page'),\n nextCursor: z.string().optional().describe('Next cursor for pagination'),\n hasMore: z.boolean().describe('Are there more pages?'),\n }).describe('Pagination info'),\n});\n\n/**\n * ID Request (Get/Delete)\n */\nexport const IdRequestSchema = z.object({\n id: z.string().describe('Record ID'),\n});\n\n/**\n * Modification Result (for Batch/Bulk operations)\n */\nexport const ModificationResultSchema = z.object({\n id: z.string().optional().describe('Record ID if processed'),\n success: z.boolean(),\n errors: z.array(ApiErrorSchema).optional(),\n index: z.number().optional().describe('Index in original request'),\n data: z.any().optional().describe('Result data (e.g. created record)'),\n});\n\n/**\n * Bulk Operation Response\n */\nexport const BulkResponseSchema = BaseResponseSchema.extend({\n data: z.array(ModificationResultSchema).describe('Results for each item in the batch'),\n});\n\n/**\n * Delete Response\n */\nexport const DeleteResponseSchema = BaseResponseSchema.extend({\n id: z.string().describe('ID of the deleted record'),\n});\n\n// ==========================================\n// 4. API Contract Registry\n// ==========================================\n\n/**\n * Standard API Contracts map\n * Used for generating SDKs and Documentation\n */\nexport const StandardApiContracts = {\n create: {\n input: CreateRequestSchema,\n output: SingleRecordResponseSchema\n },\n delete: {\n input: IdRequestSchema,\n output: DeleteResponseSchema\n },\n get: {\n input: IdRequestSchema,\n output: SingleRecordResponseSchema\n },\n update: {\n input: UpdateRequestSchema,\n output: SingleRecordResponseSchema\n },\n list: {\n input: QuerySchema,\n output: ListRecordResponseSchema\n },\n bulkCreate: {\n input: BulkRequestSchema,\n output: BulkResponseSchema\n },\n bulkUpdate: {\n input: BulkRequestSchema,\n output: BulkResponseSchema\n },\n bulkUpsert: {\n input: BulkRequestSchema,\n output: BulkResponseSchema\n },\n bulkDelete: {\n input: z.object({ ids: z.array(z.string()) }),\n output: BulkResponseSchema\n }\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 { HttpMethod, RateLimitConfigSchema } from '../shared/http.zod';\n\n/**\n * Rate Limit Strategy\n * @deprecated Use RateLimitConfigSchema from shared/http.zod.ts instead\n */\nexport const RateLimitSchema = RateLimitConfigSchema;\n\n/**\n * API Mapping Schema\n * Transform input/output data.\n */\nexport const ApiMappingSchema = z.object({\n source: z.string().describe('Source field/path'),\n target: z.string().describe('Target field/path'),\n transform: z.string().optional().describe('Transformation function name'),\n});\n\n/**\n * API Endpoint Schema\n * Defines an external facing API contract.\n */\nexport const ApiEndpointSchema = z.object({\n /** Identity */\n name: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique endpoint ID'),\n path: z.string().regex(/^\\//).describe('URL Path (e.g. /api/v1/customers)'),\n method: HttpMethod.describe('HTTP Method'),\n \n /** Documentation */\n summary: z.string().optional(),\n description: z.string().optional(),\n \n /** Execution Logic */\n type: z.enum(['flow', 'script', 'object_operation', 'proxy']).describe('Implementation type'),\n target: z.string().describe('Target Flow ID, Script Name, or Proxy URL'),\n \n /** Logic Config */\n objectParams: z.object({\n object: z.string().optional(),\n operation: z.enum(['find', 'get', 'create', 'update', 'delete']).optional(),\n }).optional().describe('For object_operation type'),\n \n /** Data Transformation */\n inputMapping: z.array(ApiMappingSchema).optional().describe('Map Request Body to Internal Params'),\n outputMapping: z.array(ApiMappingSchema).optional().describe('Map Internal Result to Response Body'),\n \n /** Policies */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n rateLimit: RateLimitSchema.optional().describe('Rate limiting policy'),\n cacheTtl: z.number().optional().describe('Response cache TTL in seconds'),\n});\n\nexport const ApiEndpoint = Object.assign(ApiEndpointSchema, {\n create: <T extends z.input<typeof ApiEndpointSchema>>(config: T) => config,\n});\n\nexport type ApiEndpoint = z.infer<typeof ApiEndpointSchema>;\n","import { z } from 'zod';\n\n/**\n * Shared HTTP Schemas\n * \n * Common HTTP-related schemas used across API and System protocols.\n * These schemas ensure consistency across different parts of the stack.\n */\n\n// ==========================================\n// Basic HTTP Types\n// ==========================================\n\n/**\n * HTTP Method Enum\n */\nexport const HttpMethod = z.enum([\n 'GET', \n 'POST', \n 'PUT', \n 'DELETE', \n 'PATCH', \n 'HEAD', \n 'OPTIONS'\n]);\n\nexport type HttpMethod = z.infer<typeof HttpMethod>;\n\n// ==========================================\n// CORS Configuration\n// ==========================================\n\n/**\n * CORS Configuration Schema\n * Cross-Origin Resource Sharing configuration\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"origins\": [\"http://localhost:3000\", \"https://app.example.com\"],\n * \"methods\": [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n * \"credentials\": true,\n * \"maxAge\": 86400\n * }\n */\nexport const CorsConfigSchema = z.object({\n /**\n * Enable CORS\n */\n enabled: z.boolean().default(true).describe('Enable CORS'),\n \n /**\n * Allowed origins (* for all)\n */\n origins: z.union([\n z.string(),\n z.array(z.string())\n ]).default('*').describe('Allowed origins (* for all)'),\n \n /**\n * Allowed HTTP methods\n */\n methods: z.array(HttpMethod).optional().describe('Allowed HTTP methods'),\n \n /**\n * Allow credentials (cookies, authorization headers)\n */\n credentials: z.boolean().default(false).describe('Allow credentials (cookies, authorization headers)'),\n \n /**\n * Preflight cache duration in seconds\n */\n maxAge: z.number().int().optional().describe('Preflight cache duration in seconds'),\n});\n\nexport type CorsConfig = z.infer<typeof CorsConfigSchema>;\n\n// ==========================================\n// Rate Limiting\n// ==========================================\n\n/**\n * Rate Limit Configuration Schema\n * \n * Used by:\n * - api/endpoint.zod.ts (ApiEndpointSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"enabled\": true,\n * \"windowMs\": 60000,\n * \"maxRequests\": 100\n * }\n */\nexport const RateLimitConfigSchema = z.object({\n /**\n * Enable rate limiting\n */\n enabled: z.boolean().default(false).describe('Enable rate limiting'),\n \n /**\n * Time window in milliseconds\n */\n windowMs: z.number().int().default(60000).describe('Time window in milliseconds'),\n \n /**\n * Max requests per window\n */\n maxRequests: z.number().int().default(100).describe('Max requests per window'),\n});\n\nexport type RateLimitConfig = z.infer<typeof RateLimitConfigSchema>;\n\n// ==========================================\n// Static File Serving\n// ==========================================\n\n/**\n * Static Mount Configuration Schema\n * Configuration for serving static files\n * \n * Used by:\n * - api/router.zod.ts (RouterConfigSchema)\n * - system/http-server.zod.ts (HttpServerConfigSchema)\n * \n * @example\n * {\n * \"path\": \"/static\",\n * \"directory\": \"./public\",\n * \"cacheControl\": \"public, max-age=31536000\"\n * }\n */\nexport const StaticMountSchema = z.object({\n /**\n * URL path to serve from\n */\n path: z.string().describe('URL path to serve from'),\n \n /**\n * Physical directory to serve\n */\n directory: z.string().describe('Physical directory to serve'),\n \n /**\n * Cache-Control header value\n */\n cacheControl: z.string().optional().describe('Cache-Control header value'),\n});\n\nexport type StaticMount = z.infer<typeof StaticMountSchema>;\n","import { z } from 'zod';\n\n/**\n * API Capabilities Schema\n * Defines what features are enabled on this ObjectOS instance.\n */\nexport const ApiCapabilitiesSchema = z.object({\n graphql: z.boolean().default(false),\n search: z.boolean().default(false),\n websockets: z.boolean().default(false),\n files: z.boolean().default(true),\n analytics: z.boolean().default(false).describe('Is the Analytics/BI engine enabled?'),\n hub: z.boolean().default(false).describe('Is Hub management enabled?'),\n});\n\n/**\n * API Routes Schema\n * The \"Map\" for the frontend to know where to send requests.\n * This decouples the frontend from hardcoded URL paths.\n */\nexport const ApiRoutesSchema = z.object({\n /** Base URL for Object CRUD (Data Protocol) */\n data: z.string().describe('e.g. /api/data'),\n \n /** Base URL for Schema Definitions (Metadata Protocol) */\n metadata: z.string().describe('e.g. /api/meta'),\n \n /** Base URL for Authentication */\n auth: z.string().describe('e.g. /api/auth'),\n \n /** Base URL for Automation (Flows/Scripts) */\n automation: z.string().optional().describe('e.g. /api/automation'),\n \n /** Base URL for File/Storage operations */\n storage: z.string().optional().describe('e.g. /api/storage'),\n \n /** Base URL for Analytics/BI operations */\n analytics: z.string().optional().describe('e.g. /api/analytics'),\n \n /** Base URL for Hub Management (Multi-tenant/Marketplace) */\n hub: z.string().optional().describe('e.g. /api/hub'),\n\n /** GraphQL Endpoint (if enabled) */\n graphql: z.string().optional().describe('e.g. /graphql'),\n});\n\n/**\n * Discovery Response Schema\n * The root object returned by the Metadata Discovery Endpoint.\n */\nexport const DiscoverySchema = z.object({\n /** System Identity */\n name: z.string(),\n version: z.string(),\n environment: z.enum(['production', 'sandbox', 'development']),\n \n /** Dynamic Routing */\n routes: ApiRoutesSchema,\n \n /** Feature Flags */\n features: ApiCapabilitiesSchema,\n \n /** Localization Info (helping frontend init i18n) */\n locale: z.object({\n default: z.string(),\n supported: z.array(z.string()),\n timezone: z.string(),\n }),\n});\n\nexport type DiscoveryResponse = z.infer<typeof DiscoverySchema>;\nexport type ApiRoutes = z.infer<typeof ApiRoutesSchema>;\nexport type ApiCapabilities = z.infer<typeof ApiCapabilitiesSchema>;\n","import { z } from 'zod';\n\n/**\n * Transport Protocol Enum\n * Defines the communication protocol for realtime data synchronization\n */\nexport const TransportProtocol = z.enum([\n 'websocket', // Full-duplex, low latency communication\n 'sse', // Server-Sent Events, unidirectional push\n 'polling', // Short polling, best compatibility\n]);\n\nexport type TransportProtocol = z.infer<typeof TransportProtocol>;\n\n/**\n * Event Type Enum\n * Types of realtime events that can be subscribed to\n */\nexport const RealtimeEventType = z.enum([\n 'record.created',\n 'record.updated',\n 'record.deleted',\n 'field.changed',\n]);\n\nexport type RealtimeEventType = z.infer<typeof RealtimeEventType>;\n\n/**\n * Subscription Event Configuration\n * Defines what events to subscribe to with optional filtering\n */\nexport const SubscriptionEventSchema = z.object({\n type: RealtimeEventType.describe('Type of event to subscribe to'),\n object: z.string().optional().describe('Object name to subscribe to'),\n filters: z.any().optional().describe('Filter conditions'),\n});\n\n/**\n * Subscription Schema\n * Configuration for subscribing to realtime events\n */\nexport const SubscriptionSchema = z.object({\n id: z.string().uuid().describe('Unique subscription identifier'),\n events: z.array(SubscriptionEventSchema).describe('Array of events to subscribe to'),\n transport: TransportProtocol.describe('Transport protocol to use'),\n channel: z.string().optional().describe('Optional channel name for grouping subscriptions'),\n});\n\nexport type Subscription = z.infer<typeof SubscriptionSchema>;\n\n/**\n * Presence Status Enum\n * User online/offline status\n */\nexport const PresenceStatus = z.enum([\n 'online',\n 'away',\n 'offline',\n]);\n\nexport type PresenceStatus = z.infer<typeof PresenceStatus>;\n\n/**\n * Presence Schema\n * Tracks user online status and metadata\n */\nexport const PresenceSchema = z.object({\n userId: z.string().describe('User identifier'),\n status: PresenceStatus.describe('Current presence status'),\n lastSeen: z.string().datetime().describe('ISO 8601 datetime of last activity'),\n metadata: z.record(z.string(), z.any()).optional().describe('Custom presence data (e.g., current page, custom status)'),\n});\n\nexport type Presence = z.infer<typeof PresenceSchema>;\n\n/**\n * Realtime Action Enum\n * Actions that can occur on records\n */\nexport const RealtimeAction = z.enum([\n 'created',\n 'updated',\n 'deleted',\n]);\n\nexport type RealtimeAction = z.infer<typeof RealtimeAction>;\n\n/**\n * Realtime Event Schema\n * Represents a realtime synchronization event\n */\nexport const RealtimeEventSchema = z.object({\n id: z.string().uuid().describe('Unique event identifier'),\n type: z.string().describe('Event type (e.g., record.created, record.updated)'),\n object: z.string().optional().describe('Object name the event relates to'),\n action: RealtimeAction.optional().describe('Action performed'),\n payload: z.record(z.string(), z.any()).describe('Event payload data'),\n timestamp: z.string().datetime().describe('ISO 8601 datetime when event occurred'),\n userId: z.string().optional().describe('User who triggered the event'),\n sessionId: z.string().optional().describe('Session identifier'),\n});\n\nexport type RealtimeEvent = z.infer<typeof RealtimeEventSchema>;\n\n/**\n * Realtime Configuration Schema\n * \n * Configuration for enabling realtime data synchronization.\n */\nexport const RealtimeConfigSchema = z.object({\n /** Enable realtime sync */\n enabled: z.boolean().default(true).describe('Enable realtime synchronization'),\n \n /** Transport protocol */\n transport: TransportProtocol.default('websocket').describe('Transport protocol'),\n \n /** Default subscriptions */\n subscriptions: z.array(SubscriptionSchema).optional().describe('Default subscriptions'),\n}).passthrough(); // Allow additional properties\n\nexport type RealtimeConfig = z.infer<typeof RealtimeConfigSchema>;\n","import { z } from 'zod';\nimport { EventNameSchema } from '../shared/identifiers.zod';\n\n/**\n * WebSocket Event Protocol\n * \n * Defines the schema for WebSocket-based real-time communication in ObjectStack.\n * Supports event subscriptions, filtering, presence tracking, and collaborative editing.\n * \n * Industry alignment: Firebase Realtime Database, Socket.IO, Pusher\n */\n\n// ==========================================\n// Message Types\n// ==========================================\n\n/**\n * WebSocket Message Type Enum\n * Defines the types of messages that can be sent over WebSocket\n */\nexport const WebSocketMessageType = z.enum([\n 'subscribe', // Client subscribes to events\n 'unsubscribe', // Client unsubscribes from events\n 'event', // Server sends event to client\n 'ping', // Keepalive ping\n 'pong', // Keepalive pong response\n 'ack', // Acknowledgment of message receipt\n 'error', // Error message\n 'presence', // Presence update (user status)\n 'cursor', // Cursor position update (collaborative editing)\n 'edit', // Document edit operation (collaborative editing)\n]);\n\nexport type WebSocketMessageType = z.infer<typeof WebSocketMessageType>;\n\n// ==========================================\n// Event Subscription\n// ==========================================\n\n/**\n * Event Filter Operator Enum\n * SQL-like filter operators for event filtering\n */\nexport const FilterOperator = z.enum([\n 'eq', // Equal\n 'ne', // Not equal\n 'gt', // Greater than\n 'gte', // Greater than or equal\n 'lt', // Less than\n 'lte', // Less than or equal\n 'in', // In array\n 'nin', // Not in array\n 'contains', // String contains\n 'startsWith', // String starts with\n 'endsWith', // String ends with\n 'exists', // Field exists\n 'regex', // Regex match\n]);\n\nexport type FilterOperator = z.infer<typeof FilterOperator>;\n\n/**\n * Event Filter Condition\n * Defines a single filter condition for event filtering\n */\nexport const EventFilterCondition = z.object({\n field: z.string().describe('Field path to filter on (supports dot notation, e.g., \"user.email\")'),\n operator: FilterOperator.describe('Comparison operator'),\n value: z.any().optional().describe('Value to compare against (not needed for \"exists\" operator)'),\n});\n\nexport type EventFilterCondition = z.infer<typeof EventFilterCondition>;\n\n/**\n * Event Filter Schema\n * Logical combination of filter conditions\n */\nexport const EventFilterSchema: z.ZodType<{\n conditions?: EventFilterCondition[];\n and?: EventFilter[];\n or?: EventFilter[];\n not?: EventFilter;\n}> = z.object({\n conditions: z.array(EventFilterCondition).optional().describe('Array of filter conditions'),\n and: z.lazy(() => z.array(EventFilterSchema)).optional().describe('AND logical combination of filters'),\n or: z.lazy(() => z.array(EventFilterSchema)).optional().describe('OR logical combination of filters'),\n not: z.lazy(() => EventFilterSchema).optional().describe('NOT logical negation of filter'),\n});\n\nexport type EventFilter = z.infer<typeof EventFilterSchema>;\n\n/**\n * Event Pattern Schema\n * Event name pattern that supports wildcards for subscriptions\n */\nexport const EventPatternSchema = z\n .string()\n .min(1)\n .regex(/^[a-z*][a-z0-9_.*]*$/, {\n message: 'Event pattern must be lowercase and may contain letters, numbers, underscores, dots, or wildcards (e.g., \"record.*\", \"*.created\", \"user.login\")',\n })\n .describe('Event pattern (supports wildcards like \"record.*\" or \"*.created\")');\n\nexport type EventPattern = z.infer<typeof EventPatternSchema>;\n\n/**\n * Event Subscription Config\n * Configuration for subscribing to specific events\n */\nexport const EventSubscriptionSchema = z.object({\n subscriptionId: z.string().uuid().describe('Unique subscription identifier'),\n events: z.array(EventPatternSchema).describe('Event patterns to subscribe to (supports wildcards, e.g., \"record.*\", \"user.created\")'),\n objects: z.array(z.string()).optional().describe('Object names to filter events by (e.g., [\"account\", \"contact\"])'),\n filters: EventFilterSchema.optional().describe('Advanced filter conditions for event payloads'),\n channels: z.array(z.string()).optional().describe('Channel names for scoped subscriptions'),\n});\n\nexport type EventSubscription = z.infer<typeof EventSubscriptionSchema>;\n\n/**\n * Unsubscribe Request\n * Request to unsubscribe from events\n */\nexport const UnsubscribeRequestSchema = z.object({\n subscriptionId: z.string().uuid().describe('Subscription ID to unsubscribe from'),\n});\n\nexport type UnsubscribeRequest = z.infer<typeof UnsubscribeRequestSchema>;\n\n// ==========================================\n// Presence Tracking\n// ==========================================\n\n/**\n * Presence Status Enum\n * User availability status for presence tracking\n */\nexport const WebSocketPresenceStatus = z.enum([\n 'online', // User is actively online\n 'away', // User is idle/away\n 'busy', // User is busy (do not disturb)\n 'offline', // User is offline\n]);\n\nexport type WebSocketPresenceStatus = z.infer<typeof WebSocketPresenceStatus>;\n\n/**\n * Presence State Schema\n * Tracks real-time user presence and activity\n */\nexport const PresenceStateSchema = z.object({\n userId: z.string().describe('User identifier'),\n sessionId: z.string().uuid().describe('Unique session identifier'),\n status: WebSocketPresenceStatus.describe('Current presence status'),\n lastSeen: z.string().datetime().describe('ISO 8601 datetime of last activity'),\n currentLocation: z.string().optional().describe('Current page/route user is viewing'),\n device: z.enum(['desktop', 'mobile', 'tablet', 'other']).optional().describe('Device type'),\n customStatus: z.string().optional().describe('Custom user status message'),\n metadata: z.record(z.string(), z.any()).optional().describe('Additional custom presence data'),\n});\n\nexport type PresenceState = z.infer<typeof PresenceStateSchema>;\n\n/**\n * Presence Update Request\n * Client request to update presence status\n */\nexport const PresenceUpdateSchema = z.object({\n status: WebSocketPresenceStatus.optional().describe('Updated presence status'),\n currentLocation: z.string().optional().describe('Updated current location'),\n customStatus: z.string().optional().describe('Updated custom status message'),\n metadata: z.record(z.string(), z.any()).optional().describe('Updated metadata'),\n});\n\nexport type PresenceUpdate = z.infer<typeof PresenceUpdateSchema>;\n\n// ==========================================\n// Collaborative Editing Protocol\n// ==========================================\n\n/**\n * Cursor Position Schema\n * Represents a cursor position in a document\n */\nexport const CursorPositionSchema = z.object({\n userId: z.string().describe('User identifier'),\n sessionId: z.string().uuid().describe('Session identifier'),\n documentId: z.string().describe('Document identifier being edited'),\n position: z.object({\n line: z.number().int().nonnegative().describe('Line number (0-indexed)'),\n column: z.number().int().nonnegative().describe('Column number (0-indexed)'),\n }).optional().describe('Cursor position in document'),\n selection: z.object({\n start: z.object({\n line: z.number().int().nonnegative(),\n column: z.number().int().nonnegative(),\n }),\n end: z.object({\n line: z.number().int().nonnegative(),\n column: z.number().int().nonnegative(),\n }),\n }).optional().describe('Selection range (if text is selected)'),\n color: z.string().optional().describe('Cursor color for visual representation'),\n userName: z.string().optional().describe('Display name of user'),\n lastUpdate: z.string().datetime().describe('ISO 8601 datetime of last cursor update'),\n});\n\nexport type CursorPosition = z.infer<typeof CursorPositionSchema>;\n\n/**\n * Edit Operation Type Enum\n * Types of edit operations for collaborative editing\n */\nexport const EditOperationType = z.enum([\n 'insert', // Insert text at position\n 'delete', // Delete text from range\n 'replace', // Replace text in range\n]);\n\nexport type EditOperationType = z.infer<typeof EditOperationType>;\n\n/**\n * Edit Operation Schema\n * Represents a single edit operation on a document\n * Supports Operational Transformation (OT) for conflict resolution\n */\nexport const EditOperationSchema = z.object({\n operationId: z.string().uuid().describe('Unique operation identifier'),\n documentId: z.string().describe('Document identifier'),\n userId: z.string().describe('User who performed the edit'),\n sessionId: z.string().uuid().describe('Session identifier'),\n type: EditOperationType.describe('Type of edit operation'),\n position: z.object({\n line: z.number().int().nonnegative().describe('Line number (0-indexed)'),\n column: z.number().int().nonnegative().describe('Column number (0-indexed)'),\n }).describe('Starting position of the operation'),\n endPosition: z.object({\n line: z.number().int().nonnegative(),\n column: z.number().int().nonnegative(),\n }).optional().describe('Ending position (for delete/replace operations)'),\n content: z.string().optional().describe('Content to insert/replace'),\n version: z.number().int().nonnegative().describe('Document version before this operation'),\n timestamp: z.string().datetime().describe('ISO 8601 datetime when operation was created'),\n baseOperationId: z.string().uuid().optional().describe('Previous operation ID this builds upon (for OT)'),\n});\n\nexport type EditOperation = z.infer<typeof EditOperationSchema>;\n\n/**\n * Document State Schema\n * Represents the current state of a collaborative document\n */\nexport const DocumentStateSchema = z.object({\n documentId: z.string().describe('Document identifier'),\n version: z.number().int().nonnegative().describe('Current document version'),\n content: z.string().describe('Current document content'),\n lastModified: z.string().datetime().describe('ISO 8601 datetime of last modification'),\n activeSessions: z.array(z.string().uuid()).describe('Active editing session IDs'),\n checksum: z.string().optional().describe('Content checksum for integrity verification'),\n});\n\nexport type DocumentState = z.infer<typeof DocumentStateSchema>;\n\n// ==========================================\n// WebSocket Messages\n// ==========================================\n\n/**\n * Base WebSocket Message\n * All WebSocket messages extend this base structure\n */\nconst BaseWebSocketMessage = z.object({\n messageId: z.string().uuid().describe('Unique message identifier'),\n type: WebSocketMessageType.describe('Message type'),\n timestamp: z.string().datetime().describe('ISO 8601 datetime when message was sent'),\n});\n\n/**\n * Subscribe Message\n * Client sends this to subscribe to events\n */\nexport const SubscribeMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('subscribe'),\n subscription: EventSubscriptionSchema.describe('Subscription configuration'),\n});\n\nexport type SubscribeMessage = z.infer<typeof SubscribeMessageSchema>;\n\n/**\n * Unsubscribe Message\n * Client sends this to unsubscribe from events\n */\nexport const UnsubscribeMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('unsubscribe'),\n request: UnsubscribeRequestSchema.describe('Unsubscribe request'),\n});\n\nexport type UnsubscribeMessage = z.infer<typeof UnsubscribeMessageSchema>;\n\n/**\n * Event Message\n * Server sends this when a subscribed event occurs\n */\nexport const EventMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('event'),\n subscriptionId: z.string().uuid().describe('Subscription ID this event belongs to'),\n eventName: EventNameSchema.describe('Event name'),\n object: z.string().optional().describe('Object name the event relates to'),\n payload: z.any().describe('Event payload data'),\n userId: z.string().optional().describe('User who triggered the event'),\n});\n\nexport type EventMessage = z.infer<typeof EventMessageSchema>;\n\n/**\n * Presence Message\n * Presence update message\n */\nexport const PresenceMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('presence'),\n presence: PresenceStateSchema.describe('Presence state'),\n});\n\nexport type PresenceMessage = z.infer<typeof PresenceMessageSchema>;\n\n/**\n * Cursor Message\n * Cursor position update for collaborative editing\n */\nexport const CursorMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('cursor'),\n cursor: CursorPositionSchema.describe('Cursor position'),\n});\n\nexport type CursorMessage = z.infer<typeof CursorMessageSchema>;\n\n/**\n * Edit Message\n * Document edit operation for collaborative editing\n */\nexport const EditMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('edit'),\n operation: EditOperationSchema.describe('Edit operation'),\n});\n\nexport type EditMessage = z.infer<typeof EditMessageSchema>;\n\n/**\n * Acknowledgment Message\n * Server acknowledges receipt of a message\n */\nexport const AckMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('ack'),\n ackMessageId: z.string().uuid().describe('ID of the message being acknowledged'),\n success: z.boolean().describe('Whether the operation was successful'),\n error: z.string().optional().describe('Error message if operation failed'),\n});\n\nexport type AckMessage = z.infer<typeof AckMessageSchema>;\n\n/**\n * Error Message\n * Server sends error information\n */\nexport const ErrorMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('error'),\n code: z.string().describe('Error code'),\n message: z.string().describe('Error message'),\n details: z.any().optional().describe('Additional error details'),\n});\n\nexport type ErrorMessage = z.infer<typeof ErrorMessageSchema>;\n\n/**\n * Ping Message\n * Keepalive ping from client or server\n */\nexport const PingMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('ping'),\n});\n\nexport type PingMessage = z.infer<typeof PingMessageSchema>;\n\n/**\n * Pong Message\n * Keepalive pong response\n */\nexport const PongMessageSchema = BaseWebSocketMessage.extend({\n type: z.literal('pong'),\n pingMessageId: z.string().uuid().optional().describe('ID of ping message being responded to'),\n});\n\nexport type PongMessage = z.infer<typeof PongMessageSchema>;\n\n/**\n * WebSocket Message Union\n * Discriminated union of all WebSocket message types\n */\nexport const WebSocketMessageSchema = z.discriminatedUnion('type', [\n SubscribeMessageSchema,\n UnsubscribeMessageSchema,\n EventMessageSchema,\n PresenceMessageSchema,\n CursorMessageSchema,\n EditMessageSchema,\n AckMessageSchema,\n ErrorMessageSchema,\n PingMessageSchema,\n PongMessageSchema,\n]);\n\nexport type WebSocketMessage = z.infer<typeof WebSocketMessageSchema>;\n\n// ==========================================\n// Connection Configuration\n// ==========================================\n\n/**\n * WebSocket Connection Config\n * Configuration for WebSocket connections\n */\nexport const WebSocketConfigSchema = z.object({\n url: z.string().url().describe('WebSocket server URL'),\n protocols: z.array(z.string()).optional().describe('WebSocket sub-protocols'),\n reconnect: z.boolean().optional().default(true).describe('Enable automatic reconnection'),\n reconnectInterval: z.number().int().positive().optional().default(1000).describe('Reconnection interval in milliseconds'),\n maxReconnectAttempts: z.number().int().positive().optional().default(5).describe('Maximum reconnection attempts'),\n pingInterval: z.number().int().positive().optional().default(30000).describe('Ping interval in milliseconds'),\n timeout: z.number().int().positive().optional().default(5000).describe('Message timeout in milliseconds'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom headers for WebSocket handshake'),\n});\n\nexport type WebSocketConfig = z.infer<typeof WebSocketConfigSchema>;\n\n// ==========================================\n// Simplified Collaboration API\n// ==========================================\n\n/**\n * Simplified WebSocket Event Schema\n * \n * A simplified event schema for basic WebSocket communication.\n * Complements the comprehensive WebSocketMessageSchema above for simpler use cases.\n * \n * @example Subscribe to channel\n * ```typescript\n * {\n * type: 'subscribe',\n * channel: 'record.account.123',\n * payload: { events: ['created', 'updated'] },\n * timestamp: Date.now()\n * }\n * ```\n * \n * @example Data change notification\n * ```typescript\n * {\n * type: 'data-change',\n * channel: 'record.account.123',\n * payload: { id: '123', action: 'updated', data: {...} },\n * timestamp: Date.now()\n * }\n * ```\n */\nexport const WebSocketEventSchema = z.object({\n type: z.enum([\n 'subscribe', // Client subscribes to channel\n 'unsubscribe', // Client unsubscribes from channel\n 'data-change', // Data modification event\n 'presence-update', // User presence change\n 'cursor-update', // Cursor position change (collaborative editing)\n 'error', // Error message\n ]).describe('Event type'),\n channel: z.string().describe('Channel identifier (e.g., \"record.account.123\", \"user.456\")'),\n payload: z.any().describe('Event payload data'),\n timestamp: z.number().describe('Unix timestamp in milliseconds'),\n});\n\nexport type WebSocketEvent = z.infer<typeof WebSocketEventSchema>;\n\n/**\n * Simplified Presence State Schema\n * \n * A simplified presence schema for basic user presence tracking.\n * Complements the comprehensive PresenceStateSchema for simpler integrations.\n * \n * Use this for basic presence features. For advanced features like device tracking,\n * custom status, and session management, use the comprehensive PresenceStateSchema above.\n * \n * @example User online\n * ```typescript\n * {\n * userId: 'user123',\n * userName: 'John Doe',\n * status: 'online',\n * lastSeen: Date.now(),\n * metadata: { currentPage: '/dashboard' }\n * }\n * ```\n */\nexport const SimplePresenceStateSchema = z.object({\n userId: z.string().describe('User identifier'),\n userName: z.string().describe('User display name'),\n status: z.enum(['online', 'away', 'offline']).describe('User presence status'),\n lastSeen: z.number().describe('Unix timestamp of last activity in milliseconds'),\n metadata: z.record(z.string(), z.any()).optional().describe('Additional presence metadata (e.g., current page, custom status)'),\n});\n\nexport type SimplePresenceState = z.infer<typeof SimplePresenceStateSchema>;\n\n/**\n * Simplified Cursor Position Schema\n * \n * A simplified cursor position schema for basic collaborative editing.\n * Complements the comprehensive CursorPositionSchema for simpler use cases.\n * \n * Use this for basic cursor sharing. For advanced features like selections,\n * color coding, and document versioning, use the comprehensive CursorPositionSchema above.\n * \n * @example Cursor in text field\n * ```typescript\n * {\n * userId: 'user123',\n * recordId: 'account_456',\n * fieldName: 'description',\n * position: 42,\n * selection: { start: 42, end: 57 }\n * }\n * ```\n */\nexport const SimpleCursorPositionSchema = z.object({\n userId: z.string().describe('User identifier'),\n recordId: z.string().describe('Record identifier being edited'),\n fieldName: z.string().describe('Field name being edited'),\n position: z.number().describe('Cursor position (character offset from start)'),\n selection: z.object({\n start: z.number().describe('Selection start position'),\n end: z.number().describe('Selection end position'),\n }).optional().describe('Text selection range (if text is selected)'),\n});\n\nexport type SimpleCursorPosition = z.infer<typeof SimpleCursorPositionSchema>;\n\n/**\n * WebSocket Server Configuration Schema\n * \n * Server-side configuration for WebSocket services.\n * Controls features like presence tracking, cursor sharing, and connection management.\n * \n * @example Production configuration\n * ```typescript\n * {\n * enabled: true,\n * path: '/ws',\n * heartbeatInterval: 30000,\n * reconnectAttempts: 5,\n * presence: true,\n * cursorSharing: true\n * }\n * ```\n */\nexport const WebSocketServerConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable WebSocket server'),\n path: z.string().default('/ws').describe('WebSocket endpoint path'),\n heartbeatInterval: z.number().default(30000).describe('Heartbeat interval in milliseconds'),\n reconnectAttempts: z.number().default(5).describe('Maximum reconnection attempts for clients'),\n presence: z.boolean().default(false).describe('Enable presence tracking'),\n cursorSharing: z.boolean().default(false).describe('Enable collaborative cursor sharing'),\n});\n\nexport type WebSocketServerConfig = z.infer<typeof WebSocketServerConfigSchema>;\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';\nimport { CorsConfigSchema, StaticMountSchema, HttpMethod } from '../shared/http.zod';\n\n// Re-export HttpMethod for convenience\nexport { HttpMethod };\n\n/**\n * Route Category Enum\n * Classifies routes for middleware application and security policies.\n */\nexport const RouteCategory = z.enum([\n 'system', // Health, Metrics, Info (No Auth usually)\n 'api', // Business Logic API (Auth required)\n 'auth', // Login/Callback endpoints\n 'static', // Asset serving\n 'webhook', // External callbacks\n 'plugin' // Plugin extensions\n]);\n\nexport type RouteCategory = z.infer<typeof RouteCategory>;\n\n/**\n * Route Definition Schema\n * Describes a single routable endpoint in the Kernel.\n */\nexport const RouteDefinitionSchema = z.object({\n /**\n * HTTP Method\n */\n method: HttpMethod,\n \n /**\n * URL Path Pattern (supports parameters like /user/:id)\n */\n path: z.string().describe('URL Path pattern'),\n \n /**\n * Route Type/Category\n */\n category: RouteCategory.default('api'),\n \n /**\n * Handler Identifier\n * References an internal function or plugin action ID.\n */\n handler: z.string().describe('Unique handler identifier'),\n \n /**\n * Route specific metadata\n */\n summary: z.string().optional().describe('OpenAPI summary'),\n description: z.string().optional().describe('OpenAPI description'),\n \n /**\n * Security constraints\n */\n public: z.boolean().default(false).describe('Is publicly accessible'),\n permissions: z.array(z.string()).optional().describe('Required permissions'),\n \n /**\n * Performance hints\n */\n timeout: z.number().int().optional().describe('Execution timeout in ms'),\n rateLimit: z.string().optional().describe('Rate limit policy name'),\n});\n\nexport type RouteDefinition = z.infer<typeof RouteDefinitionSchema>;\n\n/**\n * Router Configuration Schema\n * Global routing table configuration.\n */\nexport const RouterConfigSchema = z.object({\n /**\n * URL Prefix for all kernel routes\n */\n basePath: z.string().default('/api').describe('Global API prefix'),\n \n /**\n * Standard Protocol Mounts (Relative to basePath)\n */\n mounts: z.object({\n data: z.string().default('/data').describe('Data Protocol (CRUD)'),\n metadata: z.string().default('/meta').describe('Metadata Protocol (Schemas)'),\n auth: z.string().default('/auth').describe('Auth Protocol'),\n automation: z.string().default('/automation').describe('Automation Protocol'),\n storage: z.string().default('/storage').describe('Storage Protocol'),\n analytics: z.string().default('/analytics').describe('Analytics Protocol'),\n hub: z.string().default('/hub').describe('Hub Management Protocol'),\n graphql: z.string().default('/graphql').describe('GraphQL Endpoint'),\n }).default({\n data: '/data',\n metadata: '/meta',\n auth: '/auth',\n automation: '/automation',\n storage: '/storage',\n analytics: '/analytics',\n hub: '/hub',\n graphql: '/graphql'\n }), // Defaults match standardized spec\n\n /**\n * Cross-Origin Resource Sharing\n */\n cors: CorsConfigSchema.optional(),\n \n /**\n * Static asset mounts\n */\n staticMounts: z.array(StaticMountSchema).optional(),\n});\n\nexport type RouterConfig = z.infer<typeof RouterConfigSchema>;\n","import { z } from 'zod';\n\n/**\n * OData v4 Protocol Support\n * \n * Open Data Protocol (OData) v4 is an industry-standard protocol for building\n * and consuming RESTful APIs. It provides a uniform way to expose, structure,\n * query, and manipulate data.\n * \n * ## Overview\n * \n * OData v4 provides standardized URL conventions for querying data including:\n * - $select: Choose which fields to return\n * - $filter: Filter results with complex expressions\n * - $orderby: Sort results\n * - $top/$skip: Pagination\n * - $expand: Include related entities\n * - $count: Get total count\n * \n * ## Use Cases\n * \n * 1. **Enterprise Integration**\n * - Integrate with Microsoft Dynamics 365\n * - Connect to SharePoint Online\n * - SAP OData services\n * \n * 2. **API Standardization**\n * - Provide consistent query interface\n * - Standard pagination and filtering\n * - Industry-recognized protocol\n * \n * 3. **External Data Sources**\n * - Connect to OData-compliant systems\n * - Federated queries\n * - Data virtualization\n * \n * @see https://www.odata.org/documentation/\n * @see https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html\n * \n * @example OData Query\n * ```\n * GET /api/odata/customers?\n * $select=name,email&\n * $filter=country eq 'US' and revenue gt 100000&\n * $orderby=revenue desc&\n * $top=10&\n * $skip=20&\n * $expand=orders&\n * $count=true\n * ```\n * \n * @example Programmatic Use\n * ```typescript\n * const query: ODataQuery = {\n * select: ['name', 'email'],\n * filter: \"country eq 'US' and revenue gt 100000\",\n * orderby: 'revenue desc',\n * top: 10,\n * skip: 20,\n * expand: ['orders'],\n * count: true\n * }\n * ```\n */\n\n/**\n * OData Query Options Schema\n * \n * System query options defined by OData v4 specification.\n * These are URL query parameters that control the query execution.\n * \n * @see https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_SystemQueryOptions\n */\nexport const ODataQuerySchema = z.object({\n /**\n * $select - Select specific fields to return\n * \n * Comma-separated list of field names to include in the response.\n * Reduces payload size and improves performance.\n * \n * @example \"name,email,phone\"\n * @example \"id,customer/name\" - With navigation path\n */\n $select: z.union([\n z.string(), // \"name,email\"\n z.array(z.string()), // [\"name\", \"email\"]\n ]).optional().describe('Fields to select'),\n\n /**\n * $filter - Filter results with conditions\n * \n * OData filter expression using comparison operators, logical operators,\n * and functions.\n * \n * Comparison: eq, ne, lt, le, gt, ge\n * Logical: and, or, not\n * Functions: contains, startswith, endswith, length, indexof, substring, etc.\n * \n * @example \"age gt 18\"\n * @example \"country eq 'US' and revenue gt 100000\"\n * @example \"contains(name, 'Smith')\"\n * @example \"startswith(email, 'admin') and isActive eq true\"\n */\n $filter: z.string().optional().describe('Filter expression (OData filter syntax)'),\n\n /**\n * $orderby - Sort results\n * \n * Comma-separated list of fields with optional asc/desc.\n * Default is ascending.\n * \n * @example \"name\"\n * @example \"revenue desc\"\n * @example \"country asc, revenue desc\"\n */\n $orderby: z.union([\n z.string(), // \"name desc\"\n z.array(z.string()), // [\"name desc\", \"email asc\"]\n ]).optional().describe('Sort order'),\n\n /**\n * $top - Limit number of results\n * \n * Maximum number of results to return.\n * Equivalent to SQL LIMIT or FETCH FIRST.\n * \n * @example 10\n * @example 100\n */\n $top: z.number().int().min(0).optional().describe('Max results to return'),\n\n /**\n * $skip - Skip results for pagination\n * \n * Number of results to skip before returning results.\n * Equivalent to SQL OFFSET.\n * \n * @example 20\n * @example 100\n */\n $skip: z.number().int().min(0).optional().describe('Results to skip'),\n\n /**\n * $expand - Include related entities\n * \n * Comma-separated list of navigation properties to expand.\n * Loads related data in the same request.\n * \n * @example \"orders\"\n * @example \"customer,products\"\n * @example \"orders($select=id,total)\" - With nested query options\n */\n $expand: z.union([\n z.string(), // \"orders\"\n z.array(z.string()), // [\"orders\", \"customer\"]\n ]).optional().describe('Navigation properties to expand'),\n\n /**\n * $count - Include total count\n * \n * When true, includes totalResults count in response.\n * Useful for pagination UI.\n * \n * @example true\n */\n $count: z.boolean().optional().describe('Include total count'),\n\n /**\n * $search - Full-text search\n * \n * Free-text search expression.\n * Search implementation is service-specific.\n * \n * @example \"John Smith\"\n * @example \"urgent AND support\"\n */\n $search: z.string().optional().describe('Search expression'),\n\n /**\n * $format - Response format\n * \n * Preferred response format.\n * \n * @example \"json\"\n * @example \"xml\"\n */\n $format: z.enum(['json', 'xml', 'atom']).optional().describe('Response format'),\n\n /**\n * $apply - Data aggregation\n * \n * Aggregation transformations (groupby, aggregate, etc.)\n * Part of OData aggregation extension.\n * \n * @example \"groupby((country),aggregate(revenue with sum as totalRevenue))\"\n */\n $apply: z.string().optional().describe('Aggregation expression'),\n});\n\nexport type ODataQuery = z.infer<typeof ODataQuerySchema>;\n\n/**\n * OData Filter Operator\n * \n * Standard comparison and logical operators in OData filter expressions.\n */\nexport const ODataFilterOperatorSchema = z.enum([\n // Comparison Operators\n 'eq', // Equal to\n 'ne', // Not equal to\n 'lt', // Less than\n 'le', // Less than or equal to\n 'gt', // Greater than\n 'ge', // Greater than or equal to\n\n // Logical Operators\n 'and', // Logical AND\n 'or', // Logical OR\n 'not', // Logical NOT\n\n // Grouping\n '(', // Left parenthesis\n ')', // Right parenthesis\n\n // Other\n 'in', // Value in list\n 'has', // Has flag (for enum flags)\n]);\n\nexport type ODataFilterOperator = z.infer<typeof ODataFilterOperatorSchema>;\n\n/**\n * OData Filter Function\n * \n * Standard functions available in OData filter expressions.\n */\nexport const ODataFilterFunctionSchema = z.enum([\n // String Functions\n 'contains', // contains(field, 'value')\n 'startswith', // startswith(field, 'value')\n 'endswith', // endswith(field, 'value')\n 'length', // length(field)\n 'indexof', // indexof(field, 'substring')\n 'substring', // substring(field, start, length)\n 'tolower', // tolower(field)\n 'toupper', // toupper(field)\n 'trim', // trim(field)\n 'concat', // concat(field1, field2)\n\n // Date/Time Functions\n 'year', // year(dateField)\n 'month', // month(dateField)\n 'day', // day(dateField)\n 'hour', // hour(datetimeField)\n 'minute', // minute(datetimeField)\n 'second', // second(datetimeField)\n 'date', // date(datetimeField)\n 'time', // time(datetimeField)\n 'now', // now()\n 'maxdatetime', // maxdatetime()\n 'mindatetime', // mindatetime()\n\n // Math Functions\n 'round', // round(numField)\n 'floor', // floor(numField)\n 'ceiling', // ceiling(numField)\n\n // Type Functions\n 'cast', // cast(field, 'Edm.String')\n 'isof', // isof(field, 'Type')\n\n // Collection Functions\n 'any', // collection/any(d:d/prop eq value)\n 'all', // collection/all(d:d/prop eq value)\n]);\n\nexport type ODataFilterFunction = z.infer<typeof ODataFilterFunctionSchema>;\n\n/**\n * OData Response Schema\n * \n * Standard OData JSON response format.\n */\nexport const ODataResponseSchema = z.object({\n /**\n * OData context URL\n * Describes the payload structure\n */\n '@odata.context': z.string().url().optional().describe('Metadata context URL'),\n\n /**\n * Total count (when $count=true)\n */\n '@odata.count': z.number().int().optional().describe('Total results count'),\n\n /**\n * Next link for pagination\n */\n '@odata.nextLink': z.string().url().optional().describe('Next page URL'),\n\n /**\n * Result array\n */\n value: z.array(z.record(z.string(), z.any())).describe('Results array'),\n});\n\nexport type ODataResponse = z.infer<typeof ODataResponseSchema>;\n\n/**\n * OData Error Response Schema\n * \n * Standard OData error format.\n */\nexport const ODataErrorSchema = z.object({\n error: z.object({\n /**\n * Error code\n */\n code: z.string().describe('Error code'),\n\n /**\n * Error message\n */\n message: z.string().describe('Error message'),\n\n /**\n * Target of the error (field name, etc.)\n */\n target: z.string().optional().describe('Error target'),\n\n /**\n * Additional error details\n */\n details: z.array(z.object({\n code: z.string(),\n message: z.string(),\n target: z.string().optional(),\n })).optional().describe('Error details'),\n\n /**\n * Inner error for debugging\n */\n innererror: z.record(z.string(), z.any()).optional().describe('Inner error details'),\n }),\n});\n\nexport type ODataError = z.infer<typeof ODataErrorSchema>;\n\n/**\n * OData Metadata Configuration\n * \n * Configuration for OData metadata endpoint ($metadata).\n */\nexport const ODataMetadataSchema = z.object({\n /**\n * Service namespace\n */\n namespace: z.string().describe('Service namespace'),\n\n /**\n * Entity types to expose\n */\n entityTypes: z.array(z.object({\n name: z.string().describe('Entity type name'),\n key: z.array(z.string()).describe('Key fields'),\n properties: z.array(z.object({\n name: z.string(),\n type: z.string().describe('OData type (Edm.String, Edm.Int32, etc.)'),\n nullable: z.boolean().default(true),\n })),\n navigationProperties: z.array(z.object({\n name: z.string(),\n type: z.string(),\n partner: z.string().optional(),\n })).optional(),\n })).describe('Entity types'),\n\n /**\n * Entity sets\n */\n entitySets: z.array(z.object({\n name: z.string().describe('Entity set name'),\n entityType: z.string().describe('Entity type'),\n })).describe('Entity sets'),\n});\n\nexport type ODataMetadata = z.infer<typeof ODataMetadataSchema>;\n\n/**\n * Helper functions for OData operations\n */\nexport const OData = {\n /**\n * Build OData query URL\n */\n buildUrl: (baseUrl: string, query: ODataQuery): string => {\n const params = new URLSearchParams();\n\n if (query.$select) {\n params.append('$select', Array.isArray(query.$select) ? query.$select.join(',') : query.$select);\n }\n if (query.$filter) {\n params.append('$filter', query.$filter);\n }\n if (query.$orderby) {\n params.append('$orderby', Array.isArray(query.$orderby) ? query.$orderby.join(',') : query.$orderby);\n }\n if (query.$top !== undefined) {\n params.append('$top', query.$top.toString());\n }\n if (query.$skip !== undefined) {\n params.append('$skip', query.$skip.toString());\n }\n if (query.$expand) {\n params.append('$expand', Array.isArray(query.$expand) ? query.$expand.join(',') : query.$expand);\n }\n if (query.$count !== undefined) {\n params.append('$count', query.$count.toString());\n }\n if (query.$search) {\n params.append('$search', query.$search);\n }\n if (query.$format) {\n params.append('$format', query.$format);\n }\n if (query.$apply) {\n params.append('$apply', query.$apply);\n }\n\n const queryString = params.toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n },\n\n /**\n * Create a simple filter expression\n */\n filter: {\n eq: (field: string, value: string | number | boolean) => \n `${field} eq ${typeof value === 'string' ? `'${value}'` : value}`,\n ne: (field: string, value: string | number | boolean) => \n `${field} ne ${typeof value === 'string' ? `'${value}'` : value}`,\n gt: (field: string, value: number) => `${field} gt ${value}`,\n lt: (field: string, value: number) => `${field} lt ${value}`,\n contains: (field: string, value: string) => `contains(${field}, '${value}')`,\n and: (...expressions: string[]) => expressions.join(' and '),\n or: (...expressions: string[]) => expressions.join(' or '),\n },\n} as const;\n\n/**\n * OData Configuration Schema\n * \n * Configuration for enabling OData v4 API endpoint.\n */\nexport const ODataConfigSchema = z.object({\n /** Enable OData endpoint */\n enabled: z.boolean().default(true).describe('Enable OData API'),\n \n /** OData endpoint path */\n path: z.string().default('/odata').describe('OData endpoint path'),\n \n /** Metadata configuration */\n metadata: ODataMetadataSchema.optional().describe('OData metadata configuration'),\n}).passthrough(); // Allow additional properties for flexibility\n\nexport type ODataConfig = z.infer<typeof ODataConfigSchema>;\n","import { z } from 'zod';\nimport { FieldType } from '../data/field.zod';\n\n/**\n * GraphQL Protocol Support\n * \n * GraphQL is a query language for APIs and a runtime for executing those queries.\n * It provides a complete and understandable description of the data in your API,\n * gives clients the power to ask for exactly what they need, and enables powerful\n * developer tools.\n * \n * ## Overview\n * \n * GraphQL provides:\n * - Type-safe schema definition\n * - Precise data fetching (no over/under-fetching)\n * - Introspection and documentation\n * - Real-time subscriptions\n * - Batched queries with DataLoader\n * \n * ## Use Cases\n * \n * 1. **Modern API Development**\n * - Mobile and web applications\n * - Microservices federation\n * - Real-time dashboards\n * \n * 2. **Data Aggregation**\n * - Multi-source data integration\n * - Complex nested queries\n * - Efficient data loading\n * \n * 3. **Developer Experience**\n * - Self-documenting API\n * - Type safety and validation\n * - GraphQL playground\n * \n * @see https://graphql.org/\n * @see https://spec.graphql.org/\n * \n * @example GraphQL Query\n * ```graphql\n * query GetCustomer($id: ID!) {\n * customer(id: $id) {\n * id\n * name\n * email\n * orders(limit: 10, status: \"active\") {\n * id\n * total\n * items {\n * product {\n * name\n * price\n * }\n * }\n * }\n * }\n * }\n * ```\n * \n * @example GraphQL Mutation\n * ```graphql\n * mutation CreateOrder($input: CreateOrderInput!) {\n * createOrder(input: $input) {\n * id\n * orderNumber\n * status\n * }\n * }\n * ```\n */\n\n// ==========================================\n// 1. GraphQL Type System\n// ==========================================\n\n/**\n * GraphQL Scalar Types\n * \n * Built-in scalar types in GraphQL plus custom scalars.\n */\nexport const GraphQLScalarType = z.enum([\n // Built-in GraphQL Scalars\n 'ID',\n 'String',\n 'Int',\n 'Float',\n 'Boolean',\n \n // Extended Scalars (common custom types)\n 'DateTime',\n 'Date',\n 'Time',\n 'JSON',\n 'JSONObject',\n 'Upload',\n 'URL',\n 'Email',\n 'PhoneNumber',\n 'Currency',\n 'Decimal',\n 'BigInt',\n 'Long',\n 'UUID',\n 'Base64',\n 'Void',\n]);\n\nexport type GraphQLScalarType = z.infer<typeof GraphQLScalarType>;\n\n/**\n * GraphQL Type Configuration\n * \n * Configuration for generating GraphQL types from Object definitions.\n */\nexport const GraphQLTypeConfigSchema = z.object({\n /** Type name in GraphQL schema */\n name: z.string().describe('GraphQL type name (PascalCase recommended)'),\n \n /** Source Object name */\n object: z.string().describe('Source ObjectQL object name'),\n \n /** Description for GraphQL schema documentation */\n description: z.string().optional().describe('Type description'),\n \n /** Fields to include/exclude */\n fields: z.object({\n /** Include only these fields (allow list) */\n include: z.array(z.string()).optional().describe('Fields to include'),\n \n /** Exclude these fields (deny list) */\n exclude: z.array(z.string()).optional().describe('Fields to exclude (e.g., sensitive fields)'),\n \n /** Custom field mappings */\n mappings: z.record(z.string(), z.object({\n graphqlName: z.string().optional().describe('Custom GraphQL field name'),\n graphqlType: z.string().optional().describe('Override GraphQL type'),\n description: z.string().optional().describe('Field description'),\n deprecationReason: z.string().optional().describe('Why field is deprecated'),\n nullable: z.boolean().optional().describe('Override nullable'),\n })).optional().describe('Field-level customizations'),\n }).optional().describe('Field configuration'),\n \n /** Interfaces this type implements */\n interfaces: z.array(z.string()).optional().describe('GraphQL interface names'),\n \n /** Whether this is an interface definition */\n isInterface: z.boolean().optional().default(false).describe('Define as GraphQL interface'),\n \n /** Custom directives */\n directives: z.array(z.object({\n name: z.string().describe('Directive name'),\n args: z.record(z.string(), z.any()).optional().describe('Directive arguments'),\n })).optional().describe('GraphQL directives'),\n});\n\nexport type GraphQLTypeConfig = z.infer<typeof GraphQLTypeConfigSchema>;\n\n// ==========================================\n// 2. Query Generation Configuration\n// ==========================================\n\n/**\n * GraphQL Query Configuration\n * \n * Configuration for auto-generating query fields from Objects.\n */\nexport const GraphQLQueryConfigSchema = z.object({\n /** Query name */\n name: z.string().describe('Query field name (camelCase recommended)'),\n \n /** Source Object */\n object: z.string().describe('Source ObjectQL object name'),\n \n /** Query type: single record or list */\n type: z.enum(['get', 'list', 'search']).describe('Query type'),\n \n /** Description */\n description: z.string().optional().describe('Query description'),\n \n /** Input arguments */\n args: z.record(z.string(), z.object({\n type: z.string().describe('GraphQL type (e.g., \"ID!\", \"String\", \"Int\")'),\n description: z.string().optional().describe('Argument description'),\n defaultValue: z.any().optional().describe('Default value'),\n })).optional().describe('Query arguments'),\n \n /** Filtering configuration */\n filtering: z.object({\n enabled: z.boolean().default(true).describe('Allow filtering'),\n fields: z.array(z.string()).optional().describe('Filterable fields'),\n operators: z.array(z.enum([\n 'eq', 'ne', 'gt', 'gte', 'lt', 'lte',\n 'in', 'notIn', 'contains', 'startsWith', 'endsWith',\n 'isNull', 'isNotNull',\n ])).optional().describe('Allowed filter operators'),\n }).optional().describe('Filtering capabilities'),\n \n /** Sorting configuration */\n sorting: z.object({\n enabled: z.boolean().default(true).describe('Allow sorting'),\n fields: z.array(z.string()).optional().describe('Sortable fields'),\n defaultSort: z.object({\n field: z.string(),\n direction: z.enum(['ASC', 'DESC']),\n }).optional().describe('Default sort order'),\n }).optional().describe('Sorting capabilities'),\n \n /** Pagination configuration */\n pagination: z.object({\n enabled: z.boolean().default(true).describe('Enable pagination'),\n type: z.enum(['offset', 'cursor', 'relay']).default('offset').describe('Pagination style'),\n defaultLimit: z.number().int().min(1).default(20).describe('Default page size'),\n maxLimit: z.number().int().min(1).default(100).describe('Maximum page size'),\n cursors: z.object({\n field: z.string().default('id').describe('Field to use for cursor pagination'),\n }).optional(),\n }).optional().describe('Pagination configuration'),\n \n /** Field selection */\n fields: z.object({\n /** Always include these fields */\n required: z.array(z.string()).optional().describe('Required fields (always returned)'),\n \n /** Allow selecting these fields */\n selectable: z.array(z.string()).optional().describe('Selectable fields'),\n }).optional().describe('Field selection configuration'),\n \n /** Authorization */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n permissions: z.array(z.string()).optional().describe('Required permissions'),\n \n /** Caching */\n cache: z.object({\n enabled: z.boolean().default(false).describe('Enable caching'),\n ttl: z.number().int().min(0).optional().describe('Cache TTL in seconds'),\n key: z.string().optional().describe('Cache key template'),\n }).optional().describe('Query caching'),\n});\n\nexport type GraphQLQueryConfig = z.infer<typeof GraphQLQueryConfigSchema>;\n\n// ==========================================\n// 3. Mutation Generation Configuration\n// ==========================================\n\n/**\n * GraphQL Mutation Configuration\n * \n * Configuration for auto-generating mutation fields from Objects.\n */\nexport const GraphQLMutationConfigSchema = z.object({\n /** Mutation name */\n name: z.string().describe('Mutation field name (camelCase recommended)'),\n \n /** Source Object */\n object: z.string().describe('Source ObjectQL object name'),\n \n /** Mutation type */\n type: z.enum(['create', 'update', 'delete', 'upsert', 'custom']).describe('Mutation type'),\n \n /** Description */\n description: z.string().optional().describe('Mutation description'),\n \n /** Input type configuration */\n input: z.object({\n /** Input type name */\n typeName: z.string().optional().describe('Custom input type name'),\n \n /** Fields to include in input */\n fields: z.object({\n include: z.array(z.string()).optional().describe('Fields to include'),\n exclude: z.array(z.string()).optional().describe('Fields to exclude'),\n required: z.array(z.string()).optional().describe('Required input fields'),\n }).optional().describe('Input field configuration'),\n \n /** Validation */\n validation: z.object({\n enabled: z.boolean().default(true).describe('Enable input validation'),\n rules: z.array(z.string()).optional().describe('Custom validation rules'),\n }).optional().describe('Input validation'),\n }).optional().describe('Input configuration'),\n \n /** Return type configuration */\n output: z.object({\n /** Type of output */\n type: z.enum(['object', 'payload', 'boolean', 'custom']).default('object').describe('Output type'),\n \n /** Include success/error envelope */\n includeEnvelope: z.boolean().optional().default(false).describe('Wrap in success/error payload'),\n \n /** Custom output type */\n customType: z.string().optional().describe('Custom output type name'),\n }).optional().describe('Output configuration'),\n \n /** Transaction handling */\n transaction: z.object({\n enabled: z.boolean().default(true).describe('Use database transaction'),\n isolationLevel: z.enum(['read_uncommitted', 'read_committed', 'repeatable_read', 'serializable']).optional().describe('Transaction isolation level'),\n }).optional().describe('Transaction configuration'),\n \n /** Authorization */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n permissions: z.array(z.string()).optional().describe('Required permissions'),\n \n /** Hooks */\n hooks: z.object({\n before: z.array(z.string()).optional().describe('Pre-mutation hooks'),\n after: z.array(z.string()).optional().describe('Post-mutation hooks'),\n }).optional().describe('Lifecycle hooks'),\n});\n\nexport type GraphQLMutationConfig = z.infer<typeof GraphQLMutationConfigSchema>;\n\n// ==========================================\n// 4. Subscription Configuration\n// ==========================================\n\n/**\n * GraphQL Subscription Configuration\n * \n * Configuration for real-time GraphQL subscriptions.\n */\nexport const GraphQLSubscriptionConfigSchema = z.object({\n /** Subscription name */\n name: z.string().describe('Subscription field name (camelCase recommended)'),\n \n /** Source Object */\n object: z.string().describe('Source ObjectQL object name'),\n \n /** Subscription trigger events */\n events: z.array(z.enum(['created', 'updated', 'deleted', 'custom'])).describe('Events to subscribe to'),\n \n /** Description */\n description: z.string().optional().describe('Subscription description'),\n \n /** Filtering */\n filter: z.object({\n enabled: z.boolean().default(true).describe('Allow filtering subscriptions'),\n fields: z.array(z.string()).optional().describe('Filterable fields'),\n }).optional().describe('Subscription filtering'),\n \n /** Payload configuration */\n payload: z.object({\n /** Include the modified entity */\n includeEntity: z.boolean().default(true).describe('Include entity in payload'),\n \n /** Include previous values (for updates) */\n includePreviousValues: z.boolean().optional().default(false).describe('Include previous field values'),\n \n /** Include mutation metadata */\n includeMeta: z.boolean().optional().default(true).describe('Include metadata (timestamp, user, etc.)'),\n }).optional().describe('Payload configuration'),\n \n /** Authorization */\n authRequired: z.boolean().default(true).describe('Require authentication'),\n permissions: z.array(z.string()).optional().describe('Required permissions'),\n \n /** Rate limiting for subscriptions */\n rateLimit: z.object({\n enabled: z.boolean().default(true).describe('Enable rate limiting'),\n maxSubscriptionsPerUser: z.number().int().min(1).default(10).describe('Max concurrent subscriptions per user'),\n throttleMs: z.number().int().min(0).optional().describe('Throttle interval in milliseconds'),\n }).optional().describe('Subscription rate limiting'),\n});\n\nexport type GraphQLSubscriptionConfig = z.infer<typeof GraphQLSubscriptionConfigSchema>;\n\n// ==========================================\n// 5. Resolver Configuration\n// ==========================================\n\n/**\n * GraphQL Resolver Configuration\n * \n * Configuration for custom resolver logic.\n */\nexport const GraphQLResolverConfigSchema = z.object({\n /** Field path (e.g., \"Query.users\", \"Mutation.createUser\") */\n path: z.string().describe('Resolver path (Type.field)'),\n \n /** Resolver implementation type */\n type: z.enum(['datasource', 'computed', 'script', 'proxy']).describe('Resolver implementation type'),\n \n /** Implementation details */\n implementation: z.object({\n /** For datasource type */\n datasource: z.string().optional().describe('Datasource ID'),\n query: z.string().optional().describe('Query/SQL to execute'),\n \n /** For computed type */\n expression: z.string().optional().describe('Computation expression'),\n dependencies: z.array(z.string()).optional().describe('Dependent fields'),\n \n /** For script type */\n script: z.string().optional().describe('Script ID or inline code'),\n \n /** For proxy type */\n url: z.string().optional().describe('Proxy URL'),\n method: z.enum(['GET', 'POST', 'PUT', 'DELETE']).optional().describe('HTTP method'),\n }).optional().describe('Implementation configuration'),\n \n /** Caching */\n cache: z.object({\n enabled: z.boolean().default(false).describe('Enable resolver caching'),\n ttl: z.number().int().min(0).optional().describe('Cache TTL in seconds'),\n keyArgs: z.array(z.string()).optional().describe('Arguments to include in cache key'),\n }).optional().describe('Resolver caching'),\n});\n\nexport type GraphQLResolverConfig = z.infer<typeof GraphQLResolverConfigSchema>;\n\n// ==========================================\n// 6. DataLoader Configuration\n// ==========================================\n\n/**\n * GraphQL DataLoader Configuration\n * \n * Configuration for batching and caching with DataLoader pattern.\n * Prevents N+1 query problems in GraphQL.\n */\nexport const GraphQLDataLoaderConfigSchema = z.object({\n /** Loader name */\n name: z.string().describe('DataLoader name'),\n \n /** Source Object or datasource */\n source: z.string().describe('Source object or datasource'),\n \n /** Batch function configuration */\n batchFunction: z.object({\n /** Type of batch operation */\n type: z.enum(['findByIds', 'query', 'script', 'custom']).describe('Batch function type'),\n \n /** For findByIds */\n keyField: z.string().optional().describe('Field to batch on (e.g., \"id\")'),\n \n /** For query */\n query: z.string().optional().describe('Query template'),\n \n /** For script */\n script: z.string().optional().describe('Script ID'),\n \n /** Maximum batch size */\n maxBatchSize: z.number().int().min(1).optional().default(100).describe('Maximum batch size'),\n }).describe('Batch function configuration'),\n \n /** Caching */\n cache: z.object({\n enabled: z.boolean().default(true).describe('Enable per-request caching'),\n \n /** Cache key function */\n keyFn: z.string().optional().describe('Custom cache key function'),\n }).optional().describe('DataLoader caching'),\n \n /** Options */\n options: z.object({\n /** Batch multiple requests in single tick */\n batch: z.boolean().default(true).describe('Enable batching'),\n \n /** Cache loaded values */\n cache: z.boolean().default(true).describe('Enable caching'),\n \n /** Maximum cache size */\n maxCacheSize: z.number().int().min(0).optional().describe('Max cache entries'),\n }).optional().describe('DataLoader options'),\n});\n\nexport type GraphQLDataLoaderConfig = z.infer<typeof GraphQLDataLoaderConfigSchema>;\n\n// ==========================================\n// 7. GraphQL Directive Schema\n// ==========================================\n\n/**\n * GraphQL Directive Location\n * \n * Where a directive can be used in the schema.\n */\nexport const GraphQLDirectiveLocation = z.enum([\n // Executable Directive Locations\n 'QUERY',\n 'MUTATION',\n 'SUBSCRIPTION',\n 'FIELD',\n 'FRAGMENT_DEFINITION',\n 'FRAGMENT_SPREAD',\n 'INLINE_FRAGMENT',\n 'VARIABLE_DEFINITION',\n \n // Type System Directive Locations\n 'SCHEMA',\n 'SCALAR',\n 'OBJECT',\n 'FIELD_DEFINITION',\n 'ARGUMENT_DEFINITION',\n 'INTERFACE',\n 'UNION',\n 'ENUM',\n 'ENUM_VALUE',\n 'INPUT_OBJECT',\n 'INPUT_FIELD_DEFINITION',\n]);\n\nexport type GraphQLDirectiveLocation = z.infer<typeof GraphQLDirectiveLocation>;\n\n/**\n * GraphQL Directive Configuration\n * \n * Custom directives for schema metadata and behavior.\n */\nexport const GraphQLDirectiveConfigSchema = z.object({\n /** Directive name */\n name: z.string().regex(/^[a-z][a-zA-Z0-9]*$/).describe('Directive name (camelCase)'),\n \n /** Description */\n description: z.string().optional().describe('Directive description'),\n \n /** Where directive can be used */\n locations: z.array(GraphQLDirectiveLocation).describe('Directive locations'),\n \n /** Arguments */\n args: z.record(z.string(), z.object({\n type: z.string().describe('Argument type'),\n description: z.string().optional().describe('Argument description'),\n defaultValue: z.any().optional().describe('Default value'),\n })).optional().describe('Directive arguments'),\n \n /** Is repeatable */\n repeatable: z.boolean().optional().default(false).describe('Can be applied multiple times'),\n \n /** Implementation */\n implementation: z.object({\n /** Directive behavior type */\n type: z.enum(['auth', 'validation', 'transform', 'cache', 'deprecation', 'custom']).describe('Directive type'),\n \n /** Handler function */\n handler: z.string().optional().describe('Handler function name or script'),\n }).optional().describe('Directive implementation'),\n});\n\nexport type GraphQLDirectiveConfig = z.infer<typeof GraphQLDirectiveConfigSchema>;\n\n// ==========================================\n// 8. GraphQL Security - Query Depth Limiting\n// ==========================================\n\n/**\n * Query Depth Limiting Configuration\n * \n * Prevents deeply nested queries that could cause performance issues.\n */\nexport const GraphQLQueryDepthLimitSchema = z.object({\n /** Enable depth limiting */\n enabled: z.boolean().default(true).describe('Enable query depth limiting'),\n \n /** Maximum allowed depth */\n maxDepth: z.number().int().min(1).default(10).describe('Maximum query depth'),\n \n /** Fields to ignore in depth calculation */\n ignoreFields: z.array(z.string()).optional().describe('Fields excluded from depth calculation'),\n \n /** Callback on depth exceeded */\n onDepthExceeded: z.enum(['reject', 'log', 'warn']).default('reject').describe('Action when depth exceeded'),\n \n /** Custom error message */\n errorMessage: z.string().optional().describe('Custom error message for depth violations'),\n});\n\nexport type GraphQLQueryDepthLimit = z.infer<typeof GraphQLQueryDepthLimitSchema>;\n\n// ==========================================\n// 9. GraphQL Security - Query Complexity\n// ==========================================\n\n/**\n * Query Complexity Calculation Configuration\n * \n * Assigns complexity scores to fields and limits total query complexity.\n * Prevents expensive queries from overloading the server.\n */\nexport const GraphQLQueryComplexitySchema = z.object({\n /** Enable complexity limiting */\n enabled: z.boolean().default(true).describe('Enable query complexity limiting'),\n \n /** Maximum allowed complexity score */\n maxComplexity: z.number().int().min(1).default(1000).describe('Maximum query complexity'),\n \n /** Default field complexity */\n defaultFieldComplexity: z.number().int().min(0).default(1).describe('Default complexity per field'),\n \n /** Field-specific complexity scores */\n fieldComplexity: z.record(z.string(), z.union([\n z.number().int().min(0),\n z.object({\n /** Base complexity */\n base: z.number().int().min(0).describe('Base complexity'),\n \n /** Multiplier based on arguments */\n multiplier: z.string().optional().describe('Argument multiplier (e.g., \"limit\")'),\n \n /** Custom complexity calculation */\n calculator: z.string().optional().describe('Custom calculator function'),\n }),\n ])).optional().describe('Per-field complexity configuration'),\n \n /** List multiplier */\n listMultiplier: z.number().min(0).default(10).describe('Multiplier for list fields'),\n \n /** Callback on complexity exceeded */\n onComplexityExceeded: z.enum(['reject', 'log', 'warn']).default('reject').describe('Action when complexity exceeded'),\n \n /** Custom error message */\n errorMessage: z.string().optional().describe('Custom error message for complexity violations'),\n});\n\nexport type GraphQLQueryComplexity = z.infer<typeof GraphQLQueryComplexitySchema>;\n\n// ==========================================\n// 10. GraphQL Security - Rate Limiting\n// ==========================================\n\n/**\n * GraphQL Rate Limiting Configuration\n * \n * Rate limiting for GraphQL operations.\n */\nexport const GraphQLRateLimitSchema = z.object({\n /** Enable rate limiting */\n enabled: z.boolean().default(true).describe('Enable rate limiting'),\n \n /** Rate limit strategy */\n strategy: z.enum(['token_bucket', 'fixed_window', 'sliding_window', 'cost_based']).default('token_bucket').describe('Rate limiting strategy'),\n \n /** Global rate limits */\n global: z.object({\n /** Requests per time window */\n maxRequests: z.number().int().min(1).default(1000).describe('Maximum requests per window'),\n \n /** Time window in milliseconds */\n windowMs: z.number().int().min(1000).default(60000).describe('Time window in milliseconds'),\n }).optional().describe('Global rate limits'),\n \n /** Per-user rate limits */\n perUser: z.object({\n /** Requests per time window */\n maxRequests: z.number().int().min(1).default(100).describe('Maximum requests per user per window'),\n \n /** Time window in milliseconds */\n windowMs: z.number().int().min(1000).default(60000).describe('Time window in milliseconds'),\n }).optional().describe('Per-user rate limits'),\n \n /** Cost-based rate limiting */\n costBased: z.object({\n /** Enable cost-based limiting */\n enabled: z.boolean().default(false).describe('Enable cost-based rate limiting'),\n \n /** Maximum cost per time window */\n maxCost: z.number().int().min(1).default(10000).describe('Maximum cost per window'),\n \n /** Time window in milliseconds */\n windowMs: z.number().int().min(1000).default(60000).describe('Time window in milliseconds'),\n \n /** Use complexity as cost */\n useComplexityAsCost: z.boolean().default(true).describe('Use query complexity as cost'),\n }).optional().describe('Cost-based rate limiting'),\n \n /** Operation-specific limits */\n operations: z.record(z.string(), z.object({\n maxRequests: z.number().int().min(1).describe('Max requests for this operation'),\n windowMs: z.number().int().min(1000).describe('Time window'),\n })).optional().describe('Per-operation rate limits'),\n \n /** Callback on limit exceeded */\n onLimitExceeded: z.enum(['reject', 'queue', 'log']).default('reject').describe('Action when rate limit exceeded'),\n \n /** Custom error message */\n errorMessage: z.string().optional().describe('Custom error message for rate limit violations'),\n \n /** Headers to include in response */\n includeHeaders: z.boolean().default(true).describe('Include rate limit headers in response'),\n});\n\nexport type GraphQLRateLimit = z.infer<typeof GraphQLRateLimitSchema>;\n\n// ==========================================\n// 11. GraphQL Security - Persisted Queries\n// ==========================================\n\n/**\n * Persisted Queries Configuration\n * \n * Only allow pre-registered queries to execute (allow list approach).\n * Improves security and performance.\n */\nexport const GraphQLPersistedQuerySchema = z.object({\n /** Enable persisted queries */\n enabled: z.boolean().default(false).describe('Enable persisted queries'),\n \n /** Enforcement mode */\n mode: z.enum(['optional', 'required']).default('optional').describe('Persisted query mode (optional: allow both, required: only persisted)'),\n \n /** Query store configuration */\n store: z.object({\n /** Store type */\n type: z.enum(['memory', 'redis', 'database', 'file']).default('memory').describe('Query store type'),\n \n /** Store connection string */\n connection: z.string().optional().describe('Store connection string or path'),\n \n /** TTL for cached queries */\n ttl: z.number().int().min(0).optional().describe('TTL in seconds for stored queries'),\n }).optional().describe('Query store configuration'),\n \n /** Automatic Persisted Queries (APQ) */\n apq: z.object({\n /** Enable APQ */\n enabled: z.boolean().default(true).describe('Enable Automatic Persisted Queries'),\n \n /** Hash algorithm */\n hashAlgorithm: z.enum(['sha256', 'sha1', 'md5']).default('sha256').describe('Hash algorithm for query IDs'),\n \n /** Cache control */\n cache: z.object({\n /** Cache TTL */\n ttl: z.number().int().min(0).default(3600).describe('Cache TTL in seconds'),\n \n /** Max cache size */\n maxSize: z.number().int().min(1).optional().describe('Maximum number of cached queries'),\n }).optional().describe('APQ cache configuration'),\n }).optional().describe('Automatic Persisted Queries configuration'),\n \n /** Query allow list */\n allowlist: z.object({\n /** Enable allow list mode */\n enabled: z.boolean().default(false).describe('Enable query allow list (reject queries not in list)'),\n \n /** Allowed query IDs */\n queries: z.array(z.object({\n id: z.string().describe('Query ID or hash'),\n operation: z.string().optional().describe('Operation name'),\n query: z.string().optional().describe('Query string'),\n })).optional().describe('Allowed queries'),\n \n /** External allow list source */\n source: z.string().optional().describe('External allow list source (file path or URL)'),\n }).optional().describe('Query allow list configuration'),\n \n /** Security */\n security: z.object({\n /** Maximum query size */\n maxQuerySize: z.number().int().min(1).optional().describe('Maximum query string size in bytes'),\n \n /** Reject introspection in production */\n rejectIntrospection: z.boolean().default(false).describe('Reject introspection queries'),\n }).optional().describe('Security configuration'),\n});\n\nexport type GraphQLPersistedQuery = z.infer<typeof GraphQLPersistedQuerySchema>;\n\n// ==========================================\n// 12. Complete GraphQL Configuration\n// ==========================================\n\n/**\n * Complete GraphQL Configuration\n * \n * Root configuration for GraphQL API generation and security.\n */\nexport const GraphQLConfigSchema = z.object({\n /** Enable GraphQL API */\n enabled: z.boolean().default(true).describe('Enable GraphQL API'),\n \n /** GraphQL endpoint path */\n path: z.string().default('/graphql').describe('GraphQL endpoint path'),\n \n /** GraphQL Playground */\n playground: z.object({\n enabled: z.boolean().default(true).describe('Enable GraphQL Playground'),\n path: z.string().default('/playground').describe('Playground path'),\n }).optional().describe('GraphQL Playground configuration'),\n \n /** Schema generation */\n schema: z.object({\n /** Auto-generate types from Objects */\n autoGenerateTypes: z.boolean().default(true).describe('Auto-generate types from Objects'),\n \n /** Type configurations */\n types: z.array(GraphQLTypeConfigSchema).optional().describe('Type configurations'),\n \n /** Query configurations */\n queries: z.array(GraphQLQueryConfigSchema).optional().describe('Query configurations'),\n \n /** Mutation configurations */\n mutations: z.array(GraphQLMutationConfigSchema).optional().describe('Mutation configurations'),\n \n /** Subscription configurations */\n subscriptions: z.array(GraphQLSubscriptionConfigSchema).optional().describe('Subscription configurations'),\n \n /** Custom resolvers */\n resolvers: z.array(GraphQLResolverConfigSchema).optional().describe('Custom resolver configurations'),\n \n /** Custom directives */\n directives: z.array(GraphQLDirectiveConfigSchema).optional().describe('Custom directive configurations'),\n }).optional().describe('Schema generation configuration'),\n \n /** DataLoader configurations */\n dataLoaders: z.array(GraphQLDataLoaderConfigSchema).optional().describe('DataLoader configurations'),\n \n /** Security configuration */\n security: z.object({\n /** Query depth limiting */\n depthLimit: GraphQLQueryDepthLimitSchema.optional().describe('Query depth limiting'),\n \n /** Query complexity */\n complexity: GraphQLQueryComplexitySchema.optional().describe('Query complexity calculation'),\n \n /** Rate limiting */\n rateLimit: GraphQLRateLimitSchema.optional().describe('Rate limiting'),\n \n /** Persisted queries */\n persistedQueries: GraphQLPersistedQuerySchema.optional().describe('Persisted queries'),\n }).optional().describe('Security configuration'),\n});\n\nexport const GraphQLConfig = Object.assign(GraphQLConfigSchema, {\n create: <T extends z.input<typeof GraphQLConfigSchema>>(config: T) => config,\n});\n\nexport type GraphQLConfig = z.infer<typeof GraphQLConfigSchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Helper to map ObjectQL field type to GraphQL scalar type\n */\nexport const mapFieldTypeToGraphQL = (fieldType: z.infer<typeof FieldType>): string => {\n const mapping: Record<string, string> = {\n // Core Text\n 'text': 'String',\n 'textarea': 'String',\n 'email': 'Email',\n 'url': 'URL',\n 'phone': 'PhoneNumber',\n 'password': 'String',\n \n // Rich Content\n 'markdown': 'String',\n 'html': 'String',\n 'richtext': 'String',\n \n // Numbers\n 'number': 'Float',\n 'currency': 'Currency',\n 'percent': 'Float',\n \n // Date & Time\n 'date': 'Date',\n 'datetime': 'DateTime',\n 'time': 'Time',\n \n // Logic\n 'boolean': 'Boolean',\n 'toggle': 'Boolean',\n \n // Selection\n 'select': 'String',\n 'multiselect': '[String]',\n 'radio': 'String',\n 'checkboxes': '[String]',\n \n // Relational\n 'lookup': 'ID',\n 'master_detail': 'ID',\n 'tree': 'ID',\n \n // Media\n 'image': 'URL',\n 'file': 'URL',\n 'avatar': 'URL',\n 'video': 'URL',\n 'audio': 'URL',\n \n // Calculated\n 'formula': 'String',\n 'summary': 'Float',\n 'autonumber': 'String',\n \n // Enhanced Types\n 'location': 'JSONObject',\n 'address': 'JSONObject',\n 'code': 'String',\n 'json': 'JSON',\n 'color': 'String',\n 'rating': 'Float',\n 'slider': 'Float',\n 'signature': 'String',\n 'qrcode': 'String',\n 'progress': 'Float',\n 'tags': '[String]',\n \n // AI/ML\n 'vector': '[Float]',\n };\n \n return mapping[fieldType] || 'String';\n};\n","import { z } from 'zod';\nimport { ApiErrorSchema, BaseResponseSchema, RecordDataSchema } from './contract.zod';\n\n/**\n * Batch Operations API\n * \n * Provides efficient bulk data operations with transaction support.\n * Implements P0/P1 requirements for ObjectStack kernel.\n * \n * Features:\n * - Batch create/update/delete operations\n * - Atomic transaction support (all-or-none)\n * - Partial success handling\n * - Detailed error reporting per record\n * \n * Industry alignment: Salesforce Bulk API, Microsoft Dynamics Bulk Operations\n */\n\n// ==========================================\n// Batch Operation Types\n// ==========================================\n\n/**\n * Batch Operation Type Enum\n * Defines the type of batch operation to perform\n */\nexport const BatchOperationType = z.enum([\n 'create', // Batch insert\n 'update', // Batch update\n 'upsert', // Batch upsert (insert or update based on external ID)\n 'delete', // Batch delete\n]);\n\nexport type BatchOperationType = z.infer<typeof BatchOperationType>;\n\n// ==========================================\n// Batch Request Schemas\n// ==========================================\n\n/**\n * Batch Record Schema\n * Individual record in a batch operation\n */\nexport const BatchRecordSchema = z.object({\n id: z.string().optional().describe('Record ID (required for update/delete)'),\n data: RecordDataSchema.optional().describe('Record data (required for create/update/upsert)'),\n externalId: z.string().optional().describe('External ID for upsert matching'),\n});\n\nexport type BatchRecord = z.infer<typeof BatchRecordSchema>;\n\n/**\n * Batch Operation Options Schema\n * Configuration options for batch operations\n */\nexport const BatchOptionsSchema = z.object({\n atomic: z.boolean().optional().default(true).describe('If true, rollback entire batch on any failure (transaction mode)'),\n returnRecords: z.boolean().optional().default(false).describe('If true, return full record data in response'),\n continueOnError: z.boolean().optional().default(false).describe('If true (and atomic=false), continue processing remaining records after errors'),\n validateOnly: z.boolean().optional().default(false).describe('If true, validate records without persisting changes (dry-run mode)'),\n});\n\nexport type BatchOptions = z.infer<typeof BatchOptionsSchema>;\n\n/**\n * Batch Update Request Schema\n * Request payload for batch update operations\n * \n * @example\n * // POST /api/v1/data/{object}/batch\n * {\n * \"operation\": \"update\",\n * \"records\": [\n * { \"id\": \"1\", \"data\": { \"name\": \"Updated Name 1\", \"status\": \"active\" } },\n * { \"id\": \"2\", \"data\": { \"name\": \"Updated Name 2\", \"status\": \"active\" } }\n * ],\n * \"options\": {\n * \"atomic\": true,\n * \"returnRecords\": true\n * }\n * }\n */\nexport const BatchUpdateRequestSchema = z.object({\n operation: BatchOperationType.describe('Type of batch operation'),\n records: z.array(BatchRecordSchema).min(1).max(200).describe('Array of records to process (max 200 per batch)'),\n options: BatchOptionsSchema.optional().describe('Batch operation options'),\n});\n\nexport type BatchUpdateRequest = z.input<typeof BatchUpdateRequestSchema>;\n\n/**\n * Simplified Batch Update Request (for updateMany API)\n * Simplified request for batch updates without operation field\n * \n * @example\n * // POST /api/v1/data/{object}/updateMany\n * {\n * \"records\": [\n * { \"id\": \"1\", \"data\": { \"name\": \"Updated Name 1\" } },\n * { \"id\": \"2\", \"data\": { \"name\": \"Updated Name 2\" } }\n * ],\n * \"options\": { \"atomic\": true }\n * }\n */\nexport const UpdateManyRequestSchema = z.object({\n records: z.array(BatchRecordSchema).min(1).max(200).describe('Array of records to update (max 200 per batch)'),\n options: BatchOptionsSchema.optional().describe('Update options'),\n});\n\nexport type UpdateManyRequest = z.input<typeof UpdateManyRequestSchema>;\n\n// ==========================================\n// Batch Response Schemas\n// ==========================================\n\n/**\n * Batch Operation Result Schema\n * Result for a single record in a batch operation\n */\nexport const BatchOperationResultSchema = z.object({\n id: z.string().optional().describe('Record ID if operation succeeded'),\n success: z.boolean().describe('Whether this record was processed successfully'),\n errors: z.array(ApiErrorSchema).optional().describe('Array of errors if operation failed'),\n data: RecordDataSchema.optional().describe('Full record data (if returnRecords=true)'),\n index: z.number().optional().describe('Index of the record in the request array'),\n});\n\nexport type BatchOperationResult = z.infer<typeof BatchOperationResultSchema>;\n\n/**\n * Batch Update Response Schema\n * Response payload for batch operations\n * \n * @example Success Response\n * {\n * \"success\": true,\n * \"operation\": \"update\",\n * \"total\": 2,\n * \"succeeded\": 2,\n * \"failed\": 0,\n * \"results\": [\n * { \"id\": \"1\", \"success\": true, \"index\": 0 },\n * { \"id\": \"2\", \"success\": true, \"index\": 1 }\n * ],\n * \"meta\": {\n * \"timestamp\": \"2026-01-29T12:00:00Z\",\n * \"duration\": 150\n * }\n * }\n * \n * @example Partial Success Response (atomic=false)\n * {\n * \"success\": false,\n * \"operation\": \"update\",\n * \"total\": 2,\n * \"succeeded\": 1,\n * \"failed\": 1,\n * \"results\": [\n * { \"id\": \"1\", \"success\": true, \"index\": 0 },\n * { \n * \"success\": false, \n * \"index\": 1,\n * \"errors\": [{ \"code\": \"validation_error\", \"message\": \"Invalid email format\" }]\n * }\n * ],\n * \"meta\": {\n * \"timestamp\": \"2026-01-29T12:00:00Z\"\n * }\n * }\n */\nexport const BatchUpdateResponseSchema = BaseResponseSchema.extend({\n operation: BatchOperationType.optional().describe('Operation type that was performed'),\n total: z.number().describe('Total number of records in the batch'),\n succeeded: z.number().describe('Number of records that succeeded'),\n failed: z.number().describe('Number of records that failed'),\n results: z.array(BatchOperationResultSchema).describe('Detailed results for each record'),\n});\n\nexport type BatchUpdateResponse = z.infer<typeof BatchUpdateResponseSchema>;\n\n// ==========================================\n// Batch Delete Schemas\n// ==========================================\n\n/**\n * Batch Delete Request Schema\n * Simplified request for batch delete operations\n * \n * @example\n * // POST /api/v1/data/{object}/deleteMany\n * {\n * \"ids\": [\"1\", \"2\", \"3\"],\n * \"options\": { \"atomic\": true }\n * }\n */\nexport const DeleteManyRequestSchema = z.object({\n ids: z.array(z.string()).min(1).max(200).describe('Array of record IDs to delete (max 200)'),\n options: BatchOptionsSchema.optional().describe('Delete options'),\n});\n\nexport type DeleteManyRequest = z.infer<typeof DeleteManyRequestSchema>;\n\n// ==========================================\n// API Contract Exports\n// ==========================================\n\n/**\n * Batch API Contracts\n * Standardized contracts for batch operations\n */\nexport const BatchApiContracts = {\n batchOperation: {\n input: BatchUpdateRequestSchema,\n output: BatchUpdateResponseSchema,\n },\n updateMany: {\n input: UpdateManyRequestSchema,\n output: BatchUpdateResponseSchema,\n },\n deleteMany: {\n input: DeleteManyRequestSchema,\n output: BatchUpdateResponseSchema,\n },\n};\n\n/**\n * Batch Configuration Schema\n * \n * Configuration for enabling batch operations API.\n */\nexport const BatchConfigSchema = z.object({\n /** Enable batch operations */\n enabled: z.boolean().default(true).describe('Enable batch operations'),\n \n /** Maximum records per batch */\n maxRecordsPerBatch: z.number().int().min(1).max(1000).default(200).describe('Maximum records per batch'),\n \n /** Default options */\n defaultOptions: BatchOptionsSchema.optional().describe('Default batch options'),\n}).passthrough(); // Allow additional properties\n\nexport type BatchConfig = z.infer<typeof BatchConfigSchema>;\n","import { z } from 'zod';\n\n/**\n * HTTP Metadata Cache Protocol\n * \n * Implements efficient HTTP-level metadata caching with ETag support.\n * Implements P0 requirement for ObjectStack kernel.\n * \n * ## Caching in ObjectStack\n * \n * **HTTP Cache (`api/http-cache.zod.ts`) - This File**\n * - **Purpose**: Cache API responses at HTTP protocol level\n * - **Technologies**: HTTP headers (ETag, Last-Modified, Cache-Control), CDN\n * - **Configuration**: Cache-Control headers, validation tokens\n * - **Use case**: Reduce API response time for repeated metadata requests\n * - **Scope**: HTTP layer, client-server communication\n * \n * **Application Cache (`system/cache.zod.ts`)**\n * - **Purpose**: Cache computed data, query results, aggregations\n * - **Technologies**: Redis, Memcached, in-memory LRU\n * - **Configuration**: TTL, eviction policies, cache warming\n * - **Use case**: Cache expensive database queries, computed values\n * - **Scope**: Application layer, server-side data storage\n * \n * ## Features\n * - ETag-based conditional requests (HTTP 304 Not Modified)\n * - Cache-Control directives\n * - Metadata versioning\n * - Selective cache invalidation\n * \n * Industry alignment: HTTP Caching (RFC 7234), Salesforce Metadata API\n * \n * @see ../../system/cache.zod.ts for application-level caching\n */\n\n// ==========================================\n// Cache Control Headers\n// ==========================================\n\n/**\n * Cache Control Directive Enum\n * Standard HTTP cache control directives\n */\nexport const CacheDirective = z.enum([\n 'public', // Cacheable by any cache\n 'private', // Cacheable only by user-agent\n 'no-cache', // Must revalidate with server\n 'no-store', // Never cache\n 'must-revalidate', // Must revalidate stale responses\n 'max-age', // Maximum cache age in seconds\n]);\n\nexport type CacheDirective = z.infer<typeof CacheDirective>;\n\n/**\n * Cache Control Schema\n * HTTP cache control configuration\n * \n * @example\n * {\n * \"directives\": [\"public\", \"max-age\"],\n * \"maxAge\": 3600,\n * \"staleWhileRevalidate\": 86400\n * }\n */\nexport const CacheControlSchema = z.object({\n directives: z.array(CacheDirective).describe('Cache control directives'),\n maxAge: z.number().optional().describe('Maximum cache age in seconds'),\n staleWhileRevalidate: z.number().optional().describe('Allow serving stale content while revalidating (seconds)'),\n staleIfError: z.number().optional().describe('Allow serving stale content on error (seconds)'),\n});\n\nexport type CacheControl = z.infer<typeof CacheControlSchema>;\n\n// ==========================================\n// ETag Support\n// ==========================================\n\n/**\n * ETag Schema\n * Entity tag for cache validation\n * \n * ETags can be:\n * - Strong: Exact match required (e.g., \"686897696a7c876b7e\")\n * - Weak: Semantic equivalence (e.g., W/\"686897696a7c876b7e\")\n */\nexport const ETagSchema = z.object({\n value: z.string().describe('ETag value (hash or version identifier)'),\n weak: z.boolean().optional().default(false).describe('Whether this is a weak ETag'),\n});\n\nexport type ETag = z.infer<typeof ETagSchema>;\n\n// ==========================================\n// Metadata Cache Request\n// ==========================================\n\n/**\n * Metadata Cache Request Schema\n * Request with cache validation headers\n * \n * @example\n * // GET /api/v1/metadata/objects/account\n * // Headers:\n * // If-None-Match: \"686897696a7c876b7e\"\n * // If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT\n */\nexport const MetadataCacheRequestSchema = z.object({\n ifNoneMatch: z.string().optional().describe('ETag value for conditional request (If-None-Match header)'),\n ifModifiedSince: z.string().datetime().optional().describe('Timestamp for conditional request (If-Modified-Since header)'),\n cacheControl: CacheControlSchema.optional().describe('Client cache control preferences'),\n});\n\nexport type MetadataCacheRequest = z.infer<typeof MetadataCacheRequestSchema>;\n\n// ==========================================\n// Metadata Cache Response\n// ==========================================\n\n/**\n * Metadata Cache Response Schema\n * Response with cache control headers\n * \n * @example Success Response (200 OK)\n * {\n * \"data\": { \"object\": \"account\" },\n * \"etag\": {\n * \"value\": \"686897696a7c876b7e\",\n * \"weak\": false\n * },\n * \"lastModified\": \"2026-01-29T12:00:00Z\",\n * \"cacheControl\": {\n * \"directives\": [\"public\", \"max-age\"],\n * \"maxAge\": 3600\n * }\n * }\n * \n * @example Not Modified Response (304 Not Modified)\n * {\n * \"notModified\": true,\n * \"etag\": {\n * \"value\": \"686897696a7c876b7e\"\n * }\n * }\n */\nexport const MetadataCacheResponseSchema = z.object({\n data: z.any().optional().describe('Metadata payload (omitted for 304 Not Modified)'),\n etag: ETagSchema.optional().describe('ETag for this resource version'),\n lastModified: z.string().datetime().optional().describe('Last modification timestamp'),\n cacheControl: CacheControlSchema.optional().describe('Cache control directives'),\n notModified: z.boolean().optional().default(false).describe('True if resource has not been modified (304 response)'),\n version: z.string().optional().describe('Metadata version identifier'),\n});\n\nexport type MetadataCacheResponse = z.infer<typeof MetadataCacheResponseSchema>;\n\n// ==========================================\n// Metadata Cache Invalidation\n// ==========================================\n\n/**\n * Cache Invalidation Target Enum\n * Specifies what to invalidate\n */\nexport const CacheInvalidationTarget = z.enum([\n 'all', // Invalidate all cached metadata\n 'object', // Invalidate specific object metadata\n 'field', // Invalidate specific field metadata\n 'permission', // Invalidate permission metadata\n 'layout', // Invalidate layout metadata\n 'custom', // Custom invalidation pattern\n]);\n\nexport type CacheInvalidationTarget = z.infer<typeof CacheInvalidationTarget>;\n\n/**\n * Cache Invalidation Request Schema\n * Request to invalidate cached metadata\n * \n * @example\n * // POST /api/v1/metadata/cache/invalidate\n * {\n * \"target\": \"object\",\n * \"identifiers\": [\"account\", \"contact\"],\n * \"cascade\": true\n * }\n */\nexport const CacheInvalidationRequestSchema = z.object({\n target: CacheInvalidationTarget.describe('What to invalidate'),\n identifiers: z.array(z.string()).optional().describe('Specific resources to invalidate (e.g., object names)'),\n cascade: z.boolean().optional().default(false).describe('If true, invalidate dependent resources'),\n pattern: z.string().optional().describe('Pattern for custom invalidation (supports wildcards)'),\n});\n\nexport type CacheInvalidationRequest = z.infer<typeof CacheInvalidationRequestSchema>;\n\n/**\n * Cache Invalidation Response Schema\n * Response for cache invalidation\n * \n * @example\n * {\n * \"success\": true,\n * \"invalidated\": 5,\n * \"targets\": [\"account\", \"contact\", \"opportunity\"]\n * }\n */\nexport const CacheInvalidationResponseSchema = z.object({\n success: z.boolean().describe('Whether invalidation succeeded'),\n invalidated: z.number().describe('Number of cache entries invalidated'),\n targets: z.array(z.string()).optional().describe('List of invalidated resources'),\n});\n\nexport type CacheInvalidationResponse = z.infer<typeof CacheInvalidationResponseSchema>;\n\n// ==========================================\n// Metadata Cache API Methods\n// ==========================================\n\n/**\n * Metadata Cache API Client Interface\n * \n * @example Usage\n * // Get metadata with cache support\n * const response = await client.meta.getCached('account', {\n * ifNoneMatch: '\"686897696a7c876b7e\"'\n * });\n * \n * if (response.notModified) {\n * // Use cached version\n * } else {\n * // Update cache with response.data\n * cache.set('account', response.data, {\n * etag: response.etag?.value,\n * maxAge: response.cacheControl?.maxAge\n * });\n * }\n */\nexport const MetadataCacheApi = {\n getCached: {\n input: MetadataCacheRequestSchema,\n output: MetadataCacheResponseSchema,\n },\n invalidate: {\n input: CacheInvalidationRequestSchema,\n output: CacheInvalidationResponseSchema,\n },\n};\n","import { z } from 'zod';\n\n/**\n * Standardized Error Codes Protocol\n * \n * Implements P0 requirement for ObjectStack kernel.\n * Provides consistent, machine-readable error codes across the platform.\n * \n * Features:\n * - Categorized error codes (validation, authentication, authorization, etc.)\n * - HTTP status code mapping\n * - Localization support\n * - Retry guidance\n * \n * Industry alignment: Google Cloud Errors, AWS Error Codes, Stripe API Errors\n */\n\n// ==========================================\n// Error Code Categories\n// ==========================================\n\n/**\n * Error Category Enum\n * High-level categorization of errors\n */\nexport const ErrorCategory = z.enum([\n 'validation', // Input validation errors (400)\n 'authentication', // Authentication failures (401)\n 'authorization', // Permission denied errors (403)\n 'not_found', // Resource not found (404)\n 'conflict', // Resource conflict (409)\n 'rate_limit', // Rate limiting (429)\n 'server', // Internal server errors (500)\n 'external', // External service errors (502/503)\n 'maintenance', // Planned maintenance (503)\n]);\n\nexport type ErrorCategory = z.infer<typeof ErrorCategory>;\n\n// ==========================================\n// Standard Error Codes\n// ==========================================\n\n/**\n * Standard Error Code Enum\n * Machine-readable error codes for common error scenarios\n */\nexport const StandardErrorCode = z.enum([\n // Validation Errors (400)\n 'validation_error', // Generic validation failure\n 'invalid_field', // Invalid field value\n 'missing_required_field', // Required field missing\n 'invalid_format', // Field format invalid (e.g., email, date)\n 'value_too_long', // Field value exceeds max length\n 'value_too_short', // Field value below min length\n 'value_out_of_range', // Numeric value out of range\n 'invalid_reference', // Invalid foreign key reference\n 'duplicate_value', // Unique constraint violation\n 'invalid_query', // Malformed query syntax\n 'invalid_filter', // Invalid filter expression\n 'invalid_sort', // Invalid sort specification\n 'max_records_exceeded', // Query would return too many records\n \n // Authentication Errors (401)\n 'unauthenticated', // No valid authentication provided\n 'invalid_credentials', // Wrong username/password\n 'expired_token', // Authentication token expired\n 'invalid_token', // Authentication token invalid\n 'session_expired', // User session expired\n 'mfa_required', // Multi-factor authentication required\n 'email_not_verified', // Email verification required\n \n // Authorization Errors (403)\n 'permission_denied', // User lacks required permission\n 'insufficient_privileges', // Operation requires higher privileges\n 'field_not_accessible', // Field-level security restriction\n 'record_not_accessible', // Sharing rule restriction\n 'license_required', // Feature requires license\n 'ip_restricted', // IP address not allowed\n 'time_restricted', // Access outside allowed time window\n \n // Not Found Errors (404)\n 'resource_not_found', // Generic resource not found\n 'object_not_found', // Object/table not found\n 'record_not_found', // Record with given ID not found\n 'field_not_found', // Field not found in object\n 'endpoint_not_found', // API endpoint not found\n \n // Conflict Errors (409)\n 'resource_conflict', // Generic resource conflict\n 'concurrent_modification', // Record modified by another user\n 'delete_restricted', // Cannot delete due to dependencies\n 'duplicate_record', // Record already exists\n 'lock_conflict', // Record is locked by another process\n \n // Rate Limiting (429)\n 'rate_limit_exceeded', // Too many requests\n 'quota_exceeded', // API quota exceeded\n 'concurrent_limit_exceeded', // Too many concurrent requests\n \n // Server Errors (500)\n 'internal_error', // Generic internal server error\n 'database_error', // Database operation failed\n 'timeout', // Operation timed out\n 'service_unavailable', // Service temporarily unavailable\n 'not_implemented', // Feature not yet implemented\n \n // External Service Errors (502/503)\n 'external_service_error', // External API call failed\n 'integration_error', // Integration service error\n 'webhook_delivery_failed', // Webhook delivery failed\n \n // Batch Operation Errors\n 'batch_partial_failure', // Batch operation partially succeeded\n 'batch_complete_failure', // Batch operation completely failed\n 'transaction_failed', // Transaction rolled back\n]);\n\nexport type StandardErrorCode = z.infer<typeof StandardErrorCode>;\n\n// ==========================================\n// Enhanced Error Schema\n// ==========================================\n\n/**\n * HTTP Status Code mapping for error categories\n */\nexport const ErrorHttpStatusMap: Record<string, number> = {\n validation: 400,\n authentication: 401,\n authorization: 403,\n not_found: 404,\n conflict: 409,\n rate_limit: 429,\n server: 500,\n external: 502,\n maintenance: 503,\n};\n\n/**\n * Retry Strategy Enum\n * Guidance on whether to retry failed requests\n */\nexport const RetryStrategy = z.enum([\n 'no_retry', // Do not retry (permanent failure)\n 'retry_immediate', // Retry immediately\n 'retry_backoff', // Retry with exponential backoff\n 'retry_after', // Retry after specified delay\n]);\n\nexport type RetryStrategy = z.infer<typeof RetryStrategy>;\n\n/**\n * Field Error Schema\n * Detailed error for a specific field\n */\nexport const FieldErrorSchema = z.object({\n field: z.string().describe('Field path (supports dot notation)'),\n code: StandardErrorCode.describe('Error code for this field'),\n message: z.string().describe('Human-readable error message'),\n value: z.any().optional().describe('The invalid value that was provided'),\n constraint: z.any().optional().describe('The constraint that was violated (e.g., max length)'),\n});\n\nexport type FieldError = z.infer<typeof FieldErrorSchema>;\n\n/**\n * Enhanced API Error Schema\n * Standardized error response with detailed metadata\n * \n * @example Validation Error\n * {\n * \"code\": \"validation_error\",\n * \"message\": \"Validation failed for 2 fields\",\n * \"category\": \"validation\",\n * \"httpStatus\": 400,\n * \"retryable\": false,\n * \"retryStrategy\": \"no_retry\",\n * \"details\": {\n * \"fieldErrors\": [\n * {\n * \"field\": \"email\",\n * \"code\": \"invalid_format\",\n * \"message\": \"Email format is invalid\",\n * \"value\": \"not-an-email\"\n * },\n * {\n * \"field\": \"age\",\n * \"code\": \"value_out_of_range\",\n * \"message\": \"Age must be between 0 and 120\",\n * \"value\": 150,\n * \"constraint\": { \"min\": 0, \"max\": 120 }\n * }\n * ]\n * },\n * \"timestamp\": \"2026-01-29T12:00:00Z\",\n * \"requestId\": \"req_123456\",\n * \"documentation\": \"https://docs.objectstack.dev/errors/validation_error\"\n * }\n * \n * @example Rate Limit Error\n * {\n * \"code\": \"rate_limit_exceeded\",\n * \"message\": \"Rate limit exceeded. Try again in 60 seconds.\",\n * \"category\": \"rate_limit\",\n * \"httpStatus\": 429,\n * \"retryable\": true,\n * \"retryStrategy\": \"retry_after\",\n * \"retryAfter\": 60,\n * \"details\": {\n * \"limit\": 1000,\n * \"remaining\": 0,\n * \"resetAt\": \"2026-01-29T13:00:00Z\"\n * }\n * }\n */\nexport const EnhancedApiErrorSchema = z.object({\n code: StandardErrorCode.describe('Machine-readable error code'),\n message: z.string().describe('Human-readable error message'),\n category: ErrorCategory.optional().describe('Error category'),\n httpStatus: z.number().optional().describe('HTTP status code'),\n retryable: z.boolean().default(false).describe('Whether the request can be retried'),\n retryStrategy: RetryStrategy.optional().describe('Recommended retry strategy'),\n retryAfter: z.number().optional().describe('Seconds to wait before retrying'),\n details: z.any().optional().describe('Additional error context'),\n fieldErrors: z.array(FieldErrorSchema).optional().describe('Field-specific validation errors'),\n timestamp: z.string().datetime().optional().describe('When the error occurred'),\n requestId: z.string().optional().describe('Request ID for tracking'),\n traceId: z.string().optional().describe('Distributed trace ID'),\n documentation: z.string().url().optional().describe('URL to error documentation'),\n helpText: z.string().optional().describe('Suggested actions to resolve the error'),\n});\n\nexport type EnhancedApiError = z.infer<typeof EnhancedApiErrorSchema>;\n\n// ==========================================\n// Error Response Schema\n// ==========================================\n\n/**\n * Standardized Error Response Schema\n * Complete error response envelope\n * \n * @example\n * {\n * \"success\": false,\n * \"error\": {\n * \"code\": \"permission_denied\",\n * \"message\": \"You do not have permission to update this record\",\n * \"category\": \"authorization\",\n * \"httpStatus\": 403,\n * \"retryable\": false\n * }\n * }\n */\nexport const ErrorResponseSchema = z.object({\n success: z.literal(false).describe('Always false for error responses'),\n error: EnhancedApiErrorSchema.describe('Error details'),\n meta: z.object({\n timestamp: z.string().datetime().optional(),\n requestId: z.string().optional(),\n traceId: z.string().optional(),\n }).optional().describe('Response metadata'),\n});\n\nexport type ErrorResponse = z.infer<typeof ErrorResponseSchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Get HTTP status code for an error category\n */\nexport function getHttpStatusForCategory(category: ErrorCategory): number {\n return ErrorHttpStatusMap[category] || 500;\n}\n\n/**\n * Create a standardized error response\n */\nexport function createErrorResponse(\n code: StandardErrorCode,\n message: string,\n options?: Partial<EnhancedApiError>\n): ErrorResponse {\n const category = getCategoryForCode(code);\n \n return {\n success: false,\n error: {\n code,\n message,\n category,\n httpStatus: getHttpStatusForCategory(category),\n timestamp: new Date().toISOString(),\n retryable: false,\n ...options,\n },\n };\n}\n\n/**\n * Infer error category from error code\n */\nfunction getCategoryForCode(code: StandardErrorCode): ErrorCategory {\n if (code.includes('validation') || code.includes('invalid') || code.includes('missing') || code.includes('duplicate')) {\n return 'validation';\n }\n if (code.includes('unauthenticated') || code.includes('token') || code.includes('credentials') || code.includes('session')) {\n return 'authentication';\n }\n if (code.includes('permission') || code.includes('privileges') || code.includes('accessible') || code.includes('restricted')) {\n return 'authorization';\n }\n if (code.includes('not_found')) {\n return 'not_found';\n }\n if (code.includes('conflict') || code.includes('concurrent') || code.includes('lock')) {\n return 'conflict';\n }\n if (code.includes('rate_limit') || code.includes('quota')) {\n return 'rate_limit';\n }\n if (code.includes('external') || code.includes('integration') || code.includes('webhook')) {\n return 'external';\n }\n if (code.includes('maintenance')) {\n return 'maintenance';\n }\n return 'server';\n}\n","import { z } from 'zod';\nimport { ViewSchema } from '../ui/view.zod';\nimport { ApiCapabilitiesSchema, ApiRoutesSchema } from './discovery.zod';\nimport { BatchUpdateRequestSchema, BatchUpdateResponseSchema, BatchOptionsSchema } from './batch.zod';\nimport { MetadataCacheRequestSchema, MetadataCacheResponseSchema } from './http-cache.zod';\nimport { QuerySchema } from '../data/query.zod';\nimport { \n AnalyticsQueryRequestSchema, \n AnalyticsResultResponseSchema, \n GetAnalyticsMetaRequestSchema, \n AnalyticsMetadataResponseSchema \n} from './analytics.zod';\nimport {\n ListSpacesRequestSchema,\n SpaceResponseSchema,\n CreateSpaceRequestSchema,\n InstallPluginRequestSchema,\n InstallPluginResponseSchema,\n ListSpacesRequest,\n SpaceResponse,\n CreateSpaceRequest,\n InstallPluginRequest,\n InstallPluginResponse\n} from './hub.zod';\n\nexport const AutomationTriggerRequestSchema = z.object({\n trigger: z.string(),\n payload: z.record(z.any())\n});\n\nexport const AutomationTriggerResponseSchema = z.object({\n success: z.boolean(),\n jobId: z.string().optional(),\n result: z.any().optional()\n});\n\n/**\n * ObjectStack Protocol - Zod Schema Definitions\n * \n * Defines the runtime-validated contract for interacting with ObjectStack metadata and data.\n * Used by API adapters (HTTP, WebSocket, gRPC) to fetch data/metadata without knowing engine internals.\n * \n * This protocol enables:\n * - Runtime request/response validation at API gateway level\n * - Automatic API documentation generation\n * - Type-safe RPC communication between microservices\n * - Client SDK generation from schemas\n * \n * Architecture Alignment:\n * - Salesforce: REST API Request/Response schemas\n * - Kubernetes: API Resource schemas with runtime validation\n * - GraphQL: Schema-first API design\n */\n\n// ==========================================\n// Discovery & Metadata Operations\n// ==========================================\n\n/**\n * Get API Discovery Request\n * No parameters needed\n */\nexport const GetDiscoveryRequestSchema = z.object({});\n\n/**\n * Get API Discovery Response\n * Returns API version information and capabilities\n */\nexport const GetDiscoveryResponseSchema = z.object({\n version: z.string().describe('API version (e.g., \"v1\", \"2024-01\")'),\n apiName: z.string().describe('API name'),\n capabilities: ApiCapabilitiesSchema.optional().describe('Supported features/capabilities'),\n endpoints: ApiRoutesSchema.optional().describe('Available endpoint paths'),\n});\n\n/**\n * Get Metadata Types Request\n */\nexport const GetMetaTypesRequestSchema = z.object({});\n\n/**\n * Get Metadata Types Response\n */\nexport const GetMetaTypesResponseSchema = z.object({\n types: z.array(z.string()).describe('Available metadata type names (e.g., \"object\", \"plugin\", \"view\")'),\n});\n\n/**\n * Get Metadata Items Request\n * Get all items of a specific metadata type\n */\nexport const GetMetaItemsRequestSchema = z.object({\n type: z.string().describe('Metadata type name (e.g., \"object\", \"plugin\")'),\n});\n\n/**\n * Get Metadata Items Response\n */\nexport const GetMetaItemsResponseSchema = z.object({\n type: z.string().describe('Metadata type name'),\n items: z.array(z.any()).describe('Array of metadata items'),\n});\n\n/**\n * Get Metadata Item Request\n * Get a specific metadata item by type and name\n */\nexport const GetMetaItemRequestSchema = z.object({\n type: z.string().describe('Metadata type name'),\n name: z.string().describe('Item name (snake_case identifier)'),\n});\n\n/**\n * Get Metadata Item Response\n */\nexport const GetMetaItemResponseSchema = z.object({\n type: z.string().describe('Metadata type name'),\n name: z.string().describe('Item name'),\n item: z.any().describe('Metadata item definition'),\n});\n\n/**\n * Save Metadata Item Request\n * Create or update a metadata item\n */\nexport const SaveMetaItemRequestSchema = z.object({\n type: z.string().describe('Metadata type name'),\n name: z.string().describe('Item name'),\n item: z.any().describe('Metadata item definition'),\n});\n\n/**\n * Save Metadata Item Response\n */\nexport const SaveMetaItemResponseSchema = z.object({\n success: z.boolean(),\n message: z.string().optional(),\n});\n\n/**\n * Get Metadata Item with Cache Request\n * Get a specific metadata item with HTTP cache validation support\n */\nexport const GetMetaItemCachedRequestSchema = z.object({\n type: z.string().describe('Metadata type name'),\n name: z.string().describe('Item name'),\n cacheRequest: MetadataCacheRequestSchema.optional().describe('Cache validation parameters'),\n});\n\n/**\n * Get Metadata Item with Cache Response\n * Uses MetadataCacheResponse from http-cache.zod.ts\n */\nexport const GetMetaItemCachedResponseSchema = MetadataCacheResponseSchema;\n\n/**\n * Get UI View Request\n * Resolves the appropriate UI view for an object based on context.\n * Unlike getMetaItem, this does not require a specific View ID.\n */\nexport const GetUiViewRequestSchema = z.object({\n object: z.string().describe('Object name (snake_case)'),\n type: z.enum(['list', 'form']).describe('View type'),\n});\n\n/**\n * Get UI View Response\n */\nexport const GetUiViewResponseSchema = ViewSchema;\n\n// ==========================================\n// Data Operations\n// ==========================================\n\n/**\n * Find Data Request\n * Defines a query to retrieve records from a specific object.\n * Supports filtering, sorting, pagination, and field selection.\n * \n * @example\n * {\n * \"object\": \"customers\",\n * \"query\": {\n * \"filters\": [[\"status\", \"=\", \"active\"], [\"revenue\", \">\", 10000]],\n * \"sort\": \"name desc\",\n * \"top\": 10\n * }\n * }\n */\nexport const FindDataRequestSchema = z.object({\n object: z.string().describe('The unique machine name of the object to query (e.g. \"account\").'),\n query: QuerySchema.optional().describe('Structured query definition (filter, sort, select, pagination).'),\n});\n\n/**\n * Find Data Response\n * Returns a list of records matching the query criteria.\n */\nexport const FindDataResponseSchema = z.object({\n object: z.string().describe('The object name for the returned records.'),\n records: z.array(z.record(z.string(), z.any())).describe('The list of matching records.'),\n total: z.number().optional().describe('Total number of records matching the filter (if requested).'),\n hasMore: z.boolean().optional().describe('True if there are more records available (pagination).'),\n});\n\n/**\n * Get Data Request\n * Retrieval of a single record by its unique identifier.\n * \n * @example\n * {\n * \"object\": \"contracts\",\n * \"id\": \"cnt_123456\"\n * }\n */\nexport const GetDataRequestSchema = z.object({\n object: z.string().describe('The object name.'),\n id: z.string().describe('The unique record identifier (primary key).'),\n});\n\n/**\n * Get Data Response\n */\nexport const GetDataResponseSchema = z.object({\n object: z.string().describe('The object name.'),\n id: z.string().describe('The record ID.'),\n record: z.record(z.string(), z.any()).describe('The complete record data.'),\n});\n\n/**\n * Create Data Request\n * Creation of a new record.\n * \n * @example\n * {\n * \"object\": \"leads\",\n * \"data\": {\n * \"first_name\": \"John\",\n * \"last_name\": \"Doe\",\n * \"company\": \"Acme Inc\"\n * }\n * }\n */\nexport const CreateDataRequestSchema = z.object({\n object: z.string().describe('The object name.'),\n data: z.record(z.string(), z.any()).describe('The dictionary of field values to insert.'),\n});\n\n/**\n * Create Data Response\n */\nexport const CreateDataResponseSchema = z.object({\n object: z.string().describe('The object name.'),\n id: z.string().describe('The ID of the newly created record.'),\n record: z.record(z.string(), z.any()).describe('The created record, including server-generated fields (created_at, owner).'),\n});\n\n/**\n * Update Data Request\n * Modification of an existing record.\n * \n * @example\n * {\n * \"object\": \"tasks\",\n * \"id\": \"tsk_001\",\n * \"data\": {\n * \"status\": \"completed\",\n * \"percent_complete\": 100\n * }\n * }\n */\nexport const UpdateDataRequestSchema = z.object({\n object: z.string().describe('The object name.'),\n id: z.string().describe('The ID of the record to update.'),\n data: z.record(z.string(), z.any()).describe('The fields to update (partial update).'),\n});\n\n/**\n * Update Data Response\n */\nexport const UpdateDataResponseSchema = z.object({\n object: z.string().describe('Object name'),\n id: z.string().describe('Updated record ID'),\n record: z.record(z.string(), z.any()).describe('Updated record'),\n});\n\n/**\n * Delete Data Request\n */\nexport const DeleteDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n id: z.string().describe('Record ID to delete'),\n});\n\n/**\n * Delete Data Response\n */\nexport const DeleteDataResponseSchema = z.object({\n object: z.string().describe('Object name'),\n id: z.string().describe('Deleted record ID'),\n success: z.boolean().describe('Whether deletion succeeded'),\n});\n\n// ==========================================\n// Batch Operations\n// ==========================================\n\n/**\n * Batch Data Request\n */\nexport const BatchDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n request: BatchUpdateRequestSchema.describe('Batch operation request'),\n});\n\n/**\n * Batch Data Response\n * Uses BatchUpdateResponse from batch.zod.ts\n */\nexport const BatchDataResponseSchema = BatchUpdateResponseSchema;\n\n/**\n * Create Many Data Request\n */\nexport const CreateManyDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n records: z.array(z.record(z.string(), z.any())).describe('Array of records to create'),\n});\n\n/**\n * Create Many Data Response\n */\nexport const CreateManyDataResponseSchema = z.object({\n object: z.string().describe('Object name'),\n records: z.array(z.record(z.string(), z.any())).describe('Created records'),\n count: z.number().describe('Number of records created'),\n});\n\n/**\n * Update Many Data Request\n */\nexport const UpdateManyDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n records: z.array(z.object({\n id: z.string().describe('Record ID'),\n data: z.record(z.string(), z.any()).describe('Fields to update'),\n })).describe('Array of updates'),\n options: BatchOptionsSchema.optional().describe('Update options'),\n});\n\n/**\n * Update Many Data Response\n * Uses BatchUpdateResponse for consistency\n */\nexport const UpdateManyDataResponseSchema = BatchUpdateResponseSchema;\n\n/**\n * Delete Many Data Request\n */\nexport const DeleteManyDataRequestSchema = z.object({\n object: z.string().describe('Object name'),\n ids: z.array(z.string()).describe('Array of record IDs to delete'),\n options: BatchOptionsSchema.optional().describe('Delete options'),\n});\n\n/**\n * Delete Many Data Response\n */\nexport const DeleteManyDataResponseSchema = BatchUpdateResponseSchema;\n\n// ==========================================\n// Protocol Interface Schema\n// ==========================================\n\n/**\n * ObjectStack Protocol Contract\n * \n * This schema defines the complete API contract as a Zod schema.\n * Unlike the old TypeScript interface, this provides runtime validation\n * and can be used for:\n * - API Gateway validation\n * - RPC call validation\n * - Client SDK generation\n * - API documentation generation\n * \n * Each method is defined with its request and response schemas.\n */\nexport const ObjectStackProtocolSchema = z.object({\n // Discovery & Metadata\n getDiscovery: z.function()\n .args(GetDiscoveryRequestSchema)\n .returns(z.promise(GetDiscoveryResponseSchema))\n .describe('Get API discovery information'),\n\n getMetaTypes: z.function()\n .args(GetMetaTypesRequestSchema)\n .returns(z.promise(GetMetaTypesResponseSchema))\n .describe('Get available metadata types'),\n\n getMetaItems: z.function()\n .args(GetMetaItemsRequestSchema)\n .returns(z.promise(GetMetaItemsResponseSchema))\n .describe('Get all items of a metadata type'),\n\n getMetaItem: z.function()\n .args(GetMetaItemRequestSchema)\n .returns(z.promise(GetMetaItemResponseSchema))\n .describe('Get a specific metadata item'),\n saveMetaItem: z.function()\n .args(SaveMetaItemRequestSchema)\n .returns(z.promise(SaveMetaItemResponseSchema))\n .describe('Save metadata item'),\n getMetaItemCached: z.function()\n .args(GetMetaItemCachedRequestSchema)\n .returns(z.promise(GetMetaItemCachedResponseSchema))\n .describe('Get a metadata item with cache validation'),\n\n getUiView: z.function()\n .args(GetUiViewRequestSchema)\n .returns(z.promise(GetUiViewResponseSchema))\n .describe('Get UI view definition'),\n\n // Analytics Operations\n analyticsQuery: z.function()\n .args(AnalyticsQueryRequestSchema)\n .returns(z.promise(AnalyticsResultResponseSchema))\n .describe('Execute analytics query'),\n\n getAnalyticsMeta: z.function()\n .args(GetAnalyticsMetaRequestSchema)\n .returns(z.promise(AnalyticsMetadataResponseSchema))\n .describe('Get analytics metadata (cubes)'),\n\n // Automation Operations\n triggerAutomation: z.function()\n .args(AutomationTriggerRequestSchema)\n .returns(z.promise(AutomationTriggerResponseSchema))\n .describe('Trigger an automation flow or script'),\n\n // Hub Operations\n listSpaces: z.function()\n .args(ListSpacesRequestSchema)\n .returns(z.promise(z.any())) // TODO: Use ListSpacesResponseSchema when available/exported\n .describe('List Hub Spaces'),\n \n createSpace: z.function()\n .args(CreateSpaceRequestSchema)\n .returns(z.promise(SpaceResponseSchema))\n .describe('Create Hub Space'),\n\n installPlugin: z.function()\n .args(InstallPluginRequestSchema)\n .returns(z.promise(InstallPluginResponseSchema))\n .describe('Install Plugin into Space'),\n\n // Data Operations\n findData: z.function()\n .args(FindDataRequestSchema)\n .returns(z.promise(FindDataResponseSchema))\n .describe('Find data records'),\n\n getData: z.function()\n .args(GetDataRequestSchema)\n .returns(z.promise(GetDataResponseSchema))\n .describe('Get single data record'),\n\n createData: z.function()\n .args(CreateDataRequestSchema)\n .returns(z.promise(CreateDataResponseSchema))\n .describe('Create a data record'),\n\n updateData: z.function()\n .args(UpdateDataRequestSchema)\n .returns(z.promise(UpdateDataResponseSchema))\n .describe('Update a data record'),\n\n deleteData: z.function()\n .args(DeleteDataRequestSchema)\n .returns(z.promise(DeleteDataResponseSchema))\n .describe('Delete a data record'),\n\n // Batch Operations\n batchData: z.function()\n .args(BatchDataRequestSchema)\n .returns(z.promise(BatchDataResponseSchema))\n .describe('Perform batch operations'),\n\n createManyData: z.function()\n .args(CreateManyDataRequestSchema)\n .returns(z.promise(CreateManyDataResponseSchema))\n .describe('Create multiple records'),\n\n updateManyData: z.function()\n .args(UpdateManyDataRequestSchema)\n .returns(z.promise(UpdateManyDataResponseSchema))\n .describe('Update multiple records'),\n\n deleteManyData: z.function()\n .args(DeleteManyDataRequestSchema)\n .returns(z.promise(DeleteManyDataResponseSchema))\n .describe('Delete multiple records'),\n});\n\n/**\n * TypeScript Types\n * Derived from Zod schemas using z.infer\n */\nexport type GetDiscoveryRequest = z.infer<typeof GetDiscoveryRequestSchema>;\nexport type GetDiscoveryResponse = z.infer<typeof GetDiscoveryResponseSchema>;\nexport type GetMetaTypesRequest = z.infer<typeof GetMetaTypesRequestSchema>;\nexport type GetMetaTypesResponse = z.infer<typeof GetMetaTypesResponseSchema>;\nexport type GetMetaItemsRequest = z.infer<typeof GetMetaItemsRequestSchema>;\nexport type GetMetaItemsResponse = z.infer<typeof GetMetaItemsResponseSchema>;\nexport type GetMetaItemRequest = z.infer<typeof GetMetaItemRequestSchema>;\nexport type GetMetaItemResponse = z.infer<typeof GetMetaItemResponseSchema>;\nexport type SaveMetaItemRequest = z.infer<typeof SaveMetaItemRequestSchema>;\nexport type SaveMetaItemResponse = z.infer<typeof SaveMetaItemResponseSchema>;\nexport type GetMetaItemCachedRequest = z.infer<typeof GetMetaItemCachedRequestSchema>;\nexport type GetMetaItemCachedResponse = z.infer<typeof GetMetaItemCachedResponseSchema>;\nexport type GetUiViewRequest = z.infer<typeof GetUiViewRequestSchema>;\nexport type GetUiViewResponse = z.infer<typeof GetUiViewResponseSchema>;\n\nexport type AnalyticsQueryRequest = z.infer<typeof AnalyticsQueryRequestSchema>;\nexport type AnalyticsResultResponse = z.infer<typeof AnalyticsResultResponseSchema>;\nexport type GetAnalyticsMetaRequest = z.infer<typeof GetAnalyticsMetaRequestSchema>;\nexport type GetAnalyticsMetaResponse = z.infer<typeof AnalyticsMetadataResponseSchema>;\n\nexport type AutomationTriggerRequest = z.infer<typeof AutomationTriggerRequestSchema>;\nexport type AutomationTriggerResponse = z.infer<typeof AutomationTriggerResponseSchema>;\n\nexport type FindDataRequest = z.input<typeof FindDataRequestSchema>;\nexport type FindDataResponse = z.infer<typeof FindDataResponseSchema>;\nexport type GetDataRequest = z.input<typeof GetDataRequestSchema>;\nexport type GetDataResponse = z.infer<typeof GetDataResponseSchema>;\nexport type CreateDataRequest = z.input<typeof CreateDataRequestSchema>;\nexport type CreateDataResponse = z.infer<typeof CreateDataResponseSchema>;\nexport type UpdateDataRequest = z.input<typeof UpdateDataRequestSchema>;\nexport type UpdateDataResponse = z.infer<typeof UpdateDataResponseSchema>;\nexport type DeleteDataRequest = z.input<typeof DeleteDataRequestSchema>;\nexport type DeleteDataResponse = z.infer<typeof DeleteDataResponseSchema>;\n\nexport type BatchDataRequest = z.input<typeof BatchDataRequestSchema>;\nexport type BatchDataResponse = z.infer<typeof BatchDataResponseSchema>;\nexport type CreateManyDataRequest = z.input<typeof CreateManyDataRequestSchema>;\nexport type CreateManyDataResponse = z.infer<typeof CreateManyDataResponseSchema>;\nexport type UpdateManyDataRequest = z.input<typeof UpdateManyDataRequestSchema>;\nexport type UpdateManyDataResponse = z.infer<typeof UpdateManyDataResponseSchema>;\nexport type DeleteManyDataRequest = z.input<typeof DeleteManyDataRequestSchema>;\nexport type DeleteManyDataResponse = z.infer<typeof DeleteManyDataResponseSchema>;\n\nexport type ObjectStackProtocol = z.infer<typeof ObjectStackProtocolSchema>;\n\n/**\n * Legacy Interface Export\n * Maintained for backward compatibility\n * @deprecated Use ObjectStackProtocol type from protocol.zod.ts instead\n */\nexport interface IObjectStackProtocolLegacy {\n getDiscovery(): Promise<GetDiscoveryResponse>;\n getMetaTypes(): Promise<GetMetaTypesResponse>;\n getMetaItems(request: GetMetaItemsRequest): Promise<GetMetaItemsResponse>;\n getMetaItem(request: GetMetaItemRequest): Promise<GetMetaItemResponse>;\n saveMetaItem(request: SaveMetaItemRequest): Promise<SaveMetaItemResponse>;\n getMetaItemCached(request: GetMetaItemCachedRequest): Promise<GetMetaItemCachedResponse>;\n getUiView(request: GetUiViewRequest): Promise<GetUiViewResponse>;\n \n analyticsQuery(request: AnalyticsQueryRequest): Promise<AnalyticsResultResponse>;\n getAnalyticsMeta(request: GetAnalyticsMetaRequest): Promise<GetAnalyticsMetaResponse>;\n\n triggerAutomation(request: AutomationTriggerRequest): Promise<AutomationTriggerResponse>;\n\n listSpaces(request: ListSpacesRequest): Promise<any>;\n createSpace(request: CreateSpaceRequest): Promise<SpaceResponse>;\n installPlugin(request: InstallPluginRequest): Promise<InstallPluginResponse>;\n\n findData(request: FindDataRequest): Promise<FindDataResponse>;\n getData(request: GetDataRequest): Promise<GetDataResponse>;\n createData(request: CreateDataRequest): Promise<CreateDataResponse>;\n updateData(request: UpdateDataRequest): Promise<UpdateDataResponse>;\n deleteData(request: DeleteDataRequest): Promise<DeleteDataResponse>;\n \n batchData(request: BatchDataRequest): Promise<BatchDataResponse>;\n createManyData(request: CreateManyDataRequest): Promise<CreateManyDataResponse>;\n updateManyData(request: UpdateManyDataRequest): Promise<UpdateManyDataResponse>;\n deleteManyData(request: DeleteManyDataRequest): Promise<DeleteManyDataResponse>;\n}\n","import { z } from 'zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * HTTP Method Enum\n */\nexport const HttpMethodSchema = z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']);\n\n/**\n * HTTP Request Configuration for API Provider\n */\nexport const HttpRequestSchema = z.object({\n url: z.string().describe('API endpoint URL'),\n method: HttpMethodSchema.optional().default('GET').describe('HTTP method'),\n headers: z.record(z.string(), z.string()).optional().describe('Custom HTTP headers'),\n params: z.record(z.string(), z.unknown()).optional().describe('Query parameters'),\n body: z.unknown().optional().describe('Request body for POST/PUT/PATCH'),\n});\n\n/**\n * View Data Source Configuration\n * Supports three modes:\n * 1. 'object': Standard Protocol - Auto-connects to ObjectStack Metadata and Data APIs\n * 2. 'api': Custom API - Explicitly provided API URLs\n * 3. 'value': Static Data - Hardcoded data array\n */\nexport const ViewDataSchema = z.discriminatedUnion('provider', [\n z.object({\n provider: z.literal('object'),\n object: z.string().describe('Target object name'),\n }),\n z.object({\n provider: z.literal('api'),\n read: HttpRequestSchema.optional().describe('Configuration for fetching data'),\n write: HttpRequestSchema.optional().describe('Configuration for submitting data (for forms/editable tables)'),\n }),\n z.object({\n provider: z.literal('value'),\n items: z.array(z.unknown()).describe('Static data array'),\n }),\n]);\n\n/**\n * List Column Configuration Schema\n * Detailed configuration for individual list view columns\n */\nexport const ListColumnSchema = z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: z.string().optional().describe('Display label override'),\n width: z.number().positive().optional().describe('Column width in pixels'),\n align: z.enum(['left', 'center', 'right']).optional().describe('Text alignment'),\n hidden: z.boolean().optional().describe('Hide column by default'),\n sortable: z.boolean().optional().describe('Allow sorting by this column'),\n resizable: z.boolean().optional().describe('Allow resizing this column'),\n wrap: z.boolean().optional().describe('Allow text wrapping'),\n type: z.string().optional().describe('Renderer type override (e.g., \"currency\", \"date\")'),\n\n /** Interaction */\n link: z.boolean().optional().describe('Functions as the primary navigation link (triggers View navigation)'),\n action: z.string().optional().describe('Registered Action ID to execute when clicked'),\n});\n\n/**\n * List View Selection Configuration\n */\nexport const SelectionConfigSchema = z.object({\n type: z.enum(['none', 'single', 'multiple']).default('none').describe('Selection mode'),\n});\n\n/**\n * List View Pagination Configuration\n */\nexport const PaginationConfigSchema = z.object({\n pageSize: z.number().int().positive().default(25).describe('Number of records per page'),\n pageSizeOptions: z.array(z.number().int().positive()).optional().describe('Available page size options'),\n});\n\n/**\n * Kanban Settings\n */\nexport const KanbanConfigSchema = z.object({\n groupByField: z.string().describe('Field to group columns by (usually status/select)'),\n summarizeField: z.string().optional().describe('Field to sum at top of column (e.g. amount)'),\n columns: z.array(z.string()).describe('Fields to show on cards'),\n});\n\n/**\n * Calendar Settings\n */\nexport const CalendarConfigSchema = z.object({\n startDateField: z.string(),\n endDateField: z.string().optional(),\n titleField: z.string(),\n colorField: z.string().optional(),\n});\n\n/**\n * Gantt Settings\n */\nexport const GanttConfigSchema = z.object({\n startDateField: z.string(),\n endDateField: z.string(),\n titleField: z.string(),\n progressField: z.string().optional(),\n dependenciesField: z.string().optional(),\n});\n\n/**\n * Navigation Mode Enum\n * Defines how to navigate to the detail view from a list item.\n */\nexport const NavigationModeSchema = z.enum([\n 'page', // Navigate to a new route (default)\n 'drawer', // Open details in a side drawer/panel\n 'modal', // Open details in a modal dialog\n 'split', // Show details side-by-side with the list (master-detail)\n 'popover', // Show details in a popover (lightweight)\n 'new_window', // Open in new browser tab/window\n 'none' // No navigation (read-only list)\n]);\n\n/**\n * Navigation Configuration Schema\n */\nexport const NavigationConfigSchema = z.object({\n mode: NavigationModeSchema.default('page'),\n \n /** Target View Config */\n view: z.string().optional().describe('Name of the form view to use for details (e.g. \"summary_view\", \"edit_form\")'),\n \n /** Interaction Triggers */\n preventNavigation: z.boolean().default(false).describe('Disable standard navigation entirely'),\n openNewTab: z.boolean().default(false).describe('Force open in new tab (applies to page mode)'),\n \n /** Dimensions (for modal/drawer) */\n width: z.union([z.string(), z.number()]).optional().describe('Width of the drawer/modal (e.g. \"600px\", \"50%\")'),\n});\n\n/**\n * List View Schema (Expanded)\n * Defines how a collection of records is displayed to the user.\n * \n * **NAMING CONVENTION:**\n * View names (when provided) are machine identifiers and must be lowercase snake_case.\n * \n * @example Standard Grid\n * {\n * name: \"all_active\",\n * label: \"All Active\",\n * type: \"grid\",\n * columns: [\"name\", \"status\", \"created_at\"],\n * filter: [[\"status\", \"=\", \"active\"]]\n * }\n * \n * @example Kanban Board\n * {\n * type: \"kanban\",\n * columns: [\"name\", \"amount\"],\n * kanban: {\n * groupByField: \"stage\",\n * summarizeField: \"amount\",\n * columns: [\"name\", \"close_date\"]\n * }\n * }\n */\nexport const ListViewSchema = z.object({\n name: SnakeCaseIdentifierSchema.optional().describe('Internal view name (lowercase snake_case)'),\n label: z.string().optional(), // Display label override\n type: z.enum([\n 'grid', // Standard Data Table\n 'kanban', // Board / Columns\n 'gallery', // Card Deck / Masonry\n 'calendar', // Monthly/Weekly/Daily\n 'timeline', // Chronological Stream (Feed)\n 'gantt', // Project Timeline\n 'map' // Geospatial\n ]).default('grid'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n /** Shared Query Config */\n columns: z.union([\n z.array(z.string()), // Legacy: simple field names\n z.array(ListColumnSchema), // Enhanced: detailed column config\n ]).describe('Fields to display as columns'),\n filter: z.array(z.any()).optional().describe('Filter criteria (JSON Rules)'),\n sort: z.union([\n z.string(), //Legacy \"field desc\"\n z.array(z.object({\n field: z.string(),\n order: z.enum(['asc', 'desc'])\n }))\n ]).optional(),\n \n /** Search & Filter */\n searchableFields: z.array(z.string()).optional().describe('Fields enabled for search'),\n filterableFields: z.array(z.string()).optional().describe('Fields enabled for end-user filtering in the top bar'),\n\n /** Grid Features */\n resizable: z.boolean().optional().describe('Enable column resizing'),\n striped: z.boolean().optional().describe('Striped row styling'),\n bordered: z.boolean().optional().describe('Show borders'),\n\n /** Selection */\n selection: SelectionConfigSchema.optional().describe('Row selection configuration'),\n\n /** Navigation / Interaction */\n navigation: NavigationConfigSchema.optional().describe('Configuration for item click navigation (page, drawer, modal, etc.)'),\n\n /** Pagination */\n pagination: PaginationConfigSchema.optional().describe('Pagination configuration'),\n\n /** Type Specific Config */\n kanban: KanbanConfigSchema.optional(),\n calendar: CalendarConfigSchema.optional(),\n gantt: GanttConfigSchema.optional(),\n});\n\n/**\n * Form Field Configuration Schema\n * Detailed configuration for individual form fields\n */\nexport const FormFieldSchema = z.object({\n field: z.string().describe('Field name (snake_case)'),\n label: z.string().optional().describe('Display label override'),\n placeholder: z.string().optional().describe('Placeholder text'),\n helpText: z.string().optional().describe('Help/hint text'),\n readonly: z.boolean().optional().describe('Read-only override'),\n required: z.boolean().optional().describe('Required override'),\n hidden: z.boolean().optional().describe('Hidden override'),\n colSpan: z.number().int().min(1).max(4).optional().describe('Column span in grid layout (1-4)'),\n widget: z.string().optional().describe('Custom widget/component name'),\n dependsOn: z.string().optional().describe('Parent field name for cascading'),\n visibleOn: z.string().optional().describe('Visibility condition expression'),\n});\n\n/**\n * Form Layout Section\n */\nexport const FormSectionSchema = z.object({\n label: z.string().optional(),\n collapsible: z.boolean().default(false),\n collapsed: z.boolean().default(false),\n columns: z.enum(['1', '2', '3', '4']).default('2').transform(val => parseInt(val) as 1 | 2 | 3 | 4),\n fields: z.array(z.union([\n z.string(), // Legacy: simple field name\n FormFieldSchema, // Enhanced: detailed field config\n ])),\n});\n\n/**\n * Form View Schema\n * Defines the layout for creating or editing a single record.\n * \n * @example Simple Sectioned Form\n * {\n * type: \"simple\",\n * sections: [\n * {\n * label: \"General Info\",\n * columns: 2,\n * fields: [\"name\", \"status\"]\n * },\n * {\n * label: \"Details\",\n * fields: [\"description\", { field: \"priority\", widget: \"rating\" }]\n * }\n * ]\n * }\n */\nexport const FormViewSchema = z.object({\n type: z.enum([\n 'simple', // Single column or sections\n 'tabbed', // Tabs\n 'wizard', // Step by step\n 'split', // Master-Detail split\n 'drawer', // Side panel\n 'modal' // Dialog\n ]).default('simple'),\n \n /** Data Source Configuration */\n data: ViewDataSchema.optional().describe('Data source configuration (defaults to \"object\" provider)'),\n \n sections: z.array(FormSectionSchema).optional(), // For simple layout\n groups: z.array(FormSectionSchema).optional(), // Legacy support -> alias to sections\n});\n\n/**\n * Master View Schema\n * Can define multiple named views.\n */\n/**\n * View Container Schema\n * Aggregates all view definitions for a specific object or context.\n * \n * @example\n * {\n * list: { type: \"grid\", columns: [\"name\"] },\n * form: { type: \"simple\", fields: [\"name\"] },\n * listViews: {\n * \"all\": { label: \"All\", filter: [] },\n * \"my\": { label: \"Mine\", filter: [[\"owner\", \"=\", \"{user_id}\"]] }\n * }\n * }\n */\nexport const ViewSchema = z.object({\n list: ListViewSchema.optional(), // Default list view\n form: FormViewSchema.optional(), // Default form view\n listViews: z.record(z.string(), ListViewSchema).optional().describe('Additional named list views'),\n formViews: z.record(z.string(), FormViewSchema).optional().describe('Additional named form views'),\n});\n\nexport type View = z.infer<typeof ViewSchema>;\nexport type ListView = z.infer<typeof ListViewSchema>;\nexport type FormView = z.infer<typeof FormViewSchema>;\nexport type FormSection = z.infer<typeof FormSectionSchema>;\nexport type ListColumn = z.infer<typeof ListColumnSchema>;\nexport type FormField = z.infer<typeof FormFieldSchema>;\nexport type SelectionConfig = z.infer<typeof SelectionConfigSchema>;\nexport type NavigationConfig = z.infer<typeof NavigationConfigSchema>;\nexport type PaginationConfig = z.infer<typeof PaginationConfigSchema>;\nexport type ViewData = z.infer<typeof ViewDataSchema>;\nexport type HttpRequest = z.infer<typeof HttpRequestSchema>;\nexport type HttpMethod = z.infer<typeof HttpMethodSchema>;\n","import { z } from 'zod';\nimport { AnalyticsQuerySchema, CubeSchema } from '../data/analytics.zod';\nimport { BaseResponseSchema } from './contract.zod';\n\n/**\n * Analytics API Protocol\n * \n * Defines the HTTP interface for the Semantic Layer.\n * Provides endpoints for executing analytical queries and discovering metadata.\n */\n\n// ==========================================\n// 1. API Endpoints\n// ==========================================\n\nexport const AnalyticsEndpoint = z.enum([\n '/api/v1/analytics/query', // Execute analysis\n '/api/v1/analytics/meta', // Discover cubes/metrics\n '/api/v1/analytics/sql', // Dry-run SQL generation\n]);\n\n// ==========================================\n// 2. Query Execution\n// ==========================================\n\n/**\n * Query Request Body\n */\nexport const AnalyticsQueryRequestSchema = z.object({\n query: AnalyticsQuerySchema.describe(' The analytic query definition'),\n cube: z.string().describe('Target cube name'),\n format: z.enum(['json', 'csv', 'xlsx']).default('json').describe('Response format'),\n});\n\n/**\n * Query Response (JSON)\n */\nexport const AnalyticsResultResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n rows: z.array(z.record(z.string(), z.any())).describe('Result rows'),\n fields: z.array(z.object({\n name: z.string(),\n type: z.string(),\n })).describe('Column metadata'),\n sql: z.string().optional().describe('Executed SQL (if debug enabled)'),\n }),\n});\n\n// ==========================================\n// 3. Metadata Discovery\n// ==========================================\n\n/**\n * Meta Request\n */\nexport const GetAnalyticsMetaRequestSchema = z.object({\n cube: z.string().optional().describe('Optional cube name to filter'),\n});\n\n/**\n * Meta Response\n * Returns available cubes, metrics, and dimensions.\n */\nexport const AnalyticsMetadataResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n cubes: z.array(CubeSchema).describe('Available cubes'),\n }),\n});\n\n// ==========================================\n// 4. SQL Dry-Run\n// ==========================================\n\nexport const AnalyticsSqlResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n sql: z.string(),\n params: z.array(z.any()),\n }),\n});\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","import { z } from 'zod';\nimport { BaseResponseSchema } from './contract.zod';\nimport {\n HubSpaceSchema,\n TenantSchema,\n BillOfMaterialsSchema,\n ComposerRequestSchema,\n ComposerResponseSchema,\n PluginRegistryEntrySchema,\n PluginSearchFiltersSchema,\n MarketplacePluginSchema,\n LicenseSchema,\n} from '../hub/index';\n\n/**\n * # Hub Management API Protocol\n * \n * Defines RESTful API contracts for the ObjectStack Hub - the unified cloud\n * management center for all tenants, plugins, spaces, and marketplace operations.\n * \n * This protocol enables:\n * - Multi-tenant SaaS management\n * - Plugin marketplace operations\n * - Space/workspace lifecycle\n * - License management and validation\n * - Composer/builder services\n * \n * @see https://objectstack.ai/docs/api/hub\n */\n\n// ============================================================================\n// Common Types\n// ============================================================================\n\n/**\n * Pagination Request Parameters\n */\nexport const PaginationRequestSchema = z.object({\n /**\n * Page number (1-indexed)\n */\n page: z.number().int().min(1).default(1).optional(),\n \n /**\n * Number of items per page\n */\n perPage: z.number().int().min(1).max(100).default(20).optional(),\n \n /**\n * Sort field\n */\n sortBy: z.string().optional(),\n \n /**\n * Sort direction\n */\n sortOrder: z.enum(['asc', 'desc']).default('desc').optional(),\n});\n\n/**\n * Pagination Response Metadata\n */\nexport const PaginationResponseSchema = z.object({\n /**\n * Current page number\n */\n page: z.number().int().min(1),\n \n /**\n * Items per page\n */\n perPage: z.number().int().min(1),\n \n /**\n * Total number of items\n */\n total: z.number().int().min(0),\n \n /**\n * Total number of pages\n */\n totalPages: z.number().int().min(0),\n \n /**\n * Whether there is a next page\n */\n hasNext: z.boolean(),\n \n /**\n * Whether there is a previous page\n */\n hasPrev: z.boolean(),\n});\n\n// ============================================================================\n// Space Management API\n// ============================================================================\n\n/**\n * Create Space Request\n * \n * @example\n * ```json\n * {\n * \"name\": \"Sales Team Workspace\",\n * \"slug\": \"sales-team\",\n * \"ownerId\": \"user_abc123\",\n * \"runtime\": {\n * \"isolation\": \"shared_schema\",\n * \"quotas\": {\n * \"maxUsers\": 50,\n * \"maxStorage\": 107374182400,\n * \"apiRateLimit\": 10000\n * }\n * }\n * }\n * ```\n */\nexport const CreateSpaceRequestSchema = z.object({\n name: z.string().min(1).max(255).describe('Space display name'),\n slug: z.string().regex(/^[a-z0-9-]+$/).min(1).max(100).describe('URL-friendly identifier'),\n ownerId: z.string().describe('Owner user/org ID'),\n runtime: HubSpaceSchema.shape.runtime.optional(),\n bom: BillOfMaterialsSchema.optional().describe('Initial Bill of Materials'),\n subscription: HubSpaceSchema.shape.subscription.optional(),\n deployment: HubSpaceSchema.shape.deployment.optional(),\n});\n\n/**\n * Update Space Request\n * \n * @example\n * ```json\n * {\n * \"name\": \"Updated Sales Team\",\n * \"bom\": {\n * \"tenantId\": \"tenant_123\",\n * \"dependencies\": [\n * { \"id\": \"com.objectstack.crm\", \"version\": \"2.0.0\" }\n * ],\n * \"resolutionStrategy\": \"override\"\n * }\n * }\n * ```\n */\nexport const UpdateSpaceRequestSchema = CreateSpaceRequestSchema.partial();\n\n/**\n * Space Response\n * \n * @example\n * ```json\n * {\n * \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"name\": \"Sales Team Workspace\",\n * \"slug\": \"sales-team\",\n * \"ownerId\": \"user_abc123\",\n * \"runtime\": {\n * \"isolation\": \"shared_schema\",\n * \"quotas\": {\n * \"maxUsers\": 50,\n * \"maxStorage\": 107374182400,\n * \"apiRateLimit\": 10000\n * }\n * },\n * \"bom\": {\n * \"tenantId\": \"tenant_123\",\n * \"dependencies\": [],\n * \"resolutionStrategy\": \"override\"\n * },\n * \"createdAt\": \"2024-01-01T00:00:00Z\",\n * \"updatedAt\": \"2024-01-02T00:00:00Z\"\n * }\n * ```\n */\nexport const SpaceResponseSchema = BaseResponseSchema.extend({\n data: HubSpaceSchema\n});\n\n/**\n * List Spaces Request\n */\nexport const ListSpacesRequestSchema = PaginationRequestSchema.extend({\n ownerId: z.string().optional().describe('Filter by owner'),\n search: z.string().optional().describe('Search in name and slug'),\n});\n\n/**\n * List Spaces Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": [\n * {\n * \"id\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"name\": \"Sales Team\",\n * \"slug\": \"sales-team\",\n * \"ownerId\": \"user_123\",\n * \"createdAt\": \"2024-01-01T00:00:00Z\",\n * \"updatedAt\": \"2024-01-02T00:00:00Z\"\n * }\n * ],\n * \"pagination\": {\n * \"page\": 1,\n * \"perPage\": 20,\n * \"total\": 1,\n * \"totalPages\": 1,\n * \"hasNext\": false,\n * \"hasPrev\": false\n * }\n * }\n * ```\n */\nexport const ListSpacesResponseSchema = BaseResponseSchema.extend({\n data: z.array(HubSpaceSchema),\n pagination: PaginationResponseSchema,\n});\n\n// ============================================================================\n// Tenant Management API\n// ============================================================================\n\n/**\n * Create Tenant Request\n * \n * @example\n * ```json\n * {\n * \"name\": \"Acme Corporation\",\n * \"isolationLevel\": \"isolated_schema\",\n * \"quotas\": {\n * \"maxUsers\": 100,\n * \"maxStorage\": 214748364800,\n * \"apiRateLimit\": 50000\n * }\n * }\n * ```\n */\nexport const CreateTenantRequestSchema = z.object({\n name: z.string().min(1).max(255).describe('Tenant display name'),\n isolationLevel: TenantSchema.shape.isolationLevel,\n customizations: TenantSchema.shape.customizations.optional(),\n quotas: TenantSchema.shape.quotas.optional(),\n});\n\n/**\n * Update Tenant Request\n */\nexport const UpdateTenantRequestSchema = CreateTenantRequestSchema.partial();\n\n/**\n * Tenant Response\n */\nexport const TenantResponseSchema = BaseResponseSchema.extend({\n data: TenantSchema\n});\n\n/**\n * List Tenants Request\n */\nexport const ListTenantsRequestSchema = PaginationRequestSchema.extend({\n isolationLevel: TenantSchema.shape.isolationLevel.optional(),\n search: z.string().optional(),\n});\n\n/**\n * List Tenants Response\n */\nexport const ListTenantsResponseSchema = BaseResponseSchema.extend({\n data: z.array(TenantSchema),\n pagination: PaginationResponseSchema,\n});\n\n// ============================================================================\n// Plugin Registry API\n// ============================================================================\n\n/**\n * Publish Plugin Request\n * \n * @example\n * ```json\n * {\n * \"id\": \"com.acme.crm.advanced\",\n * \"version\": \"1.0.0\",\n * \"name\": \"Advanced CRM\",\n * \"description\": \"Enterprise-grade CRM solution\",\n * \"category\": \"data\",\n * \"vendor\": {\n * \"id\": \"com.acme\",\n * \"name\": \"Acme Corporation\",\n * \"verified\": true,\n * \"trustLevel\": \"verified\"\n * }\n * }\n * ```\n */\nexport const PublishPluginRequestSchema = PluginRegistryEntrySchema.omit({\n publishedAt: true,\n updatedAt: true,\n statistics: true,\n quality: true,\n});\n\n/**\n * Update Plugin Request\n */\nexport const UpdatePluginRequestSchema = PublishPluginRequestSchema.partial();\n\n/**\n * Plugin Response\n */\nexport const PluginResponseSchema = BaseResponseSchema.extend({\n data: PluginRegistryEntrySchema\n});\n\n/**\n * Search Plugins Request\n * \n * @example\n * ```json\n * {\n * \"query\": \"crm\",\n * \"category\": [\"data\", \"integration\"],\n * \"trustLevel\": [\"verified\", \"official\"],\n * \"minRating\": 4.0,\n * \"sortBy\": \"downloads\",\n * \"page\": 1,\n * \"limit\": 20\n * }\n * ```\n */\nexport const SearchPluginsRequestSchema = PluginSearchFiltersSchema;\n\n/**\n * Search Plugins Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": [\n * {\n * \"id\": \"com.acme.crm\",\n * \"version\": \"1.0.0\",\n * \"name\": \"Advanced CRM\",\n ...\n * }\n * }\n * ],\n * \"pagination\": {\n * \"page\": 1,\n * \"perPage\": 20,\n * \"total\": 45,\n * \"totalPages\": 3,\n * \"hasNext\": true,\n * \"hasPrev\": false\n * }\n * }\n * ```\n */\nexport const SearchPluginsResponseSchema = BaseResponseSchema.extend({\n data: z.array(PluginRegistryEntrySchema),\n pagination: PaginationResponseSchema,\n});\n\n/**\n * Get Plugin Versions Request\n */\nexport const GetPluginVersionsRequestSchema = z.object({\n pluginId: z.string().describe('Plugin identifier'),\n});\n\n/**\n * Plugin Version Info\n */\nexport const PluginVersionInfoSchema = z.object({\n version: z.string(),\n publishedAt: z.string().datetime(),\n deprecated: z.boolean().default(false),\n yanked: z.boolean().default(false).describe('Whether this version was removed'),\n changelog: z.string().optional(),\n});\n\n/**\n * Get Plugin Versions Response\n */\nexport const GetPluginVersionsResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n pluginId: z.string(),\n versions: z.array(PluginVersionInfoSchema),\n latest: z.string().describe('Latest stable version'),\n latestPrerelease: z.string().optional().describe('Latest pre-release version'),\n })\n});\n\n// ============================================================================\n// Marketplace API\n// ============================================================================\n\n/**\n * List Marketplace Plugins Request\n */\nexport const ListMarketplaceRequestSchema = PaginationRequestSchema.extend({\n category: z.string().optional(),\n tags: z.array(z.string()).optional(),\n verified: z.boolean().optional(),\n search: z.string().optional(),\n});\n\n/**\n * List Marketplace Response\n */\nexport const ListMarketplaceResponseSchema = BaseResponseSchema.extend({\n data: z.array(MarketplacePluginSchema),\n pagination: PaginationResponseSchema,\n categories: z.array(z.object({\n id: z.string(),\n label: z.string(),\n count: z.number().int(),\n })).optional().describe('Available categories with counts'),\n});\n\n/**\n * Get Marketplace Plugin Details Request\n */\nexport const GetMarketplacePluginRequestSchema = z.object({\n pluginId: z.string(),\n});\n\n/**\n * Marketplace Plugin Details Response\n */\nexport const MarketplacePluginResponseSchema = BaseResponseSchema.extend({\n data: MarketplacePluginSchema\n});\n\n// ============================================================================\n// License Management API\n// ============================================================================\n\n/**\n * Issue License Request\n * \n * @example\n * ```json\n * {\n * \"spaceId\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"planCode\": \"enterprise_v1\",\n * \"expiresAt\": \"2025-12-31T23:59:59Z\",\n * \"customFeatures\": [\"advanced_analytics\", \"ai_insights\"],\n * \"customLimits\": {\n * \"storage_gb\": 500,\n * \"api_calls\": 1000000\n * },\n * \"plugins\": [\"com.acme.crm\", \"com.acme.analytics\"]\n * }\n * ```\n */\nexport const IssueLicenseRequestSchema = z.object({\n spaceId: z.string().describe('Target space ID'),\n planCode: z.string().describe('Plan code'),\n expiresAt: z.string().datetime().optional(),\n customFeatures: z.array(z.string()).optional(),\n customLimits: z.record(z.string(), z.number()).optional(),\n plugins: z.array(z.string()).optional(),\n});\n\n/**\n * License Response\n */\nexport const LicenseResponseSchema = BaseResponseSchema.extend({\n data: LicenseSchema\n});\n\n/**\n * Validate License Request\n * \n * @example\n * ```json\n * {\n * \"spaceId\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"signature\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...\"\n * }\n * ```\n */\nexport const ValidateLicenseRequestSchema = z.object({\n spaceId: z.string(),\n signature: z.string().describe('License signature/token'),\n});\n\n/**\n * License Validation Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": {\n * \"valid\": true,\n * \"license\": {\n * \"spaceId\": \"550e8400-e29b-41d4-a716-446655440000\",\n * \"planCode\": \"enterprise_v1\",\n * \"status\": \"active\",\n * \"issuedAt\": \"2024-01-01T00:00:00Z\",\n * \"expiresAt\": \"2025-12-31T23:59:59Z\"\n * },\n * \"errors\": []\n * }\n * }\n * ```\n */\nexport const ValidateLicenseResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n valid: z.boolean(),\n license: LicenseSchema.optional(),\n errors: z.array(z.string()).default([]),\n warnings: z.array(z.string()).default([]),\n })\n});\n\n/**\n * Revoke License Request\n */\nexport const RevokeLicenseRequestSchema = z.object({\n spaceId: z.string(),\n reason: z.string().optional(),\n});\n\n/**\n * List Licenses Request\n */\nexport const ListLicensesRequestSchema = PaginationRequestSchema.extend({\n spaceId: z.string().optional(),\n planCode: z.string().optional(),\n status: LicenseSchema.shape.status.optional(),\n});\n\n/**\n * List Licenses Response\n */\nexport const ListLicensesResponseSchema = BaseResponseSchema.extend({\n data: z.array(LicenseSchema),\n pagination: PaginationResponseSchema,\n});\n\n// ============================================================================\n// Composer Service API\n// ============================================================================\n\n/**\n * Compile Manifest Request\n * \n * @example\n * ```json\n * {\n * \"bom\": {\n * \"tenantId\": \"tenant_123\",\n * \"dependencies\": [\n * {\n * \"id\": \"com.objectstack.crm\",\n * \"version\": \"2.0.0\",\n * \"configuration\": {\n * \"currency\": \"USD\",\n * \"region\": \"us-east-1\"\n * }\n * }\n * ],\n * \"resolutionStrategy\": \"override\"\n * },\n * \"runtimeVersion\": \"1.5.0\",\n * \"dryRun\": false\n * }\n * ```\n */\nexport const CompileManifestRequestSchema = ComposerRequestSchema;\n\n/**\n * Compile Manifest Response\n */\nexport const CompileManifestResponseSchema = BaseResponseSchema.extend({\n data: ComposerResponseSchema\n});\n\n/**\n * Get Build Status Request\n */\nexport const GetBuildStatusRequestSchema = z.object({\n buildId: z.string(),\n});\n\n/**\n * Build Status Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": {\n * \"buildId\": \"build_abc123\",\n * \"status\": \"success\",\n * \"progress\": 100,\n * \"startedAt\": \"2024-01-01T10:00:00Z\",\n * \"completedAt\": \"2024-01-01T10:02:30Z\",\n * \"duration\": 150000,\n * \"logs\": [\n * { \"timestamp\": \"2024-01-01T10:00:00Z\", \"level\": \"info\", \"message\": \"Starting compilation\" },\n * { \"timestamp\": \"2024-01-01T10:02:30Z\", \"level\": \"info\", \"message\": \"Compilation complete\" }\n * ]\n * }\n * }\n * ```\n */\nexport const BuildStatusResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n buildId: z.string(),\n status: z.enum(['pending', 'in_progress', 'success', 'failed']),\n progress: z.number().min(0).max(100).describe('Completion percentage'),\n startedAt: z.string().datetime().optional(),\n completedAt: z.string().datetime().optional(),\n duration: z.number().optional().describe('Duration in milliseconds'),\n logs: z.array(z.object({\n timestamp: z.string().datetime(),\n level: z.enum(['debug', 'info', 'warn', 'error']),\n message: z.string(),\n })).optional(),\n error: z.string().optional(),\n })\n});\n\n// ============================================================================\n// Health & Monitoring\n// ============================================================================\n\n/**\n * Hub Health Check Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": {\n * \"status\": \"healthy\",\n * \"version\": \"1.0.0\",\n * \"uptime\": 86400,\n * \"services\": {\n * \"database\": {\n * \"status\": \"healthy\",\n * \"latency\": 5\n * },\n * \"cache\": {\n * \"status\": \"healthy\",\n * \"latency\": 2\n * },\n * \"composer\": {\n * \"status\": \"healthy\",\n * \"latency\": 15\n * }\n * },\n * \"timestamp\": \"2024-01-01T12:00:00Z\"\n * }\n * }\n * ```\n */\nexport const HubHealthResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n version: z.string(),\n uptime: z.number().describe('Uptime in seconds'),\n services: z.record(z.string(), z.object({\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n latency: z.number().optional().describe('Latency in milliseconds'),\n message: z.string().optional(),\n })),\n timestamp: z.string().datetime(),\n })\n});\n\n/**\n * Hub Metrics Response\n * \n * @example\n * ```json\n * {\n * \"success\": true,\n * \"data\": {\n * \"metrics\": {\n * \"spaces\": {\n * \"total\": 1250,\n * \"active\": 980,\n * \"created_last_30d\": 45\n * },\n * \"tenants\": {\n * \"total\": 320,\n * \"active\": 285\n * },\n * \"plugins\": {\n * \"total\": 156,\n * \"published_last_30d\": 8,\n * \"total_downloads\": 456789\n * },\n * \"api\": {\n * \"requests_per_minute\": 850,\n * \"avg_response_time\": 125,\n * \"error_rate\": 0.002\n * }\n * },\n * \"timestamp\": \"2024-01-01T12:00:00Z\"\n * }\n * }\n * ```\n */\nexport const HubMetricsResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n metrics: z.object({\n spaces: z.object({\n total: z.number().int(),\n active: z.number().int(),\n created_last_30d: z.number().int().optional(),\n }).optional(),\n tenants: z.object({\n total: z.number().int(),\n active: z.number().int(),\n }).optional(),\n plugins: z.object({\n total: z.number().int(),\n published_last_30d: z.number().int().optional(),\n total_downloads: z.number().int().optional(),\n }).optional(),\n api: z.object({\n requests_per_minute: z.number(),\n avg_response_time: z.number().describe('Milliseconds'),\n error_rate: z.number().min(0).max(1),\n }).optional(),\n }),\n timestamp: z.string().datetime(),\n })\n});\n\n// ============================================================================\n// Export Types\n// ============================================================================\n\nexport type PaginationRequest = z.infer<typeof PaginationRequestSchema>;\nexport type PaginationResponse = z.infer<typeof PaginationResponseSchema>;\n\n// Space API\nexport type CreateSpaceRequest = z.infer<typeof CreateSpaceRequestSchema>;\nexport type UpdateSpaceRequest = z.infer<typeof UpdateSpaceRequestSchema>;\nexport type SpaceResponse = z.infer<typeof SpaceResponseSchema>;\nexport type ListSpacesRequest = z.infer<typeof ListSpacesRequestSchema>;\nexport type ListSpacesResponse = z.infer<typeof ListSpacesResponseSchema>;\n\n// Tenant API\nexport type CreateTenantRequest = z.infer<typeof CreateTenantRequestSchema>;\nexport type UpdateTenantRequest = z.infer<typeof UpdateTenantRequestSchema>;\nexport type TenantResponse = z.infer<typeof TenantResponseSchema>;\nexport type ListTenantsRequest = z.infer<typeof ListTenantsRequestSchema>;\nexport type ListTenantsResponse = z.infer<typeof ListTenantsResponseSchema>;\n\n// Plugin Registry API\nexport type PublishPluginRequest = z.infer<typeof PublishPluginRequestSchema>;\nexport type UpdatePluginRequest = z.infer<typeof UpdatePluginRequestSchema>;\nexport type PluginResponse = z.infer<typeof PluginResponseSchema>;\nexport type SearchPluginsRequest = z.infer<typeof SearchPluginsRequestSchema>;\nexport type SearchPluginsResponse = z.infer<typeof SearchPluginsResponseSchema>;\nexport type GetPluginVersionsRequest = z.infer<typeof GetPluginVersionsRequestSchema>;\nexport type PluginVersionInfo = z.infer<typeof PluginVersionInfoSchema>;\nexport type GetPluginVersionsResponse = z.infer<typeof GetPluginVersionsResponseSchema>;\n\n// Marketplace API\nexport type ListMarketplaceRequest = z.infer<typeof ListMarketplaceRequestSchema>;\nexport type ListMarketplaceResponse = z.infer<typeof ListMarketplaceResponseSchema>;\nexport type GetMarketplacePluginRequest = z.infer<typeof GetMarketplacePluginRequestSchema>;\nexport type MarketplacePluginResponse = z.infer<typeof MarketplacePluginResponseSchema>;\n\n// License API\nexport type IssueLicenseRequest = z.infer<typeof IssueLicenseRequestSchema>;\nexport type LicenseResponse = z.infer<typeof LicenseResponseSchema>;\nexport type ValidateLicenseRequest = z.infer<typeof ValidateLicenseRequestSchema>;\nexport type ValidateLicenseResponse = z.infer<typeof ValidateLicenseResponseSchema>;\nexport type RevokeLicenseRequest = z.infer<typeof RevokeLicenseRequestSchema>;\nexport type ListLicensesRequest = z.infer<typeof ListLicensesRequestSchema>;\nexport type ListLicensesResponse = z.infer<typeof ListLicensesResponseSchema>;\n\n// Composer API\nexport type CompileManifestRequest = z.infer<typeof CompileManifestRequestSchema>;\nexport type CompileManifestResponse = z.infer<typeof CompileManifestResponseSchema>;\nexport type GetBuildStatusRequest = z.infer<typeof GetBuildStatusRequestSchema>;\nexport type BuildStatusResponse = z.infer<typeof BuildStatusResponseSchema>;\n\n// Health & Monitoring\nexport type HubHealthResponse = z.infer<typeof HubHealthResponseSchema>;\nexport type HubMetricsResponse = z.infer<typeof HubMetricsResponseSchema>;\n\n// ============================================================================\n// Hub API Contracts Export\n// ============================================================================\n\n/**\n * Complete Hub API Contract\n * \n * This object provides a centralized reference to all Hub API endpoints,\n * request/response schemas, and types for building Hub management systems.\n */\nexport const HubAPIContract = {\n // Space Management\n spaces: {\n create: {\n request: CreateSpaceRequestSchema,\n response: SpaceResponseSchema,\n },\n update: {\n request: UpdateSpaceRequestSchema,\n response: SpaceResponseSchema,\n },\n get: {\n response: SpaceResponseSchema,\n },\n list: {\n request: ListSpacesRequestSchema,\n response: ListSpacesResponseSchema,\n },\n delete: {\n response: z.object({ success: z.boolean() }),\n },\n },\n \n // Tenant Management\n tenants: {\n create: {\n request: CreateTenantRequestSchema,\n response: TenantResponseSchema,\n },\n update: {\n request: UpdateTenantRequestSchema,\n response: TenantResponseSchema,\n },\n get: {\n response: TenantResponseSchema,\n },\n list: {\n request: ListTenantsRequestSchema,\n response: ListTenantsResponseSchema,\n },\n delete: {\n response: z.object({ success: z.boolean() }),\n },\n },\n \n // Plugin Registry (Publisher Operations)\n registry: {\n publish: {\n request: PublishPluginRequestSchema,\n response: PluginResponseSchema,\n },\n update: {\n request: UpdatePluginRequestSchema,\n response: PluginResponseSchema,\n },\n get: {\n response: PluginResponseSchema,\n },\n search: {\n request: SearchPluginsRequestSchema,\n response: SearchPluginsResponseSchema,\n },\n versions: {\n request: GetPluginVersionsRequestSchema,\n response: GetPluginVersionsResponseSchema,\n },\n delete: {\n response: z.object({ success: z.boolean() }),\n },\n },\n \n // Marketplace (Consumer Operations)\n marketplace: {\n list: {\n request: ListMarketplaceRequestSchema,\n response: ListMarketplaceResponseSchema,\n },\n get: {\n request: GetMarketplacePluginRequestSchema,\n response: MarketplacePluginResponseSchema,\n },\n },\n \n // License Management\n licenses: {\n issue: {\n request: IssueLicenseRequestSchema,\n response: LicenseResponseSchema,\n },\n validate: {\n request: ValidateLicenseRequestSchema,\n response: ValidateLicenseResponseSchema,\n },\n revoke: {\n request: RevokeLicenseRequestSchema,\n response: z.object({ success: z.boolean() }),\n },\n list: {\n request: ListLicensesRequestSchema,\n response: ListLicensesResponseSchema,\n },\n },\n \n // Composer\n composer: {\n compile: {\n request: CompileManifestRequestSchema,\n response: CompileManifestResponseSchema,\n },\n buildStatus: {\n request: GetBuildStatusRequestSchema,\n response: BuildStatusResponseSchema,\n },\n },\n \n // System & Observability\n system: {\n health: {\n response: HubHealthResponseSchema,\n },\n metrics: {\n response: HubMetricsResponseSchema,\n },\n },\n} as const;\n\n/**\n * Install Plugin Request\n */\nexport const InstallPluginRequestSchema = z.object({\n spaceId: z.string().describe('Target Space ID'),\n pluginId: z.string().describe('Plugin Package ID'),\n version: z.string().optional().describe('Version requirement'),\n config: z.record(z.any()).optional().describe('Plugin configuration'),\n});\n\n/**\n * Install Plugin Response\n */\nexport const InstallPluginResponseSchema = BaseResponseSchema.extend({\n data: z.any() // Returns installation status or installed instance\n});\n\n\n\nexport type InstallPluginRequest = z.infer<typeof InstallPluginRequestSchema>;\nexport type InstallPluginResponse = z.infer<typeof InstallPluginResponseSchema>;\n","import { z } from 'zod';\nimport { ManifestSchema } from '../kernel/manifest.zod';\n\n/**\n * # Cloud Composer Protocol\n * \n * Defines the interface for the ObjectStack Composer Service.\n * The Composer is responsible for \"compiling\" a Tenant's configuration (BOM)\n * into a single executable System Manifest.\n */\n\n/**\n * Dependency Requirement\n * Specifies a plugin and its version constraints.\n */\nexport const DependencyRequirementSchema = z.object({\n id: z.string().describe('Plugin ID (e.g. \"com.example.crm\")'),\n version: z.string().default('latest').describe('SemVer range or \"latest\"'),\n \n /**\n * Configuration Overrides\n * Tenant-specific settings that override plugin defaults.\n * Example: { \"currency\": \"USD\", \"apiKey\": \"...\" }\n */\n configuration: z.record(z.string(), z.any()).optional().describe('Configuration overrides'),\n \n /**\n * Feature Flags\n * Enable/Disable specific features within the plugin.\n */\n features: z.record(z.string(), z.boolean()).optional().describe('Feature toggles'),\n});\n\n/**\n * Bill of Materials (BOM)\n * The \"Shopping List\" for a specific tenant.\n * Represents the high-level intent of what the tenant wants to install.\n */\nexport const BillOfMaterialsSchema = z.object({\n tenantId: z.string().describe('Target Tenant ID'),\n \n /**\n * List of installed plugins/apps.\n * implementation order matters (later plugins override earlier ones by default).\n */\n dependencies: z.array(DependencyRequirementSchema).describe('Installed packages'),\n \n /**\n * Environment Variables injection.\n * Maps abstract keys to secure vault references or concrete values.\n */\n environment: z.record(z.string(), z.string()).optional(),\n \n /**\n * Global Resolution Strategy\n * How to handle conflicts when multiple plugins define the same resource.\n */\n resolutionStrategy: z.enum(['strict', 'override', 'merge']).default('override')\n .describe('Conflict resolution strategy (strict=fail, override=last-wins, merge=deep-merge)'),\n});\n\n/**\n * Conflict Report\n * Detailed information about collision during composition.\n */\nexport const ConflictReportSchema = z.object({\n resourceType: z.enum(['object', 'field', 'api', 'ui']).describe('Type of colliding resource'),\n resourceId: z.string().describe('ID of the resource'),\n sources: z.array(z.string()).describe('List of plugin IDs defining this resource'),\n resolution: z.string().describe('How it was resolved (e.g. \"com.example.erp won\")'),\n severity: z.enum(['info', 'warning', 'error']).describe('Severity of the conflict'),\n});\n\n/**\n * Composer Request\n * The RPC payload sent to the Composer Service.\n */\nexport const ComposerRequestSchema = z.object({\n bom: BillOfMaterialsSchema,\n \n /**\n * Target Runtime Version\n * Ensure generated manifest is compatible with the specific runtime version.\n */\n runtimeVersion: z.string().optional(),\n \n /**\n * Dry Run\n * If true, generates report but does not persist the manifest.\n */\n dryRun: z.boolean().default(false),\n});\n\n/**\n * Composer Response\n * The result of the compilation process.\n */\nexport const ComposerResponseSchema = z.object({\n success: z.boolean(),\n \n /**\n * The Holy Grail: The Executable System Manifest.\n * This is what the Runtime loads to boot.\n */\n manifest: ManifestSchema.optional().describe('The compiled System Manifest'),\n\n /**\n * Manifest URL\n * Presigned URL to download the manifest if stored externally (e.g. Vercel KV/S3).\n */\n manifestUrl: z.string().url().optional().describe('Presigned download URL'),\n \n /**\n * Compilation Metadata\n */\n buildId: z.string(),\n timestamp: z.string().datetime(),\n duration: z.number().describe('Compilation time in ms'),\n \n /**\n * Analysis\n */\n conflicts: z.array(ConflictReportSchema).optional(),\n errors: z.array(z.string()).optional(),\n});\n\nexport type BillOfMaterials = z.infer<typeof BillOfMaterialsSchema>;\nexport type ComposerRequest = z.infer<typeof ComposerRequestSchema>;\nexport type ComposerResponse = z.infer<typeof ComposerResponseSchema>;\nexport type ComposerConfig = ComposerRequest; // Alias for configuration context\n","import { z } from 'zod';\nimport { PluginCapabilityManifestSchema } from './plugin-capability.zod';\nimport { PluginLoadingConfigSchema } from './plugin-loading.zod';\nimport { CORE_PLUGIN_TYPES } from './plugin.zod';\n\n/**\n * Schema for the ObjectStack Manifest.\n * This defines the structure of a package configuration in the ObjectStack ecosystem.\n * All packages (apps, plugins, drivers, modules) must conform to this schema.\n * \n * @example App Package\n * ```yaml\n * id: com.acme.crm\n * version: 1.0.0\n * type: app\n * name: Acme CRM\n * description: Customer Relationship Management system\n * permissions:\n * - system.user.read\n * - system.object.create\n * objects:\n * - \"./src/objects/*.object.yml\"\n * ```\n */\nexport const ManifestSchema = z.object({\n /** \n * Unique package identifier using reverse domain notation.\n * Must be unique across the entire ecosystem.\n * \n * @example \"com.steedos.crm\"\n * @example \"org.apache.superset\"\n */\n id: z.string().describe('Unique package identifier (reverse domain style)'),\n \n /** \n * Package version following semantic versioning (major.minor.patch).\n * \n * @example \"1.0.0\"\n * @example \"2.1.0-beta.1\"\n */\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/).describe('Package version (semantic versioning)'),\n \n /** \n * Type of the package in the ObjectStack ecosystem.\n * - plugin: General-purpose functionality extension (Runtime: standard)\n * - app: Business application package\n * - driver: Connectivity adapter\n * - server: Protocol gateway (Hono, GraphQL)\n * - ui: Frontend package (Static/SPA)\n * - theme: UI Theme\n * - agent: AI Agent\n * - module: Reusable code library/shared module\n * - objectql: Core engine\n * - adapter: Host adapter (Express, Fastify)\n */\n type: z.enum([\n 'plugin', \n ...CORE_PLUGIN_TYPES,\n 'module', \n 'gateway', // Deprecated: use 'server'\n 'adapter'\n ]).describe('Type of package'),\n \n /** \n * Human-readable name of the package.\n * Displayed in the UI for users.\n * \n * @example \"Project Management\"\n */\n name: z.string().describe('Human-readable package name'),\n \n /** \n * Brief description of the package functionality.\n * Displayed in the marketplace and plugin manager.\n */\n description: z.string().optional().describe('Package description'),\n \n /** \n * Array of permission strings that the package requires.\n * These form the \"Scope\" requested by the package at installation.\n * \n * @example [\"system.user.read\", \"system.data.write\"]\n */\n permissions: z.array(z.string()).optional().describe('Array of required permission strings'),\n \n /** \n * Glob patterns specifying ObjectQL schemas files.\n * Matches `*.object.yml` or `*.object.ts` files to load business objects.\n * \n * @example [\"./src/objects/*.object.yml\"]\n */\n objects: z.array(z.string()).optional().describe('Glob patterns for ObjectQL schemas files'),\n\n /**\n * Defines system level DataSources.\n * Matches `*.datasource.yml` files.\n * \n * @example [\"./src/datasources/*.datasource.mongo.yml\"]\n */\n datasources: z.array(z.string()).optional().describe('Glob patterns for Datasource definitions'),\n\n /**\n * Package Dependencies.\n * Map of package IDs to version requirements.\n * \n * @example { \"@steedos/plugin-auth\": \"^2.0.0\" }\n */\n dependencies: z.record(z.string(), z.string()).optional().describe('Package dependencies'),\n\n /**\n * Plugin Configuration Schema.\n * Defines the settings this plugin exposes to the user via UI/ENV.\n * Uses a simplified JSON Schema format.\n * \n * @example\n * {\n * \"title\": \"Stripe Config\",\n * \"properties\": {\n * \"apiKey\": { \"type\": \"string\", \"secret\": true },\n * \"currency\": { \"type\": \"string\", \"default\": \"USD\" }\n * }\n * }\n */\n configuration: z.object({\n title: z.string().optional(),\n properties: z.record(z.string(), z.object({\n type: z.enum(['string', 'number', 'boolean', 'array', 'object']).describe('Data type of the setting'),\n default: z.any().optional().describe('Default value'),\n description: z.string().optional().describe('Tooltip description'),\n required: z.boolean().optional().describe('Is this setting required?'),\n secret: z.boolean().optional().describe('If true, value is encrypted/masked (e.g. API Keys)'),\n enum: z.array(z.string()).optional().describe('Allowed values for select inputs'),\n })).describe('Map of configuration keys to their definitions')\n }).optional().describe('Plugin configuration settings'),\n\n /**\n * Contribution Points (VS Code Style).\n * formalized way to extend the platform capabilities.\n */\n contributes: z.object({\n /**\n * Register new Metadata Kinds (CRDs).\n * Enables the system to parse and validate new file types.\n * Example: Registering a BI plugin to handle *.report.ts\n */\n kinds: z.array(z.object({\n id: z.string().describe('The generic identifier of the kind (e.g., \"sys.bi.report\")'),\n globs: z.array(z.string()).describe('File patterns to watch (e.g., [\"**/*.report.ts\"])'),\n description: z.string().optional().describe('Description of what this kind represents'),\n })).optional().describe('New Metadata Types to recognize'),\n\n /**\n * Register System Hooks.\n * Declares that this plugin listens to specific system events.\n */\n events: z.array(z.string()).optional().describe('Events this plugin listens to'),\n\n /**\n * Register UI Menus.\n */\n menus: z.record(z.string(), z.array(z.object({\n id: z.string(),\n label: z.string(),\n command: z.string().optional(),\n }))).optional().describe('UI Menu contributions'),\n\n /**\n * Register Custom Themes.\n */\n themes: z.array(z.object({\n id: z.string(),\n label: z.string(),\n path: z.string(),\n })).optional().describe('Theme contributions'),\n\n /**\n * Register Translations.\n * Path to translation files (e.g. \"locales/en.json\").\n */\n translations: z.array(z.object({\n locale: z.string(),\n path: z.string(),\n })).optional().describe('Translation resources'),\n\n /**\n * Register Server Actions.\n * Invocable functions exposed to Flows or API.\n */\n actions: z.array(z.object({\n name: z.string().describe('Unique action name'),\n label: z.string().optional(),\n description: z.string().optional(),\n input: z.any().optional().describe('Input validation schema'),\n output: z.any().optional().describe('Output schema'),\n })).optional().describe('Exposed server actions'),\n\n /**\n * Register Storage Drivers.\n * Enables connecting to new types of datasources.\n */\n drivers: z.array(z.object({\n id: z.string().describe('Driver unique identifier (e.g. \"postgres\", \"mongo\")'),\n label: z.string().describe('Human readable name'),\n description: z.string().optional(),\n })).optional().describe('Driver contributions'),\n\n /**\n * Register Custom Field Types.\n * Extends the data model with new widget types.\n */\n fieldTypes: z.array(z.object({\n name: z.string().describe('Unique field type name (e.g. \"vector\")'),\n label: z.string().describe('Display label'),\n description: z.string().optional(),\n })).optional().describe('Field Type contributions'),\n \n /**\n * Register Custom Query Operators/Functions.\n * Extends ObjectQL with new functions (e.g. distance()).\n */\n functions: z.array(z.object({\n name: z.string().describe('Function name (e.g. \"distance\")'),\n description: z.string().optional(),\n args: z.array(z.string()).optional().describe('Argument types'),\n returnType: z.string().optional(),\n })).optional().describe('Query Function contributions'),\n }).optional().describe('Platform contributions'),\n\n /** \n * Initial data seeding configuration.\n * Defines default records to be inserted when the package is installed.\n */\n data: z.array(z.object({\n object: z.string().describe('Target Object Name'),\n records: z.array(z.record(z.string(), z.any())).describe('List of records to insert'),\n mode: z.enum(['upsert', 'insert', 'ignore']).default('upsert').describe('Seeding mode')\n })).optional().describe('Initial seed data'),\n\n /**\n * Plugin Capability Manifest.\n * Declares protocols implemented, interfaces provided, dependencies, and extension points.\n * This enables plugin interoperability and automatic discovery.\n */\n capabilities: PluginCapabilityManifestSchema.optional()\n .describe('Plugin capability declarations for interoperability'),\n\n /** \n * Extension points contributed by this package.\n * Allows packages to extend UI components, add functionality, etc.\n */\n extensions: z.record(z.string(), z.any()).optional().describe('Extension points and contributions'),\n\n /**\n * Plugin Loading Configuration.\n * Configures how the plugin is loaded, initialized, and managed at runtime.\n * Includes strategies for lazy loading, code splitting, caching, and hot reload.\n */\n loading: PluginLoadingConfigSchema.optional()\n .describe('Plugin loading and runtime behavior configuration'),\n});\n\n/**\n * TypeScript type inferred from the ManifestSchema.\n * Use this type for type-safe manifest handling in TypeScript code.\n */\nexport type ObjectStackManifest = z.infer<typeof ManifestSchema>;\n\n","import { z } from 'zod';\n\n/**\n * # Plugin Capability Protocol\n * \n * Defines the standard way plugins declare their capabilities, implementations,\n * and conformance levels to ensure interoperability across vendors.\n * \n * Based on the Protocol-Oriented Architecture pattern similar to:\n * - Kubernetes CRDs (Custom Resource Definitions)\n * - OSGi Service Registry\n * - Eclipse Extension Points\n */\n\n/**\n * Capability Conformance Level\n * Indicates how completely a plugin implements a given protocol.\n */\nexport const CapabilityConformanceLevelSchema = z.enum([\n 'full', // Complete implementation of all protocol features\n 'partial', // Subset implementation with specific features listed\n 'experimental', // Unstable/preview implementation\n 'deprecated', // Still supported but scheduled for removal\n]).describe('Level of protocol conformance');\n\n/**\n * Protocol Version Schema\n * Uses semantic versioning to track protocol evolution.\n */\nexport const ProtocolVersionSchema = z.object({\n major: z.number().int().min(0),\n minor: z.number().int().min(0),\n patch: z.number().int().min(0),\n}).describe('Semantic version of the protocol');\n\n/**\n * Protocol Reference\n * Uniquely identifies a protocol/interface that a plugin can implement.\n * \n * Examples:\n * - com.objectstack.protocol.storage.v1\n * - com.objectstack.protocol.auth.oauth2.v2\n * - com.acme.protocol.payment.stripe.v1\n */\nexport const ProtocolReferenceSchema = z.object({\n /**\n * Protocol identifier using reverse domain notation.\n * Format: {domain}.protocol.{category}.{name}[.{subcategory}].v{major}\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+protocol\\.[a-z][a-z0-9._]*\\.v\\d+$/)\n .describe('Unique protocol identifier (e.g., com.objectstack.protocol.storage.v1)'),\n \n /**\n * Human-readable protocol name\n */\n label: z.string(),\n \n /**\n * Protocol version\n */\n version: ProtocolVersionSchema,\n \n /**\n * Detailed protocol specification URL or file reference\n */\n specification: z.string().optional().describe('URL or path to protocol specification'),\n \n /**\n * Brief description of what this protocol defines\n */\n description: z.string().optional(),\n});\n\n/**\n * Protocol Feature\n * Represents a specific capability within a protocol.\n */\nexport const ProtocolFeatureSchema = z.object({\n name: z.string().describe('Feature identifier within the protocol'),\n enabled: z.boolean().default(true),\n description: z.string().optional(),\n sinceVersion: z.string().optional().describe('Version when this feature was added'),\n deprecatedSince: z.string().optional().describe('Version when deprecated'),\n});\n\n/**\n * Plugin Capability Declaration\n * Documents what protocols a plugin implements and to what extent.\n */\nexport const PluginCapabilitySchema = z.object({\n /**\n * The protocol being implemented\n */\n protocol: ProtocolReferenceSchema,\n \n /**\n * Conformance level\n */\n conformance: CapabilityConformanceLevelSchema.default('full'),\n \n /**\n * Specific features implemented (required if conformance is 'partial')\n */\n implementedFeatures: z.array(z.string()).optional().describe('List of implemented feature names'),\n \n /**\n * Optional feature flags indicating advanced capabilities\n */\n features: z.array(ProtocolFeatureSchema).optional(),\n \n /**\n * Custom metadata for vendor-specific information\n */\n metadata: z.record(z.string(), z.any()).optional(),\n \n /**\n * Testing/Certification status\n */\n certified: z.boolean().default(false).describe('Has passed official conformance tests'),\n certificationDate: z.string().datetime().optional(),\n});\n\n/**\n * Plugin Interface Declaration\n * Defines the contract for services this plugin provides to other plugins.\n */\nexport const PluginInterfaceSchema = z.object({\n /**\n * Unique interface identifier\n * Format: {plugin-id}.interface.{name}\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+interface\\.[a-z][a-z0-9._]+$/)\n .describe('Unique interface identifier'),\n \n /**\n * Interface name\n */\n name: z.string(),\n \n /**\n * Description of what this interface provides\n */\n description: z.string().optional(),\n \n /**\n * Interface version\n */\n version: ProtocolVersionSchema,\n \n /**\n * Methods exposed by this interface\n */\n methods: z.array(z.object({\n name: z.string().describe('Method name'),\n description: z.string().optional(),\n parameters: z.array(z.object({\n name: z.string(),\n type: z.string().describe('Type notation (e.g., string, number, User)'),\n required: z.boolean().default(true),\n description: z.string().optional(),\n })).optional(),\n returnType: z.string().optional().describe('Return value type'),\n async: z.boolean().default(false).describe('Whether method returns a Promise'),\n })),\n \n /**\n * Events emitted by this interface\n */\n events: z.array(z.object({\n name: z.string().describe('Event name'),\n description: z.string().optional(),\n payload: z.string().optional().describe('Event payload type'),\n })).optional(),\n \n /**\n * Stability level\n */\n stability: z.enum(['stable', 'beta', 'alpha', 'experimental']).default('stable'),\n});\n\n/**\n * Plugin Dependency Declaration\n * Specifies what other plugins or capabilities this plugin requires.\n */\nexport const PluginDependencySchema = z.object({\n /**\n * Plugin ID using reverse domain notation\n */\n pluginId: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+[a-z][a-z0-9-]+$/)\n .describe('Required plugin identifier'),\n \n /**\n * Version constraint (supports semver ranges)\n * Examples: \"1.0.0\", \"^1.2.3\", \">=2.0.0 <3.0.0\"\n */\n version: z.string().describe('Semantic version constraint'),\n \n /**\n * Whether this dependency is optional\n */\n optional: z.boolean().default(false),\n \n /**\n * Reason for the dependency\n */\n reason: z.string().optional(),\n \n /**\n * Minimum required capabilities from the dependency\n */\n requiredCapabilities: z.array(z.string()).optional().describe('Protocol IDs the dependency must support'),\n});\n\n/**\n * Extension Point Declaration\n * Defines hooks where other plugins can extend this plugin's functionality.\n */\nexport const ExtensionPointSchema = z.object({\n /**\n * Extension point identifier\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+extension\\.[a-z][a-z0-9._]+$/)\n .describe('Unique extension point identifier'),\n \n /**\n * Extension point name\n */\n name: z.string(),\n \n /**\n * Description\n */\n description: z.string().optional(),\n \n /**\n * Type of extension point\n */\n type: z.enum([\n 'action', // Plugins can register executable actions\n 'hook', // Plugins can listen to lifecycle events\n 'widget', // Plugins can contribute UI widgets\n 'provider', // Plugins can provide data/services\n 'transformer', // Plugins can transform data\n 'validator', // Plugins can validate data\n 'decorator', // Plugins can enhance/wrap functionality\n ]),\n \n /**\n * Expected interface contract for extensions\n */\n contract: z.object({\n input: z.string().optional().describe('Input type/schema'),\n output: z.string().optional().describe('Output type/schema'),\n signature: z.string().optional().describe('Function signature if applicable'),\n }).optional(),\n \n /**\n * Cardinality\n */\n cardinality: z.enum(['single', 'multiple']).default('multiple')\n .describe('Whether multiple extensions can register to this point'),\n});\n\n/**\n * Complete Plugin Capability Manifest\n * This is included in the main plugin manifest to declare all capabilities.\n */\nexport const PluginCapabilityManifestSchema = z.object({\n /**\n * Protocols this plugin implements\n */\n implements: z.array(PluginCapabilitySchema).optional()\n .describe('List of protocols this plugin conforms to'),\n \n /**\n * Interfaces this plugin exposes to other plugins\n */\n provides: z.array(PluginInterfaceSchema).optional()\n .describe('Services/APIs this plugin offers to others'),\n \n /**\n * Dependencies on other plugins\n */\n requires: z.array(PluginDependencySchema).optional()\n .describe('Required plugins and their capabilities'),\n \n /**\n * Extension points this plugin defines\n */\n extensionPoints: z.array(ExtensionPointSchema).optional()\n .describe('Points where other plugins can extend this plugin'),\n \n /**\n * Extensions this plugin contributes to other plugins\n */\n extensions: z.array(z.object({\n targetPluginId: z.string().describe('Plugin ID being extended'),\n extensionPointId: z.string().describe('Extension point identifier'),\n implementation: z.string().describe('Path to implementation module'),\n priority: z.number().int().default(100).describe('Registration priority (lower = higher priority)'),\n })).optional().describe('Extensions contributed to other plugins'),\n});\n\n// Export types\nexport type CapabilityConformanceLevel = z.infer<typeof CapabilityConformanceLevelSchema>;\nexport type ProtocolVersion = z.infer<typeof ProtocolVersionSchema>;\nexport type ProtocolReference = z.infer<typeof ProtocolReferenceSchema>;\nexport type ProtocolFeature = z.infer<typeof ProtocolFeatureSchema>;\nexport type PluginCapability = z.infer<typeof PluginCapabilitySchema>;\nexport type PluginInterface = z.infer<typeof PluginInterfaceSchema>;\nexport type PluginDependency = z.infer<typeof PluginDependencySchema>;\nexport type ExtensionPoint = z.infer<typeof ExtensionPointSchema>;\nexport type PluginCapabilityManifest = z.infer<typeof PluginCapabilityManifestSchema>;\n","import { z } from 'zod';\n\n/**\n * # Plugin Loading Protocol\n * \n * Defines the enhanced plugin loading mechanism for the microkernel architecture.\n * Inspired by industry best practices from:\n * - Kubernetes CRDs and Operators\n * - OSGi Dynamic Module System\n * - Eclipse Plugin Framework\n * - Webpack Module Federation\n * \n * This protocol enables:\n * - Lazy loading and code splitting\n * - Dynamic imports and parallel initialization\n * - Capability-based discovery\n * - Hot reload in development\n * - Advanced caching strategies\n */\n\n/**\n * Plugin Loading Strategy\n * Determines how and when a plugin is loaded into memory\n */\nexport const PluginLoadingStrategySchema = z.enum([\n 'eager', // Load immediately during bootstrap (critical plugins)\n 'lazy', // Load on first use (feature plugins)\n 'parallel', // Load in parallel with other plugins\n 'deferred', // Load after initial bootstrap complete\n 'on-demand', // Load only when explicitly requested\n]).describe('Plugin loading strategy');\n\n/**\n * Plugin Preloading Configuration\n * Configures preloading behavior for faster activation\n */\nexport const PluginPreloadConfigSchema = z.object({\n /**\n * Enable preloading for this plugin\n */\n enabled: z.boolean().default(false),\n \n /**\n * Preload priority (lower = higher priority)\n */\n priority: z.number().int().min(0).default(100),\n \n /**\n * Resources to preload\n */\n resources: z.array(z.enum([\n 'metadata', // Plugin manifest and metadata\n 'dependencies', // Plugin dependencies\n 'assets', // Static assets (icons, translations)\n 'code', // JavaScript code chunks\n 'services', // Service definitions\n ])).optional(),\n \n /**\n * Conditions for preloading\n */\n conditions: z.object({\n /**\n * Preload only on specific routes\n */\n routes: z.array(z.string()).optional(),\n \n /**\n * Preload only for specific user roles\n */\n roles: z.array(z.string()).optional(),\n \n /**\n * Preload based on device type\n */\n deviceType: z.array(z.enum(['desktop', 'mobile', 'tablet'])).optional(),\n \n /**\n * Network connection quality threshold\n */\n minNetworkSpeed: z.enum(['slow-2g', '2g', '3g', '4g']).optional(),\n }).optional(),\n}).describe('Plugin preloading configuration');\n\n/**\n * Plugin Code Splitting Configuration\n * Configures how plugin code is split for optimal loading\n */\nexport const PluginCodeSplittingSchema = z.object({\n /**\n * Enable code splitting for this plugin\n */\n enabled: z.boolean().default(true),\n \n /**\n * Split strategy\n */\n strategy: z.enum([\n 'route', // Split by UI routes\n 'feature', // Split by feature modules\n 'size', // Split by bundle size threshold\n 'custom', // Custom split points defined by plugin\n ]).default('feature'),\n \n /**\n * Chunk naming strategy\n */\n chunkNaming: z.enum(['hashed', 'named', 'sequential']).default('hashed'),\n \n /**\n * Maximum chunk size in KB\n */\n maxChunkSize: z.number().int().min(10).optional().describe('Max chunk size in KB'),\n \n /**\n * Shared dependencies optimization\n */\n sharedDependencies: z.object({\n enabled: z.boolean().default(true),\n /**\n * Minimum times a module must be shared before extraction\n */\n minChunks: z.number().int().min(1).default(2),\n }).optional(),\n}).describe('Plugin code splitting configuration');\n\n/**\n * Plugin Dynamic Import Configuration\n * Configures dynamic import behavior for runtime module loading\n */\nexport const PluginDynamicImportSchema = z.object({\n /**\n * Enable dynamic imports\n */\n enabled: z.boolean().default(true),\n \n /**\n * Import mode\n */\n mode: z.enum([\n 'async', // Asynchronous import (recommended)\n 'sync', // Synchronous import (blocking)\n 'eager', // Eager evaluation\n 'lazy', // Lazy evaluation\n ]).default('async'),\n \n /**\n * Prefetch strategy\n */\n prefetch: z.boolean().default(false).describe('Prefetch module in idle time'),\n \n /**\n * Preload strategy\n */\n preload: z.boolean().default(false).describe('Preload module in parallel with parent'),\n \n /**\n * Webpack magic comments support\n */\n webpackChunkName: z.string().optional().describe('Custom chunk name for webpack'),\n \n /**\n * Import timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000).describe('Dynamic import timeout (ms)'),\n \n /**\n * Retry configuration on import failure\n */\n retry: z.object({\n enabled: z.boolean().default(true),\n maxAttempts: z.number().int().min(1).max(10).default(3),\n backoffMs: z.number().int().min(0).default(1000).describe('Exponential backoff base delay'),\n }).optional(),\n}).describe('Plugin dynamic import configuration');\n\n/**\n * Plugin Initialization Configuration\n * Configures how plugin initialization is executed\n */\nexport const PluginInitializationSchema = z.object({\n /**\n * Initialization mode\n */\n mode: z.enum([\n 'sync', // Synchronous initialization\n 'async', // Asynchronous initialization\n 'parallel', // Parallel with other plugins\n 'sequential', // Must complete before next plugin\n ]).default('async'),\n \n /**\n * Initialization timeout in milliseconds\n */\n timeout: z.number().int().min(100).default(30000),\n \n /**\n * Startup priority (lower = higher priority, earlier initialization)\n */\n priority: z.number().int().min(0).default(100),\n \n /**\n * Whether to continue bootstrap if this plugin fails\n */\n critical: z.boolean().default(false).describe('If true, kernel bootstrap fails if plugin fails'),\n \n /**\n * Retry configuration on initialization failure\n */\n retry: z.object({\n enabled: z.boolean().default(false),\n maxAttempts: z.number().int().min(1).max(5).default(3),\n backoffMs: z.number().int().min(0).default(1000),\n }).optional(),\n \n /**\n * Health check interval for monitoring\n */\n healthCheckInterval: z.number().int().min(0).optional().describe('Health check interval in ms (0 = disabled)'),\n}).describe('Plugin initialization configuration');\n\n/**\n * Plugin Dependency Resolution Configuration\n * Advanced dependency resolution using semantic versioning\n */\nexport const PluginDependencyResolutionSchema = z.object({\n /**\n * Dependency resolution strategy\n */\n strategy: z.enum([\n 'strict', // Exact version match required\n 'compatible', // Semver compatible versions (^)\n 'latest', // Always use latest compatible\n 'pinned', // Lock to specific version\n ]).default('compatible'),\n \n /**\n * Peer dependency handling\n */\n peerDependencies: z.object({\n /**\n * Whether to resolve peer dependencies\n */\n resolve: z.boolean().default(true),\n \n /**\n * Action on missing peer dependency\n */\n onMissing: z.enum(['error', 'warn', 'ignore']).default('warn'),\n \n /**\n * Action on peer version mismatch\n */\n onMismatch: z.enum(['error', 'warn', 'ignore']).default('warn'),\n }).optional(),\n \n /**\n * Optional dependency handling\n */\n optionalDependencies: z.object({\n /**\n * Whether to attempt loading optional dependencies\n */\n load: z.boolean().default(true),\n \n /**\n * Action on optional dependency load failure\n */\n onFailure: z.enum(['warn', 'ignore']).default('warn'),\n }).optional(),\n \n /**\n * Conflict resolution\n */\n conflictResolution: z.enum([\n 'fail', // Fail on any version conflict\n 'latest', // Use latest version\n 'oldest', // Use oldest version\n 'manual', // Require manual resolution\n ]).default('latest'),\n \n /**\n * Circular dependency handling\n */\n circularDependencies: z.enum([\n 'error', // Throw error on circular dependency\n 'warn', // Warn but continue\n 'allow', // Allow circular dependencies\n ]).default('warn'),\n}).describe('Plugin dependency resolution configuration');\n\n/**\n * Plugin Hot Reload Configuration\n * Enables hot module replacement for development\n */\nexport const PluginHotReloadSchema = z.object({\n /**\n * Enable hot reload\n */\n enabled: z.boolean().default(false),\n \n /**\n * Hot reload strategy\n */\n strategy: z.enum([\n 'full', // Full plugin reload (destroy and reinitialize)\n 'partial', // Partial reload (update changed modules only)\n 'state-preserve', // Preserve plugin state during reload\n ]).default('full'),\n \n /**\n * Files to watch for changes\n */\n watchPatterns: z.array(z.string()).optional().describe('Glob patterns for files to watch'),\n \n /**\n * Files to ignore\n */\n ignorePatterns: z.array(z.string()).optional().describe('Glob patterns for files to ignore'),\n \n /**\n * Debounce delay in milliseconds\n */\n debounceMs: z.number().int().min(0).default(300),\n \n /**\n * Whether to preserve state during reload\n */\n preserveState: z.boolean().default(false),\n \n /**\n * State serialization\n */\n stateSerialization: z.object({\n enabled: z.boolean().default(false),\n /**\n * Path to state serialization handler\n */\n handler: z.string().optional(),\n }).optional(),\n \n /**\n * Hooks for hot reload lifecycle\n */\n hooks: z.object({\n beforeReload: z.string().optional().describe('Function to call before reload'),\n afterReload: z.string().optional().describe('Function to call after reload'),\n onError: z.string().optional().describe('Function to call on reload error'),\n }).optional(),\n}).describe('Plugin hot reload configuration');\n\n/**\n * Plugin Caching Configuration\n * Configures caching strategy for faster subsequent loads\n */\nexport const PluginCachingSchema = z.object({\n /**\n * Enable caching\n */\n enabled: z.boolean().default(true),\n \n /**\n * Cache storage type\n */\n storage: z.enum([\n 'memory', // In-memory cache (fastest, not persistent)\n 'disk', // Disk cache (persistent)\n 'indexeddb', // Browser IndexedDB (persistent, browser only)\n 'hybrid', // Memory + Disk hybrid\n ]).default('memory'),\n \n /**\n * Cache key strategy\n */\n keyStrategy: z.enum([\n 'version', // Cache by plugin version\n 'hash', // Cache by content hash\n 'timestamp', // Cache by last modified timestamp\n ]).default('version'),\n \n /**\n * Cache TTL in seconds\n */\n ttl: z.number().int().min(0).optional().describe('Time to live in seconds (0 = infinite)'),\n \n /**\n * Maximum cache size in MB\n */\n maxSize: z.number().int().min(1).optional().describe('Max cache size in MB'),\n \n /**\n * Cache invalidation triggers\n */\n invalidateOn: z.array(z.enum([\n 'version-change',\n 'dependency-change',\n 'manual',\n 'error',\n ])).optional(),\n \n /**\n * Compression\n */\n compression: z.object({\n enabled: z.boolean().default(false),\n algorithm: z.enum(['gzip', 'brotli', 'deflate']).default('gzip'),\n }).optional(),\n}).describe('Plugin caching configuration');\n\n/**\n * Plugin Sandboxing Configuration\n * Security isolation for untrusted plugins\n */\nexport const PluginSandboxingSchema = z.object({\n /**\n * Enable sandboxing\n */\n enabled: z.boolean().default(false),\n \n /**\n * Sandbox isolation level\n */\n isolationLevel: z.enum([\n 'none', // No isolation\n 'process', // Separate process (Node.js worker threads)\n 'vm', // VM context isolation\n 'iframe', // iframe isolation (browser)\n 'web-worker', // Web Worker (browser)\n ]).default('none'),\n \n /**\n * Allowed capabilities\n */\n allowedCapabilities: z.array(z.string()).optional().describe('List of allowed capability IDs'),\n \n /**\n * Resource quotas\n */\n resourceQuotas: z.object({\n /**\n * Maximum memory usage in MB\n */\n maxMemoryMB: z.number().int().min(1).optional(),\n \n /**\n * Maximum CPU time in milliseconds\n */\n maxCpuTimeMs: z.number().int().min(100).optional(),\n \n /**\n * Maximum number of file descriptors\n */\n maxFileDescriptors: z.number().int().min(1).optional(),\n \n /**\n * Maximum network bandwidth in KB/s\n */\n maxNetworkKBps: z.number().int().min(1).optional(),\n }).optional(),\n \n /**\n * Permissions\n */\n permissions: z.object({\n /**\n * Allowed API access\n */\n allowedAPIs: z.array(z.string()).optional(),\n \n /**\n * Allowed file system paths\n */\n allowedPaths: z.array(z.string()).optional(),\n \n /**\n * Allowed network endpoints\n */\n allowedEndpoints: z.array(z.string()).optional(),\n \n /**\n * Allowed environment variables\n */\n allowedEnvVars: z.array(z.string()).optional(),\n }).optional(),\n}).describe('Plugin sandboxing configuration');\n\n/**\n * Plugin Performance Monitoring Configuration\n * Telemetry and performance tracking\n */\nexport const PluginPerformanceMonitoringSchema = z.object({\n /**\n * Enable performance monitoring\n */\n enabled: z.boolean().default(false),\n \n /**\n * Metrics to collect\n */\n metrics: z.array(z.enum([\n 'load-time',\n 'init-time',\n 'memory-usage',\n 'cpu-usage',\n 'api-calls',\n 'error-rate',\n 'cache-hit-rate',\n ])).optional(),\n \n /**\n * Sampling rate (0-1, where 1 = 100%)\n */\n samplingRate: z.number().min(0).max(1).default(1),\n \n /**\n * Reporting interval in seconds\n */\n reportingInterval: z.number().int().min(1).default(60),\n \n /**\n * Performance budget thresholds\n */\n budgets: z.object({\n /**\n * Maximum load time in milliseconds\n */\n maxLoadTimeMs: z.number().int().min(0).optional(),\n \n /**\n * Maximum init time in milliseconds\n */\n maxInitTimeMs: z.number().int().min(0).optional(),\n \n /**\n * Maximum memory usage in MB\n */\n maxMemoryMB: z.number().int().min(0).optional(),\n }).optional(),\n \n /**\n * Action on budget violation\n */\n onBudgetViolation: z.enum(['warn', 'error', 'ignore']).default('warn'),\n}).describe('Plugin performance monitoring configuration');\n\n/**\n * Complete Plugin Loading Configuration\n * Combines all loading-related configurations\n */\nexport const PluginLoadingConfigSchema = z.object({\n /**\n * Loading strategy\n */\n strategy: PluginLoadingStrategySchema.default('lazy'),\n \n /**\n * Preloading configuration\n */\n preload: PluginPreloadConfigSchema.optional(),\n \n /**\n * Code splitting configuration\n */\n codeSplitting: PluginCodeSplittingSchema.optional(),\n \n /**\n * Dynamic import configuration\n */\n dynamicImport: PluginDynamicImportSchema.optional(),\n \n /**\n * Initialization configuration\n */\n initialization: PluginInitializationSchema.optional(),\n \n /**\n * Dependency resolution configuration\n */\n dependencyResolution: PluginDependencyResolutionSchema.optional(),\n \n /**\n * Hot reload configuration (development only)\n */\n hotReload: PluginHotReloadSchema.optional(),\n \n /**\n * Caching configuration\n */\n caching: PluginCachingSchema.optional(),\n \n /**\n * Sandboxing configuration\n */\n sandboxing: PluginSandboxingSchema.optional(),\n \n /**\n * Performance monitoring\n */\n monitoring: PluginPerformanceMonitoringSchema.optional(),\n}).describe('Complete plugin loading configuration');\n\n/**\n * Plugin Loading Event\n * Emitted during plugin loading lifecycle\n */\nexport const PluginLoadingEventSchema = z.object({\n /**\n * Event type\n */\n type: z.enum([\n 'load-started',\n 'load-completed',\n 'load-failed',\n 'init-started',\n 'init-completed',\n 'init-failed',\n 'preload-started',\n 'preload-completed',\n 'cache-hit',\n 'cache-miss',\n 'hot-reload',\n ]),\n \n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Timestamp\n */\n timestamp: z.number().int().min(0),\n \n /**\n * Duration in milliseconds\n */\n durationMs: z.number().int().min(0).optional(),\n \n /**\n * Additional metadata\n */\n metadata: z.record(z.string(), z.any()).optional(),\n \n /**\n * Error if event represents a failure\n */\n error: z.object({\n message: z.string(),\n code: z.string().optional(),\n stack: z.string().optional(),\n }).optional(),\n}).describe('Plugin loading lifecycle event');\n\n/**\n * Plugin Loading State\n * Tracks the current loading state of a plugin\n */\nexport const PluginLoadingStateSchema = z.object({\n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Current state\n */\n state: z.enum([\n 'pending', // Not yet loaded\n 'loading', // Currently loading\n 'loaded', // Code loaded, not initialized\n 'initializing', // Currently initializing\n 'ready', // Fully initialized and ready\n 'failed', // Failed to load or initialize\n 'reloading', // Hot reloading in progress\n ]),\n \n /**\n * Load progress (0-100)\n */\n progress: z.number().min(0).max(100).default(0),\n \n /**\n * Loading start time\n */\n startedAt: z.number().int().min(0).optional(),\n \n /**\n * Loading completion time\n */\n completedAt: z.number().int().min(0).optional(),\n \n /**\n * Last error\n */\n lastError: z.string().optional(),\n \n /**\n * Retry count\n */\n retryCount: z.number().int().min(0).default(0),\n}).describe('Plugin loading state');\n\n// Export types\nexport type PluginLoadingStrategy = z.infer<typeof PluginLoadingStrategySchema>;\nexport type PluginPreloadConfig = z.infer<typeof PluginPreloadConfigSchema>;\nexport type PluginCodeSplitting = z.infer<typeof PluginCodeSplittingSchema>;\nexport type PluginDynamicImport = z.infer<typeof PluginDynamicImportSchema>;\nexport type PluginInitialization = z.infer<typeof PluginInitializationSchema>;\nexport type PluginDependencyResolution = z.infer<typeof PluginDependencyResolutionSchema>;\nexport type PluginHotReload = z.infer<typeof PluginHotReloadSchema>;\nexport type PluginCaching = z.infer<typeof PluginCachingSchema>;\nexport type PluginSandboxing = z.infer<typeof PluginSandboxingSchema>;\nexport type PluginPerformanceMonitoring = z.infer<typeof PluginPerformanceMonitoringSchema>;\nexport type PluginLoadingConfig = z.infer<typeof PluginLoadingConfigSchema>;\nexport type PluginLoadingEvent = z.infer<typeof PluginLoadingEventSchema>;\nexport type PluginLoadingState = z.infer<typeof PluginLoadingStateSchema>;\n","import { z } from 'zod';\n\n// We use z.any() for services that are interfaces with methods, \n// as Zod cannot easily validate function signatures at runtime.\nexport const PluginContextSchema = z.object({\n ql: z.object({\n object: z.function().returns(z.any()), // Return any to allow method chaining\n query: z.function().returns(z.any()),\n }).passthrough().describe('ObjectQL Engine Interface'),\n\n os: z.object({\n getCurrentUser: z.function().returns(z.any()),\n getConfig: z.function().returns(z.any()),\n }).passthrough().describe('ObjectStack Kernel Interface'),\n\n logger: z.object({\n debug: z.function().returns(z.void()),\n info: z.function().returns(z.void()),\n warn: z.function().returns(z.void()),\n error: z.function().returns(z.void()),\n }).passthrough().describe('Logger Interface'),\n\n storage: z.object({\n get: z.function().returns(z.any()),\n set: z.function().returns(z.promise(z.void())),\n delete: z.function().returns(z.promise(z.void())),\n }).passthrough().describe('Storage Interface'),\n\n i18n: z.object({\n t: z.function().returns(z.string()),\n getLocale: z.function().returns(z.string()),\n }).passthrough().describe('Internationalization Interface'),\n\n metadata: z.record(z.string(), z.any()),\n events: z.record(z.string(), z.any()),\n \n app: z.object({\n router: z.object({\n get: z.function().returns(z.any()),\n post: z.function().returns(z.any()),\n use: z.function().returns(z.any()),\n }).passthrough()\n }).passthrough().describe('App Framework Interface'),\n\n drivers: z.object({\n register: z.function().returns(z.void()),\n }).passthrough().describe('Driver Registry'),\n});\n\nexport type PluginContextData = z.infer<typeof PluginContextSchema>;\nexport type PluginContext = PluginContextData;\n\nexport const PluginLifecycleSchema = z.object({\n onInstall: z.function()\n .args(PluginContextSchema)\n .returns(z.promise(z.void()))\n .optional(),\n \n onEnable: z.function()\n .args(PluginContextSchema)\n .returns(z.promise(z.void()))\n .optional(),\n \n onDisable: z.function()\n .args(PluginContextSchema)\n .returns(z.promise(z.void()))\n .optional(),\n \n onUninstall: z.function()\n .args(PluginContextSchema)\n .returns(z.promise(z.void()))\n .optional(),\n \n onUpgrade: z.function()\n .args(PluginContextSchema, z.string(), z.string())\n .returns(z.promise(z.void()))\n .optional(),\n});\n\nexport type PluginLifecycleHooks = z.infer<typeof PluginLifecycleSchema>;\n\n/**\n * Shared Plugin Types\n * These are the specialized plugin types common between Manifest (Package) and Plugin (Runtime).\n */\nexport const CORE_PLUGIN_TYPES = [\n 'ui', // Frontend: Serves static assets/SPA (e.g. Console, Studio)\n 'driver', // Connectivity: Database or Storage adapters (e.g. SQL, S3)\n 'server', // Protocol: HTTP/RPC Servers (e.g. Hono, GraphQL)\n 'app', // Business: Vertical Solution Bundle (Metadata + Logic)\n 'theme', // Appearance: UI Overrides & CSS Variables\n 'agent', // AI: Autonomous Agent & Tool Definitions\n 'objectql' // Core: ObjectQL Engine Data Provider\n] as const;\n\nexport const PluginSchema = PluginLifecycleSchema.extend({\n id: z.string().min(1).optional().describe('Unique Plugin ID (e.g. com.example.crm)'),\n type: z.enum([\n 'standard', // Default: General purpose backend logic (Service, Hook, etc.)\n ...CORE_PLUGIN_TYPES\n ]).default('standard').optional().describe('Plugin Type categorization for runtime behavior'),\n \n staticPath: z.string().optional().describe('Absolute path to static assets (Required for type=\"ui-plugin\")'),\n slug: z.string().regex(/^[a-z0-9-_]+$/).optional().describe('URL path segment (Required for type=\"ui-plugin\")'),\n default: z.boolean().optional().describe('Serve at root path (Only one \"ui-plugin\" can be default)'),\n \n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/).optional().describe('Semantic Version'),\n description: z.string().optional(),\n author: z.string().optional(),\n homepage: z.string().url().optional(),\n});\n\nexport type PluginDefinition = z.infer<typeof PluginSchema>;\n\n/**\n * Define an ObjectStack Plugin\n * Helper function for creating type-safe plugin definitions\n */\nexport function definePlugin(config: PluginDefinition): PluginDefinition {\n return config;\n}\n","import { z } from 'zod';\nimport { PluginVendorSchema } from './plugin-registry.zod';\n\n/**\n * # Marketplace Protocol\n * \n * Defines the schema for the ObjectStack Plugin Marketplace.\n * This is the catalog of available extensions sourced from NPM or private registries.\n */\n\nexport const PluginAuthorSchema = PluginVendorSchema;\n\n/**\n * Plugin Pricing Model Schema\n */\nexport const PluginPricingSchema = z.object({\n type: z.enum(['free', 'one_time', 'recurring']),\n currency: z.string().default('USD'),\n amount: z.number().min(0),\n interval: z.enum(['month', 'year']).optional().describe('Required if type is recurring'),\n trialDays: z.number().int().optional(),\n});\n\n/**\n * Plugin Version Schema\n * Specific release version details\n */\nexport const PluginVersionSchema = z.object({\n version: z.string().describe('SemVer string (e.g. 1.0.0)'),\n publishedAt: z.string().datetime().describe('Publication date'),\n downloadUrl: z.string().url().describe('Archive download URL'),\n checksum: z.string().optional().describe('Integrity checksum (shasum)'),\n engine: z.object({\n node: z.string().optional(),\n objectstack: z.string().describe('Required ObjectStack kernel version range'),\n }).optional().describe('Engine compatibility'),\n dependencies: z.record(z.string(), z.string()).optional().describe('Runtime plugin dependencies'),\n changeLog: z.string().optional().describe('Release notes'),\n});\n\n/**\n * Plugin Registry Entry Schema\n * Represents a listing in the Marketplace.\n */\nexport const MarketplacePluginSchema = z.object({\n /**\n * Package Identifier\n * Usually the NPM package name (e.g. \"@steedos/plugin-crm\")\n */\n id: z.string(),\n \n /**\n * Version History\n * Registry of all available versions\n */\n versions: z.record(z.string(), PluginVersionSchema).optional().describe('Map of versions (1.0.0) -> Details'),\n\n /**\n * Display Name\n */\n label: z.string(),\n \n /**\n * Short Description\n */\n description: z.string().optional(),\n \n /**\n * Detailed README / Documentation content\n */\n readme: z.string().optional(),\n \n /**\n * Latest Version\n */\n version: z.string(),\n \n /**\n * Vendor / Publisher\n */\n vendor: PluginVendorSchema.optional(),\n \n /**\n * Categorization\n */\n tags: z.array(z.string()).optional(),\n category: z.enum([\n 'app', \n 'integration', \n 'theme', \n 'utility', \n 'driver',\n 'analytics',\n 'security',\n 'automation',\n 'ai',\n 'data'\n ]).optional(),\n \n /**\n * Assets\n */\n icon: z.string().url().optional(),\n screenshots: z.array(z.string().url()).optional(),\n \n /**\n * Links\n */\n homepage: z.string().url().optional(),\n repository: z.string().url().optional(),\n bugs: z.string().url().optional(),\n \n /**\n * Statistics\n */\n downloads: z.number().int().optional(),\n rating: z.number().min(0).max(5).optional(),\n\n /**\n * Commercial Information\n */\n pricing: PluginPricingSchema.optional(),\n\n verified: z.boolean().default(false).describe('Is verified maintaned by ObjectStack'),\n});\n\nexport type PluginAuthor = z.infer<typeof PluginAuthorSchema>;\nexport type MarketplacePlugin = z.infer<typeof MarketplacePluginSchema>;\nexport type MarketplaceListing = MarketplacePlugin; // Alias for backwards compatibility\n","import { z } from 'zod';\nimport { PluginCapabilityManifestSchema } from '../kernel/plugin-capability.zod';\n\n/**\n * # Plugin Registry Protocol\n * \n * Defines the schema for the plugin discovery and registry system.\n * This enables plugins from different vendors to be discovered, validated,\n * and composed together in the ObjectStack ecosystem.\n */\n\n/**\n * Plugin Vendor Information\n */\nexport const PluginVendorSchema = z.object({\n /**\n * Vendor identifier (reverse domain notation)\n * Example: \"com.acme\", \"org.apache\", \"com.objectstack\"\n */\n id: z.string()\n .regex(/^[a-z][a-z0-9]*(\\.[a-z][a-z0-9]*)+$/)\n .describe('Vendor identifier (reverse domain)'),\n \n /**\n * Vendor display name\n */\n name: z.string(),\n \n /**\n * Vendor website\n */\n website: z.string().url().optional(),\n \n /**\n * Contact email\n */\n email: z.string().email().optional(),\n \n /**\n * Verification status\n */\n verified: z.boolean().default(false).describe('Whether vendor is verified by ObjectStack'),\n \n /**\n * Trust level\n */\n trustLevel: z.enum(['official', 'verified', 'community', 'unverified']).default('unverified'),\n});\n\n/**\n * Plugin Quality Metrics\n */\nexport const PluginQualityMetricsSchema = z.object({\n /**\n * Test coverage percentage\n */\n testCoverage: z.number().min(0).max(100).optional(),\n \n /**\n * Documentation score (0-100)\n */\n documentationScore: z.number().min(0).max(100).optional(),\n \n /**\n * Code quality score (0-100)\n */\n codeQuality: z.number().min(0).max(100).optional(),\n \n /**\n * Security scan status\n */\n securityScan: z.object({\n lastScanDate: z.string().datetime().optional(),\n vulnerabilities: z.object({\n critical: z.number().int().min(0).default(0),\n high: z.number().int().min(0).default(0),\n medium: z.number().int().min(0).default(0),\n low: z.number().int().min(0).default(0),\n }).optional(),\n passed: z.boolean().default(false),\n }).optional(),\n \n /**\n * Conformance test results\n */\n conformanceTests: z.array(z.object({\n protocolId: z.string().describe('Protocol being tested'),\n passed: z.boolean(),\n totalTests: z.number().int().min(0),\n passedTests: z.number().int().min(0),\n lastRunDate: z.string().datetime().optional(),\n })).optional(),\n});\n\n/**\n * Plugin Usage Statistics\n */\nexport const PluginStatisticsSchema = z.object({\n /**\n * Total downloads\n */\n downloads: z.number().int().min(0).default(0),\n \n /**\n * Downloads in the last 30 days\n */\n downloadsLastMonth: z.number().int().min(0).default(0),\n \n /**\n * Number of active installations\n */\n activeInstallations: z.number().int().min(0).default(0),\n \n /**\n * User ratings\n */\n ratings: z.object({\n average: z.number().min(0).max(5).default(0),\n count: z.number().int().min(0).default(0),\n distribution: z.object({\n '5': z.number().int().min(0).default(0),\n '4': z.number().int().min(0).default(0),\n '3': z.number().int().min(0).default(0),\n '2': z.number().int().min(0).default(0),\n '1': z.number().int().min(0).default(0),\n }).optional(),\n }).optional(),\n \n /**\n * GitHub stars (if open source)\n */\n stars: z.number().int().min(0).optional(),\n \n /**\n * Number of dependent plugins\n */\n dependents: z.number().int().min(0).default(0),\n});\n\n/**\n * Plugin Registry Entry\n * Complete metadata for a plugin in the registry.\n */\nexport const PluginRegistryEntrySchema = z.object({\n /**\n * Plugin identifier (must match manifest.id)\n */\n id: z.string()\n .regex(/^([a-z][a-z0-9]*\\.)+[a-z][a-z0-9-]+$/)\n .describe('Plugin identifier (reverse domain notation)'),\n \n /**\n * Current version\n */\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+$/),\n \n /**\n * Plugin display name\n */\n name: z.string(),\n \n /**\n * Short description\n */\n description: z.string().optional(),\n \n /**\n * Detailed documentation/README\n */\n readme: z.string().optional(),\n \n /**\n * Plugin type/category\n */\n category: z.enum([\n 'data', // Data management, storage, databases\n 'integration', // External service integrations\n 'ui', // UI components and themes\n 'analytics', // Analytics and reporting\n 'security', // Security, auth, compliance\n 'automation', // Workflows and automation\n 'ai', // AI/ML capabilities\n 'utility', // General utilities\n 'driver', // Database/storage drivers\n 'gateway', // API gateways\n 'adapter', // Runtime adapters\n ]).optional(),\n \n /**\n * Tags for categorization\n */\n tags: z.array(z.string()).optional(),\n \n /**\n * Vendor information\n */\n vendor: PluginVendorSchema,\n \n /**\n * Capability manifest (what the plugin implements/provides)\n */\n capabilities: PluginCapabilityManifestSchema.optional(),\n \n /**\n * Compatibility information\n */\n compatibility: z.object({\n /**\n * Minimum ObjectStack version required\n */\n minObjectStackVersion: z.string().optional(),\n \n /**\n * Maximum ObjectStack version supported\n */\n maxObjectStackVersion: z.string().optional(),\n \n /**\n * Node.js version requirement\n */\n nodeVersion: z.string().optional(),\n \n /**\n * Supported platforms\n */\n platforms: z.array(z.enum(['linux', 'darwin', 'win32', 'browser'])).optional(),\n }).optional(),\n \n /**\n * Links and resources\n */\n links: z.object({\n homepage: z.string().url().optional(),\n repository: z.string().url().optional(),\n documentation: z.string().url().optional(),\n bugs: z.string().url().optional(),\n changelog: z.string().url().optional(),\n }).optional(),\n \n /**\n * Media assets\n */\n media: z.object({\n icon: z.string().url().optional(),\n logo: z.string().url().optional(),\n screenshots: z.array(z.string().url()).optional(),\n video: z.string().url().optional(),\n }).optional(),\n \n /**\n * Quality metrics\n */\n quality: PluginQualityMetricsSchema.optional(),\n \n /**\n * Usage statistics\n */\n statistics: PluginStatisticsSchema.optional(),\n \n /**\n * License information\n */\n license: z.string().optional().describe('SPDX license identifier'),\n \n /**\n * Pricing (if commercial)\n */\n pricing: z.object({\n model: z.enum(['free', 'freemium', 'paid', 'enterprise']),\n price: z.number().min(0).optional(),\n currency: z.string().default('USD').optional(),\n billingPeriod: z.enum(['one-time', 'monthly', 'yearly']).optional(),\n }).optional(),\n \n /**\n * Publication dates\n */\n publishedAt: z.string().datetime().optional(),\n updatedAt: z.string().datetime().optional(),\n \n /**\n * Deprecation status\n */\n deprecated: z.boolean().default(false),\n deprecationMessage: z.string().optional(),\n replacedBy: z.string().optional().describe('Plugin ID that replaces this one'),\n \n /**\n * Feature flags\n */\n flags: z.object({\n experimental: z.boolean().default(false),\n beta: z.boolean().default(false),\n featured: z.boolean().default(false),\n verified: z.boolean().default(false),\n }).optional(),\n});\n\n/**\n * Plugin Search Filters\n */\nexport const PluginSearchFiltersSchema = z.object({\n /**\n * Search query\n */\n query: z.string().optional(),\n \n /**\n * Filter by category\n */\n category: z.array(z.string()).optional(),\n \n /**\n * Filter by tags\n */\n tags: z.array(z.string()).optional(),\n \n /**\n * Filter by vendor trust level\n */\n trustLevel: z.array(z.enum(['official', 'verified', 'community', 'unverified'])).optional(),\n \n /**\n * Filter by protocols implemented\n */\n implementsProtocols: z.array(z.string()).optional(),\n \n /**\n * Filter by pricing model\n */\n pricingModel: z.array(z.enum(['free', 'freemium', 'paid', 'enterprise'])).optional(),\n \n /**\n * Minimum rating\n */\n minRating: z.number().min(0).max(5).optional(),\n \n /**\n * Sort options\n */\n sortBy: z.enum([\n 'relevance',\n 'downloads',\n 'rating',\n 'updated',\n 'name',\n ]).optional(),\n \n /**\n * Sort order\n */\n sortOrder: z.enum(['asc', 'desc']).default('desc').optional(),\n \n /**\n * Pagination\n */\n page: z.number().int().min(1).default(1).optional(),\n limit: z.number().int().min(1).max(100).default(20).optional(),\n});\n\n/**\n * Plugin Installation Configuration\n */\nexport const PluginInstallConfigSchema = z.object({\n /**\n * Plugin identifier to install\n */\n pluginId: z.string(),\n \n /**\n * Version to install (supports semver ranges)\n */\n version: z.string().optional().describe('Defaults to latest'),\n \n /**\n * Plugin-specific configuration values\n */\n config: z.record(z.string(), z.any()).optional(),\n \n /**\n * Whether to auto-update\n */\n autoUpdate: z.boolean().default(false).optional(),\n \n /**\n * Installation options\n */\n options: z.object({\n /**\n * Skip dependency installation\n */\n skipDependencies: z.boolean().default(false).optional(),\n \n /**\n * Force reinstall\n */\n force: z.boolean().default(false).optional(),\n \n /**\n * Installation target\n */\n target: z.enum(['system', 'space', 'user']).default('space').optional(),\n }).optional(),\n});\n\n// Export types\nexport type PluginVendor = z.infer<typeof PluginVendorSchema>;\nexport type PluginQualityMetrics = z.infer<typeof PluginQualityMetricsSchema>;\nexport type PluginStatistics = z.infer<typeof PluginStatisticsSchema>;\nexport type PluginRegistryEntry = z.infer<typeof PluginRegistryEntrySchema>;\nexport type PluginSearchFilters = z.infer<typeof PluginSearchFiltersSchema>;\nexport type PluginInstallConfig = z.infer<typeof PluginInstallConfigSchema>;\n","import { z } from 'zod';\n\n/**\n * # Registry Configuration Protocol\n * \n * Defines the configuration for the ObjectStack Registry Service.\n * Includes federation, synchronization, and storage settings.\n */\n\n/**\n * Registry Sync Policy\n * Defines how registries synchronize with upstreams\n */\nexport const RegistrySyncPolicySchema = z.enum([\n 'manual', // Manual synchronization only\n 'auto', // Automatic synchronization\n 'proxy', // Proxy requests to upstream without caching\n]).describe('Registry synchronization strategy');\n\n/**\n * Registry Upstream Configuration\n * Configuration for upstream registry connection\n */\nexport const RegistryUpstreamSchema = z.object({\n /**\n * Upstream registry URL\n */\n url: z.string().url()\n .describe('Upstream registry endpoint'),\n \n /**\n * Synchronization policy\n */\n syncPolicy: RegistrySyncPolicySchema.default('auto'),\n \n /**\n * Sync interval in seconds (for auto sync)\n */\n syncInterval: z.number().int().min(60).optional()\n .describe('Auto-sync interval in seconds'),\n \n /**\n * Authentication credentials\n */\n auth: z.object({\n type: z.enum(['none', 'basic', 'bearer', 'api-key', 'oauth2']).default('none'),\n username: z.string().optional(),\n password: z.string().optional(),\n token: z.string().optional(),\n apiKey: z.string().optional(),\n }).optional(),\n \n /**\n * TLS/SSL configuration\n */\n tls: z.object({\n enabled: z.boolean().default(true),\n verifyCertificate: z.boolean().default(true),\n certificate: z.string().optional(),\n privateKey: z.string().optional(),\n }).optional(),\n \n /**\n * Timeout settings\n */\n timeout: z.number().int().min(1000).default(30000)\n .describe('Request timeout in milliseconds'),\n \n /**\n * Retry configuration\n */\n retry: z.object({\n maxAttempts: z.number().int().min(0).default(3),\n backoff: z.enum(['fixed', 'linear', 'exponential']).default('exponential'),\n }).optional(),\n});\n\n/**\n * Registry Configuration\n * Complete registry configuration supporting federation\n */\nexport const RegistryConfigSchema = z.object({\n /**\n * Registry type\n */\n type: z.enum([\n 'public', // Public marketplace (e.g., plugins.objectstack.com)\n 'private', // Private enterprise registry\n 'hybrid', // Hybrid with upstream federation\n ]).describe('Registry deployment type'),\n \n /**\n * Upstream registries (for hybrid/private registries)\n */\n upstream: z.array(RegistryUpstreamSchema).optional()\n .describe('Upstream registries to sync from or proxy to'),\n \n /**\n * Scopes managed by this registry\n */\n scope: z.array(z.string()).optional()\n .describe('npm-style scopes managed by this registry (e.g., @my-corp, @enterprise)'),\n \n /**\n * Default scope for new plugins\n */\n defaultScope: z.string().optional()\n .describe('Default scope prefix for new plugins'),\n \n /**\n * Registry storage configuration\n */\n storage: z.object({\n /**\n * Storage backend type\n */\n backend: z.enum(['local', 's3', 'gcs', 'azure-blob', 'oss']).default('local'),\n \n /**\n * Storage path or bucket name\n */\n path: z.string().optional(),\n \n /**\n * Credentials\n */\n credentials: z.record(z.string(), z.any()).optional(),\n }).optional(),\n \n /**\n * Registry visibility\n */\n visibility: z.enum(['public', 'private', 'internal']).default('private')\n .describe('Who can access this registry'),\n \n /**\n * Access control\n */\n accessControl: z.object({\n /**\n * Require authentication for read\n */\n requireAuthForRead: z.boolean().default(false),\n \n /**\n * Require authentication for write\n */\n requireAuthForWrite: z.boolean().default(true),\n \n /**\n * Allowed users/teams\n */\n allowedPrincipals: z.array(z.string()).optional(),\n }).optional(),\n \n /**\n * Caching configuration\n */\n cache: z.object({\n enabled: z.boolean().default(true),\n ttl: z.number().int().min(0).default(3600)\n .describe('Cache TTL in seconds'),\n maxSize: z.number().int().optional()\n .describe('Maximum cache size in bytes'),\n }).optional(),\n \n /**\n * Mirroring configuration (for high availability)\n */\n mirrors: z.array(z.object({\n url: z.string().url(),\n priority: z.number().int().min(1).default(1),\n })).optional()\n .describe('Mirror registries for redundancy'),\n});\n\nexport type RegistrySyncPolicy = z.infer<typeof RegistrySyncPolicySchema>;\nexport type RegistryUpstream = z.infer<typeof RegistryUpstreamSchema>;\nexport type RegistryConfig = z.infer<typeof RegistryConfigSchema>;\n","import { z } from 'zod';\nimport { BillOfMaterialsSchema } from './composer.zod';\nimport { TenantIsolationLevel, TenantQuotaSchema } from './tenant.zod';\n\n/**\n * # Space Protocol\n * \n * Defines the SaaS-side representation of a Space (formerly Project).\n * A Space is a logical container for business apps, data, and logic.\n * Corresponds to an entry in the Hub's database.\n */\n\n/**\n * Subscription Status Enum\n */\nexport const SubscriptionStatus = z.enum([\n 'active',\n 'past_due',\n 'canceled',\n 'trialing',\n 'incomplete'\n]);\n\n/**\n * Space Subscription Info\n */\nexport const SpaceSubscriptionSchema = z.object({\n planId: z.string().describe('Reference to Plan Code'),\n status: SubscriptionStatus,\n currentPeriodEnd: z.string().datetime().optional(),\n stripeCustomerId: z.string().optional(),\n stripeSubscriptionId: z.string().optional(),\n \n /**\n * Purchased Add-ons from Marketplace\n */\n addons: z.array(z.object({\n pluginId: z.string().describe('Marketplace Plugin ID (NPM package name)'),\n quantity: z.number().default(1),\n status: SubscriptionStatus.default('active'),\n })).optional(),\n\n /**\n * Quota Usage Snapshot\n * Cached usage metrics for quick display/validation.\n */\n usage: z.record(z.string(), z.number()).optional(),\n});\n\n/**\n * Deployment Target\n * Vercel or Container configuration.\n */\nexport const DeploymentTargetSchema = z.object({\n provider: z.enum(['vercel', 'docker', 'kubernetes']),\n region: z.string().optional(),\n url: z.string().url().optional().describe('Public Access URL'),\n env: z.record(z.string(), z.string()).optional().describe('Runtime Environment Variables'),\n});\n\n/**\n * Hub Space Schema\n */\nexport const HubSpaceSchema = z.object({\n id: z.string().uuid(),\n \n /**\n * Display Name\n */\n name: z.string(),\n slug: z.string().describe('URL friendly identifier'),\n \n /**\n * Owner (User or Org ID in Hub)\n */\n ownerId: z.string(),\n\n /**\n * The Runtime Instance Definition\n * Defines the technical execution environment.\n */\n runtime: z.object({\n isolation: TenantIsolationLevel.describe('Data isolation strategy'),\n quotas: TenantQuotaSchema.optional().describe('Resource quotas'),\n }).optional().describe('Runtime instance configuration'),\n \n /**\n * The Desired State (Bill of Materials)\n * This is what the user configures in the UI.\n */\n bom: BillOfMaterialsSchema,\n \n /**\n * The Current Actual State (Last Successful Build)\n */\n lastBuild: z.object({\n id: z.string(),\n timestamp: z.string().datetime(),\n manifestUrl: z.string().url().optional(),\n status: z.enum(['pending', 'success', 'failed']),\n }).optional(),\n \n /**\n * Commercial / Billing Info\n */\n subscription: SpaceSubscriptionSchema.optional(),\n \n /**\n * Infrastructure Settings\n */\n deployment: DeploymentTargetSchema.optional(),\n \n createdAt: z.string(),\n updatedAt: z.string(),\n});\n\nexport type SubscriptionStatus = z.infer<typeof SubscriptionStatus>;\nexport type SpaceSubscription = z.infer<typeof SpaceSubscriptionSchema>;\nexport type DeploymentTarget = z.infer<typeof DeploymentTargetSchema>;\nexport type HubSpace = z.infer<typeof HubSpaceSchema>;\nexport type Space = HubSpace; // Alias for backwards compatibility\n","import { z } from 'zod';\n\n/**\n * Tenant Schema (Multi-Tenant Architecture)\n * \n * Defines the tenant/tenancy model for ObjectStack SaaS deployments.\n * Supports different levels of data isolation to meet varying security,\n * performance, and compliance requirements.\n * \n * Isolation Levels:\n * - shared_schema: All tenants share the same database and schema (row-level isolation)\n * - isolated_schema: Tenants have separate schemas within a shared database\n * - isolated_db: Each tenant has a completely separate database\n */\n\n/**\n * Tenant Isolation Level Enum\n * Defines how tenant data is separated in the system\n */\nexport const TenantIsolationLevel = z.enum([\n 'shared_schema', // Shared DB, shared schema, row-level isolation (most economical)\n 'isolated_schema', // Shared DB, separate schema per tenant (balanced)\n 'isolated_db', // Separate database per tenant (maximum isolation)\n]);\n\nexport type TenantIsolationLevel = z.infer<typeof TenantIsolationLevel>;\n\n/**\n * Tenant Quota Schema\n * Defines resource limits and usage quotas for a tenant\n */\nexport const TenantQuotaSchema = z.object({\n /**\n * Maximum number of users allowed for this tenant\n */\n maxUsers: z.number().int().positive().optional().describe('Maximum number of users'),\n \n /**\n * Maximum storage space in bytes\n */\n maxStorage: z.number().int().positive().optional().describe('Maximum storage in bytes'),\n \n /**\n * API rate limit (requests per minute)\n */\n apiRateLimit: z.number().int().positive().optional().describe('API requests per minute'),\n});\n\nexport type TenantQuota = z.infer<typeof TenantQuotaSchema>;\n\n/**\n * Tenant Schema\n * \n * @deprecated This schema is maintained for backward compatibility only.\n * New implementations should use HubSpaceSchema which embeds tenant concepts.\n * \n * **Migration Guide:**\n * ```typescript\n * // Old approach (deprecated):\n * const tenant: Tenant = {\n * id: 'tenant_123',\n * name: 'My Tenant',\n * isolationLevel: 'shared_schema',\n * quotas: { maxUsers: 100 }\n * };\n * \n * // New approach (recommended):\n * const space: HubSpace = {\n * id: '...uuid...',\n * name: 'My Tenant',\n * slug: 'my-tenant',\n * ownerId: 'user_id',\n * runtime: {\n * isolation: 'shared_schema',\n * quotas: { maxUsers: 100 }\n * },\n * bom: { ... }\n * };\n * ```\n * \n * See HubSpaceSchema in space.zod.ts for the recommended approach.\n */\nexport const TenantSchema = z.object({\n /**\n * Unique tenant identifier\n */\n id: z.string().describe('Unique tenant identifier'),\n \n /**\n * Tenant display name\n */\n name: z.string().describe('Tenant display name'),\n \n /**\n * Data isolation level\n */\n isolationLevel: TenantIsolationLevel,\n \n /**\n * Custom configuration values\n */\n customizations: z.record(z.string(), z.any()).optional().describe('Custom configuration values'),\n \n /**\n * Resource quotas\n */\n quotas: TenantQuotaSchema.optional(),\n});\n\nexport type Tenant = z.infer<typeof TenantSchema>;\n\n/**\n * Tenant Isolation Strategy Documentation\n * \n * Comprehensive documentation of three isolation strategies for multi-tenant systems.\n * Each strategy has different trade-offs in terms of security, cost, complexity, and compliance.\n */\n\n/**\n * Row-Level Isolation Strategy (shared_schema)\n * \n * Recommended for: Most SaaS applications, cost-sensitive deployments\n * \n * IMPLEMENTATION:\n * - All tenants share the same database and schema\n * - Each table includes a tenant_id column\n * - PostgreSQL Row-Level Security (RLS) enforces isolation\n * - Queries automatically filter by tenant_id via RLS policies\n * \n * ADVANTAGES:\n * ✅ Simple backup and restore (single database)\n * ✅ Cost-effective (shared resources, minimal overhead)\n * ✅ Easy tenant migration (update tenant_id)\n * ✅ Efficient resource utilization (connection pooling)\n * ✅ Simple schema migrations (single schema to update)\n * ✅ Lower operational complexity\n * \n * DISADVANTAGES:\n * ❌ RLS misconfiguration can lead to data leakage\n * ❌ Performance impact from RLS policy evaluation\n * ❌ Noisy neighbor problem (one tenant can affect others)\n * ❌ Cannot easily isolate tenant to different hardware\n * ❌ Compliance challenges for regulated industries\n * \n * SECURITY CONSIDERATIONS:\n * - Requires careful RLS policy configuration\n * - Must validate tenant_id in all queries\n * - Need comprehensive testing of RLS policies\n * - Audit all database access patterns\n * - Implement application-level validation as defense-in-depth\n * \n * EXAMPLE RLS POLICY (PostgreSQL):\n * ```sql\n * -- Example: Apply RLS policy to a table (e.g., \"app_data\")\n * CREATE POLICY tenant_isolation ON app_data\n * USING (tenant_id = current_setting('app.current_tenant')::text);\n * \n * ALTER TABLE app_data ENABLE ROW LEVEL SECURITY;\n * ```\n */\nexport const RowLevelIsolationStrategySchema = z.object({\n strategy: z.literal('shared_schema').describe('Row-level isolation strategy'),\n \n /**\n * Database configuration for row-level isolation\n */\n database: z.object({\n /**\n * Whether to enable Row-Level Security (RLS)\n */\n enableRLS: z.boolean().default(true).describe('Enable PostgreSQL Row-Level Security'),\n \n /**\n * Tenant context setting method\n */\n contextMethod: z.enum([\n 'session_variable', // SET app.current_tenant = 'tenant_123'\n 'search_path', // SET search_path = tenant_123, public\n 'application_name', // SET application_name = 'tenant_123'\n ]).default('session_variable').describe('How to set tenant context'),\n \n /**\n * Session variable name for tenant context\n */\n contextVariable: z.string().default('app.current_tenant').describe('Session variable name'),\n \n /**\n * Whether to validate tenant_id at application level\n */\n applicationValidation: z.boolean().default(true).describe('Application-level tenant validation'),\n }).optional().describe('Database configuration'),\n \n /**\n * Performance optimization settings\n */\n performance: z.object({\n /**\n * Whether to use partial indexes for tenant_id\n */\n usePartialIndexes: z.boolean().default(true).describe('Use partial indexes per tenant'),\n \n /**\n * Whether to use table partitioning\n */\n usePartitioning: z.boolean().default(false).describe('Use table partitioning by tenant_id'),\n \n /**\n * Connection pool size per tenant\n */\n poolSizePerTenant: z.number().int().positive().optional().describe('Connection pool size per tenant'),\n }).optional().describe('Performance settings'),\n});\n\nexport type RowLevelIsolationStrategy = z.infer<typeof RowLevelIsolationStrategySchema>;\n\n/**\n * Schema-Level Isolation Strategy (isolated_schema)\n * \n * Recommended for: Enterprise SaaS, B2B platforms with compliance needs\n * \n * IMPLEMENTATION:\n * - All tenants share the same database server\n * - Each tenant has a separate database schema\n * - Schema name typically: tenant_<tenant_id>\n * - Application switches schema using SET search_path\n * \n * ADVANTAGES:\n * ✅ Better isolation than row-level (schema boundaries)\n * ✅ Easier to debug (separate schemas)\n * ✅ Can grant different database permissions per schema\n * ✅ Reduced risk of data leakage\n * ✅ Performance isolation (indexes, statistics per schema)\n * ✅ Simplified queries (no tenant_id filtering needed)\n * \n * DISADVANTAGES:\n * ❌ More complex backups (must backup all schemas)\n * ❌ Higher migration costs (schema changes across all tenants)\n * ❌ Schema proliferation (PostgreSQL has limits)\n * ❌ Connection overhead (switching schemas)\n * ❌ More complex monitoring and maintenance\n * \n * SECURITY CONSIDERATIONS:\n * - Ensure proper schema permissions (GRANT USAGE ON SCHEMA)\n * - Validate schema name to prevent SQL injection\n * - Implement connection-level schema switching\n * - Audit schema access patterns\n * - Prevent cross-schema queries in application\n * \n * EXAMPLE IMPLEMENTATION (PostgreSQL):\n * ```sql\n * -- Create tenant schema\n * CREATE SCHEMA tenant_123;\n * \n * -- Grant access\n * GRANT USAGE ON SCHEMA tenant_123 TO app_user;\n * \n * -- Switch to tenant schema\n * SET search_path TO tenant_123, public;\n * ```\n */\nexport const SchemaLevelIsolationStrategySchema = z.object({\n strategy: z.literal('isolated_schema').describe('Schema-level isolation strategy'),\n \n /**\n * Schema configuration\n */\n schema: z.object({\n /**\n * Schema naming pattern\n * Use {tenant_id} as placeholder (must contain only alphanumeric and underscores)\n * The tenant_id will be sanitized before substitution to prevent SQL injection\n */\n namingPattern: z.string().default('tenant_{tenant_id}').describe('Schema naming pattern'),\n \n /**\n * Whether to include public schema in search_path\n */\n includePublicSchema: z.boolean().default(true).describe('Include public schema'),\n \n /**\n * Default schema for shared resources\n */\n sharedSchema: z.string().default('public').describe('Schema for shared resources'),\n \n /**\n * Whether to automatically create schema on tenant creation\n */\n autoCreateSchema: z.boolean().default(true).describe('Auto-create schema'),\n }).optional().describe('Schema configuration'),\n \n /**\n * Migration configuration\n */\n migrations: z.object({\n /**\n * Migration strategy\n */\n strategy: z.enum([\n 'parallel', // Run migrations on all schemas in parallel\n 'sequential', // Run migrations one schema at a time\n 'on_demand', // Run migrations when tenant accesses system\n ]).default('parallel').describe('Migration strategy'),\n \n /**\n * Maximum concurrent migrations\n */\n maxConcurrent: z.number().int().positive().default(10).describe('Max concurrent migrations'),\n \n /**\n * Whether to rollback on first failure\n */\n rollbackOnError: z.boolean().default(true).describe('Rollback on error'),\n }).optional().describe('Migration configuration'),\n \n /**\n * Performance optimization settings\n */\n performance: z.object({\n /**\n * Whether to use connection pooling per schema\n */\n poolPerSchema: z.boolean().default(false).describe('Separate pool per schema'),\n \n /**\n * Schema cache TTL in seconds\n */\n schemaCacheTTL: z.number().int().positive().default(3600).describe('Schema cache TTL'),\n }).optional().describe('Performance settings'),\n});\n\nexport type SchemaLevelIsolationStrategy = z.infer<typeof SchemaLevelIsolationStrategySchema>;\n\n/**\n * Database-Level Isolation Strategy (isolated_db)\n * \n * Recommended for: Regulated industries (healthcare, finance), strict compliance requirements\n * \n * IMPLEMENTATION:\n * - Each tenant has a completely separate database\n * - Database name typically: tenant_<tenant_id>\n * - Requires separate connection pool per tenant\n * - Complete physical and logical isolation\n * \n * ADVANTAGES:\n * ✅ Perfect data isolation (strongest security)\n * ✅ Meets strict regulatory requirements (HIPAA, SOX, PCI-DSS)\n * ✅ Complete performance isolation (no noisy neighbors)\n * ✅ Can place databases on different hardware\n * ✅ Easy to backup/restore individual tenant\n * ✅ Simplified compliance auditing per tenant\n * ✅ Can apply different encryption keys per database\n * \n * DISADVANTAGES:\n * ❌ Most expensive option (resource overhead)\n * ❌ Complex database server management (many databases)\n * ❌ Connection pool limits (max connections per server)\n * ❌ Difficult cross-tenant analytics\n * ❌ Higher operational complexity\n * ❌ Schema migrations take longer (many databases)\n * \n * SECURITY CONSIDERATIONS:\n * - Each database can have separate credentials\n * - Enables per-tenant encryption at rest\n * - Simplifies compliance and audit trails\n * - Prevents any cross-tenant data access\n * - Supports tenant-specific backup schedules\n * \n * EXAMPLE IMPLEMENTATION (PostgreSQL):\n * ```sql\n * -- Create tenant database\n * CREATE DATABASE tenant_123\n * WITH OWNER = tenant_123_user\n * ENCODING = 'UTF8'\n * LC_COLLATE = 'en_US.UTF-8'\n * LC_CTYPE = 'en_US.UTF-8';\n * \n * -- Connect to tenant database\n * \\c tenant_123\n * ```\n */\nexport const DatabaseLevelIsolationStrategySchema = z.object({\n strategy: z.literal('isolated_db').describe('Database-level isolation strategy'),\n \n /**\n * Database configuration\n */\n database: z.object({\n /**\n * Database naming pattern\n * Use {tenant_id} as placeholder (must contain only alphanumeric and underscores)\n * The tenant_id will be sanitized before substitution to prevent SQL injection\n */\n namingPattern: z.string().default('tenant_{tenant_id}').describe('Database naming pattern'),\n \n /**\n * Database server/cluster assignment strategy\n */\n serverStrategy: z.enum([\n 'shared', // All tenant databases on same server\n 'sharded', // Tenant databases distributed across servers\n 'dedicated', // Each tenant gets dedicated server (enterprise)\n ]).default('shared').describe('Server assignment strategy'),\n \n /**\n * Whether to use separate credentials per tenant\n */\n separateCredentials: z.boolean().default(true).describe('Separate credentials per tenant'),\n \n /**\n * Whether to automatically create database on tenant creation\n */\n autoCreateDatabase: z.boolean().default(true).describe('Auto-create database'),\n }).optional().describe('Database configuration'),\n \n /**\n * Connection pooling configuration\n */\n connectionPool: z.object({\n /**\n * Pool size per tenant database\n */\n poolSize: z.number().int().positive().default(10).describe('Connection pool size'),\n \n /**\n * Maximum number of tenant pools to keep active\n */\n maxActivePools: z.number().int().positive().default(100).describe('Max active pools'),\n \n /**\n * Idle pool timeout in seconds\n */\n idleTimeout: z.number().int().positive().default(300).describe('Idle pool timeout'),\n \n /**\n * Whether to use connection pooler (PgBouncer, etc.)\n */\n usePooler: z.boolean().default(true).describe('Use connection pooler'),\n }).optional().describe('Connection pool configuration'),\n \n /**\n * Backup and restore configuration\n */\n backup: z.object({\n /**\n * Backup strategy per tenant\n */\n strategy: z.enum([\n 'individual', // Separate backup per tenant\n 'consolidated', // Combined backup with all tenants\n 'on_demand', // Backup only when requested\n ]).default('individual').describe('Backup strategy'),\n \n /**\n * Backup frequency in hours\n */\n frequencyHours: z.number().int().positive().default(24).describe('Backup frequency'),\n \n /**\n * Retention period in days\n */\n retentionDays: z.number().int().positive().default(30).describe('Backup retention days'),\n }).optional().describe('Backup configuration'),\n \n /**\n * Encryption configuration\n */\n encryption: z.object({\n /**\n * Whether to use per-tenant encryption keys\n */\n perTenantKeys: z.boolean().default(false).describe('Per-tenant encryption keys'),\n \n /**\n * Encryption algorithm\n */\n algorithm: z.string().default('AES-256-GCM').describe('Encryption algorithm'),\n \n /**\n * Key management service\n */\n keyManagement: z.enum(['aws_kms', 'azure_key_vault', 'gcp_kms', 'hashicorp_vault', 'custom']).optional().describe('Key management service'),\n }).optional().describe('Encryption configuration'),\n});\n\nexport type DatabaseLevelIsolationStrategy = z.infer<typeof DatabaseLevelIsolationStrategySchema>;\n\n/**\n * Tenant Isolation Configuration Schema\n * \n * Complete configuration for tenant isolation strategy.\n * Supports all three isolation levels with detailed configuration options.\n */\nexport const TenantIsolationConfigSchema = z.discriminatedUnion('strategy', [\n RowLevelIsolationStrategySchema,\n SchemaLevelIsolationStrategySchema,\n DatabaseLevelIsolationStrategySchema,\n]);\n\nexport type TenantIsolationConfig = z.infer<typeof TenantIsolationConfigSchema>;\n\n/**\n * Tenant Security Policy Schema\n * Defines security policies and compliance requirements for tenants\n */\nexport const TenantSecurityPolicySchema = z.object({\n /**\n * Encryption requirements\n */\n encryption: z.object({\n /**\n * Require encryption at rest\n */\n atRest: z.boolean().default(true).describe('Require encryption at rest'),\n \n /**\n * Require encryption in transit\n */\n inTransit: z.boolean().default(true).describe('Require encryption in transit'),\n \n /**\n * Require field-level encryption for sensitive data\n */\n fieldLevel: z.boolean().default(false).describe('Require field-level encryption'),\n }).optional().describe('Encryption requirements'),\n \n /**\n * Access control requirements\n */\n accessControl: z.object({\n /**\n * Require multi-factor authentication\n */\n requireMFA: z.boolean().default(false).describe('Require MFA'),\n \n /**\n * Require SSO/SAML authentication\n */\n requireSSO: z.boolean().default(false).describe('Require SSO'),\n \n /**\n * IP whitelist\n */\n ipWhitelist: z.array(z.string()).optional().describe('Allowed IP addresses'),\n \n /**\n * Session timeout in seconds\n */\n sessionTimeout: z.number().int().positive().default(3600).describe('Session timeout'),\n }).optional().describe('Access control requirements'),\n \n /**\n * Audit and compliance requirements\n */\n compliance: z.object({\n /**\n * Compliance standards to enforce\n */\n standards: z.array(z.enum([\n 'sox',\n 'hipaa',\n 'gdpr',\n 'pci_dss',\n 'iso_27001',\n 'fedramp',\n ])).optional().describe('Compliance standards'),\n \n /**\n * Require audit logging for all operations\n */\n requireAuditLog: z.boolean().default(true).describe('Require audit logging'),\n \n /**\n * Audit log retention period in days\n */\n auditRetentionDays: z.number().int().positive().default(365).describe('Audit retention days'),\n \n /**\n * Data residency requirements\n */\n dataResidency: z.object({\n /**\n * Required geographic region\n */\n region: z.string().optional().describe('Required region (e.g., US, EU, APAC)'),\n \n /**\n * Prohibited regions\n */\n excludeRegions: z.array(z.string()).optional().describe('Prohibited regions'),\n }).optional().describe('Data residency requirements'),\n }).optional().describe('Compliance requirements'),\n});\n\nexport type TenantSecurityPolicy = z.infer<typeof TenantSecurityPolicySchema>;\n","import { z } from 'zod';\n\n/**\n * Metric Type Classification\n */\nexport const MetricType = z.enum([\n 'boolean', // Feature Flag (Enabled/Disabled)\n 'counter', // Usage Count (e.g. API Calls, Records Created) - Accumulates\n 'gauge', // Current Level (e.g. Storage Used, Users Active) - Point in time\n]);\n\n/**\n * Feature/Limit Definition Schema\n * Defines a controllable capability of the system.\n */\nexport const FeatureSchema = z.object({\n code: z.string().regex(/^[a-z_][a-z0-9_.]*$/).describe('Feature code (e.g. core.api_access)'),\n label: z.string(),\n description: z.string().optional(),\n \n type: MetricType.default('boolean'),\n \n /** For counters/gauges */\n unit: z.enum(['count', 'bytes', 'seconds', 'percent']).optional(),\n \n /** Dependencies (e.g. 'audit_log' requires 'enterprise_tier') */\n requires: z.array(z.string()).optional(),\n});\n\n/**\n * Subscription Plan Schema\n * Defines a tier of service (e.g. \"Free\", \"Pro\", \"Enterprise\").\n */\nexport const PlanSchema = z.object({\n code: z.string().describe('Plan code (e.g. pro_v1)'),\n label: z.string(),\n active: z.boolean().default(true),\n \n /** Feature Entitlements */\n features: z.array(z.string()).describe('List of enabled boolean features'),\n \n /** Limit Quotas */\n limits: z.record(z.string(), z.number()).describe('Map of metric codes to limit values (e.g. { storage_gb: 10 })'),\n \n /** Pricing (Optional Metadata) */\n currency: z.string().default('USD').optional(),\n priceMonthly: z.number().optional(),\n priceYearly: z.number().optional(),\n});\n\n/**\n * License Schema\n * The actual entitlement object assigned to a Space.\n * Often signed as a JWT.\n */\nexport const LicenseSchema = z.object({\n /** Identity */\n spaceId: z.string().describe('Target Space ID'),\n planCode: z.string(),\n \n /** Validity */\n issuedAt: z.string().datetime(),\n expiresAt: z.string().datetime().optional(), // Null = Perpetual\n \n /** Status */\n status: z.enum(['active', 'expired', 'suspended', 'trial']),\n \n /** Overrides (Specific to this space, exceeding the plan) */\n customFeatures: z.array(z.string()).optional(),\n customLimits: z.record(z.string(), z.number()).optional(),\n \n /** Authorized Add-ons */\n plugins: z.array(z.string()).optional().describe('List of enabled plugin package IDs'),\n\n /** Signature */\n signature: z.string().optional().describe('Cryptographic signature of the license'),\n});\n\nexport type Feature = z.infer<typeof FeatureSchema>;\nexport type Plan = z.infer<typeof PlanSchema>;\nexport type License = z.infer<typeof LicenseSchema>;\n","import { z } from 'zod';\n\n/**\n * # Hub Federation Protocol\n * \n * Enables distributed ObjectStack Hub deployments across multiple regions,\n * data centers, or cloud providers. Supports:\n * - Multi-region plugin distribution\n * - Federated identity and tenant management\n * - Cross-region data replication\n * - Global load balancing\n * - Disaster recovery\n * \n * Use cases:\n * - Global SaaS deployments with regional data residency\n * - Multi-cloud resilience\n * - Edge computing with central management\n * - Hybrid cloud deployments\n */\n\n// ============================================================================\n// Region & Deployment Topology\n// ============================================================================\n\n/**\n * Geographic Region\n */\nexport const RegionSchema = z.object({\n /**\n * Region identifier (e.g., us-east-1, eu-west-1, ap-southeast-1)\n */\n id: z.string().regex(/^[a-z]{2}-[a-z]+-\\d+$/).describe('Region identifier'),\n \n /**\n * Display name\n */\n name: z.string().describe('Human-readable region name'),\n \n /**\n * Geographic location\n */\n location: z.object({\n continent: z.enum(['NA', 'SA', 'EU', 'AF', 'AS', 'OC', 'AN']),\n country: z.string().regex(/^[A-Z]{2}$/).describe('ISO 3166-1 alpha-2 country code'),\n city: z.string().optional(),\n latitude: z.number().min(-90).max(90).optional(),\n longitude: z.number().min(-180).max(180).optional(),\n }),\n \n /**\n * Cloud provider and region mapping\n */\n provider: z.object({\n name: z.enum(['aws', 'azure', 'gcp', 'cloudflare', 'vercel', 'self-hosted']),\n region: z.string().describe('Provider-specific region identifier'),\n }).optional(),\n \n /**\n * Region capabilities\n */\n capabilities: z.object({\n databases: z.array(z.enum(['postgres', 'mysql', 'mongodb', 'redis'])).default([]),\n storage: z.array(z.enum(['s3', 'azure-blob', 'gcs'])).default([]),\n compute: z.array(z.enum(['containers', 'serverless', 'vm'])).default([]),\n cdn: z.boolean().default(false),\n }).optional(),\n \n /**\n * Compliance and certifications\n */\n compliance: z.array(z.enum(['gdpr', 'hipaa', 'soc2', 'iso27001', 'pci-dss'])).default([]),\n \n /**\n * Region status\n */\n status: z.enum(['active', 'read-only', 'maintenance', 'deprecated']).default('active'),\n \n /**\n * Resource limits for this region\n */\n limits: z.object({\n maxSpaces: z.number().int().positive().optional(),\n maxTenants: z.number().int().positive().optional(),\n maxStorage: z.number().int().positive().optional().describe('Bytes'),\n }).optional(),\n});\n\nexport type Region = z.infer<typeof RegionSchema>;\n\n/**\n * Hub Instance\n * Represents a single Hub deployment in a region\n */\nexport const HubInstanceSchema = z.object({\n /**\n * Instance identifier\n */\n id: z.string().uuid(),\n \n /**\n * Region where this hub is deployed\n */\n regionId: z.string(),\n \n /**\n * Hub role in federation\n */\n role: z.enum([\n 'primary', // Primary/master hub\n 'secondary', // Read-replica hub\n 'edge', // Edge location for caching\n ]),\n \n /**\n * Endpoint URLs\n */\n endpoints: z.object({\n api: z.string().url().describe('Public API endpoint'),\n admin: z.string().url().optional().describe('Admin console'),\n grpc: z.string().optional().describe('gRPC endpoint for inter-hub communication'),\n }),\n \n /**\n * Replication configuration\n */\n replication: z.object({\n /**\n * Source hub for replication (if this is a secondary)\n */\n primaryHubId: z.string().uuid().optional(),\n \n /**\n * Replication lag tolerance in seconds\n */\n lagTolerance: z.number().int().positive().default(5),\n \n /**\n * Replication mode\n */\n mode: z.enum(['sync', 'async', 'semi-sync']).default('async'),\n }).optional(),\n \n /**\n * Health status\n */\n health: z.object({\n status: z.enum(['healthy', 'degraded', 'unhealthy']),\n lastCheck: z.string().datetime(),\n uptime: z.number().describe('Seconds'),\n }).optional(),\n \n /**\n * Version\n */\n version: z.string(),\n \n /**\n * Metadata\n */\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\n\nexport type HubInstance = z.infer<typeof HubInstanceSchema>;\n\n// ============================================================================\n// Federation Topology\n// ============================================================================\n\n/**\n * Federation Topology\n * Defines the global hub network architecture\n */\nexport const FederationTopologySchema = z.object({\n /**\n * Federation identifier\n */\n id: z.string().uuid(),\n \n /**\n * Federation name\n */\n name: z.string(),\n \n /**\n * Regions in this federation\n */\n regions: z.array(RegionSchema),\n \n /**\n * Hub instances\n */\n hubs: z.array(HubInstanceSchema),\n \n /**\n * Routing strategy\n */\n routing: z.object({\n /**\n * How to route tenant requests\n */\n strategy: z.enum([\n 'geo-proximity', // Route to nearest region\n 'data-residency', // Route based on tenant data location\n 'least-loaded', // Route to least busy hub\n 'custom', // Custom routing logic\n ]).default('geo-proximity'),\n \n /**\n * Failover behavior\n */\n failover: z.object({\n enabled: z.boolean().default(true),\n maxRetries: z.number().int().min(0).default(3),\n timeout: z.number().int().positive().default(5000).describe('Milliseconds'),\n }),\n }),\n \n /**\n * Data synchronization settings\n */\n synchronization: z.object({\n /**\n * What data to sync across regions\n */\n scope: z.object({\n /**\n * Sync plugin registry\n */\n plugins: z.boolean().default(true),\n \n /**\n * Sync tenant metadata (not data)\n */\n tenants: z.boolean().default(true),\n \n /**\n * Sync spaces metadata\n */\n spaces: z.boolean().default(false),\n \n /**\n * Sync licenses\n */\n licenses: z.boolean().default(true),\n }),\n \n /**\n * Sync frequency\n */\n frequency: z.enum(['realtime', 'hourly', 'daily']).default('realtime'),\n \n /**\n * Conflict resolution\n */\n conflictResolution: z.enum(['last-write-wins', 'primary-wins', 'manual']).default('last-write-wins'),\n }),\n});\n\nexport type FederationTopology = z.infer<typeof FederationTopologySchema>;\n\n// ============================================================================\n// Tenant Placement\n// ============================================================================\n\n/**\n * Tenant Placement Policy\n * Determines where a tenant's data and runtime reside\n */\nexport const TenantPlacementPolicySchema = z.object({\n /**\n * Tenant identifier\n */\n tenantId: z.string(),\n \n /**\n * Primary region (where tenant data lives)\n */\n primaryRegion: z.string(),\n \n /**\n * Replica regions (for disaster recovery)\n */\n replicaRegions: z.array(z.string()).default([]),\n \n /**\n * Data residency constraints\n */\n dataResidency: z.object({\n /**\n * Allowed regions for data storage\n */\n allowedRegions: z.array(z.string()).optional(),\n \n /**\n * Prohibited regions\n */\n prohibitedRegions: z.array(z.string()).default([]),\n \n /**\n * Continent restriction\n */\n continent: z.enum(['NA', 'SA', 'EU', 'AF', 'AS', 'OC', 'AN']).optional(),\n }).optional(),\n \n /**\n * Failover policy\n */\n failover: z.object({\n /**\n * Enable automatic failover\n */\n enabled: z.boolean().default(true),\n \n /**\n * Preferred failover order (region IDs)\n */\n preferredOrder: z.array(z.string()).default([]),\n \n /**\n * Maximum acceptable latency for failover target (ms)\n */\n maxLatency: z.number().int().positive().default(100),\n }).optional(),\n \n /**\n * Latency requirements\n */\n latency: z.object({\n /**\n * Maximum acceptable latency for primary region (ms)\n */\n maxPrimaryLatency: z.number().int().positive().default(50),\n \n /**\n * Maximum acceptable latency for replicas (ms)\n */\n maxReplicaLatency: z.number().int().positive().default(200),\n }).optional(),\n});\n\nexport type TenantPlacementPolicy = z.infer<typeof TenantPlacementPolicySchema>;\n\n// ============================================================================\n// Cross-Region Operations\n// ============================================================================\n\n/**\n * Cross-Region Replication Job\n */\nexport const ReplicationJobSchema = z.object({\n /**\n * Job identifier\n */\n id: z.string().uuid(),\n \n /**\n * Job type\n */\n type: z.enum([\n 'initial-sync', // First-time full sync\n 'incremental', // Delta sync\n 'conflict-resolution', // Resolve conflicts\n ]),\n \n /**\n * Source hub\n */\n sourceHubId: z.string().uuid(),\n \n /**\n * Target hub(s)\n */\n targetHubIds: z.array(z.string().uuid()),\n \n /**\n * Resource scope\n */\n scope: z.object({\n /**\n * Resource type\n */\n resourceType: z.enum(['plugin', 'tenant', 'space', 'license', 'all']),\n \n /**\n * Specific resource IDs (empty = all)\n */\n resourceIds: z.array(z.string()).default([]),\n }),\n \n /**\n * Job status\n */\n status: z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']),\n \n /**\n * Progress\n */\n progress: z.object({\n total: z.number().int().min(0),\n completed: z.number().int().min(0),\n failed: z.number().int().min(0),\n }).optional(),\n \n /**\n * Timestamps\n */\n createdAt: z.string().datetime(),\n startedAt: z.string().datetime().optional(),\n completedAt: z.string().datetime().optional(),\n \n /**\n * Errors\n */\n errors: z.array(z.object({\n timestamp: z.string().datetime(),\n resourceId: z.string(),\n error: z.string(),\n })).default([]),\n});\n\nexport type ReplicationJob = z.infer<typeof ReplicationJobSchema>;\n\n/**\n * Global Registry Entry\n * Tracks where a resource exists across regions\n */\nexport const GlobalRegistryEntrySchema = z.object({\n /**\n * Resource identifier\n */\n resourceId: z.string(),\n \n /**\n * Resource type\n */\n resourceType: z.enum(['plugin', 'tenant', 'space', 'license']),\n \n /**\n * Regions where this resource exists\n */\n locations: z.array(z.object({\n regionId: z.string(),\n hubId: z.string().uuid(),\n isPrimary: z.boolean().default(false),\n lastSyncedAt: z.string().datetime().optional(),\n version: z.string().optional(),\n })),\n \n /**\n * Global version vector clock (for conflict detection)\n */\n versionVector: z.record(z.string(), z.number().int()).optional(),\n});\n\nexport type GlobalRegistryEntry = z.infer<typeof GlobalRegistryEntrySchema>;\n\n// ============================================================================\n// Edge Computing\n// ============================================================================\n\n/**\n * Edge Location\n * Represents a CDN/edge cache location\n */\nexport const EdgeLocationSchema = z.object({\n /**\n * Location identifier\n */\n id: z.string(),\n \n /**\n * Parent region\n */\n regionId: z.string(),\n \n /**\n * Location details\n */\n location: RegionSchema.shape.location,\n \n /**\n * Caching configuration\n */\n cache: z.object({\n /**\n * What to cache at edge\n */\n resources: z.array(z.enum(['plugins', 'static-assets', 'api-responses'])).default([]),\n \n /**\n * TTL in seconds\n */\n ttl: z.number().int().positive().default(3600),\n \n /**\n * Cache size limit (bytes)\n */\n maxSize: z.number().int().positive().optional(),\n }),\n \n /**\n * Status\n */\n status: z.enum(['active', 'inactive']).default('active'),\n});\n\nexport type EdgeLocation = z.infer<typeof EdgeLocationSchema>;\n\n// ============================================================================\n// Export All\n// ============================================================================\n\nexport const HubFederationProtocol = {\n Region: RegionSchema,\n HubInstance: HubInstanceSchema,\n FederationTopology: FederationTopologySchema,\n TenantPlacementPolicy: TenantPlacementPolicySchema,\n ReplicationJob: ReplicationJobSchema,\n GlobalRegistryEntry: GlobalRegistryEntrySchema,\n EdgeLocation: EdgeLocationSchema,\n} as const;\n","import { z } from 'zod';\n\n/**\n * # Plugin Security & Dependency Resolution Protocol\n * \n * Provides comprehensive security scanning, vulnerability management,\n * and dependency resolution for the ObjectStack plugin ecosystem.\n * \n * Features:\n * - CVE/vulnerability scanning\n * - Dependency graph resolution\n * - Semantic version conflict detection\n * - Supply chain security\n * - Plugin sandboxing policies\n * - Trust and verification workflows\n */\n\n// ============================================================================\n// Security Scanning\n// ============================================================================\n\n/**\n * Vulnerability Severity\n */\nexport const VulnerabilitySeverity = z.enum([\n 'critical',\n 'high',\n 'medium',\n 'low',\n 'info',\n]);\n\nexport type VulnerabilitySeverity = z.infer<typeof VulnerabilitySeverity>;\n\n/**\n * Security Vulnerability\n */\nexport const SecurityVulnerabilitySchema = z.object({\n /**\n * CVE identifier (if applicable)\n */\n cve: z.string().regex(/^CVE-\\d{4}-\\d+$/).optional().describe('CVE identifier'),\n \n /**\n * Vulnerability identifier (GHSA, SNYK, etc.)\n */\n id: z.string().describe('Vulnerability ID'),\n \n /**\n * Title\n */\n title: z.string(),\n \n /**\n * Description\n */\n description: z.string(),\n \n /**\n * Severity\n */\n severity: VulnerabilitySeverity,\n \n /**\n * CVSS score (0-10)\n */\n cvss: z.number().min(0).max(10).optional(),\n \n /**\n * Affected package\n */\n package: z.object({\n name: z.string(),\n version: z.string(),\n ecosystem: z.string().optional(),\n }),\n \n /**\n * Vulnerable version range\n */\n vulnerableVersions: z.string().describe('Semver range of vulnerable versions'),\n \n /**\n * Patched versions\n */\n patchedVersions: z.string().optional().describe('Semver range of patched versions'),\n \n /**\n * References\n */\n references: z.array(z.object({\n type: z.enum(['advisory', 'article', 'report', 'web']),\n url: z.string().url(),\n })).default([]),\n \n /**\n * CWE (Common Weakness Enumeration)\n */\n cwe: z.array(z.string()).default([]),\n \n /**\n * Published date\n */\n publishedAt: z.string().datetime().optional(),\n \n /**\n * Mitigation advice\n */\n mitigation: z.string().optional(),\n});\n\nexport type SecurityVulnerability = z.infer<typeof SecurityVulnerabilitySchema>;\n\n/**\n * Security Scan Result\n */\nexport const SecurityScanResultSchema = z.object({\n /**\n * Scan identifier\n */\n scanId: z.string().uuid(),\n \n /**\n * Plugin being scanned\n */\n plugin: z.object({\n id: z.string(),\n version: z.string(),\n }),\n \n /**\n * Scan timestamp\n */\n scannedAt: z.string().datetime(),\n \n /**\n * Scanner information\n */\n scanner: z.object({\n name: z.string().describe('Scanner name (e.g., snyk, osv, trivy)'),\n version: z.string(),\n }),\n \n /**\n * Scan status\n */\n status: z.enum(['passed', 'failed', 'warning']),\n \n /**\n * Vulnerabilities found\n */\n vulnerabilities: z.array(SecurityVulnerabilitySchema),\n \n /**\n * Vulnerability summary\n */\n summary: z.object({\n critical: z.number().int().min(0).default(0),\n high: z.number().int().min(0).default(0),\n medium: z.number().int().min(0).default(0),\n low: z.number().int().min(0).default(0),\n info: z.number().int().min(0).default(0),\n total: z.number().int().min(0).default(0),\n }),\n \n /**\n * License compliance issues\n */\n licenseIssues: z.array(z.object({\n package: z.string(),\n license: z.string(),\n reason: z.string(),\n severity: z.enum(['error', 'warning', 'info']),\n })).default([]),\n \n /**\n * Code quality issues\n */\n codeQuality: z.object({\n score: z.number().min(0).max(100).optional(),\n issues: z.array(z.object({\n type: z.enum(['security', 'quality', 'style']),\n severity: z.enum(['error', 'warning', 'info']),\n message: z.string(),\n file: z.string().optional(),\n line: z.number().int().optional(),\n })).default([]),\n }).optional(),\n \n /**\n * Next scan scheduled\n */\n nextScanAt: z.string().datetime().optional(),\n});\n\nexport type SecurityScanResult = z.infer<typeof SecurityScanResultSchema>;\n\n/**\n * Security Policy\n */\nexport const SecurityPolicySchema = z.object({\n /**\n * Policy identifier\n */\n id: z.string(),\n \n /**\n * Policy name\n */\n name: z.string(),\n \n /**\n * Automatic scanning\n */\n autoScan: z.object({\n enabled: z.boolean().default(true),\n frequency: z.enum(['on-publish', 'daily', 'weekly', 'monthly']).default('daily'),\n }),\n \n /**\n * Vulnerability thresholds\n */\n thresholds: z.object({\n /**\n * Block plugin if critical vulnerabilities exceed this\n */\n maxCritical: z.number().int().min(0).default(0),\n \n /**\n * Block plugin if high vulnerabilities exceed this\n */\n maxHigh: z.number().int().min(0).default(0),\n \n /**\n * Warn if medium vulnerabilities exceed this\n */\n maxMedium: z.number().int().min(0).default(5),\n }),\n \n /**\n * Allowed licenses\n */\n allowedLicenses: z.array(z.string()).default([\n 'MIT',\n 'Apache-2.0',\n 'BSD-3-Clause',\n 'BSD-2-Clause',\n 'ISC',\n ]),\n \n /**\n * Prohibited licenses\n */\n prohibitedLicenses: z.array(z.string()).default([\n 'GPL-3.0',\n 'AGPL-3.0',\n ]),\n \n /**\n * Code signing requirements\n */\n codeSigning: z.object({\n required: z.boolean().default(false),\n allowedSigners: z.array(z.string()).default([]),\n }).optional(),\n \n /**\n * Sandbox restrictions\n */\n sandbox: z.object({\n /**\n * Restrict network access\n */\n networkAccess: z.enum(['none', 'localhost', 'allowlist', 'all']).default('all'),\n \n /**\n * Allowed network destinations (if allowlist)\n */\n allowedDestinations: z.array(z.string()).default([]),\n \n /**\n * File system access\n */\n filesystemAccess: z.enum(['none', 'read-only', 'temp-only', 'full']).default('full'),\n \n /**\n * Maximum memory (MB)\n */\n maxMemoryMB: z.number().int().positive().optional(),\n \n /**\n * Maximum CPU time (seconds)\n */\n maxCPUSeconds: z.number().int().positive().optional(),\n }).optional(),\n});\n\nexport type SecurityPolicy = z.infer<typeof SecurityPolicySchema>;\n\n// ============================================================================\n// Dependency Resolution\n// ============================================================================\n\n/**\n * Package Dependency\n */\nexport const PackageDependencySchema = z.object({\n /**\n * Package name/ID\n */\n name: z.string(),\n \n /**\n * Version constraint (semver range)\n */\n versionConstraint: z.string().describe('Semver range (e.g., `^1.0.0`, `>=2.0.0 <3.0.0`)'),\n \n /**\n * Dependency type\n */\n type: z.enum(['required', 'optional', 'peer', 'dev']).default('required'),\n \n /**\n * Resolved version (filled during resolution)\n */\n resolvedVersion: z.string().optional(),\n});\n\nexport type PackageDependency = z.infer<typeof PackageDependencySchema>;\n\n/**\n * Dependency Graph Node\n */\nexport const DependencyGraphNodeSchema = z.object({\n /**\n * Package identifier\n */\n id: z.string(),\n \n /**\n * Package version\n */\n version: z.string(),\n \n /**\n * Dependencies of this package\n */\n dependencies: z.array(PackageDependencySchema).default([]),\n \n /**\n * Depth in dependency tree\n */\n depth: z.number().int().min(0),\n \n /**\n * Whether this is a direct dependency\n */\n isDirect: z.boolean(),\n \n /**\n * Package metadata\n */\n metadata: z.object({\n name: z.string(),\n description: z.string().optional(),\n license: z.string().optional(),\n homepage: z.string().url().optional(),\n }).optional(),\n});\n\nexport type DependencyGraphNode = z.infer<typeof DependencyGraphNodeSchema>;\n\n/**\n * Dependency Graph\n */\nexport const DependencyGraphSchema = z.object({\n /**\n * Root package\n */\n root: z.object({\n id: z.string(),\n version: z.string(),\n }),\n \n /**\n * All nodes in the graph\n */\n nodes: z.array(DependencyGraphNodeSchema),\n \n /**\n * Edges (dependency relationships)\n */\n edges: z.array(z.object({\n from: z.string().describe('Package ID'),\n to: z.string().describe('Package ID'),\n constraint: z.string().describe('Version constraint'),\n })),\n \n /**\n * Resolution statistics\n */\n stats: z.object({\n totalDependencies: z.number().int().min(0),\n directDependencies: z.number().int().min(0),\n maxDepth: z.number().int().min(0),\n }),\n});\n\nexport type DependencyGraph = z.infer<typeof DependencyGraphSchema>;\n\n/**\n * Dependency Conflict\n */\nexport const DependencyConflictSchema = z.object({\n /**\n * Package with conflict\n */\n package: z.string(),\n \n /**\n * Conflicting versions\n */\n conflicts: z.array(z.object({\n version: z.string(),\n requestedBy: z.array(z.string()).describe('Packages that require this version'),\n constraint: z.string(),\n })),\n \n /**\n * Suggested resolution\n */\n resolution: z.object({\n strategy: z.enum(['pick-highest', 'pick-lowest', 'manual']),\n version: z.string().optional(),\n reason: z.string().optional(),\n }).optional(),\n \n /**\n * Severity\n */\n severity: z.enum(['error', 'warning', 'info']),\n});\n\nexport type DependencyConflict = z.infer<typeof DependencyConflictSchema>;\n\n/**\n * Dependency Resolution Result\n */\nexport const DependencyResolutionResultSchema = z.object({\n /**\n * Resolution status\n */\n status: z.enum(['success', 'conflict', 'error']),\n \n /**\n * Resolved dependency graph\n */\n graph: DependencyGraphSchema.optional(),\n \n /**\n * Conflicts detected\n */\n conflicts: z.array(DependencyConflictSchema).default([]),\n \n /**\n * Errors encountered\n */\n errors: z.array(z.object({\n package: z.string(),\n error: z.string(),\n })).default([]),\n \n /**\n * Installation order (topological sort)\n */\n installOrder: z.array(z.string()).default([]),\n \n /**\n * Resolution time (ms)\n */\n resolvedIn: z.number().int().min(0).optional(),\n});\n\nexport type DependencyResolutionResult = z.infer<typeof DependencyResolutionResultSchema>;\n\n// ============================================================================\n// Supply Chain Security\n// ============================================================================\n\n/**\n * SBOM (Software Bill of Materials) Entry\n */\nexport const SBOMEntrySchema = z.object({\n /**\n * Component name\n */\n name: z.string(),\n \n /**\n * Component version\n */\n version: z.string(),\n \n /**\n * Package URL (purl)\n */\n purl: z.string().optional().describe('Package URL identifier'),\n \n /**\n * License\n */\n license: z.string().optional(),\n \n /**\n * Hashes\n */\n hashes: z.object({\n sha256: z.string().optional(),\n sha512: z.string().optional(),\n }).optional(),\n \n /**\n * Supplier\n */\n supplier: z.object({\n name: z.string(),\n url: z.string().url().optional(),\n }).optional(),\n \n /**\n * External references\n */\n externalRefs: z.array(z.object({\n type: z.enum(['website', 'repository', 'documentation', 'issue-tracker']),\n url: z.string().url(),\n })).default([]),\n});\n\nexport type SBOMEntry = z.infer<typeof SBOMEntrySchema>;\n\n/**\n * Software Bill of Materials (SBOM)\n */\nexport const SBOMSchema = z.object({\n /**\n * SBOM format\n */\n format: z.enum(['spdx', 'cyclonedx']).default('cyclonedx'),\n \n /**\n * SBOM version\n */\n version: z.string(),\n \n /**\n * Plugin metadata\n */\n plugin: z.object({\n id: z.string(),\n version: z.string(),\n name: z.string(),\n }),\n \n /**\n * Components (dependencies)\n */\n components: z.array(SBOMEntrySchema),\n \n /**\n * Generation timestamp\n */\n generatedAt: z.string().datetime(),\n \n /**\n * Generator tool\n */\n generator: z.object({\n name: z.string(),\n version: z.string(),\n }).optional(),\n});\n\nexport type SBOM = z.infer<typeof SBOMSchema>;\n\n/**\n * Plugin Provenance\n * Verifiable chain of custody for plugin artifacts\n */\nexport const PluginProvenanceSchema = z.object({\n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Plugin version\n */\n version: z.string(),\n \n /**\n * Build information\n */\n build: z.object({\n /**\n * Build timestamp\n */\n timestamp: z.string().datetime(),\n \n /**\n * Build environment\n */\n environment: z.object({\n os: z.string(),\n arch: z.string(),\n nodeVersion: z.string(),\n }).optional(),\n \n /**\n * Source repository\n */\n source: z.object({\n repository: z.string().url(),\n commit: z.string().regex(/^[a-f0-9]{40}$/),\n branch: z.string().optional(),\n tag: z.string().optional(),\n }).optional(),\n \n /**\n * Builder identity\n */\n builder: z.object({\n name: z.string(),\n email: z.string().email().optional(),\n }).optional(),\n }),\n \n /**\n * Artifact hashes\n */\n artifacts: z.array(z.object({\n filename: z.string(),\n sha256: z.string(),\n size: z.number().int().positive(),\n })),\n \n /**\n * Signatures\n */\n signatures: z.array(z.object({\n algorithm: z.enum(['rsa', 'ecdsa', 'ed25519']),\n publicKey: z.string(),\n signature: z.string(),\n signedBy: z.string(),\n timestamp: z.string().datetime(),\n })).default([]),\n \n /**\n * Attestations\n */\n attestations: z.array(z.object({\n type: z.enum(['code-review', 'security-scan', 'test-results', 'ci-build']),\n status: z.enum(['passed', 'failed']),\n url: z.string().url().optional(),\n timestamp: z.string().datetime(),\n })).default([]),\n});\n\nexport type PluginProvenance = z.infer<typeof PluginProvenanceSchema>;\n\n// ============================================================================\n// Trust & Verification\n// ============================================================================\n\n/**\n * Plugin Trust Score\n */\nexport const PluginTrustScoreSchema = z.object({\n /**\n * Plugin identifier\n */\n pluginId: z.string(),\n \n /**\n * Overall trust score (0-100)\n */\n score: z.number().min(0).max(100),\n \n /**\n * Score components\n */\n components: z.object({\n /**\n * Vendor reputation (0-100)\n */\n vendorReputation: z.number().min(0).max(100),\n \n /**\n * Security scan results (0-100)\n */\n securityScore: z.number().min(0).max(100),\n \n /**\n * Code quality (0-100)\n */\n codeQuality: z.number().min(0).max(100),\n \n /**\n * Community engagement (0-100)\n */\n communityScore: z.number().min(0).max(100),\n \n /**\n * Update frequency (0-100)\n */\n maintenanceScore: z.number().min(0).max(100),\n }),\n \n /**\n * Trust level\n */\n level: z.enum(['verified', 'trusted', 'neutral', 'untrusted', 'blocked']),\n \n /**\n * Verification badges\n */\n badges: z.array(z.enum([\n 'official', // Official ObjectStack plugin\n 'verified-vendor', // Verified vendor\n 'security-scanned', // Passed security scan\n 'code-signed', // Digitally signed\n 'open-source', // Open source\n 'popular', // High downloads\n ])).default([]),\n \n /**\n * Last updated\n */\n updatedAt: z.string().datetime(),\n});\n\nexport type PluginTrustScore = z.infer<typeof PluginTrustScoreSchema>;\n\n// ============================================================================\n// Export All\n// ============================================================================\n\nexport const PluginSecurityProtocol = {\n VulnerabilitySeverity,\n SecurityVulnerability: SecurityVulnerabilitySchema,\n SecurityScanResult: SecurityScanResultSchema,\n SecurityPolicy: SecurityPolicySchema,\n PackageDependency: PackageDependencySchema,\n DependencyGraphNode: DependencyGraphNodeSchema,\n DependencyGraph: DependencyGraphSchema,\n DependencyConflict: DependencyConflictSchema,\n DependencyResolutionResult: DependencyResolutionResultSchema,\n SBOMEntry: SBOMEntrySchema,\n SBOM: SBOMSchema,\n PluginProvenance: PluginProvenanceSchema,\n PluginTrustScore: PluginTrustScoreSchema,\n} as const;\n","import { z } from 'zod';\nimport { HttpMethod } from '../shared/http.zod';\n\n/**\n * REST API Server Protocol\n * \n * Defines the REST API server configuration for automatically generating\n * RESTful CRUD endpoints, metadata endpoints, and batch operations.\n * \n * Features:\n * - Automatic CRUD endpoint generation from Object definitions\n * - Standard REST conventions (GET, POST, PUT, PATCH, DELETE)\n * - Metadata API endpoints\n * - Batch operation endpoints\n * - OpenAPI/Swagger documentation generation\n * \n * Architecture alignment:\n * - Salesforce: REST API with Object CRUD\n * - Microsoft Dynamics: Web API with entity operations\n * - Strapi: Auto-generated REST endpoints\n */\n\n// ==========================================\n// REST API Configuration\n// ==========================================\n\n/**\n * REST API Configuration Schema\n * Core configuration for REST API server\n * \n * @example\n * {\n * \"version\": \"v1\",\n * \"basePath\": \"/api\",\n * \"enableCrud\": true,\n * \"enableMetadata\": true,\n * \"enableBatch\": true,\n * \"documentation\": {\n * \"enabled\": true,\n * \"title\": \"ObjectStack API\"\n * }\n * }\n */\nexport const RestApiConfigSchema = z.object({\n /**\n * API version identifier\n */\n version: z.string().regex(/^[a-zA-Z0-9_\\-\\.]+$/).default('v1').describe('API version (e.g., v1, v2, 2024-01)'),\n \n /**\n * Base path for all API routes\n */\n basePath: z.string().default('/api').describe('Base URL path for API'),\n \n /**\n * Full API path (combines basePath and version)\n */\n apiPath: z.string().optional().describe('Full API path (defaults to {basePath}/{version})'),\n \n /**\n * Enable automatic CRUD endpoints\n */\n enableCrud: z.boolean().default(true).describe('Enable automatic CRUD endpoint generation'),\n \n /**\n * Enable metadata endpoints\n */\n enableMetadata: z.boolean().default(true).describe('Enable metadata API endpoints'),\n \n /**\n * Enable batch operation endpoints\n */\n enableBatch: z.boolean().default(true).describe('Enable batch operation endpoints'),\n \n /**\n * Enable discovery endpoint\n */\n enableDiscovery: z.boolean().default(true).describe('Enable API discovery endpoint'),\n \n /**\n * API documentation configuration\n */\n documentation: z.object({\n enabled: z.boolean().default(true).describe('Enable API documentation'),\n title: z.string().default('ObjectStack API').describe('API documentation title'),\n description: z.string().optional().describe('API description'),\n version: z.string().optional().describe('Documentation version'),\n termsOfService: z.string().optional().describe('Terms of service URL'),\n contact: z.object({\n name: z.string().optional(),\n url: z.string().optional(),\n email: z.string().optional(),\n }).optional(),\n license: z.object({\n name: z.string(),\n url: z.string().optional(),\n }).optional(),\n }).optional().describe('OpenAPI/Swagger documentation config'),\n \n /**\n * Response format configuration\n */\n responseFormat: z.object({\n envelope: z.boolean().default(true).describe('Wrap responses in standard envelope'),\n includeMetadata: z.boolean().default(true).describe('Include response metadata (timestamp, requestId)'),\n includePagination: z.boolean().default(true).describe('Include pagination info in list responses'),\n }).optional().describe('Response format options'),\n});\n\nexport type RestApiConfig = z.infer<typeof RestApiConfigSchema>;\n\n// ==========================================\n// CRUD Endpoint Configuration\n// ==========================================\n\n/**\n * CRUD Operation Type Enum\n */\nexport const CrudOperation = z.enum([\n 'create', // POST /api/v1/data/{object}\n 'read', // GET /api/v1/data/{object}/:id\n 'update', // PATCH /api/v1/data/{object}/:id\n 'delete', // DELETE /api/v1/data/{object}/:id\n 'list', // GET /api/v1/data/{object}\n]);\n\nexport type CrudOperation = z.infer<typeof CrudOperation>;\n\n/**\n * CRUD Endpoint Pattern Schema\n * Defines the URL pattern for CRUD operations\n * \n * @example\n * {\n * \"create\": { \"method\": \"POST\", \"path\": \"/data/{object}\" },\n * \"read\": { \"method\": \"GET\", \"path\": \"/data/{object}/:id\" },\n * \"update\": { \"method\": \"PATCH\", \"path\": \"/data/{object}/:id\" },\n * \"delete\": { \"method\": \"DELETE\", \"path\": \"/data/{object}/:id\" },\n * \"list\": { \"method\": \"GET\", \"path\": \"/data/{object}\" }\n * }\n */\nexport const CrudEndpointPatternSchema = z.object({\n /**\n * HTTP method\n */\n method: HttpMethod.describe('HTTP method'),\n \n /**\n * URL path pattern (relative to API base)\n */\n path: z.string().describe('URL path pattern'),\n \n /**\n * Operation summary for documentation\n */\n summary: z.string().optional().describe('Operation summary'),\n \n /**\n * Operation description\n */\n description: z.string().optional().describe('Operation description'),\n});\n\nexport type CrudEndpointPattern = z.infer<typeof CrudEndpointPatternSchema>;\n\n/**\n * CRUD Endpoints Configuration Schema\n * Configuration for automatic CRUD endpoint generation\n */\nexport const CrudEndpointsConfigSchema = z.object({\n /**\n * Enable/disable specific CRUD operations\n */\n operations: z.object({\n create: z.boolean().default(true).describe('Enable create operation'),\n read: z.boolean().default(true).describe('Enable read operation'),\n update: z.boolean().default(true).describe('Enable update operation'),\n delete: z.boolean().default(true).describe('Enable delete operation'),\n list: z.boolean().default(true).describe('Enable list operation'),\n }).optional().describe('Enable/disable operations'),\n \n /**\n * Custom endpoint patterns (override defaults)\n */\n patterns: z.record(CrudOperation, CrudEndpointPatternSchema.optional()).optional()\n .describe('Custom URL patterns for operations'),\n \n /**\n * Path prefix for data operations\n */\n dataPrefix: z.string().default('/data').describe('URL prefix for data endpoints'),\n \n /**\n * Object name parameter style\n */\n objectParamStyle: z.enum(['path', 'query']).default('path')\n .describe('How object name is passed (path param or query param)'),\n});\n\nexport type CrudEndpointsConfig = z.infer<typeof CrudEndpointsConfigSchema>;\n\n// ==========================================\n// Metadata Endpoint Configuration\n// ==========================================\n\n/**\n * Metadata Endpoint Configuration Schema\n * Configuration for metadata API endpoints\n * \n * @example\n * {\n * \"prefix\": \"/meta\",\n * \"enableCache\": true,\n * \"endpoints\": {\n * \"types\": true,\n * \"objects\": true,\n * \"fields\": true\n * }\n * }\n */\nexport const MetadataEndpointsConfigSchema = z.object({\n /**\n * Path prefix for metadata operations\n */\n prefix: z.string().default('/meta').describe('URL prefix for metadata endpoints'),\n \n /**\n * Enable HTTP caching for metadata\n */\n enableCache: z.boolean().default(true).describe('Enable HTTP cache headers (ETag, Last-Modified)'),\n \n /**\n * Cache TTL in seconds\n */\n cacheTtl: z.number().int().default(3600).describe('Cache TTL in seconds'),\n \n /**\n * Enable specific metadata endpoints\n */\n endpoints: z.object({\n types: z.boolean().default(true).describe('GET /meta - List all metadata types'),\n items: z.boolean().default(true).describe('GET /meta/:type - List items of type'),\n item: z.boolean().default(true).describe('GET /meta/:type/:name - Get specific item'),\n schema: z.boolean().default(true).describe('GET /meta/:type/:name/schema - Get JSON schema'),\n }).optional().describe('Enable/disable specific endpoints'),\n});\n\nexport type MetadataEndpointsConfig = z.infer<typeof MetadataEndpointsConfigSchema>;\n\n// ==========================================\n// Batch Operation Endpoint Configuration\n// ==========================================\n\n/**\n * Batch Operation Endpoint Configuration Schema\n * Configuration for batch/bulk operation endpoints\n * \n * @example\n * {\n * \"maxBatchSize\": 200,\n * \"enableBatchEndpoint\": true,\n * \"enableCreateMany\": true,\n * \"enableUpdateMany\": true,\n * \"enableDeleteMany\": true\n * }\n */\nexport const BatchEndpointsConfigSchema = z.object({\n /**\n * Maximum batch size\n */\n maxBatchSize: z.number().int().min(1).max(1000).default(200)\n .describe('Maximum records per batch operation'),\n \n /**\n * Enable generic batch endpoint\n */\n enableBatchEndpoint: z.boolean().default(true)\n .describe('Enable POST /data/:object/batch endpoint'),\n \n /**\n * Enable specific batch operations\n */\n operations: z.object({\n createMany: z.boolean().default(true).describe('Enable POST /data/:object/createMany'),\n updateMany: z.boolean().default(true).describe('Enable POST /data/:object/updateMany'),\n deleteMany: z.boolean().default(true).describe('Enable POST /data/:object/deleteMany'),\n upsertMany: z.boolean().default(true).describe('Enable POST /data/:object/upsertMany'),\n }).optional().describe('Enable/disable specific batch operations'),\n \n /**\n * Transaction mode default\n */\n defaultAtomic: z.boolean().default(true)\n .describe('Default atomic/transaction mode for batch operations'),\n});\n\nexport type BatchEndpointsConfig = z.infer<typeof BatchEndpointsConfigSchema>;\n\n// ==========================================\n// Route Generation Configuration\n// ==========================================\n\n/**\n * Route Generation Configuration Schema\n * Controls automatic route generation for objects\n */\nexport const RouteGenerationConfigSchema = z.object({\n /**\n * Objects to include (if empty, include all)\n */\n includeObjects: z.array(z.string()).optional()\n .describe('Specific objects to generate routes for (empty = all)'),\n \n /**\n * Objects to exclude\n */\n excludeObjects: z.array(z.string()).optional()\n .describe('Objects to exclude from route generation'),\n \n /**\n * Object name transformations\n */\n nameTransform: z.enum(['none', 'plural', 'kebab-case', 'camelCase']).default('none')\n .describe('Transform object names in URLs'),\n \n /**\n * Custom route overrides per object\n */\n overrides: z.record(z.string(), z.object({\n enabled: z.boolean().optional().describe('Enable/disable routes for this object'),\n basePath: z.string().optional().describe('Custom base path'),\n operations: z.record(CrudOperation, z.boolean()).optional()\n .describe('Enable/disable specific operations'),\n })).optional().describe('Per-object route customization'),\n});\n\nexport type RouteGenerationConfig = z.infer<typeof RouteGenerationConfigSchema>;\n\n// ==========================================\n// Complete REST Server Configuration\n// ==========================================\n\n/**\n * REST Server Configuration Schema\n * Complete configuration for REST API server with auto-generated endpoints\n * \n * @example\n * {\n * \"api\": {\n * \"version\": \"v1\",\n * \"basePath\": \"/api\",\n * \"enableCrud\": true,\n * \"enableMetadata\": true,\n * \"enableBatch\": true\n * },\n * \"crud\": {\n * \"dataPrefix\": \"/data\"\n * },\n * \"metadata\": {\n * \"prefix\": \"/meta\",\n * \"enableCache\": true\n * },\n * \"batch\": {\n * \"maxBatchSize\": 200\n * },\n * \"routes\": {\n * \"excludeObjects\": [\"system_log\"]\n * }\n * }\n */\nexport const RestServerConfigSchema = z.object({\n /**\n * API configuration\n */\n api: RestApiConfigSchema.optional().describe('REST API configuration'),\n \n /**\n * CRUD endpoints configuration\n */\n crud: CrudEndpointsConfigSchema.optional().describe('CRUD endpoints configuration'),\n \n /**\n * Metadata endpoints configuration\n */\n metadata: MetadataEndpointsConfigSchema.optional().describe('Metadata endpoints configuration'),\n \n /**\n * Batch endpoints configuration\n */\n batch: BatchEndpointsConfigSchema.optional().describe('Batch endpoints configuration'),\n \n /**\n * Route generation configuration\n */\n routes: RouteGenerationConfigSchema.optional().describe('Route generation configuration'),\n});\n\nexport type RestServerConfig = z.infer<typeof RestServerConfigSchema>;\n\n// ==========================================\n// Endpoint Registry\n// ==========================================\n\n/**\n * Generated Endpoint Schema\n * Represents a generated REST endpoint\n */\nexport const GeneratedEndpointSchema = z.object({\n /**\n * Endpoint identifier\n */\n id: z.string().describe('Unique endpoint identifier'),\n \n /**\n * HTTP method\n */\n method: HttpMethod.describe('HTTP method'),\n \n /**\n * Full URL path\n */\n path: z.string().describe('Full URL path'),\n \n /**\n * Object this endpoint operates on\n */\n object: z.string().describe('Object name (snake_case)'),\n \n /**\n * Operation type\n */\n operation: z.union([CrudOperation, z.string()]).describe('Operation type'),\n \n /**\n * Handler reference\n */\n handler: z.string().describe('Handler function identifier'),\n \n /**\n * Endpoint metadata\n */\n metadata: z.object({\n summary: z.string().optional(),\n description: z.string().optional(),\n tags: z.array(z.string()).optional(),\n deprecated: z.boolean().optional(),\n }).optional(),\n});\n\nexport type GeneratedEndpoint = z.infer<typeof GeneratedEndpointSchema>;\n\n/**\n * Endpoint Registry Schema\n * Registry of all generated endpoints\n */\nexport const EndpointRegistrySchema = z.object({\n /**\n * Generated endpoints\n */\n endpoints: z.array(GeneratedEndpointSchema).describe('All generated endpoints'),\n \n /**\n * Total endpoint count\n */\n total: z.number().int().describe('Total number of endpoints'),\n \n /**\n * Endpoints by object\n */\n byObject: z.record(z.string(), z.array(GeneratedEndpointSchema)).optional()\n .describe('Endpoints grouped by object'),\n \n /**\n * Endpoints by operation\n */\n byOperation: z.record(z.string(), z.array(GeneratedEndpointSchema)).optional()\n .describe('Endpoints grouped by operation'),\n});\n\nexport type EndpointRegistry = z.infer<typeof EndpointRegistrySchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Helper to create REST API configuration\n */\nexport const RestApiConfig = Object.assign(RestApiConfigSchema, {\n create: <T extends z.input<typeof RestApiConfigSchema>>(config: T) => config,\n});\n\n/**\n * Helper to create REST server configuration\n */\nexport const RestServerConfig = Object.assign(RestServerConfigSchema, {\n create: <T extends z.input<typeof RestServerConfigSchema>>(config: T) => config,\n});\n","import { z } from 'zod';\nimport { HttpMethod, RateLimitConfigSchema } from '../shared/http.zod';\nimport { SnakeCaseIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * Unified API Registry Protocol\n * \n * Provides a centralized registry for managing all API endpoints across different\n * API types (REST, GraphQL, OData, WebSocket, Auth, File, Plugin-registered).\n * \n * This enables:\n * - Unified API discovery and documentation (similar to Swagger/OpenAPI)\n * - API testing interfaces\n * - API governance and monitoring\n * - Plugin API registration\n * - Multi-protocol support\n * \n * Architecture Alignment:\n * - Kubernetes: Service Discovery & API Server\n * - AWS API Gateway: Unified API Management\n * - Kong Gateway: Plugin-based API Management\n * \n * @example API Registry Entry\n * ```typescript\n * const apiEntry: ApiRegistryEntry = {\n * id: 'customer_crud',\n * name: 'Customer CRUD API',\n * type: 'rest',\n * version: 'v1',\n * basePath: '/api/v1/data/customer',\n * endpoints: [...],\n * metadata: {\n * owner: 'sales_team',\n * tags: ['customer', 'crm']\n * }\n * }\n * ```\n */\n\n// ==========================================\n// API Type Enumeration\n// ==========================================\n\n/**\n * API Protocol Type\n * \n * Defines the different types of APIs supported by ObjectStack.\n */\nexport const ApiProtocolType = z.enum([\n 'rest', // RESTful API (CRUD operations)\n 'graphql', // GraphQL API (flexible queries)\n 'odata', // OData v4 API (enterprise integration)\n 'websocket', // WebSocket API (real-time)\n 'file', // File/Storage API (uploads/downloads)\n 'auth', // Authentication/Authorization API\n 'metadata', // Metadata/Schema API\n 'plugin', // Plugin-registered custom API\n 'webhook', // Webhook endpoints\n 'rpc', // JSON-RPC or similar\n]);\n\nexport type ApiProtocolType = z.infer<typeof ApiProtocolType>;\n\n// ==========================================\n// API Endpoint Registration\n// ==========================================\n\n/**\n * HTTP Status Code\n */\nexport const HttpStatusCode = z.union([\n z.number().int().min(100).max(599),\n z.enum(['2xx', '3xx', '4xx', '5xx']), // Pattern matching\n]);\n\nexport type HttpStatusCode = z.infer<typeof HttpStatusCode>;\n\n// ==========================================\n// Schema Reference Types\n// ==========================================\n\n/**\n * ObjectQL Reference Schema\n * \n * Allows referencing ObjectStack data objects instead of static JSON schemas.\n * When an API parameter or response references an ObjectQL object, the schema\n * is dynamically derived from the object definition, enabling automatic updates\n * when the object schema changes.\n * \n * **IMPORTANT - Schema Resolution Responsibility:**\n * The API Registry STORES these references as metadata but does NOT resolve them.\n * Schema resolution (expanding references into actual JSON Schema) is performed by:\n * - **API Gateway**: For runtime request/response validation\n * - **OpenAPI Generator**: For Swagger/OpenAPI documentation\n * - **GraphQL Schema Builder**: For GraphQL type generation\n * - **Documentation Tools**: For developer documentation\n * \n * This separation allows the Registry to remain lightweight and focused on\n * registration/discovery, while specialized tools handle schema transformation.\n * \n * **Benefits:**\n * - Auto-updating API documentation when object schemas change\n * - Consistent type definitions across API and database\n * - Reduced duplication and maintenance\n * - Registry remains protocol-agnostic and lightweight\n * \n * @example Reference Customer object\n * ```json\n * {\n * \"objectId\": \"customer\",\n * \"includeFields\": [\"id\", \"name\", \"email\"],\n * \"excludeFields\": [\"internal_notes\"]\n * }\n * ```\n */\nexport const ObjectQLReferenceSchema = z.object({\n /** Referenced object name (snake_case) */\n objectId: SnakeCaseIdentifierSchema.describe('Object name to reference'),\n \n /** Include only specific fields (optional) */\n includeFields: z.array(z.string()).optional()\n .describe('Include only these fields in the schema'),\n \n /** Exclude specific fields (optional) */\n excludeFields: z.array(z.string()).optional()\n .describe('Exclude these fields from the schema'),\n \n /** Include related objects via lookup fields */\n includeRelated: z.array(z.string()).optional()\n .describe('Include related objects via lookup fields'),\n});\n\nexport type ObjectQLReference = z.infer<typeof ObjectQLReferenceSchema>;\n\n/**\n * Schema Definition\n * \n * Unified schema definition that supports both:\n * 1. Static JSON Schema (traditional approach)\n * 2. Dynamic ObjectQL reference (linked to object definitions)\n * \n * When using ObjectQL references, the API documentation and validation\n * automatically update when object schemas change, eliminating the need\n * to manually sync API schemas with data models.\n */\nexport const SchemaDefinition = z.union([\n z.any().describe('Static JSON Schema definition'),\n z.object({\n $ref: ObjectQLReferenceSchema.describe('Dynamic reference to ObjectQL object'),\n }).describe('Dynamic ObjectQL reference'),\n]);\n\nexport type SchemaDefinition = z.infer<typeof SchemaDefinition>;\n\n// ==========================================\n// API Parameter & Response Schemas\n// ==========================================\n\n/**\n * API Parameter Schema\n * \n * Defines a single API parameter (path, query, header, or body).\n * \n * **Enhancement: Dynamic Schema Linking**\n * - Supports both static JSON Schema and dynamic ObjectQL references\n * - When using ObjectQL references, parameter validation automatically updates\n * when the referenced object schema changes\n * \n * @example Static schema\n * ```json\n * {\n * \"name\": \"customer_id\",\n * \"in\": \"path\",\n * \"schema\": {\n * \"type\": \"string\",\n * \"format\": \"uuid\"\n * }\n * }\n * ```\n * \n * @example Dynamic ObjectQL reference\n * ```json\n * {\n * \"name\": \"customer\",\n * \"in\": \"body\",\n * \"schema\": {\n * \"$ref\": {\n * \"objectId\": \"customer\",\n * \"excludeFields\": [\"internal_notes\"]\n * }\n * }\n * }\n * ```\n */\nexport const ApiParameterSchema = z.object({\n /** Parameter name */\n name: z.string().describe('Parameter name'),\n \n /** Parameter location */\n in: z.enum(['path', 'query', 'header', 'body', 'cookie']).describe('Parameter location'),\n \n /** Parameter description */\n description: z.string().optional().describe('Parameter description'),\n \n /** Required flag */\n required: z.boolean().default(false).describe('Whether parameter is required'),\n \n /** Parameter type/schema - supports static or dynamic (ObjectQL) schemas */\n schema: z.union([\n z.object({\n type: z.enum(['string', 'number', 'integer', 'boolean', 'array', 'object']).describe('Parameter type'),\n format: z.string().optional().describe('Format (e.g., date-time, email, uuid)'),\n enum: z.array(z.any()).optional().describe('Allowed values'),\n default: z.any().optional().describe('Default value'),\n items: z.any().optional().describe('Array item schema'),\n properties: z.record(z.string(), z.any()).optional().describe('Object properties'),\n }).describe('Static JSON Schema'),\n z.object({\n $ref: ObjectQLReferenceSchema,\n }).describe('Dynamic ObjectQL reference'),\n ]).describe('Parameter schema definition'),\n \n /** Example value */\n example: z.any().optional().describe('Example value'),\n});\n\nexport type ApiParameter = z.infer<typeof ApiParameterSchema>;\n\n/**\n * API Response Schema\n * \n * Defines an API response for a specific status code.\n * \n * **Enhancement: Dynamic Schema Linking**\n * - Response schema can reference ObjectQL objects\n * - When object definitions change, response documentation auto-updates\n * \n * @example Response with ObjectQL reference\n * ```json\n * {\n * \"statusCode\": 200,\n * \"description\": \"Customer retrieved successfully\",\n * \"schema\": {\n * \"$ref\": {\n * \"objectId\": \"customer\",\n * \"excludeFields\": [\"password_hash\"]\n * }\n * }\n * }\n * ```\n */\nexport const ApiResponseSchema = z.object({\n /** HTTP status code */\n statusCode: HttpStatusCode.describe('HTTP status code'),\n \n /** Response description */\n description: z.string().describe('Response description'),\n \n /** Response content type */\n contentType: z.string().default('application/json').describe('Response content type'),\n \n /** Response schema - supports static or dynamic (ObjectQL) schemas */\n schema: z.union([\n z.any().describe('Static JSON Schema'),\n z.object({\n $ref: ObjectQLReferenceSchema,\n }).describe('Dynamic ObjectQL reference'),\n ]).optional().describe('Response body schema'),\n \n /** Response headers */\n headers: z.record(z.string(), z.object({\n description: z.string().optional(),\n schema: z.any(),\n })).optional().describe('Response headers'),\n \n /** Example response */\n example: z.any().optional().describe('Example response'),\n});\n\nexport type ApiResponse = z.infer<typeof ApiResponseSchema>;\nexport type ApiResponseInput = z.input<typeof ApiResponseSchema>;\n\n/**\n * API Endpoint Registration Schema\n * \n * Represents a single API endpoint registration with complete metadata.\n * \n * **Enhancements:**\n * 1. **RBAC Integration**: `requiredPermissions` field for automatic permission checking\n * 2. **Dynamic Schema Linking**: Parameters and responses can reference ObjectQL objects\n * 3. **Route Priority**: `priority` field for conflict resolution\n * 4. **Protocol Config**: `protocolConfig` for protocol-specific extensions\n * \n * @example REST Endpoint with RBAC\n * ```json\n * {\n * \"id\": \"get_customer_by_id\",\n * \"method\": \"GET\",\n * \"path\": \"/api/v1/data/customer/:id\",\n * \"summary\": \"Get customer by ID\",\n * \"requiredPermissions\": [\"customer.read\"],\n * \"parameters\": [\n * {\n * \"name\": \"id\",\n * \"in\": \"path\",\n * \"required\": true,\n * \"schema\": { \"type\": \"string\" }\n * }\n * ],\n * \"responses\": [\n * {\n * \"statusCode\": 200,\n * \"description\": \"Customer found\",\n * \"schema\": {\n * \"$ref\": {\n * \"objectId\": \"customer\"\n * }\n * }\n * }\n * ],\n * \"priority\": 100\n * }\n * ```\n * \n * @example Plugin Endpoint with Protocol Config\n * ```json\n * {\n * \"id\": \"grpc_service_method\",\n * \"path\": \"/grpc/ServiceName/MethodName\",\n * \"summary\": \"gRPC service method\",\n * \"protocolConfig\": {\n * \"subProtocol\": \"grpc\",\n * \"serviceName\": \"CustomerService\",\n * \"methodName\": \"GetCustomer\"\n * },\n * \"priority\": 50\n * }\n * ```\n */\nexport const ApiEndpointRegistrationSchema = z.object({\n /** Unique endpoint identifier */\n id: z.string().describe('Unique endpoint identifier'),\n \n /** HTTP method (for HTTP-based APIs) */\n method: HttpMethod.optional().describe('HTTP method'),\n \n /** URL path pattern */\n path: z.string().describe('URL path pattern'),\n \n /** Short summary */\n summary: z.string().optional().describe('Short endpoint summary'),\n \n /** Detailed description */\n description: z.string().optional().describe('Detailed endpoint description'),\n \n /** Operation ID (OpenAPI) */\n operationId: z.string().optional().describe('Unique operation identifier'),\n \n /** Tags for grouping */\n tags: z.array(z.string()).optional().default([]).describe('Tags for categorization'),\n \n /** Parameters */\n parameters: z.array(ApiParameterSchema).optional().default([]).describe('Endpoint parameters'),\n \n /** Request body schema */\n requestBody: z.object({\n description: z.string().optional(),\n required: z.boolean().default(false),\n contentType: z.string().default('application/json'),\n schema: z.any().optional(),\n example: z.any().optional(),\n }).optional().describe('Request body specification'),\n \n /** Response definitions */\n responses: z.array(ApiResponseSchema).optional().default([]).describe('Possible responses'),\n \n /** Rate Limiting */\n rateLimit: RateLimitConfigSchema.optional().describe('Endpoint specific rate limiting'),\n\n /** Security Requirements */\n security: z.array(z.record(z.string(), z.array(z.string()))).optional().describe('Security requirements (e.g. [{\"bearerAuth\": []}])'),\n \n /**\n * Required Permissions (RBAC Integration)\n * \n * Array of permission names required to access this endpoint.\n * The gateway layer automatically validates these permissions before\n * allowing the request to proceed, eliminating the need for permission\n * checks in individual API handlers.\n * \n * **Format:** `<object>.<operation>` or system permission name\n * \n * **Object Permissions:**\n * - `customer.read` - Read customer records\n * - `customer.create` - Create customer records\n * - `customer.edit` - Update customer records\n * - `customer.delete` - Delete customer records\n * - `customer.viewAll` - View all customer records (bypass sharing)\n * - `customer.modifyAll` - Modify all customer records (bypass sharing)\n * \n * **System Permissions:**\n * - `manage_users` - User management\n * - `view_setup` - Access to system setup\n * - `customize_application` - Modify metadata\n * - `api_enabled` - API access\n * \n * @example Object-level permissions\n * ```json\n * {\n * \"requiredPermissions\": [\"customer.read\"]\n * }\n * ```\n * \n * @example Multiple permissions (ALL required)\n * ```json\n * {\n * \"requiredPermissions\": [\"customer.read\", \"account.read\"]\n * }\n * ```\n * \n * @example System permission\n * ```json\n * {\n * \"requiredPermissions\": [\"manage_users\"]\n * }\n * ```\n * \n * @see {@link file://../../permission/permission.zod.ts} for permission definitions\n */\n requiredPermissions: z.array(z.string()).optional().default([])\n .describe('Required RBAC permissions (e.g., \"customer.read\", \"manage_users\")'),\n \n /**\n * Route Priority\n * \n * Priority level for route conflict resolution. Higher priority routes\n * are registered first and take precedence when multiple routes match\n * the same path pattern.\n * \n * **Default:** 100 (medium priority)\n * **Range:** 0-1000 (higher = more important)\n * \n * **Use Cases:**\n * - Core system APIs: 900-1000\n * - Plugin APIs: 100-500\n * - Custom/override APIs: 500-900\n * - Fallback routes: 0-100\n * \n * @example High priority core endpoint\n * ```json\n * {\n * \"path\": \"/api/v1/data/:object/:id\",\n * \"priority\": 950\n * }\n * ```\n * \n * @example Medium priority plugin endpoint\n * ```json\n * {\n * \"path\": \"/api/v1/custom/action\",\n * \"priority\": 300\n * }\n * ```\n */\n priority: z.number().int().min(0).max(1000).optional().default(100)\n .describe('Route priority for conflict resolution (0-1000, higher = more important)'),\n \n /**\n * Protocol-Specific Configuration\n * \n * Allows plugins and custom APIs to define protocol-specific metadata\n * that can be used for specialized handling or documentation generation.\n * \n * **Examples:**\n * - gRPC: Service and method names\n * - tRPC: Procedure type (query/mutation)\n * - WebSocket: Event names and handlers\n * - Custom protocols: Any metadata needed\n * \n * @example gRPC configuration\n * ```json\n * {\n * \"protocolConfig\": {\n * \"subProtocol\": \"grpc\",\n * \"serviceName\": \"CustomerService\",\n * \"methodName\": \"GetCustomer\",\n * \"streaming\": false\n * }\n * }\n * ```\n * \n * @example tRPC configuration\n * ```json\n * {\n * \"protocolConfig\": {\n * \"subProtocol\": \"trpc\",\n * \"procedureType\": \"query\",\n * \"router\": \"customer\"\n * }\n * }\n * ```\n * \n * @example WebSocket configuration\n * ```json\n * {\n * \"protocolConfig\": {\n * \"subProtocol\": \"websocket\",\n * \"eventName\": \"customer.updated\",\n * \"direction\": \"server-to-client\"\n * }\n * }\n * ```\n */\n protocolConfig: z.record(z.string(), z.any()).optional()\n .describe('Protocol-specific configuration for custom protocols (gRPC, tRPC, etc.)'),\n \n /** Deprecation flag */\n deprecated: z.boolean().default(false).describe('Whether endpoint is deprecated'),\n \n /** External documentation */\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional().describe('External documentation link'),\n});\n\nexport type ApiEndpointRegistration = z.infer<typeof ApiEndpointRegistrationSchema>;\nexport type ApiEndpointRegistrationInput = z.input<typeof ApiEndpointRegistrationSchema>;\n\n// ==========================================\n// API Registry Entry\n// ==========================================\n\n/**\n * API Metadata Schema\n * \n * Additional metadata for an API registration.\n */\nexport const ApiMetadataSchema = z.object({\n /** API owner/team */\n owner: z.string().optional().describe('Owner team or person'),\n \n /** API status */\n status: z.enum(['active', 'deprecated', 'experimental', 'beta']).default('active')\n .describe('API lifecycle status'),\n \n /** Categorization tags */\n tags: z.array(z.string()).optional().default([]).describe('Classification tags'),\n \n /** Plugin source (if plugin-registered) */\n pluginSource: z.string().optional().describe('Source plugin name'),\n \n /** Custom metadata */\n custom: z.record(z.string(), z.any()).optional().describe('Custom metadata fields'),\n});\n\nexport type ApiMetadata = z.infer<typeof ApiMetadataSchema>;\nexport type ApiMetadataInput = z.input<typeof ApiMetadataSchema>;\n\n/**\n * API Registry Entry Schema\n * \n * Complete registration entry for an API in the unified registry.\n * \n * @example REST API Entry\n * ```json\n * {\n * \"id\": \"customer_api\",\n * \"name\": \"Customer Management API\",\n * \"type\": \"rest\",\n * \"version\": \"v1\",\n * \"basePath\": \"/api/v1/data/customer\",\n * \"description\": \"CRUD operations for customer records\",\n * \"endpoints\": [...],\n * \"metadata\": {\n * \"owner\": \"sales_team\",\n * \"status\": \"active\",\n * \"tags\": [\"customer\", \"crm\"]\n * }\n * }\n * ```\n * \n * @example Plugin API Entry\n * ```json\n * {\n * \"id\": \"payment_webhook\",\n * \"name\": \"Payment Webhook API\",\n * \"type\": \"plugin\",\n * \"version\": \"1.0.0\",\n * \"basePath\": \"/plugins/payment/webhook\",\n * \"endpoints\": [...],\n * \"metadata\": {\n * \"pluginSource\": \"payment_gateway_plugin\",\n * \"status\": \"active\"\n * }\n * }\n * ```\n */\nexport const ApiRegistryEntrySchema = z.object({\n /** Unique API identifier */\n id: z.string().regex(/^[a-z_][a-z0-9_]*$/).describe('Unique API identifier (snake_case)'),\n \n /** Human-readable name */\n name: z.string().describe('API display name'),\n \n /** API protocol type */\n type: ApiProtocolType.describe('API protocol type'),\n \n /** API version */\n version: z.string().describe('API version (e.g., v1, 2024-01)'),\n \n /** Base URL path */\n basePath: z.string().describe('Base URL path for this API'),\n \n /** API description */\n description: z.string().optional().describe('API description'),\n \n /** Endpoints in this API */\n endpoints: z.array(ApiEndpointRegistrationSchema).describe('Registered endpoints'),\n \n /** OpenAPI/GraphQL/OData specific configuration */\n config: z.record(z.string(), z.any()).optional().describe('Protocol-specific configuration'),\n \n /** API metadata */\n metadata: ApiMetadataSchema.optional().describe('Additional metadata'),\n \n /** Terms of service URL */\n termsOfService: z.string().url().optional().describe('Terms of service URL'),\n \n /** Contact information */\n contact: z.object({\n name: z.string().optional(),\n url: z.string().url().optional(),\n email: z.string().email().optional(),\n }).optional().describe('Contact information'),\n \n /** License information */\n license: z.object({\n name: z.string(),\n url: z.string().url().optional(),\n }).optional().describe('License information'),\n});\n\nexport type ApiRegistryEntry = z.infer<typeof ApiRegistryEntrySchema>;\nexport type ApiRegistryEntryInput = z.input<typeof ApiRegistryEntrySchema>;\n\n// ==========================================\n// API Registry\n// ==========================================\n\n/**\n * Route Conflict Resolution Strategy\n * \n * Defines how to handle conflicts when multiple endpoints register\n * the same or overlapping URL patterns.\n */\nexport const ConflictResolutionStrategy = z.enum([\n 'error', // Throw error on conflict (safest, default)\n 'priority', // Use priority field to resolve (highest priority wins)\n 'first-wins', // First registered endpoint wins\n 'last-wins', // Last registered endpoint wins (override mode)\n]);\n\nexport type ConflictResolutionStrategy = z.infer<typeof ConflictResolutionStrategy>;\n\n/**\n * API Registry Schema\n * \n * Central registry containing all registered APIs.\n * \n * **Enhancement: Route Conflict Detection**\n * - `conflictResolution`: Strategy for handling route conflicts\n * - Prevents silent overwrites and unexpected routing behavior\n * \n * @example\n * ```json\n * {\n * \"version\": \"1.0.0\",\n * \"conflictResolution\": \"priority\",\n * \"apis\": [\n * { \"id\": \"customer_api\", \"type\": \"rest\", ... },\n * { \"id\": \"graphql_api\", \"type\": \"graphql\", ... },\n * { \"id\": \"file_upload_api\", \"type\": \"file\", ... }\n * ],\n * \"totalApis\": 3,\n * \"totalEndpoints\": 47\n * }\n * ```\n * \n * @example Priority-based conflict resolution\n * ```json\n * {\n * \"conflictResolution\": \"priority\",\n * \"apis\": [\n * {\n * \"id\": \"core_api\",\n * \"endpoints\": [\n * {\n * \"path\": \"/api/v1/data/:object\",\n * \"priority\": 950\n * }\n * ]\n * },\n * {\n * \"id\": \"plugin_api\",\n * \"endpoints\": [\n * {\n * \"path\": \"/api/v1/data/custom\",\n * \"priority\": 300\n * }\n * ]\n * }\n * ]\n * }\n * ```\n */\nexport const ApiRegistrySchema = z.object({\n /** Registry version */\n version: z.string().describe('Registry version'),\n \n /**\n * Conflict Resolution Strategy\n * \n * Defines how to handle route conflicts when multiple endpoints\n * register the same or overlapping URL patterns.\n * \n * **Strategies:**\n * - `error`: Throw error on conflict (safest, prevents silent overwrites)\n * - `priority`: Use endpoint priority field (highest priority wins)\n * - `first-wins`: First registered endpoint wins (stable, predictable)\n * - `last-wins`: Last registered endpoint wins (allows overrides)\n * \n * **Default:** `error`\n * \n * **Best Practices:**\n * - Use `error` in production to catch configuration issues\n * - Use `priority` when mixing core and plugin APIs\n * - Use `last-wins` for development/testing overrides\n * \n * @example Prevent accidental conflicts\n * ```json\n * {\n * \"conflictResolution\": \"error\"\n * }\n * ```\n * \n * @example Allow plugin overrides with priority\n * ```json\n * {\n * \"conflictResolution\": \"priority\"\n * }\n * ```\n */\n conflictResolution: ConflictResolutionStrategy.optional().default('error')\n .describe('Strategy for handling route conflicts'),\n \n /** Registered APIs */\n apis: z.array(ApiRegistryEntrySchema).describe('All registered APIs'),\n \n /** Total API count */\n totalApis: z.number().int().describe('Total number of registered APIs'),\n \n /** Total endpoint count across all APIs */\n totalEndpoints: z.number().int().describe('Total number of endpoints'),\n \n /** APIs grouped by type */\n byType: z.record(ApiProtocolType, z.array(ApiRegistryEntrySchema)).optional()\n .describe('APIs grouped by protocol type'),\n \n /** APIs grouped by status */\n byStatus: z.record(z.string(), z.array(ApiRegistryEntrySchema)).optional()\n .describe('APIs grouped by status'),\n \n /** Last updated timestamp */\n updatedAt: z.string().datetime().optional().describe('Last registry update time'),\n});\n\nexport type ApiRegistry = z.infer<typeof ApiRegistrySchema>;\n\n// ==========================================\n// API Discovery & Query\n// ==========================================\n\n/**\n * API Discovery Query Schema\n * \n * Query parameters for discovering/filtering APIs in the registry.\n * \n * @example\n * ```json\n * {\n * \"type\": \"rest\",\n * \"tags\": [\"customer\"],\n * \"status\": \"active\"\n * }\n * ```\n */\nexport const ApiDiscoveryQuerySchema = z.object({\n /** Filter by API type */\n type: ApiProtocolType.optional().describe('Filter by API protocol type'),\n \n /** Filter by tags */\n tags: z.array(z.string()).optional().describe('Filter by tags (ANY match)'),\n \n /** Filter by status */\n status: z.enum(['active', 'deprecated', 'experimental', 'beta']).optional()\n .describe('Filter by lifecycle status'),\n \n /** Filter by plugin source */\n pluginSource: z.string().optional().describe('Filter by plugin name'),\n \n /** Search in name/description */\n search: z.string().optional().describe('Full-text search in name/description'),\n \n /** Filter by version */\n version: z.string().optional().describe('Filter by specific version'),\n});\n\nexport type ApiDiscoveryQuery = z.infer<typeof ApiDiscoveryQuerySchema>;\n\n/**\n * API Discovery Response Schema\n * \n * Response for API discovery queries.\n */\nexport const ApiDiscoveryResponseSchema = z.object({\n /** Matching APIs */\n apis: z.array(ApiRegistryEntrySchema).describe('Matching API entries'),\n \n /** Total matches */\n total: z.number().int().describe('Total matching APIs'),\n \n /** Applied filters */\n filters: ApiDiscoveryQuerySchema.optional().describe('Applied query filters'),\n});\n\nexport type ApiDiscoveryResponse = z.infer<typeof ApiDiscoveryResponseSchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Helper to create API endpoint registration\n */\nexport const ApiEndpointRegistration = Object.assign(ApiEndpointRegistrationSchema, {\n create: <T extends z.input<typeof ApiEndpointRegistrationSchema>>(config: T) => config,\n});\n\n/**\n * Helper to create API registry entry\n */\nexport const ApiRegistryEntry = Object.assign(ApiRegistryEntrySchema, {\n create: <T extends z.input<typeof ApiRegistryEntrySchema>>(config: T) => config,\n});\n\n/**\n * Helper to create API registry\n */\nexport const ApiRegistry = Object.assign(ApiRegistrySchema, {\n create: <T extends z.input<typeof ApiRegistrySchema>>(config: T) => config,\n});\n","import { z } from 'zod';\n\n/**\n * API Documentation & Testing Interface Protocol\n * \n * Provides schemas for generating interactive API documentation and testing\n * interfaces similar to Swagger UI, GraphQL Playground, Postman, etc.\n * \n * Features:\n * - OpenAPI/Swagger specification generation\n * - Interactive API testing playground\n * - API versioning and changelog\n * - Code generation templates\n * - Mock server configuration\n * \n * Architecture Alignment:\n * - Swagger UI: Interactive API documentation\n * - Postman: API testing collections\n * - GraphQL Playground: GraphQL-specific testing\n * - Redoc: Documentation rendering\n * \n * @example Documentation Config\n * ```typescript\n * const docConfig: ApiDocumentationConfig = {\n * enabled: true,\n * title: 'ObjectStack API',\n * version: '1.0.0',\n * servers: [{ url: 'https://api.example.com', description: 'Production' }],\n * ui: {\n * type: 'swagger-ui',\n * theme: 'light',\n * enableTryItOut: true\n * }\n * }\n * ```\n */\n\n// ==========================================\n// OpenAPI Specification\n// ==========================================\n\n/**\n * OpenAPI Server Schema\n * \n * Server configuration for OpenAPI specification.\n */\nexport const OpenApiServerSchema = z.object({\n /** Server URL */\n url: z.string().url().describe('Server base URL'),\n \n /** Server description */\n description: z.string().optional().describe('Server description'),\n \n /** Server variables */\n variables: z.record(z.string(), z.object({\n default: z.string(),\n description: z.string().optional(),\n enum: z.array(z.string()).optional(),\n })).optional().describe('URL template variables'),\n});\n\nexport type OpenApiServer = z.infer<typeof OpenApiServerSchema>;\n\n/**\n * OpenAPI Security Scheme Schema\n * \n * Security scheme definition for OpenAPI.\n */\nexport const OpenApiSecuritySchemeSchema = z.object({\n /** Security scheme type */\n type: z.enum(['apiKey', 'http', 'oauth2', 'openIdConnect']).describe('Security type'),\n \n /** Scheme name */\n scheme: z.string().optional().describe('HTTP auth scheme (bearer, basic, etc.)'),\n \n /** Bearer format */\n bearerFormat: z.string().optional().describe('Bearer token format (e.g., JWT)'),\n \n /** API key name */\n name: z.string().optional().describe('API key parameter name'),\n \n /** API key location */\n in: z.enum(['header', 'query', 'cookie']).optional().describe('API key location'),\n \n /** OAuth flows */\n flows: z.object({\n implicit: z.any().optional(),\n password: z.any().optional(),\n clientCredentials: z.any().optional(),\n authorizationCode: z.any().optional(),\n }).optional().describe('OAuth2 flows'),\n \n /** OpenID Connect URL */\n openIdConnectUrl: z.string().url().optional().describe('OpenID Connect discovery URL'),\n \n /** Description */\n description: z.string().optional().describe('Security scheme description'),\n});\n\nexport type OpenApiSecurityScheme = z.infer<typeof OpenApiSecuritySchemeSchema>;\n\n/**\n * OpenAPI Specification Schema\n * \n * Complete OpenAPI 3.0 specification structure.\n * \n * @see https://swagger.io/specification/\n * \n * @example\n * ```json\n * {\n * \"openapi\": \"3.0.0\",\n * \"info\": {\n * \"title\": \"ObjectStack API\",\n * \"version\": \"1.0.0\",\n * \"description\": \"ObjectStack unified API\"\n * },\n * \"servers\": [\n * { \"url\": \"https://api.example.com\" }\n * ],\n * \"paths\": { ... },\n * \"components\": { ... }\n * }\n * ```\n */\nexport const OpenApiSpecSchema = z.object({\n /** OpenAPI version */\n openapi: z.string().default('3.0.0').describe('OpenAPI specification version'),\n \n /** API information */\n info: z.object({\n title: z.string().describe('API title'),\n version: z.string().describe('API version'),\n description: z.string().optional().describe('API description'),\n termsOfService: z.string().url().optional().describe('Terms of service URL'),\n contact: z.object({\n name: z.string().optional(),\n url: z.string().url().optional(),\n email: z.string().email().optional(),\n }).optional(),\n license: z.object({\n name: z.string(),\n url: z.string().url().optional(),\n }).optional(),\n }).describe('API metadata'),\n \n /** Servers */\n servers: z.array(OpenApiServerSchema).optional().default([]).describe('API servers'),\n \n /** API paths */\n paths: z.record(z.string(), z.any()).describe('API paths and operations'),\n \n /** Reusable components */\n components: z.object({\n schemas: z.record(z.string(), z.any()).optional(),\n responses: z.record(z.string(), z.any()).optional(),\n parameters: z.record(z.string(), z.any()).optional(),\n examples: z.record(z.string(), z.any()).optional(),\n requestBodies: z.record(z.string(), z.any()).optional(),\n headers: z.record(z.string(), z.any()).optional(),\n securitySchemes: z.record(z.string(), OpenApiSecuritySchemeSchema).optional(),\n links: z.record(z.string(), z.any()).optional(),\n callbacks: z.record(z.string(), z.any()).optional(),\n }).optional().describe('Reusable components'),\n \n /** Security requirements */\n security: z.array(z.record(z.string(), z.array(z.string()))).optional()\n .describe('Global security requirements'),\n \n /** Tags */\n tags: z.array(z.object({\n name: z.string(),\n description: z.string().optional(),\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional(),\n })).optional().describe('Tag definitions'),\n \n /** External documentation */\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional().describe('External documentation'),\n});\n\nexport type OpenApiSpec = z.infer<typeof OpenApiSpecSchema>;\n\n// ==========================================\n// API Testing Playground\n// ==========================================\n\n/**\n * API Testing UI Type\n */\nexport const ApiTestingUiType = z.enum([\n 'swagger-ui', // Swagger UI\n 'redoc', // Redoc\n 'rapidoc', // RapiDoc\n 'stoplight', // Stoplight Elements\n 'scalar', // Scalar API Reference\n 'graphql-playground', // GraphQL Playground\n 'graphiql', // GraphiQL\n 'postman', // Postman-like interface\n 'custom', // Custom implementation\n]);\n\nexport type ApiTestingUiType = z.infer<typeof ApiTestingUiType>;\n\n/**\n * API Testing UI Configuration Schema\n * \n * Configuration for interactive API testing interface.\n * \n * @example Swagger UI Config\n * ```json\n * {\n * \"type\": \"swagger-ui\",\n * \"path\": \"/api-docs\",\n * \"theme\": \"light\",\n * \"enableTryItOut\": true,\n * \"enableFilter\": true,\n * \"enableCors\": true,\n * \"defaultModelsExpandDepth\": 1\n * }\n * ```\n */\nexport const ApiTestingUiConfigSchema = z.object({\n /** UI type */\n type: ApiTestingUiType.describe('Testing UI implementation'),\n \n /** UI path */\n path: z.string().default('/api-docs').describe('URL path for documentation UI'),\n \n /** UI theme */\n theme: z.enum(['light', 'dark', 'auto']).default('light').describe('UI color theme'),\n \n /** Enable try-it-out feature */\n enableTryItOut: z.boolean().default(true).describe('Enable interactive API testing'),\n \n /** Enable filtering */\n enableFilter: z.boolean().default(true).describe('Enable endpoint filtering'),\n \n /** Enable CORS for testing */\n enableCors: z.boolean().default(true).describe('Enable CORS for browser testing'),\n \n /** Default expand depth for models */\n defaultModelsExpandDepth: z.number().int().min(-1).default(1)\n .describe('Default expand depth for schemas (-1 = fully expand)'),\n \n /** Display request duration */\n displayRequestDuration: z.boolean().default(true).describe('Show request duration'),\n \n /** Syntax highlighting */\n syntaxHighlighting: z.boolean().default(true).describe('Enable syntax highlighting'),\n \n /** Custom CSS URL */\n customCssUrl: z.string().url().optional().describe('Custom CSS stylesheet URL'),\n \n /** Custom JavaScript URL */\n customJsUrl: z.string().url().optional().describe('Custom JavaScript URL'),\n \n /** Layout options */\n layout: z.object({\n showExtensions: z.boolean().default(false).describe('Show vendor extensions'),\n showCommonExtensions: z.boolean().default(false).describe('Show common extensions'),\n deepLinking: z.boolean().default(true).describe('Enable deep linking'),\n displayOperationId: z.boolean().default(false).describe('Display operation IDs'),\n defaultModelRendering: z.enum(['example', 'model']).default('example')\n .describe('Default model rendering mode'),\n defaultModelsExpandDepth: z.number().int().default(1).describe('Models expand depth'),\n defaultModelExpandDepth: z.number().int().default(1).describe('Single model expand depth'),\n docExpansion: z.enum(['list', 'full', 'none']).default('list')\n .describe('Documentation expansion mode'),\n }).optional().describe('Layout configuration'),\n});\n\nexport type ApiTestingUiConfig = z.infer<typeof ApiTestingUiConfigSchema>;\n\n/**\n * API Test Request Schema\n * \n * Represents a saved/example API test request.\n * \n * @example\n * ```json\n * {\n * \"name\": \"Get Customer by ID\",\n * \"description\": \"Retrieves a customer record\",\n * \"method\": \"GET\",\n * \"url\": \"/api/v1/data/customer/123\",\n * \"headers\": {\n * \"Authorization\": \"Bearer {{token}}\"\n * },\n * \"variables\": {\n * \"token\": \"sample_token\"\n * }\n * }\n * ```\n */\nexport const ApiTestRequestSchema = z.object({\n /** Request name */\n name: z.string().describe('Test request name'),\n \n /** Request description */\n description: z.string().optional().describe('Request description'),\n \n /** HTTP method */\n method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS'])\n .describe('HTTP method'),\n \n /** Request URL */\n url: z.string().describe('Request URL (can include variables)'),\n \n /** Request headers */\n headers: z.record(z.string(), z.string()).optional().default({})\n .describe('Request headers'),\n \n /** Query parameters */\n queryParams: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()]))\n .optional().default({}).describe('Query parameters'),\n \n /** Request body */\n body: z.any().optional().describe('Request body'),\n \n /** Environment variables */\n variables: z.record(z.string(), z.any()).optional().default({})\n .describe('Template variables'),\n \n /** Expected response */\n expectedResponse: z.object({\n statusCode: z.number().int(),\n body: z.any().optional(),\n }).optional().describe('Expected response for validation'),\n});\n\nexport type ApiTestRequest = z.infer<typeof ApiTestRequestSchema>;\n\n/**\n * API Test Collection Schema\n * \n * Collection of test requests (similar to Postman collections).\n * \n * @example\n * ```json\n * {\n * \"name\": \"Customer API Tests\",\n * \"description\": \"Test collection for customer endpoints\",\n * \"variables\": {\n * \"baseUrl\": \"https://api.example.com\",\n * \"apiKey\": \"test_key\"\n * },\n * \"requests\": [...]\n * }\n * ```\n */\nexport const ApiTestCollectionSchema = z.object({\n /** Collection name */\n name: z.string().describe('Collection name'),\n \n /** Collection description */\n description: z.string().optional().describe('Collection description'),\n \n /** Collection variables */\n variables: z.record(z.string(), z.any()).optional().default({})\n .describe('Shared variables'),\n \n /** Test requests */\n requests: z.array(ApiTestRequestSchema).describe('Test requests in this collection'),\n \n /** Folders/grouping */\n folders: z.array(z.object({\n name: z.string(),\n description: z.string().optional(),\n requests: z.array(ApiTestRequestSchema),\n })).optional().describe('Request folders for organization'),\n});\n\nexport type ApiTestCollection = z.infer<typeof ApiTestCollectionSchema>;\n\n// ==========================================\n// API Documentation Configuration\n// ==========================================\n\n/**\n * API Changelog Entry Schema\n * \n * Documents changes in API versions.\n */\nexport const ApiChangelogEntrySchema = z.object({\n /** Version */\n version: z.string().describe('API version'),\n \n /** Release date */\n date: z.string().date().describe('Release date'),\n \n /** Changes */\n changes: z.object({\n added: z.array(z.string()).optional().default([]).describe('New features'),\n changed: z.array(z.string()).optional().default([]).describe('Changes'),\n deprecated: z.array(z.string()).optional().default([]).describe('Deprecations'),\n removed: z.array(z.string()).optional().default([]).describe('Removed features'),\n fixed: z.array(z.string()).optional().default([]).describe('Bug fixes'),\n security: z.array(z.string()).optional().default([]).describe('Security fixes'),\n }).describe('Version changes'),\n \n /** Migration guide */\n migrationGuide: z.string().optional().describe('Migration guide URL or text'),\n});\n\nexport type ApiChangelogEntry = z.infer<typeof ApiChangelogEntrySchema>;\n\n/**\n * Code Generation Template Schema\n * \n * Templates for generating client code.\n */\nexport const CodeGenerationTemplateSchema = z.object({\n /** Language/framework */\n language: z.string().describe('Target language/framework (e.g., typescript, python, curl)'),\n \n /** Template name */\n name: z.string().describe('Template name'),\n \n /** Template content */\n template: z.string().describe('Code template with placeholders'),\n \n /** Template variables */\n variables: z.array(z.string()).optional().describe('Required template variables'),\n});\n\nexport type CodeGenerationTemplate = z.infer<typeof CodeGenerationTemplateSchema>;\n\n/**\n * API Documentation Configuration Schema\n * \n * Complete configuration for API documentation and testing interface.\n * \n * @example\n * ```json\n * {\n * \"enabled\": true,\n * \"title\": \"ObjectStack API Documentation\",\n * \"version\": \"1.0.0\",\n * \"description\": \"Unified API for ObjectStack platform\",\n * \"servers\": [\n * { \"url\": \"https://api.example.com\", \"description\": \"Production\" }\n * ],\n * \"ui\": {\n * \"type\": \"swagger-ui\",\n * \"theme\": \"light\",\n * \"enableTryItOut\": true\n * },\n * \"generateOpenApi\": true,\n * \"generateTestCollections\": true\n * }\n * ```\n */\nexport const ApiDocumentationConfigSchema = z.object({\n /** Enable documentation */\n enabled: z.boolean().default(true).describe('Enable API documentation'),\n \n /** Documentation title */\n title: z.string().default('API Documentation').describe('Documentation title'),\n \n /** API version */\n version: z.string().describe('API version'),\n \n /** API description */\n description: z.string().optional().describe('API description'),\n \n /** Server configurations */\n servers: z.array(OpenApiServerSchema).optional().default([])\n .describe('API server URLs'),\n \n /** UI configuration */\n ui: ApiTestingUiConfigSchema.optional().describe('Testing UI configuration'),\n \n /** Generate OpenAPI spec */\n generateOpenApi: z.boolean().default(true).describe('Generate OpenAPI 3.0 specification'),\n \n /** Generate test collections */\n generateTestCollections: z.boolean().default(true)\n .describe('Generate API test collections'),\n \n /** Test collections */\n testCollections: z.array(ApiTestCollectionSchema).optional().default([])\n .describe('Predefined test collections'),\n \n /** API changelog */\n changelog: z.array(ApiChangelogEntrySchema).optional().default([])\n .describe('API version changelog'),\n \n /** Code generation templates */\n codeTemplates: z.array(CodeGenerationTemplateSchema).optional().default([])\n .describe('Code generation templates'),\n \n /** Terms of service */\n termsOfService: z.string().url().optional().describe('Terms of service URL'),\n \n /** Contact information */\n contact: z.object({\n name: z.string().optional(),\n url: z.string().url().optional(),\n email: z.string().email().optional(),\n }).optional().describe('Contact information'),\n \n /** License */\n license: z.object({\n name: z.string(),\n url: z.string().url().optional(),\n }).optional().describe('API license'),\n \n /** External documentation */\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional().describe('External documentation link'),\n \n /** Security schemes */\n securitySchemes: z.record(z.string(), OpenApiSecuritySchemeSchema).optional()\n .describe('Security scheme definitions'),\n \n /** Global tags */\n tags: z.array(z.object({\n name: z.string(),\n description: z.string().optional(),\n externalDocs: z.object({\n description: z.string().optional(),\n url: z.string().url(),\n }).optional(),\n })).optional().describe('Global tag definitions'),\n});\n\nexport type ApiDocumentationConfig = z.infer<typeof ApiDocumentationConfigSchema>;\n\n// ==========================================\n// API Documentation Generation\n// ==========================================\n\n/**\n * Generated API Documentation Schema\n * \n * Output of documentation generation process.\n */\nexport const GeneratedApiDocumentationSchema = z.object({\n /** OpenAPI specification */\n openApiSpec: OpenApiSpecSchema.optional().describe('Generated OpenAPI specification'),\n \n /** Test collections */\n testCollections: z.array(ApiTestCollectionSchema).optional()\n .describe('Generated test collections'),\n \n /** Markdown documentation */\n markdown: z.string().optional().describe('Generated markdown documentation'),\n \n /** HTML documentation */\n html: z.string().optional().describe('Generated HTML documentation'),\n \n /** Generation timestamp */\n generatedAt: z.string().datetime().describe('Generation timestamp'),\n \n /** Source APIs */\n sourceApis: z.array(z.string()).describe('Source API IDs used for generation'),\n});\n\nexport type GeneratedApiDocumentation = z.infer<typeof GeneratedApiDocumentationSchema>;\n\n// ==========================================\n// Helper Functions\n// ==========================================\n\n/**\n * Helper to create API documentation config\n */\nexport const ApiDocumentationConfig = Object.assign(ApiDocumentationConfigSchema, {\n create: <T extends z.input<typeof ApiDocumentationConfigSchema>>(config: T) => config,\n});\n\n/**\n * Helper to create API test collection\n */\nexport const ApiTestCollection = Object.assign(ApiTestCollectionSchema, {\n create: <T extends z.input<typeof ApiTestCollectionSchema>>(config: T) => config,\n});\n\n/**\n * Helper to create OpenAPI specification\n */\nexport const OpenApiSpec = Object.assign(OpenApiSpecSchema, {\n create: <T extends z.input<typeof OpenApiSpecSchema>>(config: T) => config,\n});\n","import { z } from 'zod';\nimport { BaseResponseSchema } from './contract.zod';\n\n/**\n * Authentication Service Protocol\n * \n * Defines the standard API contracts for Identity, Session Management,\n * and Access Control.\n */\n\n// ==========================================\n// Authentication Types\n// ==========================================\n\nexport const AuthProvider = z.enum([\n 'local',\n 'google',\n 'github',\n 'microsoft',\n 'ldap',\n 'saml'\n]);\n\nexport const SessionUserSchema = z.object({\n id: z.string().describe('User ID'),\n email: z.string().email().describe('Email address'),\n emailVerified: z.boolean().default(false).describe('Is email verified?'),\n name: z.string().describe('Display name'),\n image: z.string().optional().describe('Avatar URL'),\n username: z.string().optional().describe('Username (optional)'),\n roles: z.array(z.string()).optional().default([]).describe('Assigned role IDs'),\n tenantId: z.string().optional().describe('Current tenant ID'),\n language: z.string().default('en').describe('Preferred language'),\n timezone: z.string().optional().describe('Preferred timezone'),\n createdAt: z.date().optional(),\n updatedAt: z.date().optional(),\n});\n\nexport const SessionSchema = z.object({\n id: z.string(),\n expiresAt: z.date(),\n token: z.string().optional(),\n ipAddress: z.string().optional(),\n userAgent: z.string().optional(),\n userId: z.string(),\n});\n\n// ==========================================\n// Requests\n// ==========================================\n\nexport const LoginType = z.enum(['email', 'username', 'phone', 'magic-link', 'social']);\n\nexport const LoginRequestSchema = z.object({\n type: LoginType.default('email').describe('Login method'),\n email: z.string().email().optional().describe('Required for email/magic-link'),\n username: z.string().optional().describe('Required for username login'),\n password: z.string().optional().describe('Required for password login'),\n provider: z.string().optional().describe('Required for social (google, github)'),\n redirectTo: z.string().optional().describe('Redirect URL after successful login'),\n});\n\nexport const RegisterRequestSchema = z.object({\n email: z.string().email(),\n password: z.string(),\n name: z.string(),\n image: z.string().optional(),\n});\n\nexport const RefreshTokenRequestSchema = z.object({\n refreshToken: z.string().describe('Refresh token'),\n});\n\n// ==========================================\n// Responses\n// ==========================================\n\nexport const SessionResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n session: SessionSchema.describe('Active Session Info'),\n user: SessionUserSchema.describe('Current User Details'),\n token: z.string().optional().describe('Bearer token if not using cookies'),\n }),\n});\n\nexport const UserProfileResponseSchema = BaseResponseSchema.extend({\n data: SessionUserSchema,\n});\n\nexport type AuthProvider = z.infer<typeof AuthProvider>;\nexport type SessionUser = z.infer<typeof SessionUserSchema>;\nexport type Session = z.infer<typeof SessionSchema>;\nexport type LoginType = z.infer<typeof LoginType>;\nexport type LoginRequest = z.infer<typeof LoginRequestSchema>;\nexport type RegisterRequest = z.infer<typeof RegisterRequestSchema>;\nexport type RefreshTokenRequest = z.infer<typeof RefreshTokenRequestSchema>;\nexport type SessionResponse = z.infer<typeof SessionResponseSchema>;\nexport type UserProfileResponse = z.infer<typeof UserProfileResponseSchema>;\n","import { z } from 'zod';\nimport { BaseResponseSchema } from './contract.zod';\nimport { FileMetadataSchema } from '../system/object-storage.zod';\n\n/**\n * Storage Service Protocol\n * \n * Defines the API contract for client-side file operations.\n * Focuses on secure, direct-to-cloud uploads (Presigned URLs)\n * rather than proxying bytes through the API server.\n */\n\n// ==========================================\n// Requests\n// ==========================================\n\nexport const GetPresignedUrlRequestSchema = z.object({\n filename: z.string().describe('Original filename'),\n mimeType: z.string().describe('File MIME type'),\n size: z.number().describe('File size in bytes'),\n scope: z.string().default('user').describe('Target storage scope (e.g. user, private, public)'),\n bucket: z.string().optional().describe('Specific bucket override (admin only)'),\n});\n\nexport const CompleteUploadRequestSchema = z.object({\n fileId: z.string().describe('File ID returned from presigned request'),\n eTag: z.string().optional().describe('S3 ETag verification'),\n});\n\n// ==========================================\n// Responses\n// ==========================================\n\nexport const PresignedUrlResponseSchema = BaseResponseSchema.extend({\n data: z.object({\n uploadUrl: z.string().describe('PUT/POST URL for direct upload'),\n downloadUrl: z.string().optional().describe('Public/Private preview URL'),\n fileId: z.string().describe('Temporary File ID'),\n method: z.enum(['PUT', 'POST']).describe('HTTP Method to use'),\n headers: z.record(z.string(), z.string()).optional().describe('Required headers for upload'),\n expiresIn: z.number().describe('URL expiry in seconds'),\n }),\n});\n\nexport const FileUploadResponseSchema = BaseResponseSchema.extend({\n data: FileMetadataSchema.describe('Uploaded file metadata'),\n});\n\nexport type GetPresignedUrlRequest = z.infer<typeof GetPresignedUrlRequestSchema>;\nexport type CompleteUploadRequest = z.infer<typeof CompleteUploadRequestSchema>;\nexport type PresignedUrlResponse = z.infer<typeof PresignedUrlResponseSchema>;\nexport type FileUploadResponse = z.infer<typeof FileUploadResponseSchema>;\n","import { z } from 'zod';\nimport { SystemIdentifierSchema } from '../shared/identifiers.zod';\n\n/**\n * Object Storage Protocol\n * \n * Unified storage protocol that combines:\n * - Object storage systems (S3, Azure Blob, GCS, MinIO)\n * - Scoped storage configuration (temp, cache, data, logs, config, public)\n * - Multi-cloud storage providers\n * - Bucket/container configuration\n * - Access control and permissions\n * - Lifecycle policies for data retention\n * - Presigned URLs for secure direct access\n * - Multipart uploads for large files\n */\n\n// ============================================================================\n// Storage Scope Protocol (formerly from scoped-storage.zod.ts)\n// ============================================================================\n\n/**\n * Storage Scope Enum\n * Defines the lifecycle and persistence guarantee of the storage area.\n */\nexport const StorageScopeSchema = z.enum([\n 'global', // Global application-wide storage\n 'tenant', // Tenant-scoped storage (multi-tenant apps)\n 'user', // User-scoped storage\n 'session', // Session-scoped storage (ephemeral)\n 'temp', // Ephemeral, cleared on restart\n 'cache', // Ephemeral, survives restarts, cleared on LRU/Expiration\n 'data', // Persistent, backed up\n 'logs', // Append-only, rotated\n 'config', // Read-heavy, versioned\n 'public' // Publicly accessible static assets\n]).describe('Storage scope classification');\n\nexport type StorageScope = z.infer<typeof StorageScopeSchema>;\n\n/**\n * File Metadata Schema\n * Standardized file attribute structure\n */\nexport const FileMetadataSchema = z.object({\n path: z.string().describe('File path'),\n name: z.string().describe('File name'),\n size: z.number().int().describe('File size in bytes'),\n mimeType: z.string().describe('MIME type'),\n lastModified: z.string().datetime().describe('Last modified timestamp'),\n created: z.string().datetime().describe('Creation timestamp'),\n etag: z.string().optional().describe('Entity tag'),\n});\n\nexport type FileMetadata = z.infer<typeof FileMetadataSchema>;\n\n// ============================================================================\n// Enums\n// ============================================================================\n\n/**\n * Storage Provider Types\n * \n * Supported cloud and self-hosted object storage providers.\n */\nexport const StorageProviderSchema = z.enum([\n 's3', // Amazon S3\n 'azure_blob', // Azure Blob Storage\n 'gcs', // Google Cloud Storage\n 'minio', // MinIO (self-hosted S3-compatible)\n 'r2', // Cloudflare R2\n 'spaces', // DigitalOcean Spaces\n 'wasabi', // Wasabi Hot Cloud Storage\n 'backblaze', // Backblaze B2\n 'local', // Local filesystem (development only)\n]).describe('Storage provider type');\n\nexport type StorageProvider = z.infer<typeof StorageProviderSchema>;\n\n/**\n * Storage Access Control List (ACL)\n * \n * Predefined access control configurations for objects and buckets.\n */\nexport const StorageAclSchema = z.enum([\n 'private', // Owner has full control, no one else has access\n 'public_read', // Owner has full control, everyone can read\n 'public_read_write', // Owner has full control, everyone can read/write (not recommended)\n 'authenticated_read', // Owner has full control, authenticated users can read\n 'bucket_owner_read', // Object owner has full control, bucket owner can read\n 'bucket_owner_full_control', // Both object and bucket owner have full control\n]).describe('Storage access control level');\n\nexport type StorageAcl = z.infer<typeof StorageAclSchema>;\n\n/**\n * Storage Class / Tier\n * \n * Different storage tiers for cost optimization.\n * Maps to provider-specific storage classes.\n */\nexport const StorageClassSchema = z.enum([\n 'standard', // Standard/hot storage for frequently accessed data\n 'intelligent', // Intelligent tiering (auto-moves between hot/cool)\n 'infrequent_access', // Infrequent access/cool storage\n 'glacier', // Archive/cold storage (slower retrieval)\n 'deep_archive', // Deep archive (cheapest, slowest retrieval)\n]).describe('Storage class/tier for cost optimization');\n\nexport type StorageClass = z.infer<typeof StorageClassSchema>;\n\n/**\n * Lifecycle Transition Action\n */\nexport const LifecycleActionSchema = z.enum([\n 'transition', // Move to different storage class\n 'delete', // Delete the object\n 'abort', // Abort incomplete multipart uploads\n]).describe('Lifecycle policy action type');\n\nexport type LifecycleAction = z.infer<typeof LifecycleActionSchema>;\n\n// ============================================================================\n// Configuration Schemas\n// ============================================================================\n\n/**\n * Object Metadata Schema\n * \n * Standard and custom metadata attached to stored objects.\n * \n * @example\n * {\n * contentType: 'image/jpeg',\n * contentLength: 1024000,\n * etag: '\"abc123\"',\n * lastModified: new Date('2024-01-01'),\n * custom: {\n * uploadedBy: 'user123',\n * department: 'marketing'\n * }\n * }\n */\nexport const ObjectMetadataSchema = z.object({\n contentType: z.string().describe('MIME type (e.g., image/jpeg, application/pdf)'),\n contentLength: z.number().min(0).describe('File size in bytes'),\n contentEncoding: z.string().optional().describe('Content encoding (e.g., gzip)'),\n contentDisposition: z.string().optional().describe('Content disposition header'),\n contentLanguage: z.string().optional().describe('Content language'),\n cacheControl: z.string().optional().describe('Cache control directives'),\n etag: z.string().optional().describe('Entity tag for versioning/caching'),\n lastModified: z.date().optional().describe('Last modification timestamp'),\n versionId: z.string().optional().describe('Object version identifier'),\n storageClass: StorageClassSchema.optional().describe('Storage class/tier'),\n encryption: z.object({\n algorithm: z.string().describe('Encryption algorithm (e.g., AES256, aws:kms)'),\n keyId: z.string().optional().describe('KMS key ID if using managed encryption'),\n }).optional().describe('Server-side encryption configuration'),\n custom: z.record(z.string(), z.string()).optional().describe('Custom user-defined metadata'),\n});\n\nexport type ObjectMetadata = z.infer<typeof ObjectMetadataSchema>;\n\n/**\n * Presigned URL Configuration\n * \n * Configuration for generating temporary URLs for direct access to objects.\n * Useful for secure file uploads/downloads without exposing credentials.\n * \n * @example\n * // Generate download URL valid for 1 hour\n * {\n * operation: 'get',\n * expiresIn: 3600,\n * contentType: 'image/jpeg'\n * }\n * \n * @example\n * // Generate upload URL valid for 15 minutes with size limit\n * {\n * operation: 'put',\n * expiresIn: 900,\n * contentType: 'application/pdf',\n * maxSize: 10485760\n * }\n */\nexport const PresignedUrlConfigSchema = z.object({\n operation: z.enum(['get', 'put', 'delete', 'head']).describe('Allowed operation'),\n expiresIn: z.number().min(1).max(604800).describe('Expiration time in seconds (max 7 days)'),\n contentType: z.string().optional().describe('Required content type for PUT operations'),\n maxSize: z.number().min(0).optional().describe('Maximum file size in bytes for PUT operations'),\n responseContentType: z.string().optional().describe('Override content-type for GET operations'),\n responseContentDisposition: z.string().optional().describe('Override content-disposition for GET operations'),\n});\n\nexport type PresignedUrlConfig = z.infer<typeof PresignedUrlConfigSchema>;\n\n/**\n * Multipart Upload Configuration\n * \n * Configuration for chunked uploads of large files.\n * Enables resumable uploads and parallel transfer.\n * \n * @example\n * // Enable multipart for files > 100MB with 10MB chunks\n * {\n * enabled: true,\n * partSize: 10485760,\n * maxParts: 10000,\n * threshold: 104857600,\n * maxConcurrent: 4\n * }\n */\nexport const MultipartUploadConfigSchema = z.object({\n enabled: z.boolean().default(true).describe('Enable multipart uploads'),\n partSize: z.number().min(5 * 1024 * 1024).max(5 * 1024 * 1024 * 1024).default(10 * 1024 * 1024).describe('Part size in bytes (min 5MB, max 5GB)'),\n maxParts: z.number().min(1).max(10000).default(10000).describe('Maximum number of parts (max 10,000)'),\n threshold: z.number().min(0).default(100 * 1024 * 1024).describe('File size threshold to trigger multipart upload (bytes)'),\n maxConcurrent: z.number().min(1).max(100).default(4).describe('Maximum concurrent part uploads'),\n abortIncompleteAfterDays: z.number().min(1).optional().describe('Auto-abort incomplete uploads after N days'),\n});\n\nexport type MultipartUploadConfig = z.infer<typeof MultipartUploadConfigSchema>;\n\n/**\n * Access Control Configuration\n * \n * Fine-grained access control for buckets and objects.\n * \n * @example\n * {\n * acl: 'private',\n * allowedOrigins: ['https://app.example.com'],\n * allowedMethods: ['GET', 'PUT'],\n * corsEnabled: true,\n * publicAccess: {\n * allowPublicRead: false,\n * allowPublicWrite: false\n * }\n * }\n */\nexport const AccessControlConfigSchema = z.object({\n acl: StorageAclSchema.default('private').describe('Default access control level'),\n allowedOrigins: z.array(z.string()).optional().describe('CORS allowed origins'),\n allowedMethods: z.array(z.enum(['GET', 'PUT', 'POST', 'DELETE', 'HEAD'])).optional().describe('CORS allowed HTTP methods'),\n allowedHeaders: z.array(z.string()).optional().describe('CORS allowed headers'),\n exposeHeaders: z.array(z.string()).optional().describe('CORS exposed headers'),\n maxAge: z.number().min(0).optional().describe('CORS preflight cache duration in seconds'),\n corsEnabled: z.boolean().default(false).describe('Enable CORS configuration'),\n publicAccess: z.object({\n allowPublicRead: z.boolean().default(false).describe('Allow public read access'),\n allowPublicWrite: z.boolean().default(false).describe('Allow public write access'),\n allowPublicList: z.boolean().default(false).describe('Allow public bucket listing'),\n }).optional().describe('Public access control'),\n allowedIps: z.array(z.string()).optional().describe('Allowed IP addresses/CIDR blocks'),\n blockedIps: z.array(z.string()).optional().describe('Blocked IP addresses/CIDR blocks'),\n});\n\nexport type AccessControlConfig = z.infer<typeof AccessControlConfigSchema>;\n\n/**\n * Lifecycle Policy Rule\n * \n * Individual rule for automatic object lifecycle management.\n * \n * @example\n * // Transition to infrequent access after 30 days\n * {\n * id: 'move_to_ia',\n * enabled: true,\n * action: 'transition',\n * daysAfterCreation: 30,\n * targetStorageClass: 'infrequent_access'\n * }\n * \n * @example\n * // Delete objects after 365 days\n * {\n * id: 'delete_old',\n * enabled: true,\n * action: 'delete',\n * daysAfterCreation: 365\n * }\n */\nexport const LifecyclePolicyRuleSchema = z.object({\n id: SystemIdentifierSchema.describe('Rule identifier'),\n enabled: z.boolean().default(true).describe('Enable this rule'),\n action: LifecycleActionSchema.describe('Action to perform'),\n prefix: z.string().optional().describe('Object key prefix filter (e.g., \"uploads/\")'),\n tags: z.record(z.string(), z.string()).optional().describe('Object tag filters'),\n daysAfterCreation: z.number().min(0).optional().describe('Days after object creation'),\n daysAfterModification: z.number().min(0).optional().describe('Days after last modification'),\n targetStorageClass: StorageClassSchema.optional().describe('Target storage class for transition action'),\n}).refine((data) => {\n // Validate that transition action has targetStorageClass\n if (data.action === 'transition' && !data.targetStorageClass) {\n return false;\n }\n return true;\n}, {\n message: 'targetStorageClass is required when action is \"transition\"',\n});\n\nexport type LifecyclePolicyRule = z.infer<typeof LifecyclePolicyRuleSchema>;\n\n/**\n * Lifecycle Policy Configuration\n * \n * Collection of lifecycle rules for automatic data management.\n * \n * @example\n * {\n * enabled: true,\n * rules: [\n * {\n * id: 'archive_old_files',\n * enabled: true,\n * action: 'transition',\n * daysAfterCreation: 90,\n * targetStorageClass: 'glacier'\n * },\n * {\n * id: 'delete_temp_files',\n * enabled: true,\n * action: 'delete',\n * prefix: 'temp/',\n * daysAfterCreation: 7\n * }\n * ]\n * }\n */\nexport const LifecyclePolicyConfigSchema = z.object({\n enabled: z.boolean().default(false).describe('Enable lifecycle policies'),\n rules: z.array(LifecyclePolicyRuleSchema).default([]).describe('Lifecycle rules'),\n});\n\nexport type LifecyclePolicyConfig = z.infer<typeof LifecyclePolicyConfigSchema>;\n\n/**\n * Bucket Configuration Schema\n * \n * Comprehensive configuration for a storage bucket/container.\n * \n * @example\n * {\n * name: 'user_uploads',\n * label: 'User Uploads',\n * bucketName: 'my-app-uploads',\n * region: 'us-east-1',\n * provider: 's3',\n * versioning: true,\n * accessControl: {\n * acl: 'private',\n * corsEnabled: true,\n * allowedOrigins: ['https://app.example.com']\n * },\n * multipartConfig: {\n * enabled: true,\n * threshold: 104857600\n * }\n * }\n */\nexport const BucketConfigSchema = z.object({\n name: SystemIdentifierSchema.describe('Bucket identifier in ObjectStack (snake_case)'),\n label: z.string().describe('Display label'),\n bucketName: z.string().describe('Actual bucket/container name in storage provider'),\n region: z.string().optional().describe('Storage region (e.g., us-east-1, westus)'),\n provider: StorageProviderSchema.describe('Storage provider'),\n endpoint: z.string().optional().describe('Custom endpoint URL (for S3-compatible providers)'),\n pathStyle: z.boolean().default(false).describe('Use path-style URLs (for S3-compatible providers)'),\n \n versioning: z.boolean().default(false).describe('Enable object versioning'),\n encryption: z.object({\n enabled: z.boolean().default(false).describe('Enable server-side encryption'),\n algorithm: z.enum(['AES256', 'aws:kms', 'azure:kms', 'gcp:kms']).default('AES256').describe('Encryption algorithm'),\n kmsKeyId: z.string().optional().describe('KMS key ID for managed encryption'),\n }).optional().describe('Server-side encryption configuration'),\n \n accessControl: AccessControlConfigSchema.optional().describe('Access control configuration'),\n lifecyclePolicy: LifecyclePolicyConfigSchema.optional().describe('Lifecycle policy configuration'),\n multipartConfig: MultipartUploadConfigSchema.optional().describe('Multipart upload configuration'),\n \n tags: z.record(z.string(), z.string()).optional().describe('Bucket tags for organization'),\n description: z.string().optional().describe('Bucket description'),\n enabled: z.boolean().default(true).describe('Enable this bucket'),\n});\n\nexport type BucketConfig = z.infer<typeof BucketConfigSchema>;\n\n/**\n * Storage Connection Configuration\n * \n * Provider-specific connection credentials and settings.\n * \n * @example S3\n * {\n * accessKeyId: '${AWS_ACCESS_KEY_ID}',\n * secretAccessKey: '${AWS_SECRET_ACCESS_KEY}',\n * sessionToken: '${AWS_SESSION_TOKEN}',\n * region: 'us-east-1'\n * }\n * \n * @example Azure\n * {\n * accountName: 'mystorageaccount',\n * accountKey: '${AZURE_STORAGE_KEY}',\n * endpoint: 'https://mystorageaccount.blob.core.windows.net'\n * }\n */\nexport const StorageConnectionSchema = z.object({\n // AWS S3 / MinIO\n accessKeyId: z.string().optional().describe('AWS access key ID or MinIO access key'),\n secretAccessKey: z.string().optional().describe('AWS secret access key or MinIO secret key'),\n sessionToken: z.string().optional().describe('AWS session token for temporary credentials'),\n \n // Azure Blob Storage\n accountName: z.string().optional().describe('Azure storage account name'),\n accountKey: z.string().optional().describe('Azure storage account key'),\n sasToken: z.string().optional().describe('Azure SAS token'),\n \n // Google Cloud Storage\n projectId: z.string().optional().describe('GCP project ID'),\n credentials: z.string().optional().describe('GCP service account credentials JSON'),\n \n // Common\n endpoint: z.string().optional().describe('Custom endpoint URL'),\n region: z.string().optional().describe('Default region'),\n useSSL: z.boolean().default(true).describe('Use SSL/TLS for connections'),\n timeout: z.number().min(0).optional().describe('Connection timeout in milliseconds'),\n});\n\nexport type StorageConnection = z.infer<typeof StorageConnectionSchema>;\n\n/**\n * Object Storage Configuration\n * \n * Complete object storage system configuration.\n * \n * @example\n * {\n * name: 'production_storage',\n * label: 'Production File Storage',\n * provider: 's3',\n * scope: 'global',\n * connection: {\n * accessKeyId: '${AWS_ACCESS_KEY_ID}',\n * secretAccessKey: '${AWS_SECRET_ACCESS_KEY}',\n * region: 'us-east-1'\n * },\n * buckets: [\n * {\n * name: 'user_uploads',\n * label: 'User Uploads',\n * bucketName: 'prod-uploads',\n * provider: 's3',\n * region: 'us-east-1'\n * }\n * ],\n * defaultBucket: 'user_uploads'\n * }\n */\nexport const ObjectStorageConfigSchema = z.object({\n name: SystemIdentifierSchema.describe('Storage configuration identifier'),\n label: z.string().describe('Display label'),\n provider: StorageProviderSchema.describe('Primary storage provider'),\n \n /**\n * Storage scope\n * Defines the lifecycle and access pattern for this storage\n */\n scope: StorageScopeSchema.optional().default('global').describe('Storage scope'),\n \n connection: StorageConnectionSchema.describe('Connection credentials'),\n buckets: z.array(BucketConfigSchema).default([]).describe('Configured buckets'),\n defaultBucket: z.string().optional().describe('Default bucket name for operations'),\n \n /**\n * Base path or location\n * For local/scoped storage configurations\n */\n location: z.string().optional().describe('Root path (local) or base location'),\n \n /**\n * Storage quota in bytes\n */\n quota: z.number().int().positive().optional().describe('Max size in bytes'),\n \n /**\n * Provider-specific options\n */\n options: z.record(z.string(), z.any()).optional().describe('Provider-specific configuration options'),\n \n enabled: z.boolean().default(true).describe('Enable this storage configuration'),\n description: z.string().optional().describe('Configuration description'),\n});\n\nexport type ObjectStorageConfig = z.infer<typeof ObjectStorageConfigSchema>;\n\n// ============================================================================\n// Helper Examples\n// ============================================================================\n\n/**\n * Example: AWS S3 Configuration\n */\nexport const s3StorageExample = ObjectStorageConfigSchema.parse({\n name: 'aws_s3_storage',\n label: 'AWS S3 Production Storage',\n provider: 's3',\n connection: {\n accessKeyId: '${AWS_ACCESS_KEY_ID}',\n secretAccessKey: '${AWS_SECRET_ACCESS_KEY}',\n region: 'us-east-1',\n },\n buckets: [\n {\n name: 'user_uploads',\n label: 'User Uploads',\n bucketName: 'my-app-user-uploads',\n region: 'us-east-1',\n provider: 's3',\n versioning: true,\n encryption: {\n enabled: true,\n algorithm: 'aws:kms',\n kmsKeyId: '${AWS_KMS_KEY_ID}',\n },\n accessControl: {\n acl: 'private',\n corsEnabled: true,\n allowedOrigins: ['https://app.example.com'],\n allowedMethods: ['GET', 'PUT', 'POST'],\n },\n lifecyclePolicy: {\n enabled: true,\n rules: [\n {\n id: 'archive_old_uploads',\n enabled: true,\n action: 'transition',\n daysAfterCreation: 90,\n targetStorageClass: 'glacier',\n },\n ],\n },\n multipartConfig: {\n enabled: true,\n partSize: 10 * 1024 * 1024,\n threshold: 100 * 1024 * 1024,\n maxConcurrent: 4,\n },\n },\n ],\n defaultBucket: 'user_uploads',\n enabled: true,\n});\n\n/**\n * Example: MinIO Configuration\n */\nexport const minioStorageExample = ObjectStorageConfigSchema.parse({\n name: 'minio_local',\n label: 'MinIO Local Storage',\n provider: 'minio',\n connection: {\n accessKeyId: 'minioadmin',\n secretAccessKey: 'minioadmin',\n endpoint: 'http://localhost:9000',\n useSSL: false,\n },\n buckets: [\n {\n name: 'development_files',\n label: 'Development Files',\n bucketName: 'dev-files',\n provider: 'minio',\n endpoint: 'http://localhost:9000',\n pathStyle: true,\n accessControl: {\n acl: 'private',\n },\n },\n ],\n defaultBucket: 'development_files',\n enabled: true,\n});\n\n/**\n * Example: Azure Blob Storage Configuration\n */\nexport const azureBlobStorageExample = ObjectStorageConfigSchema.parse({\n name: 'azure_blob_storage',\n label: 'Azure Blob Storage',\n provider: 'azure_blob',\n connection: {\n accountName: 'mystorageaccount',\n accountKey: '${AZURE_STORAGE_KEY}',\n endpoint: 'https://mystorageaccount.blob.core.windows.net',\n },\n buckets: [\n {\n name: 'media_files',\n label: 'Media Files',\n bucketName: 'media',\n provider: 'azure_blob',\n region: 'eastus',\n accessControl: {\n acl: 'public_read',\n publicAccess: {\n allowPublicRead: true,\n allowPublicWrite: false,\n allowPublicList: false,\n },\n },\n },\n ],\n defaultBucket: 'media_files',\n enabled: true,\n});\n\n/**\n * Example: Google Cloud Storage Configuration\n */\nexport const gcsStorageExample = ObjectStorageConfigSchema.parse({\n name: 'gcs_storage',\n label: 'Google Cloud Storage',\n provider: 'gcs',\n connection: {\n projectId: 'my-gcp-project',\n credentials: '${GCP_SERVICE_ACCOUNT_JSON}',\n },\n buckets: [\n {\n name: 'backup_storage',\n label: 'Backup Storage',\n bucketName: 'my-app-backups',\n region: 'us-central1',\n provider: 'gcs',\n lifecyclePolicy: {\n enabled: true,\n rules: [\n {\n id: 'delete_old_backups',\n enabled: true,\n action: 'delete',\n daysAfterCreation: 30,\n },\n ],\n },\n },\n ],\n defaultBucket: 'backup_storage',\n enabled: true,\n});\n","import { z } from 'zod';\nimport { BaseResponseSchema } from './contract.zod';\nimport { ObjectSchema } from '../data/object.zod';\nimport { AppSchema } from '../ui/app.zod';\n\n/**\n * Metadata Service Protocol\n * \n * Defines the standard API contracts for fetching system metadata.\n * Frontend, IDEs, and Mobile apps use this to build dynamic UIs.\n */\n\n// ==========================================\n// Responses\n// ==========================================\n\n/**\n * Single Object Definition Response\n * Returns the full JSON schema for an Entity (Fields, Actions, Config).\n */\nexport const ObjectDefinitionResponseSchema = BaseResponseSchema.extend({\n data: ObjectSchema.describe('Full Object Schema'),\n});\n\n/**\n * App Definition Response\n * Returns the navigation, branding, and layout for an App.\n */\nexport const AppDefinitionResponseSchema = BaseResponseSchema.extend({\n data: AppSchema.describe('Full App Configuration'),\n});\n\n/**\n * All Concepts Response\n * Bulk load lightweight definitions for autocomplete/pickers.\n */\nexport const ConceptListResponseSchema = BaseResponseSchema.extend({\n data: z.array(z.object({\n name: z.string(),\n label: z.string(),\n icon: z.string().optional(),\n description: z.string().optional(),\n })).describe('List of available concepts (Objects, Apps, Flows)'),\n});\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 * 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 * Base Navigation Item Schema\n * Shared properties for all navigation types.\n * \n * **NAMING CONVENTION:**\n * Navigation item IDs are used in URLs and configuration and must be lowercase snake_case.\n * \n * @example Good IDs\n * - 'menu_accounts'\n * - 'page_dashboard'\n * - 'nav_settings'\n * \n * @example Bad IDs (will be rejected)\n * - 'MenuAccounts' (PascalCase)\n * - 'Page Dashboard' (spaces)\n */\nconst BaseNavItemSchema = z.object({\n /** Unique identifier for the item */\n id: SnakeCaseIdentifierSchema.describe('Unique identifier for this navigation item (lowercase snake_case)'),\n \n /** Display label */\n label: z.string().describe('Display proper label'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('Icon name'),\n\n /** \n * Visibility condition. \n * Formula expression returning boolean. \n * e.g. \"user.is_admin || user.department == 'sales'\"\n */\n visible: z.string().optional().describe('Visibility formula condition'),\n});\n\n/**\n * 1. Object Navigation Item\n * Navigates to an object's list view.\n */\nexport const ObjectNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('object'),\n objectName: z.string().describe('Target object name'),\n viewName: z.string().optional().describe('Default list view to open. Defaults to \"all\"'),\n});\n\n/**\n * 2. Dashboard Navigation Item\n * Navigates to a specific dashboard.\n */\nexport const DashboardNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('dashboard'),\n dashboardName: z.string().describe('Target dashboard name'),\n});\n\n/**\n * 3. Page Navigation Item\n * Navigates to a custom UI page/component.\n */\nexport const PageNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('page'),\n pageName: z.string().describe('Target custom page component name'),\n params: z.record(z.string(), z.any()).optional().describe('Parameters passed to the page context'),\n});\n\n/**\n * 4. URL Navigation Item\n * Navigates to an external or absolute URL.\n */\nexport const UrlNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('url'),\n url: z.string().describe('Target external URL'),\n target: z.enum(['_self', '_blank']).default('_self').describe('Link target window'),\n});\n\n/**\n * 5. Group Navigation Item\n * A container for child navigation items (Sub-menu).\n * Does not perform navigation itself.\n */\nexport const GroupNavItemSchema = BaseNavItemSchema.extend({\n type: z.literal('group'),\n expanded: z.boolean().default(false).describe('Default expansion state in sidebar'),\n // children property is added in the recursive definition below\n});\n\n/**\n * Recursive Union of all navigation item types.\n * Allows constructing a navigation tree.\n */\nexport const NavigationItemSchema: z.ZodType<any> = z.lazy(() => \n z.union([\n // Object Item can now have children (Airtable style: Object -> Views)\n ObjectNavItemSchema.extend({\n children: z.array(NavigationItemSchema).optional().describe('Child navigation items (e.g. specific views)'),\n }),\n DashboardNavItemSchema,\n PageNavItemSchema,\n UrlNavItemSchema,\n GroupNavItemSchema.extend({\n children: z.array(NavigationItemSchema).describe('Child navigation items'),\n })\n ])\n);\n\n/**\n * App Branding Configuration\n * Allows configuring the look and feel of the specific app.\n */\nexport const AppBrandingSchema = z.object({\n primaryColor: z.string().optional().describe('Primary theme color hex code'),\n logo: z.string().optional().describe('Custom logo URL for this app'),\n favicon: z.string().optional().describe('Custom favicon URL for this app'),\n});\n\n/**\n * Schema for Applications (Apps).\n * A logical container for business functionality (e.g., \"Sales CRM\", \"HR Portal\").\n * \n * **NAMING CONVENTION:**\n * App names are used in URLs and routing and must be lowercase snake_case.\n * Prefix with 'app_' is recommended for clarity.\n * \n * @example Good app names\n * - 'app_crm'\n * - 'app_finance'\n * - 'app_portal'\n * - 'sales_app'\n * \n * @example Bad app names (will be rejected)\n * - 'CRM' (uppercase)\n * - 'FinanceApp' (mixed case)\n * - 'Sales App' (spaces)\n */\n/**\n * App Configuration Schema\n * Defines a business application container, including its navigation, branding, and permissions.\n * \n * @example CRM App\n * {\n * name: \"crm\",\n * label: \"Sales CRM\",\n * icon: \"briefcase\",\n * navigation: [\n * { type: \"object\", id: \"nav_leads\", label: \"Leads\", objectName: \"leads\" },\n * { type: \"object\", id: \"nav_deals\", label: \"Deals\", objectName: \"deals\" }\n * ],\n * requiredPermissions: [\"app.crm.access\"]\n * }\n */\nexport const AppSchema = z.object({\n /** Machine name (id) */\n name: SnakeCaseIdentifierSchema.describe('App unique machine name (lowercase snake_case)'),\n \n /** Display label */\n label: z.string().describe('App display label'),\n\n /** App version */\n version: z.string().optional().describe('App version'),\n \n /** Description */\n description: z.string().optional().describe('App description'),\n \n /** Icon name (Lucide) */\n icon: z.string().optional().describe('App icon used in the App Launcher'),\n \n /** Branding/Theming Configuration */\n branding: AppBrandingSchema.optional().describe('App-specific branding'),\n \n /** Application status */\n active: z.boolean().optional().default(true).describe('Whether the app is enabled'),\n\n /** Is this the default app for new users? */\n isDefault: z.boolean().optional().default(false).describe('Is default app'),\n \n /** \n * Navigation Tree Structure.\n * Replaces the old flat 'tabs' list with a structured menu.\n */\n navigation: z.array(NavigationItemSchema).optional().describe('Structured navigation menu tree'),\n \n /** \n * App-level Home Page Override\n * ID of the navigation item to act as the landing page.\n * If not set, usually defaults to the first navigation item.\n */\n homePageId: z.string().optional().describe('ID of the navigation item to serve as landing page'),\n\n /** \n * Access Control\n * List of permissions required to access this app.\n * Modern replacement for role/profile based assignment.\n * Example: [\"app.access.crm\"]\n */\n requiredPermissions: z.array(z.string()).optional().describe('Permissions required to access this app'),\n \n /** \n * Package Components (For config file convenience)\n * In a real monorepo these might be auto-discovered, but here we allow explicit registration.\n */\n objects: z.array(z.any()).optional().describe('Objects belonging to this app'),\n apis: z.array(z.any()).optional().describe('Custom APIs belonging to this app'),\n});\n\nexport const App = Object.assign(AppSchema, {\n create: <T extends z.input<typeof AppSchema>>(config: T) => config,\n});\n\n// Main Types\nexport type App = z.infer<typeof AppSchema>;\nexport type AppBranding = z.infer<typeof AppBrandingSchema>;\nexport type NavigationItem = z.infer<typeof NavigationItemSchema>;\n\n// Discriminated Item Types (Helper exports)\nexport type ObjectNavItem = z.infer<typeof ObjectNavItemSchema>;\nexport type DashboardNavItem = z.infer<typeof DashboardNavItemSchema>;\nexport type PageNavItem = z.infer<typeof PageNavItemSchema>;\nexport type UrlNavItem = z.infer<typeof UrlNavItemSchema>;\nexport type GroupNavItem = z.infer<typeof GroupNavItemSchema> & { children: NavigationItem[] };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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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","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","import_zod","MetricType","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"]}
|