@seedprotocol/sdk 0.4.4 → 0.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -348
- package/dist/{ArweaveClient-DkNLWiSZ.js → ArweaveClient-CgWK-JgT.js} +8 -8
- package/dist/{ArweaveClient-DkNLWiSZ.js.map → ArweaveClient-CgWK-JgT.js.map} +1 -1
- package/dist/{ArweaveClient-CczHvccG.js → ArweaveClient-WcG8CZAE.js} +8 -8
- package/dist/{ArweaveClient-CczHvccG.js.map → ArweaveClient-WcG8CZAE.js.map} +1 -1
- package/dist/{Db-DJvjXVlp.js → Db-DjFdIdR9.js} +9 -9
- package/dist/{Db-DJvjXVlp.js.map → Db-DjFdIdR9.js.map} +1 -1
- package/dist/{Db-BzQR2KX9.js → Db-DjofXdeU.js} +9 -9
- package/dist/{Db-BzQR2KX9.js.map → Db-DjofXdeU.js.map} +1 -1
- package/dist/{EasClient-CHQYmjj2.js → EasClient-Aojewp6P.js} +8 -8
- package/dist/{EasClient-CodrIgW-.js.map → EasClient-Aojewp6P.js.map} +1 -1
- package/dist/{EasClient-CodrIgW-.js → EasClient-BVFXp2O6.js} +8 -8
- package/dist/{EasClient-CHQYmjj2.js.map → EasClient-BVFXp2O6.js.map} +1 -1
- package/dist/{FileManager-BbvkZJCH.js → FileManager-C9zr4AJe.js} +8 -8
- package/dist/{FileManager-BbvkZJCH.js.map → FileManager-C9zr4AJe.js.map} +1 -1
- package/dist/{FileManager-BIVsDnMu.js → FileManager-CxGJLw5C.js} +8 -8
- package/dist/{FileManager-BIVsDnMu.js.map → FileManager-CxGJLw5C.js.map} +1 -1
- package/dist/Item/Item.d.ts.map +1 -1
- package/dist/ItemProperty/ItemProperty.d.ts.map +1 -1
- package/dist/Model/Model.d.ts.map +1 -1
- package/dist/ModelProperty/ModelProperty.d.ts.map +1 -1
- package/dist/ModelProperty/service/actors/compareAndMarkDraft.d.ts.map +1 -1
- package/dist/ModelProperty/service/actors/saveToSchema.d.ts.map +1 -1
- package/dist/{ModelProperty-gjcA83Mq.js → ModelProperty-CGdkocQ8.js} +31 -766
- package/dist/ModelProperty-CGdkocQ8.js.map +1 -0
- package/dist/{PathResolver-kGzba-zC.js → PathResolver-CX6GHoTS.js} +8 -8
- package/dist/{PathResolver-kGzba-zC.js.map → PathResolver-CX6GHoTS.js.map} +1 -1
- package/dist/{PathResolver-9zAzPhee.js → PathResolver-z_WX47_o.js} +8 -8
- package/dist/{PathResolver-9zAzPhee.js.map → PathResolver-z_WX47_o.js.map} +1 -1
- package/dist/{QueryClient-C7ZkTT0z.js → QueryClient-ByKPdRmE.js} +8 -8
- package/dist/{QueryClient-C7ZkTT0z.js.map → QueryClient-ByKPdRmE.js.map} +1 -1
- package/dist/{QueryClient-CEtsek7Q.js → QueryClient-Cb1iJO-x.js} +8 -8
- package/dist/{QueryClient-CEtsek7Q.js.map → QueryClient-Cb1iJO-x.js.map} +1 -1
- package/dist/Schema/Schema.d.ts.map +1 -1
- package/dist/Schema/service/actors/writePropertiesToDb.d.ts.map +1 -1
- package/dist/Schema/service/addModelsMachine.d.ts.map +1 -1
- package/dist/{Schema-ClTcpgbt.js → Schema-D1eqDHyt.js} +758 -60
- package/dist/Schema-D1eqDHyt.js.map +1 -0
- package/dist/{SchemaValidationService-BfoEiHNr.js → SchemaValidationService-DyttFaV_.js} +7 -7
- package/dist/{SchemaValidationService-BfoEiHNr.js.map → SchemaValidationService-DyttFaV_.js.map} +1 -1
- package/dist/cjs/{ModelProperty-BRKRREYP.js → ModelProperty-BeJvgKMw.js} +62 -436
- package/dist/cjs/ModelProperty-BeJvgKMw.js.map +1 -0
- package/dist/cjs/{Schema-CV9hMg8m.js → Schema-CVs9J6eP.js} +426 -91
- package/dist/cjs/Schema-CVs9J6eP.js.map +1 -0
- package/dist/cjs/{SchemaValidationService-DUtQUerg.js → SchemaValidationService-CDKcVRFQ.js} +3 -3
- package/dist/cjs/{SchemaValidationService-DUtQUerg.js.map → SchemaValidationService-CDKcVRFQ.js.map} +1 -1
- package/dist/cjs/{getItem-BThT-UOt.js → getItem-B5RYPvrG.js} +3 -3
- package/dist/cjs/{getItem-BThT-UOt.js.map → getItem-B5RYPvrG.js.map} +1 -1
- package/dist/cjs/{getPublishPayload-CKZ7rVbU.js → getPublishPayload-BD1qRob1.js} +6 -6
- package/dist/cjs/getPublishPayload-BD1qRob1.js.map +1 -0
- package/dist/cjs/{getPublishUploads-CuGIvV-Q.js → getPublishUploads-CnC9aYxs.js} +4 -4
- package/dist/cjs/{getPublishUploads-CuGIvV-Q.js.map → getPublishUploads-CnC9aYxs.js.map} +1 -1
- package/dist/cjs/{getSegmentedItemProperties-BCJXJlTR.js → getSegmentedItemProperties-B_njnntx.js} +2 -2
- package/dist/cjs/{getSegmentedItemProperties-BCJXJlTR.js.map → getSegmentedItemProperties-B_njnntx.js.map} +1 -1
- package/dist/cjs/{index-C3j3m34a.js → index-BeKPbbk0.js} +11466 -11546
- package/dist/cjs/index-BeKPbbk0.js.map +1 -0
- package/dist/cjs/{index-CbTBDqTJ.js → index-Dnywap_P.js} +3 -3
- package/dist/cjs/index-Dnywap_P.js.map +1 -0
- package/dist/client/actors/platformClassesInit.d.ts.map +1 -1
- package/dist/client/actors/saveAppState.d.ts.map +1 -1
- package/dist/eas.d.ts.map +1 -1
- package/dist/{getItem-BWPo8wd0.js → getItem-BB5HBCbK.js} +8 -8
- package/dist/{getItem-BWPo8wd0.js.map → getItem-BB5HBCbK.js.map} +1 -1
- package/dist/{getPublishPayload-Caw2laZM.js → getPublishPayload-uLm0AqN_.js} +10 -10
- package/dist/getPublishPayload-uLm0AqN_.js.map +1 -0
- package/dist/{getPublishUploads-MlyBuoXh.js → getPublishUploads-Dc-HqhO8.js} +9 -9
- package/dist/{getPublishUploads-MlyBuoXh.js.map → getPublishUploads-Dc-HqhO8.js.map} +1 -1
- package/dist/{getSegmentedItemProperties-COLLdDo4.js → getSegmentedItemProperties-BrIqFNfD.js} +2 -2
- package/dist/{getSegmentedItemProperties-COLLdDo4.js.map → getSegmentedItemProperties-BrIqFNfD.js.map} +1 -1
- package/dist/helpers/schema.d.ts.map +1 -1
- package/dist/helpers/updateSchema.d.ts.map +1 -1
- package/dist/imports/json.d.ts.map +1 -1
- package/dist/{index-D2OGsG4v.js → index-2FcQHgKp.js} +2 -2
- package/dist/index-2FcQHgKp.js.map +1 -0
- package/dist/{ClientManager-DoHUt8tU.js → index-DPll6EAp.js} +11460 -11538
- package/dist/index-DPll6EAp.js.map +1 -0
- package/dist/{index-B9i_mXXp.js → index-LEY0Og1p.js} +9 -9
- package/dist/index-LEY0Og1p.js.map +1 -0
- package/dist/main.cjs +2 -2
- package/dist/main.js +13 -13
- package/dist/main.js.map +1 -1
- package/dist/node.js +15 -15
- package/dist/{property-fK7tSUDX.js → property-B15X7jLX.js} +4 -4
- package/dist/property-B15X7jLX.js.map +1 -0
- package/dist/{queries-DGOk16cd.js → queries-BPDSpiEX.js} +2 -2
- package/dist/{queries-DGOk16cd.js.map → queries-BPDSpiEX.js.map} +1 -1
- package/dist/services/write/actors/writeToDatabase.d.ts.map +1 -1
- package/package.json +6 -2
- package/dist/ClientManager-DoHUt8tU.js.map +0 -1
- package/dist/ModelProperty-gjcA83Mq.js.map +0 -1
- package/dist/Schema-ClTcpgbt.js.map +0 -1
- package/dist/cjs/ModelProperty-BRKRREYP.js.map +0 -1
- package/dist/cjs/Schema-CV9hMg8m.js.map +0 -1
- package/dist/cjs/getPublishPayload-CKZ7rVbU.js.map +0 -1
- package/dist/cjs/index-C3j3m34a.js.map +0 -1
- package/dist/cjs/index-CbTBDqTJ.js.map +0 -1
- package/dist/getPublishPayload-Caw2laZM.js.map +0 -1
- package/dist/index-B9i_mXXp.js.map +0 -1
- package/dist/index-D2OGsG4v.js.map +0 -1
- package/dist/property-fK7tSUDX.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Schema-CV9hMg8m.js","sources":["../../src/Schema/service/actors/loadOrCreateSchema.ts","../../src/Schema/service/actors/validateSchema.ts","../../src/Schema/service/addModelsMachine.ts","../../src/Schema/service/actors/checkExistingSchema.ts","../../src/Schema/service/actors/writeSchemaToDb.ts","../../src/Schema/service/actors/verifySchemaInDb.ts","../../src/Schema/service/actors/writeModelsToDb.ts","../../src/Schema/service/actors/verifyModelsInDb.ts","../../src/Schema/service/actors/createModelInstances.ts","../../src/Schema/service/actors/verifyModelInstancesInCache.ts","../../src/Schema/service/actors/writePropertiesToDb.ts","../../src/Schema/service/actors/verifyPropertiesInDb.ts","../../src/Schema/service/actors/createPropertyInstances.ts","../../src/Schema/service/actors/verifyPropertyInstancesInCache.ts","../../src/Schema/service/schemaMachine.ts","../../src/Schema/Schema.ts"],"sourcesContent":["import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types'\nimport { SchemaMachineContext } from '../schemaMachine'\nimport { getLatestSchemaVersion, listCompleteSchemaFiles } from '@/helpers/schema'\nimport { SchemaFileFormat, type JsonImportSchema } from '@/types/import'\nimport { BaseFileManager, generateId, } from '@/helpers'\nimport { addModelsToDb, addSchemaToDb, loadModelsFromDbForSchema } from '@/helpers/db'\nimport { createModelsFromJson } from '@/imports/json'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { schemas } from '@/seedSchema/SchemaSchema'\nimport { modelSchemas } from '@/seedSchema/ModelSchemaSchema'\nimport { models as modelsTable, properties as propertiesTable } from '@/seedSchema/ModelSchema'\nimport { eq, and, desc } from 'drizzle-orm'\nimport debug from 'debug'\nimport { isInternalSchema, SEED_PROTOCOL_SCHEMA_NAME } from '@/helpers/constants'\n\nconst logger = debug('seedSdk:schema:actors:loadOrCreateSchema')\n\n/**\n * Query model IDs (schemaFileId) from database for a given schema\n * This is used to populate _liveQueryModelIds immediately when loading a schema\n * @param schemaId - The database ID of the schema\n * @returns Array of model file IDs (schemaFileId) for models linked to this schema\n */\nconst getModelIdsForSchema = async (schemaId: number): Promise<string[]> => {\n const db = BaseDb.getAppDb()\n if (!db) {\n logger('Database not available, cannot query model IDs')\n return []\n }\n\n try {\n const modelRecords = await db\n .select({\n modelFileId: modelsTable.schemaFileId,\n })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, schemaId))\n \n const modelIds = modelRecords\n .map((row: { modelFileId: string | null }) => row.modelFileId)\n .filter((id: string | null | undefined): id is string => id !== null && id !== undefined)\n \n logger(`Found ${modelIds.length} model IDs for schema (id: ${schemaId}): ${modelIds.join(', ')}`)\n return modelIds\n } catch (error) {\n logger(`Error querying model IDs for schema ${schemaId}:`, error)\n return []\n }\n}\n\n/**\n * Create Model instances for all model IDs to ensure they're cached before getContext runs\n * This ensures that Model.getById() in Schema.getContext() will find the instances\n * @param modelIds - Array of model file IDs to create instances for\n */\nconst createModelInstances = async (modelIds: string[]): Promise<void> => {\n if (modelIds.length === 0) {\n return\n }\n\n try {\n const { Model } = await import('@/Model/Model')\n \n // Create instances for all model IDs in parallel\n // Model.createById() will check cache first, then query DB and create if needed\n const createPromises = modelIds.map(async (modelFileId) => {\n try {\n const model = await Model.createById(modelFileId)\n if (model) {\n logger(`Created/cached Model instance for modelFileId \"${modelFileId}\"`)\n } else {\n logger(`Model.createById returned undefined for modelFileId \"${modelFileId}\" (may not exist in DB yet)`)\n }\n } catch (error) {\n logger(`Error creating Model instance for modelFileId \"${modelFileId}\": ${error}`)\n // Don't throw - continue with other models\n }\n })\n \n await Promise.all(createPromises)\n logger(`Finished creating/caching ${modelIds.length} Model instances`)\n } catch (error) {\n logger(`Error in createModelInstances: ${error}`)\n // Don't throw - this is best-effort to pre-populate cache\n }\n}\n\n/**\n * Verify that properties are persisted to the database for a given model\n * This is important in browser environments where database writes may not be immediately visible\n * @param modelId - Database ID of the model\n * @param modelName - Name of the model (for logging)\n * @param maxRetries - Maximum number of retry attempts\n * @param retryDelay - Delay between retries in milliseconds\n * @returns Promise that resolves when properties are found, or rejects if not found after max retries\n */\nconst verifyPropertiesPersisted = async (\n modelId: number,\n modelName: string,\n maxRetries: number = 10,\n retryDelay: number = 100\n): Promise<void> => {\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not available for property verification')\n }\n\n for (let attempt = 0; attempt < maxRetries; attempt++) {\n const props = await db\n .select()\n .from(propertiesTable)\n .where(eq(propertiesTable.modelId, modelId))\n .limit(1)\n \n if (props.length > 0) {\n logger(`Verified properties exist for model \"${modelName}\" (modelId: ${modelId}) after ${attempt + 1} attempt(s)`)\n return\n }\n\n if (attempt < maxRetries - 1) {\n logger(`Properties not yet visible for model \"${modelName}\" (modelId: ${modelId}), retrying in ${retryDelay}ms (attempt ${attempt + 1}/${maxRetries})`)\n await new Promise(resolve => setTimeout(resolve, retryDelay))\n }\n }\n\n throw new Error(`Properties not found for model \"${modelName}\" (modelId: ${modelId}) after ${maxRetries} attempts. This may indicate a database write issue in the browser environment.`)\n}\n\n/**\n * Sanitize a schema name to be filesystem-safe\n * Replaces all special characters (except alphanumeric, hyphens, underscores) with underscores\n * Converts spaces to underscores\n * Removes leading/trailing underscores\n * \n * @param name - Schema name to sanitize\n * @returns Sanitized name safe for use in filenames\n */\nconst sanitizeSchemaName = (name: string): string => {\n return name\n .replace(/[^a-zA-Z0-9\\s_-]/g, '_') // Replace special chars (except spaces, hyphens, underscores) with underscore\n .replace(/\\s+/g, '_') // Convert spaces to underscores\n .replace(/^_+|_+$/g, '') // Remove leading/trailing underscores\n .replace(/_+/g, '_') // Collapse multiple underscores to single\n}\n\n/**\n * Generate filename for a schema\n * Format: {schemaFileId}_{schemaName}_v{version}.json\n * \n * The ID-first format ensures all files for a schema group together when sorted alphabetically.\n * \n * @param name - Schema name\n * @param version - Schema version\n * @param schemaFileId - Schema file ID (required)\n */\nconst getSchemaFilename = (name: string, version: number, schemaFileId: string): string => {\n const sanitizedName = sanitizeSchemaName(name)\n return `${schemaFileId}_${sanitizedName}_v${version}.json`\n}\n\n/**\n * Get the full file path for a schema\n * Format: {schemaFileId}_{schemaName}_v{version}.json\n * \n * The ID-first format ensures all files for a schema group together when sorted alphabetically.\n * \n * @param name - Schema name\n * @param version - Schema version\n * @param schemaFileId - Schema file ID (required)\n */\nconst getSchemaFilePath = (name: string, version: number, schemaFileId: string): string => {\n const path = BaseFileManager.getPathModule()\n const filename = getSchemaFilename(name, version, schemaFileId)\n const workingDir = BaseFileManager.getWorkingDir()\n return path.join(workingDir, filename)\n}\n\nexport const loadOrCreateSchema = fromCallback<\n EventObject,\n FromCallbackInput<SchemaMachineContext>\n>(({ sendBack, input: { context } }) => {\n const _loadOrCreateSchema = async (): Promise<void> => {\n const { schemaName } = context\n \n // Check if this is an internal SDK schema (should not create files in app directory) — use static import so consumer bundles resolve correctly\n const isInternal = isInternalSchema(schemaName)\n \n if (isInternal && schemaName === SEED_PROTOCOL_SCHEMA_NAME) {\n // For Seed Protocol, always load from internal file, never create new\n logger(`Loading internal Seed Protocol schema from SDK`)\n console.log('[loadOrCreateSchema] Loading internal Seed Protocol schema from SDK')\n try {\n const internalSchema = await import('@/seedSchema/SEEDPROTOCOL_Seed_Protocol_v1.json')\n const schemaFile = internalSchema.default as SchemaFileFormat\n console.log('[loadOrCreateSchema] Loaded schema file, models count:', Object.keys(schemaFile.models || {}).length)\n \n // Check if it exists in database, if not, add it\n const db = BaseDb.getAppDb()\n if (db && schemaFile.id) {\n console.log('[loadOrCreateSchema] Database available, checking for existing schema')\n const existing = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, schemaFile.id))\n .limit(1)\n \n let schemaRecord = existing.length > 0 ? existing[0] : null\n \n if (existing.length === 0) {\n // Add to database if not present\n const schemaData = JSON.stringify(schemaFile, null, 2)\n schemaRecord = await addSchemaToDb(\n {\n name: schemaName,\n version: schemaFile.version,\n createdAt: new Date(schemaFile.metadata.createdAt).getTime(),\n updatedAt: new Date(schemaFile.metadata.updatedAt).getTime(),\n },\n schemaFile.id,\n schemaData,\n false, // isDraft = false (it's a published internal schema)\n )\n logger(`Added Seed Protocol schema to database`)\n \n // Also add models and properties to database\n // Convert to JsonImportSchema format for processing\n const importData: JsonImportSchema = {\n name: schemaName,\n models: Object.fromEntries(\n Object.entries(schemaFile.models || {}).map(([modelName, model]) => [\n modelName,\n {\n ...model,\n // Remove id field for import format\n id: undefined,\n properties: Object.fromEntries(\n Object.entries(model.properties || {}).map(([propName, prop]) => {\n const schemaProp = prop as any\n const jsonProp: any = {\n type: schemaProp.dataType || schemaProp.type,\n }\n \n // Copy other properties\n Object.keys(schemaProp).forEach(key => {\n if (key !== 'id' && key !== 'dataType') {\n jsonProp[key] = schemaProp[key]\n }\n })\n \n // Handle Relation type\n if (schemaProp.ref || schemaProp.refModelName) {\n jsonProp.model = schemaProp.refModelName || schemaProp.ref\n }\n \n // Handle List type\n if (schemaProp.dataType === 'List' && schemaProp.refValueType) {\n jsonProp.items = {\n type: schemaProp.refValueType,\n model: schemaProp.refModelName || schemaProp.ref,\n }\n }\n \n // Handle storage configuration\n if (schemaProp.storageType || schemaProp.localStorageDir || schemaProp.filenameSuffix) {\n jsonProp.storage = {\n type: schemaProp.storageType === 'ItemStorage' ? 'ItemStorage' : 'PropertyStorage',\n path: schemaProp.localStorageDir,\n extension: schemaProp.filenameSuffix,\n }\n }\n \n return [propName, jsonProp]\n }),\n ),\n },\n ]),\n ) as JsonImportSchema['models'],\n }\n \n // Generate schema ID if missing\n if (!schemaFile.id) {\n schemaFile.id = generateId()\n logger('Generated schema ID for schema:', schemaFile.id)\n }\n\n // Extract schemaFileIds from JSON file and generate missing ones BEFORE creating models\n // This ensures Model instances are created with correct IDs\n const modelFileIds = new Map<string, string>()\n const propertyFileIds = new Map<string, Map<string, string>>()\n \n for (const [modelName, model] of Object.entries(schemaFile.models || {})) {\n // Generate model ID if missing\n if (!model.id) {\n model.id = generateId()\n logger(`Generated model ID for ${modelName}:`, model.id)\n // Update the schemaFile object so it's included in schemaData\n schemaFile.models[modelName].id = model.id\n }\n modelFileIds.set(modelName, model.id)\n \n const propIds = new Map<string, string>()\n for (const [propName, prop] of Object.entries(model.properties || {})) {\n // Generate property ID if missing\n if (!prop.id) {\n prop.id = generateId()\n logger(`Generated property ID for ${modelName}.${propName}:`, prop.id)\n // Update the schemaFile object so it's included in schemaData\n schemaFile.models[modelName].properties[propName].id = prop.id\n }\n propIds.set(propName, prop.id)\n }\n if (propIds.size > 0) {\n propertyFileIds.set(modelName, propIds)\n }\n }\n \n // Convert JSON models to Model classes, passing modelFileIds and propertyFileIds so Model instances use correct IDs\n const modelDefinitions = await createModelsFromJson(importData, modelFileIds, propertyFileIds)\n \n // Add models to database and link them to the schema with schemaFileIds\n if (Object.keys(modelDefinitions).length > 0 && schemaRecord) {\n await addModelsToDb(modelDefinitions, schemaRecord, undefined, {\n schemaFileId: schemaFile.id,\n modelFileIds,\n propertyFileIds,\n })\n logger(`Added ${Object.keys(modelDefinitions).length} models and their properties to database for Seed Protocol schema`)\n \n // Verify properties are persisted (important for browser environments)\n // Query the database to get model IDs that were just created\n const modelLinks = await db\n .select({\n modelId: modelSchemas.modelId,\n modelName: modelsTable.name,\n })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, schemaRecord.id!))\n \n // Verify properties for at least one model (Seed model if available)\n const seedModelLink = modelLinks.find((link: { modelId: number | null; modelName: string | null }) => link.modelName === 'Seed')\n if (seedModelLink && seedModelLink.modelId) {\n await verifyPropertiesPersisted(seedModelLink.modelId, 'Seed', 10, 100)\n } else if (modelLinks.length > 0 && modelLinks[0].modelId) {\n // Fallback to first model if Seed not found\n await verifyPropertiesPersisted(modelLinks[0].modelId, modelLinks[0].modelName || 'unknown', 10, 100)\n }\n }\n } else {\n // Schema exists, but always ensure models/properties are in database\n // This handles the case where schema was added but models weren't (from previous code)\n // or where models were added but properties weren't\n // Check if models are linked to the schema\n const modelLinks = await db\n .select({\n modelId: modelSchemas.modelId,\n modelName: modelsTable.name,\n })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, schemaRecord.id!))\n \n // Check if we have all expected models\n const expectedModelNames = Object.keys(schemaFile.models || {})\n const linkedModelNames = modelLinks\n .map((link: { modelId: number | null; modelName: string | null }) => link.modelName)\n .filter((n: string | null): n is string => n !== null)\n const missingModels = expectedModelNames.filter(name => !linkedModelNames.includes(name))\n \n console.log(`[loadOrCreateSchema] Schema exists check - Expected models: ${expectedModelNames.join(', ')}, Linked models: ${linkedModelNames.join(', ')}, Missing: ${missingModels.join(', ') || 'none'}`)\n \n // Check if properties exist for linked models\n let missingProperties = false\n if (modelLinks.length > 0) {\n for (const link of modelLinks) {\n if (link.modelId) {\n const props = await db\n .select()\n .from(propertiesTable)\n .where(eq(propertiesTable.modelId, link.modelId))\n .limit(1)\n if (props.length === 0) {\n missingProperties = true\n break\n }\n }\n }\n }\n \n // If models are missing or properties are missing, add them\n console.log(`[loadOrCreateSchema] Schema exists check: missingModels=${missingModels.length}, missingProperties=${missingProperties}, modelLinks=${modelLinks.length}`)\n if (missingModels.length > 0 || missingProperties || modelLinks.length === 0) {\n logger(`Seed Protocol schema exists but models/properties incomplete (missing models: ${missingModels.length}, missing properties: ${missingProperties}), adding them now`)\n console.log(`[loadOrCreateSchema] Adding models/properties: missingModels=${missingModels.length}, missingProperties=${missingProperties}, modelLinks=${modelLinks.length}`)\n // Convert SchemaFileFormat to JsonImportSchema format\n // Schema format: { dataType, ref, refValueType, storageType, localStorageDir, filenameSuffix }\n // JSON import format: { type, model, items, storage: { type, path, extension } }\n const importData: JsonImportSchema = {\n name: schemaName,\n models: Object.fromEntries(\n Object.entries(schemaFile.models || {}).map(([modelName, model]) => [\n modelName,\n {\n ...model,\n id: undefined,\n properties: Object.fromEntries(\n Object.entries(model.properties || {}).map(([propName, prop]) => {\n const schemaProp = prop as any\n const jsonProp: any = {\n type: schemaProp.dataType || schemaProp.type,\n }\n \n // Handle Relation type\n if (schemaProp.ref || schemaProp.refModelName) {\n jsonProp.model = schemaProp.refModelName || schemaProp.ref\n }\n \n // Handle List type\n if (schemaProp.dataType === 'List' && schemaProp.refValueType) {\n jsonProp.items = {\n type: schemaProp.refValueType,\n model: schemaProp.refModelName || schemaProp.ref,\n }\n }\n \n // Handle storage configuration\n if (schemaProp.storageType || schemaProp.localStorageDir || schemaProp.filenameSuffix) {\n jsonProp.storage = {\n type: schemaProp.storageType === 'ItemStorage' ? 'ItemStorage' : 'PropertyStorage',\n path: schemaProp.localStorageDir,\n extension: schemaProp.filenameSuffix,\n }\n }\n \n return [propName, jsonProp]\n }),\n ),\n },\n ]),\n ) as JsonImportSchema['models'],\n }\n \n // Generate schema ID if missing\n if (!schemaFile.id) {\n schemaFile.id = generateId()\n logger('Generated schema ID for schema:', schemaFile.id)\n }\n\n // Extract schemaFileIds from JSON file and generate missing ones BEFORE creating models\n // This ensures Model instances are created with correct IDs\n const modelFileIds = new Map<string, string>()\n const propertyFileIds = new Map<string, Map<string, string>>()\n \n for (const [modelName, model] of Object.entries(schemaFile.models || {})) {\n // Generate model ID if missing\n if (!model.id) {\n model.id = generateId()\n logger(`Generated model ID for ${modelName}:`, model.id)\n // Update the schemaFile object so it's included in schemaData\n schemaFile.models[modelName].id = model.id\n }\n modelFileIds.set(modelName, model.id)\n \n const propIds = new Map<string, string>()\n for (const [propName, prop] of Object.entries(model.properties || {})) {\n // Generate property ID if missing\n if (!prop.id) {\n prop.id = generateId()\n logger(`Generated property ID for ${modelName}.${propName}:`, prop.id)\n // Update the schemaFile object so it's included in schemaData\n schemaFile.models[modelName].properties[propName].id = prop.id\n }\n propIds.set(propName, prop.id)\n }\n if (propIds.size > 0) {\n propertyFileIds.set(modelName, propIds)\n }\n }\n \n // Convert JSON models to Model classes, passing modelFileIds and propertyFileIds so Model instances use correct IDs\n const modelDefinitions = await createModelsFromJson(importData, modelFileIds, propertyFileIds)\n \n console.log(`[loadOrCreateSchema] createModelsFromJson returned ${Object.keys(modelDefinitions).length} models: ${Object.keys(modelDefinitions).join(', ')}`)\n console.log(`[loadOrCreateSchema] Expected ${expectedModelNames.length} models from schema file: ${expectedModelNames.join(', ')}`)\n \n // Verify all expected models are in modelDefinitions\n const missingFromDefinitions = expectedModelNames.filter(name => !Object.keys(modelDefinitions).includes(name))\n if (missingFromDefinitions.length > 0) {\n console.warn(`[loadOrCreateSchema] WARNING: Some expected models are missing from modelDefinitions: ${missingFromDefinitions.join(', ')}`)\n }\n \n if (Object.keys(modelDefinitions).length > 0) {\n console.log(`[loadOrCreateSchema] Calling addModelsToDb with ${Object.keys(modelDefinitions).length} models: ${Object.keys(modelDefinitions).join(', ')}`)\n await addModelsToDb(modelDefinitions, schemaRecord, undefined, {\n schemaFileId: schemaFile.id,\n modelFileIds,\n propertyFileIds,\n })\n console.log(`[loadOrCreateSchema] Successfully added ${Object.keys(modelDefinitions).length} models and their properties to database`)\n logger(`Added ${Object.keys(modelDefinitions).length} models and their properties to database for existing Seed Protocol schema`)\n \n // Small delay to ensure database writes are visible (important for browser environments)\n await new Promise(resolve => setTimeout(resolve, 200))\n \n // Verify properties are persisted (important for browser environments)\n // Re-query model links to get updated model IDs\n // Retry querying until all expected models are visible\n const expectedModelNames = Object.keys(schemaFile.models || {})\n let updatedModelLinks: Array<{ modelId: number | null; modelName: string | null }> = []\n const maxRetries = 10\n const retryDelay = 100\n \n for (let attempt = 0; attempt < maxRetries; attempt++) {\n updatedModelLinks = await db\n .select({\n modelId: modelSchemas.modelId,\n modelName: modelsTable.name,\n })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, schemaRecord.id!))\n \n const linkedModelNames = updatedModelLinks\n .map((link: { modelId: number | null; modelName: string | null }) => link.modelName)\n .filter((n: string | null): n is string => n !== null)\n \n const allModelsPresent = expectedModelNames.every(name => linkedModelNames.includes(name))\n \n if (allModelsPresent) {\n break\n }\n \n if (attempt < maxRetries - 1) {\n await new Promise(resolve => setTimeout(resolve, retryDelay))\n }\n }\n \n console.log(`[loadOrCreateSchema] After adding models, found ${updatedModelLinks.length} models linked to schema: ${updatedModelLinks.map(l => l.modelName).filter(Boolean).join(', ')}`)\n \n // Verify properties for at least one model (Seed model if available)\n const seedModelLink = updatedModelLinks.find((link: { modelId: number | null; modelName: string | null }) => link.modelName === 'Seed')\n if (seedModelLink && seedModelLink.modelId) {\n await verifyPropertiesPersisted(seedModelLink.modelId, 'Seed', 10, 100)\n } else if (updatedModelLinks.length > 0 && updatedModelLinks[0].modelId) {\n // Fallback to first model if Seed not found\n await verifyPropertiesPersisted(updatedModelLinks[0].modelId, updatedModelLinks[0].modelName || 'unknown', 10, 100)\n }\n }\n } else {\n console.log(`[loadOrCreateSchema] Schema exists with all models and properties already in database`)\n logger(`Seed Protocol schema exists with all models and properties already in database`)\n }\n }\n \n // Query model IDs from database to populate _liveQueryModelIds immediately\n let modelIds: string[] = []\n if (schemaRecord && schemaRecord.id) {\n modelIds = await getModelIdsForSchema(schemaRecord.id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n _liveQueryModelIds: modelIds,\n })\n return\n } else {\n // No database available, send schema without model IDs\n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n _liveQueryModelIds: [],\n })\n return\n }\n } catch (error) {\n logger(`Error loading internal Seed Protocol schema: ${error}`)\n // Fall through to normal loading logic\n }\n }\n\n if (!schemaName) {\n throw new Error('Schema name is required')\n }\n\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not found')\n }\n\n // STEP 1: Query database first for existing schema (prefer drafts)\n // First try by name (most common case)\n let dbSchemas = await db\n .select()\n .from(schemas)\n .where(eq(schemas.name, schemaName))\n .orderBy(desc(schemas.isDraft), desc(schemas.version))\n .limit(1)\n\n // If not found by name, also try querying by schemaFileId directly\n // This handles the case where an ID is passed instead of a name (e.g., 'test-schema-1')\n if (dbSchemas.length === 0) {\n logger(`No schema found by name \"${schemaName}\", trying to find by schemaFileId`)\n const schemasByFileId = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, schemaName))\n .orderBy(desc(schemas.isDraft), desc(schemas.version))\n .limit(1)\n \n if (schemasByFileId.length > 0) {\n logger(`Found schema by schemaFileId \"${schemaName}\" (name in DB: ${schemasByFileId[0].name})`)\n dbSchemas = schemasByFileId\n }\n }\n\n // If not found by name, or if found but it's not a draft, try to find by schemaFileId from file\n // This handles the case where a draft's name was changed but we're loading by the old name\n const shouldTrySchemaFileId = dbSchemas.length === 0 || (dbSchemas.length > 0 && dbSchemas[0].isDraft === false)\n \n if (shouldTrySchemaFileId) {\n // First, try to get schemaFileId from file if it exists\n const completeSchemas = await listCompleteSchemaFiles()\n const matchingFileSchemas = completeSchemas.filter((s) => s.name === schemaName)\n \n if (matchingFileSchemas.length > 0) {\n const latestFile = matchingFileSchemas.reduce((prev, current) =>\n current.version > prev.version ? current : prev,\n )\n \n // Read file to get schemaFileId\n try {\n const content = await BaseFileManager.readFileAsString(latestFile.filePath)\n const fileSchema = JSON.parse(content) as SchemaFileFormat\n \n if (fileSchema.id) {\n // Look up by schemaFileId - query for DRAFTS first, then published\n // This ensures we find the draft even if there's also a published version\n const draftsByFileId = await db\n .select()\n .from(schemas)\n .where(and(\n eq(schemas.schemaFileId, fileSchema.id),\n eq(schemas.isDraft, true)\n ))\n .orderBy(desc(schemas.version))\n .limit(1)\n \n if (draftsByFileId.length > 0) {\n logger(`Found DRAFT by schemaFileId ${fileSchema.id} (name in DB: ${draftsByFileId[0].name}, requested name: ${schemaName})`)\n dbSchemas = draftsByFileId\n } else {\n // No draft found, check for any record with this schemaFileId\n const dbSchemasByFileId = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, fileSchema.id))\n .orderBy(desc(schemas.isDraft), desc(schemas.version))\n .limit(1)\n \n if (dbSchemasByFileId.length > 0) {\n const foundSchema = dbSchemasByFileId[0]\n logger(`Found schema by schemaFileId ${fileSchema.id} (name in DB: ${foundSchema.name}, requested name: ${schemaName}, isDraft: ${foundSchema.isDraft})`)\n \n // Always prefer the one found by schemaFileId if we didn't find anything by name\n // OR if the one found by schemaFileId is a draft (even if we found a non-draft by name)\n if (foundSchema.isDraft === true || dbSchemas.length === 0) {\n dbSchemas = dbSchemasByFileId\n logger(`Using schema found by schemaFileId (isDraft: ${foundSchema.isDraft})`)\n } else if (foundSchema.isDraft === false && dbSchemas.length > 0 && dbSchemas[0].isDraft === false) {\n // Both are non-drafts, prefer the one found by schemaFileId (more reliable)\n dbSchemas = dbSchemasByFileId\n logger(`Both schemas are non-drafts, using the one found by schemaFileId`)\n } else {\n logger(`Keeping schema found by name (isDraft: ${dbSchemas[0].isDraft}) over schemaFileId result (isDraft: ${foundSchema.isDraft})`)\n }\n }\n }\n }\n } catch (error) {\n logger(`Error reading file to get schemaFileId: ${error}`)\n }\n }\n \n // If still not found and no file exists, try querying all drafts to see if any have metadata.name matching\n // This handles the case where a draft was renamed but there's no file (draft-only schema)\n if (dbSchemas.length === 0) {\n logger(`No schema found by name \"${schemaName}\" and no matching file, checking all drafts for potential match`)\n const allDrafts = await db\n .select()\n .from(schemas)\n .where(eq(schemas.isDraft, true))\n .orderBy(desc(schemas.version))\n \n logger(`Checking ${allDrafts.length} drafts for normalized name match`)\n \n // Check each draft's schemaData to see if metadata.name matches\n // Use case-insensitive and normalized comparison to handle name changes like \"blog-schema\" -> \"Blog Schema\"\n const normalizeName = (name: string) => name.toLowerCase().replace(/[^a-z0-9]/g, '')\n const normalizedRequested = normalizeName(schemaName)\n logger(`Normalized requested name: \"${schemaName}\" -> \"${normalizedRequested}\"`)\n \n for (const draft of allDrafts) {\n if (draft.schemaData) {\n try {\n const draftSchema = JSON.parse(draft.schemaData) as SchemaFileFormat\n const draftMetadataName = draftSchema.metadata?.name || ''\n const draftDbName = draft.name || ''\n \n // Check if normalized names match (handles \"blog-schema\" vs \"Blog Schema\")\n const normalizedDraftMetadata = normalizeName(draftMetadataName)\n const normalizedDraftDb = normalizeName(draftDbName)\n \n logger(`Checking draft: DB name=\"${draftDbName}\" (normalized: \"${normalizedDraftDb}\"), metadata.name=\"${draftMetadataName}\" (normalized: \"${normalizedDraftMetadata}\")`)\n \n if (normalizedDraftMetadata === normalizedRequested || normalizedDraftDb === normalizedRequested) {\n dbSchemas = [draft]\n logger(`Found draft by normalized name match: DB name=\"${draftDbName}\", metadata.name=\"${draftMetadataName}\", requested=\"${schemaName}\" (normalized: \"${normalizedRequested}\")`)\n break\n }\n } catch (error) {\n logger(`Error parsing draft schemaData: ${error}`)\n // Skip drafts with invalid schemaData\n continue\n }\n } else {\n logger(`Draft ${draft.name} (id: ${draft.id}) has no schemaData, skipping`)\n }\n }\n \n if (dbSchemas.length === 0) {\n logger(`No draft found matching normalized name \"${normalizedRequested}\"`)\n }\n }\n }\n\n if (dbSchemas.length > 0) {\n const dbSchema = dbSchemas[0]\n \n logger(`Found schema record: name=\"${dbSchema.name}\", isDraft=${dbSchema.isDraft}, hasSchemaData=${!!dbSchema.schemaData}, schemaFileId=\"${dbSchema.schemaFileId}\"`)\n\n // If it's a draft, load from schemaData\n if (dbSchema.isDraft === true && dbSchema.schemaData) {\n try {\n const schemaFile = JSON.parse(dbSchema.schemaData) as SchemaFileFormat\n logger(`Found draft schema ${schemaName} v${schemaFile.version} in database (DB name: ${dbSchema.name}, metadata.name: ${schemaFile.metadata?.name})`)\n \n // CRITICAL: Ensure schema.id matches schemaFileId from database (database is source of truth)\n if (dbSchema.schemaFileId && schemaFile.id !== dbSchema.schemaFileId) {\n logger(`Fixing schema ID mismatch: schema.id=\"${schemaFile.id}\" does not match schemaFileId=\"${dbSchema.schemaFileId}\" from database. Using database value as source of truth.`)\n schemaFile.id = dbSchema.schemaFileId\n } else if (!schemaFile.id && dbSchema.schemaFileId) {\n logger(`Schema missing id, using schemaFileId from database: \"${dbSchema.schemaFileId}\"`)\n schemaFile.id = dbSchema.schemaFileId\n }\n \n // Verify metadata matches what we expect\n if (schemaFile.metadata?.name !== dbSchema.name) {\n logger(`WARNING: Metadata name mismatch! DB name=\"${dbSchema.name}\", metadata.name=\"${schemaFile.metadata?.name}\"`)\n }\n \n // Build merged models without mutating schemaFile (read-only approach)\n let mergedModels = { ...(schemaFile.models || {}) }\n \n // Ensure models are populated (fallback for seed-protocol if missing)\n if ((!mergedModels || Object.keys(mergedModels).length === 0) && schemaName === 'Seed Protocol') {\n try {\n const internalSchema = await import('@/seedSchema/SEEDPROTOCOL_Seed_Protocol_v1.json')\n const internalSchemaFile = internalSchema.default as SchemaFileFormat\n mergedModels = { ...(internalSchemaFile.models || {}) }\n logger(`Populated models for seed-protocol schema from internal file`)\n } catch (error) {\n logger(`Error loading internal seed-protocol schema for models:`, error)\n }\n }\n \n // CRITICAL: Merge models from database (model_schemas join table) with models from schemaData\n // This ensures models added to the database are included even if they're not in schemaData\n if (dbSchema.id) {\n const dbModels = await loadModelsFromDbForSchema(dbSchema.id)\n if (Object.keys(dbModels).length > 0) {\n logger(`Found ${Object.keys(dbModels).length} models in database for schema ${schemaName}: ${Object.keys(dbModels).join(', ')}`)\n // Merge: database models take precedence for properties, but preserve schemaData models for full structure\n mergedModels = {\n ...mergedModels,\n ...dbModels,\n }\n // For models that exist in both, merge properties (database properties override)\n for (const [modelName, dbModel] of Object.entries(dbModels)) {\n if (mergedModels[modelName]) {\n // Merge properties, with database properties taking precedence\n mergedModels[modelName] = {\n ...mergedModels[modelName],\n properties: {\n ...mergedModels[modelName].properties,\n ...dbModel.properties,\n },\n }\n }\n }\n }\n }\n \n // Create new schemaFile object with merged models (read-only approach)\n const finalSchemaFile: SchemaFileFormat = {\n ...schemaFile,\n models: mergedModels,\n }\n \n // Debug: Log what we're sending\n logger(`Sending schema with ${Object.keys(finalSchemaFile.models || {}).length} models: ${Object.keys(finalSchemaFile.models || {}).join(', ')}`)\n \n // Query model IDs from database to populate _liveQueryModelIds immediately\n let modelIds: string[] = []\n if (dbSchema.id) {\n modelIds = await getModelIdsForSchema(dbSchema.id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n \n // Track conflict detection metadata\n const loadedAt = Date.now()\n const dbVersion = dbSchema.version\n const dbUpdatedAt = dbSchema.updatedAt || loadedAt\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: finalSchemaFile,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n _liveQueryModelIds: modelIds,\n } as any)\n return\n } catch (error) {\n logger(`Error parsing schemaData for ${schemaName}:`, error)\n // Fall through to file-based loading\n }\n }\n\n // If it's not a draft and has schemaFileId, try to load from file\n // BUT: First check if there's a draft with the same schemaFileId (in case name changed)\n if (dbSchema.isDraft === false && dbSchema.schemaFileId) {\n logger(`Schema is not a draft (isDraft=${dbSchema.isDraft}), checking if there's a draft with same schemaFileId before loading from file`)\n \n // Check for a draft with the same schemaFileId (handles name changes)\n const draftsByFileId = await db\n .select()\n .from(schemas)\n .where(and(\n eq(schemas.schemaFileId, dbSchema.schemaFileId),\n eq(schemas.isDraft, true)\n ))\n .orderBy(desc(schemas.version))\n .limit(1)\n \n if (draftsByFileId.length > 0 && draftsByFileId[0].schemaData) {\n logger(`Found draft with same schemaFileId (name: \"${draftsByFileId[0].name}\"), using it instead of published version`)\n try {\n const schemaFile = JSON.parse(draftsByFileId[0].schemaData) as SchemaFileFormat\n logger(`Found draft schema ${schemaName} v${schemaFile.version} in database (DB name: ${draftsByFileId[0].name}, metadata.name: ${schemaFile.metadata?.name})`)\n \n // CRITICAL: Ensure schema.id matches schemaFileId from database (database is source of truth)\n if (draftsByFileId[0].schemaFileId && schemaFile.id !== draftsByFileId[0].schemaFileId) {\n logger(`Fixing schema ID mismatch: schema.id=\"${schemaFile.id}\" does not match schemaFileId=\"${draftsByFileId[0].schemaFileId}\" from database. Using database value as source of truth.`)\n schemaFile.id = draftsByFileId[0].schemaFileId\n } else if (!schemaFile.id && draftsByFileId[0].schemaFileId) {\n logger(`Schema missing id, using schemaFileId from database: \"${draftsByFileId[0].schemaFileId}\"`)\n schemaFile.id = draftsByFileId[0].schemaFileId\n }\n \n // CRITICAL: Merge models from database (model_schemas join table) with models from schemaData\n // This ensures models added to the database are included even if they're not in schemaData\n if (draftsByFileId[0].id) {\n const dbModels = await loadModelsFromDbForSchema(draftsByFileId[0].id)\n if (Object.keys(dbModels).length > 0) {\n logger(`Found ${Object.keys(dbModels).length} models in database for draft schema ${schemaName}: ${Object.keys(dbModels).join(', ')}`)\n // Merge: database models take precedence for properties, but preserve schemaData models for full structure\n let mergedModels = { ...(schemaFile.models || {}) }\n mergedModels = {\n ...mergedModels,\n ...dbModels,\n }\n // For models that exist in both, merge properties (database properties override)\n for (const [modelName, dbModel] of Object.entries(dbModels)) {\n if (mergedModels[modelName]) {\n // Merge properties, with database properties taking precedence\n mergedModels[modelName] = {\n ...mergedModels[modelName],\n properties: {\n ...mergedModels[modelName].properties,\n ...dbModel.properties,\n },\n }\n }\n }\n // Update schemaFile with merged models\n schemaFile.models = mergedModels\n }\n }\n \n // Query model IDs from database to populate _liveQueryModelIds immediately\n let modelIds: string[] = []\n if (draftsByFileId[0].id) {\n modelIds = await getModelIdsForSchema(draftsByFileId[0].id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n \n // Track conflict detection metadata\n const loadedAt = Date.now()\n const dbVersion = draftsByFileId[0].version || schemaFile.version\n const dbUpdatedAt = draftsByFileId[0].updatedAt || loadedAt\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n _liveQueryModelIds: modelIds,\n } as any)\n return\n } catch (error) {\n logger(`Error parsing draft schemaData: ${error}, falling back to file`)\n }\n }\n \n logger(`No draft found with same schemaFileId, will try to load from file instead of schemaData`)\n \n // Try ID-based file lookup first (preferred)\n let schemaFile: SchemaFileFormat | null = null\n if (dbSchema.schemaFileId) {\n try {\n // Try to find file by schemaFileId in the complete schemas list\n const completeSchemas = await listCompleteSchemaFiles()\n const idBasedMatch = completeSchemas.find((s) => s.schemaFileId === dbSchema.schemaFileId)\n \n if (idBasedMatch) {\n logger(`Found schema file by schemaFileId: ${idBasedMatch.filePath}`)\n const content = await BaseFileManager.readFileAsString(idBasedMatch.filePath)\n schemaFile = JSON.parse(content) as SchemaFileFormat\n } else {\n // Try direct file path lookup by ID\n const idBasedPath = getSchemaFilePath(dbSchema.name, dbSchema.version, dbSchema.schemaFileId)\n try {\n const content = await BaseFileManager.readFileAsString(idBasedPath)\n schemaFile = JSON.parse(content) as SchemaFileFormat\n logger(`Found schema file by direct ID-based path: ${idBasedPath}`)\n } catch {\n // ID-based file doesn't exist, fall through to name-based\n }\n }\n } catch (error) {\n logger(`Error loading ID-based file: ${error}, falling back to name-based`)\n }\n }\n \n // Fall back to name-based file lookup (backward compatibility)\n if (!schemaFile) {\n const completeSchemas = await listCompleteSchemaFiles()\n const matchingSchemas = completeSchemas.filter((s) => s.name === schemaName)\n \n if (matchingSchemas.length > 0) {\n // Find the schema with the highest version\n const latest = matchingSchemas.reduce((prev, current) =>\n current.version > prev.version ? current : prev,\n )\n\n // Read the file directly to get SchemaFileFormat\n const content = await BaseFileManager.readFileAsString(latest.filePath)\n schemaFile = JSON.parse(content) as SchemaFileFormat\n }\n }\n \n if (schemaFile) {\n\n // Build merged models without mutating schemaFile (read-only approach)\n let mergedModels = { ...(schemaFile.models || {}) }\n \n // Ensure models are populated (fallback for seed-protocol if missing)\n if ((!mergedModels || Object.keys(mergedModels).length === 0) && schemaName === 'Seed Protocol') {\n try {\n const internalSchema = await import('@/seedSchema/SEEDPROTOCOL_Seed_Protocol_v1.json')\n const internalSchemaFile = internalSchema.default as SchemaFileFormat\n mergedModels = { ...(internalSchemaFile.models || {}) }\n logger(`Populated models for seed-protocol schema from internal file`)\n } catch (error) {\n logger(`Error loading internal seed-protocol schema for models:`, error)\n }\n }\n\n // CRITICAL: Merge models from database (model_schemas join table) with models from file\n // This ensures models added to the database are included even if they're not in the file\n if (dbSchema.id) {\n const dbModels = await loadModelsFromDbForSchema(dbSchema.id)\n if (Object.keys(dbModels).length > 0) {\n logger(`Found ${Object.keys(dbModels).length} models in database for schema ${schemaName}: ${Object.keys(dbModels).join(', ')}`)\n // Merge: database models take precedence for properties, but preserve file models for full structure\n mergedModels = {\n ...mergedModels,\n ...dbModels,\n }\n // For models that exist in both, merge properties (database properties override)\n for (const [modelName, dbModel] of Object.entries(dbModels)) {\n if (mergedModels[modelName]) {\n // Merge properties, with database properties taking precedence\n mergedModels[modelName] = {\n ...mergedModels[modelName],\n properties: {\n ...mergedModels[modelName].properties,\n ...dbModel.properties,\n },\n }\n }\n }\n }\n }\n \n // Create new schemaFile object with merged models (read-only approach)\n const finalSchemaFile: SchemaFileFormat = {\n ...schemaFile,\n models: mergedModels,\n }\n\n logger(`Found existing schema ${schemaName} v${schemaFile.version} from file`)\n // Debug: Log what we're sending\n logger(`Sending schema with ${Object.keys(schemaFile.models || {}).length} models: ${Object.keys(schemaFile.models || {}).join(', ')}`)\n \n // Query model IDs from database to populate _liveQueryModelIds immediately\n let modelIds: string[] = []\n if (dbSchema.id) {\n modelIds = await getModelIdsForSchema(dbSchema.id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n \n // Track conflict detection metadata from DB record\n const loadedAt = Date.now()\n const dbVersion = dbSchema.version || schemaFile.version\n const dbUpdatedAt = dbSchema.updatedAt || loadedAt\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n _liveQueryModelIds: modelIds,\n } as any)\n return\n }\n \n // File doesn't exist, but we have schemaData in database - use it as fallback\n if (dbSchema.schemaData) {\n try {\n const schemaFile = JSON.parse(dbSchema.schemaData) as SchemaFileFormat\n logger(`Found published schema ${schemaName} v${schemaFile.version} in database (file not found, using schemaData)`)\n \n // Build merged models without mutating schemaFile (read-only approach)\n let mergedModels = { ...(schemaFile.models || {}) }\n \n // Ensure models are populated (fallback for seed-protocol if missing)\n if ((!mergedModels || Object.keys(mergedModels).length === 0) && schemaName === 'Seed Protocol') {\n try {\n const internalSchema = await import('@/seedSchema/SEEDPROTOCOL_Seed_Protocol_v1.json')\n const internalSchemaFile = internalSchema.default as SchemaFileFormat\n mergedModels = { ...(internalSchemaFile.models || {}) }\n logger(`Populated models for seed-protocol schema from internal file`)\n } catch (error) {\n logger(`Error loading internal seed-protocol schema for models:`, error)\n }\n }\n \n // CRITICAL: Merge models from database (model_schemas join table) with models from schemaData\n // This ensures models added to the database are included even if they're not in schemaData\n if (dbSchema.id) {\n const dbModels = await loadModelsFromDbForSchema(dbSchema.id)\n if (Object.keys(dbModels).length > 0) {\n logger(`Found ${Object.keys(dbModels).length} models in database for schema ${schemaName}: ${Object.keys(dbModels).join(', ')}`)\n // Merge: database models take precedence for properties, but preserve schemaData models for full structure\n mergedModels = {\n ...mergedModels,\n ...dbModels,\n }\n // For models that exist in both, merge properties (database properties override)\n for (const [modelName, dbModel] of Object.entries(dbModels)) {\n if (mergedModels[modelName]) {\n // Merge properties, with database properties taking precedence\n mergedModels[modelName] = {\n ...mergedModels[modelName],\n properties: {\n ...mergedModels[modelName].properties,\n ...dbModel.properties,\n },\n }\n }\n }\n }\n }\n \n // Create new schemaFile object with merged models (read-only approach)\n const finalSchemaFile: SchemaFileFormat = {\n ...schemaFile,\n models: mergedModels,\n }\n \n // Query model IDs from database to populate _liveQueryModelIds immediately\n let modelIds: string[] = []\n if (dbSchema.id) {\n modelIds = await getModelIdsForSchema(dbSchema.id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n \n // Track conflict detection metadata\n const loadedAt = Date.now()\n const dbVersion = dbSchema.version || schemaFile.version\n const dbUpdatedAt = dbSchema.updatedAt || loadedAt\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n _liveQueryModelIds: modelIds,\n } as any)\n return\n } catch (error) {\n logger(`Error parsing schemaData for published schema ${schemaName}:`, error)\n // Fall through to try internal schema or file-based loading\n }\n }\n \n // If schemaData is missing, try to load from internal schema file for seed-protocol\n if (!dbSchema.schemaData && schemaName === 'Seed Protocol') {\n try {\n const internalSchema = await import('@/seedSchema/SEEDPROTOCOL_Seed_Protocol_v1.json')\n const schemaFile = internalSchema.default as SchemaFileFormat\n logger(`Found seed-protocol schema in internal file (schemaData missing, using internal schema)`)\n \n // Update database with schemaData for future loads\n const schemaData = JSON.stringify(schemaFile, null, 2)\n await addSchemaToDb(\n {\n name: schemaName,\n version: dbSchema.version,\n createdAt: dbSchema.createdAt || new Date().getTime(),\n updatedAt: new Date().getTime(),\n },\n dbSchema.schemaFileId || schemaFile.id,\n schemaData,\n false, // isDraft = false\n )\n \n // Query model IDs from database to populate _liveQueryModelIds immediately\n let modelIds: string[] = []\n if (dbSchema.id) {\n modelIds = await getModelIdsForSchema(dbSchema.id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n _liveQueryModelIds: modelIds,\n })\n return\n } catch (error) {\n logger(`Error loading internal seed-protocol schema:`, error)\n // Fall through to file-based loading\n }\n }\n }\n }\n\n // STEP 2: Check for existing schema files (for backward compatibility)\n // BUT: Only load from file if we didn't find a draft in the database\n // This prevents loading old file data when a draft with a renamed schema exists\n const completeSchemas = await listCompleteSchemaFiles()\n const matchingSchemas = completeSchemas.filter((s) => s.name === schemaName)\n\n if (matchingSchemas.length > 0) {\n // Before loading from file, check if there's a draft in the database that might match\n // (This handles the case where the schema was renamed but the file still has the old name)\n const allDrafts = await db\n .select()\n .from(schemas)\n .where(eq(schemas.isDraft, true))\n .orderBy(desc(schemas.version))\n \n const normalizeName = (name: string) => name.toLowerCase().replace(/[^a-z0-9]/g, '')\n const normalizedRequested = normalizeName(schemaName)\n \n // Check if any draft matches by normalized name\n let matchingDraft = null\n for (const draft of allDrafts) {\n if (draft.schemaData) {\n try {\n const draftSchema = JSON.parse(draft.schemaData) as SchemaFileFormat\n const draftMetadataName = draftSchema.metadata?.name || ''\n const draftDbName = draft.name || ''\n \n const normalizedDraftMetadata = normalizeName(draftMetadataName)\n const normalizedDraftDb = normalizeName(draftDbName)\n \n if (normalizedDraftMetadata === normalizedRequested || normalizedDraftDb === normalizedRequested) {\n matchingDraft = draft\n logger(`Found matching draft in database (DB name: \"${draftDbName}\", metadata.name: \"${draftMetadataName}\") - preferring it over file with old name \"${schemaName}\"`)\n break\n }\n } catch (error) {\n continue\n }\n }\n }\n \n // If we found a matching draft, use it instead of the file\n if (matchingDraft && matchingDraft.schemaData) {\n try {\n const schemaFile = JSON.parse(matchingDraft.schemaData) as SchemaFileFormat\n logger(`Loading draft from database instead of file (draft has name \"${matchingDraft.name}\", file has \"${schemaName}\")`)\n \n // Query model IDs from database to populate _liveQueryModelIds immediately\n let modelIds: string[] = []\n if (matchingDraft.id) {\n modelIds = await getModelIdsForSchema(matchingDraft.id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n \n // Track conflict detection metadata\n const loadedAt = Date.now()\n const dbVersion = matchingDraft.version || schemaFile.version\n const dbUpdatedAt = matchingDraft.updatedAt || loadedAt\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n _liveQueryModelIds: modelIds,\n } as any)\n return\n } catch (error) {\n logger(`Error parsing draft schemaData, falling back to file: ${error}`)\n }\n }\n \n // No matching draft found, proceed with loading from file\n // Find the schema with the highest version\n const latest = matchingSchemas.reduce((prev, current) =>\n current.version > prev.version ? current : prev,\n )\n\n // Read the file directly to get SchemaFileFormat\n const content = await BaseFileManager.readFileAsString(latest.filePath)\n const schemaFile = JSON.parse(content) as SchemaFileFormat\n\n // Build merged models without mutating schemaFile (read-only approach)\n let mergedModels = { ...(schemaFile.models || {}) }\n \n // Ensure models are populated (fallback for seed-protocol if missing)\n if ((!mergedModels || Object.keys(mergedModels).length === 0) && schemaName === 'Seed Protocol') {\n try {\n const internalSchema = await import('@/seedSchema/SEEDPROTOCOL_Seed_Protocol_v1.json')\n const internalSchemaFile = internalSchema.default as SchemaFileFormat\n mergedModels = { ...(internalSchemaFile.models || {}) }\n logger(`Populated models for seed-protocol schema from internal file`)\n } catch (error) {\n logger(`Error loading internal seed-protocol schema for models:`, error)\n }\n }\n\n logger(`Found existing schema ${schemaName} v${schemaFile.version} from file`)\n \n // Query model IDs from database if schema exists in DB\n let modelIds: string[] = []\n try {\n const db = BaseDb.getAppDb()\n if (db && schemaFile.id) {\n const schemaRecords = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, schemaFile.id))\n .limit(1)\n \n if (schemaRecords.length > 0 && schemaRecords[0].id) {\n modelIds = await getModelIdsForSchema(schemaRecords[0].id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n }\n } catch (error) {\n logger(`Error querying model IDs for schema from file: ${error}`)\n }\n \n // Track conflict detection metadata (no DB record, use file metadata)\n const loadedAt = Date.now()\n const dbVersion = schemaFile.version\n const dbUpdatedAt = new Date(schemaFile.metadata.updatedAt).getTime() || loadedAt\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n _liveQueryModelIds: modelIds,\n } as any)\n return\n }\n\n // STEP 3: Before creating new schema, check database one more time for any existing record\n // This handles the case where a schema exists in DB but wasn't found by name (e.g., name mismatch)\n // or where the file lookup failed but the DB has the correct schemaFileId\n let existingDbSchema: typeof schemas.$inferSelect | undefined\n try {\n const dbCheck = await db\n .select()\n .from(schemas)\n .where(eq(schemas.name, schemaName))\n .orderBy(desc(schemas.version))\n .limit(1)\n \n if (dbCheck.length > 0) {\n const foundSchema = dbCheck[0]\n existingDbSchema = foundSchema\n logger(`Found existing DB record for \"${schemaName}\" before creating new schema (schemaFileId: ${foundSchema.schemaFileId}, isDraft: ${foundSchema.isDraft})`)\n \n // If we have a schemaFileId, check if file exists with that ID\n if (foundSchema.schemaFileId) {\n const filePath = getSchemaFilePath(schemaName, foundSchema.version, foundSchema.schemaFileId)\n const fileExists = await BaseFileManager.pathExists(filePath)\n \n if (fileExists) {\n logger(`File exists for schemaFileId ${foundSchema.schemaFileId}, loading it instead of creating new schema`)\n const content = await BaseFileManager.readFileAsString(filePath)\n const schemaFile = JSON.parse(content) as SchemaFileFormat\n \n // Ensure schema.id matches schemaFileId from database\n if (schemaFile.id !== foundSchema.schemaFileId) {\n logger(`Fixing schema ID mismatch: file has id=\"${schemaFile.id}\", DB has schemaFileId=\"${foundSchema.schemaFileId}\". Using DB value.`)\n schemaFile.id = foundSchema.schemaFileId\n }\n \n // Query model IDs from database to populate _liveQueryModelIds immediately\n let modelIds: string[] = []\n if (foundSchema.id) {\n modelIds = await getModelIdsForSchema(foundSchema.id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n \n // Track conflict detection metadata\n const loadedAt = Date.now()\n const dbVersion = foundSchema.version || schemaFile.version\n const dbUpdatedAt = foundSchema.updatedAt || loadedAt\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n _liveQueryModelIds: modelIds,\n } as any)\n return\n }\n }\n \n // If it's a draft, load it from schemaData\n if (foundSchema.isDraft === true && foundSchema.schemaData) {\n try {\n const schemaFile = JSON.parse(foundSchema.schemaData) as SchemaFileFormat\n \n // Ensure schema.id matches schemaFileId from database\n if (foundSchema.schemaFileId && schemaFile.id !== foundSchema.schemaFileId) {\n logger(`Fixing schema ID mismatch: schemaData has id=\"${schemaFile.id}\", DB has schemaFileId=\"${foundSchema.schemaFileId}\". Using DB value.`)\n schemaFile.id = foundSchema.schemaFileId\n }\n \n logger(`Loading existing draft from database instead of creating new schema`)\n \n // Query model IDs from database to populate _liveQueryModelIds immediately\n let modelIds: string[] = []\n if (foundSchema.id) {\n modelIds = await getModelIdsForSchema(foundSchema.id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n \n // Track conflict detection metadata\n const loadedAt = Date.now()\n const dbVersion = foundSchema.version || schemaFile.version\n const dbUpdatedAt = foundSchema.updatedAt || loadedAt\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: schemaFile,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n _liveQueryModelIds: modelIds,\n } as any)\n return\n } catch (error) {\n logger(`Error parsing existing draft schemaData: ${error}, will create new schema`)\n }\n }\n }\n } catch (error) {\n logger(`Error checking database before creating new schema: ${error}, proceeding with creation`)\n }\n\n // STEP 4: Create new schema as draft in database (NOT in file yet)\n const latestVersion = existingDbSchema?.version ? existingDbSchema.version + 1 : await getLatestSchemaVersion(schemaName)\n const newVersion = latestVersion + 1\n\n const now = new Date().toISOString()\n const newSchema: SchemaFileFormat = {\n $schema: 'https://seedprotocol.org/schemas/data-model/v1',\n version: newVersion,\n id: generateId(), // Generate schema ID when first written\n metadata: {\n name: schemaName,\n createdAt: now,\n updatedAt: now,\n },\n models: {},\n enums: {},\n migrations: [\n {\n version: newVersion,\n timestamp: now,\n description: 'Initial schema',\n changes: [],\n },\n ],\n }\n\n // Save to database as draft FIRST (before creating any file)\n const schemaData = JSON.stringify(newSchema, null, 2)\n await addSchemaToDb(\n {\n name: schemaName,\n version: newVersion,\n createdAt: new Date(now).getTime(),\n updatedAt: new Date(now).getTime(),\n },\n newSchema.id, // schemaFileId\n schemaData, // Full schema content\n true, // isDraft = true\n )\n\n logger(`Created new draft schema ${schemaName} v${newVersion} in database`)\n \n // Query model IDs from database for newly created schema\n let modelIds: string[] = []\n try {\n const db = BaseDb.getAppDb()\n if (db && newSchema.id) {\n const schemaRecords = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, newSchema.id))\n .limit(1)\n \n if (schemaRecords.length > 0 && schemaRecords[0].id) {\n modelIds = await getModelIdsForSchema(schemaRecords[0].id)\n // Create Model instances so they're cached before getContext runs\n await createModelInstances(modelIds)\n }\n }\n } catch (error) {\n logger(`Error querying model IDs for new schema: ${error}`)\n }\n \n // Track conflict detection metadata for new schema\n const loadedAt = Date.now()\n const dbVersion = newVersion\n const dbUpdatedAt = new Date(now).getTime()\n \n sendBack({\n type: 'loadOrCreateSchemaSuccess',\n schema: newSchema,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n _liveQueryModelIds: modelIds,\n } as any)\n }\n\n _loadOrCreateSchema().catch((error) => {\n logger('Error loading or creating schema:', error)\n sendBack({ type: 'loadOrCreateSchemaError', error })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types'\nimport { SchemaMachineContext } from '../schemaMachine'\nimport { SchemaValidationService } from '../validation/SchemaValidationService'\n\nconst validationService = new SchemaValidationService()\n\n// Validation timeout in milliseconds (10 seconds)\nconst VALIDATION_TIMEOUT_MS = 10000\n\nexport const validateSchema = fromCallback<\n EventObject,\n FromCallbackInput<SchemaMachineContext>\n>(({ sendBack, input: { context } }) => {\n let hasResponded = false\n \n // Timeout handler to ensure we always respond\n const timeoutId = setTimeout(() => {\n if (!hasResponded) {\n hasResponded = true\n sendBack({\n type: 'validationError',\n errors: [{\n field: 'schema',\n message: `Schema validation timed out after ${VALIDATION_TIMEOUT_MS}ms`,\n code: 'validation_timeout',\n severity: 'error' as const,\n }],\n })\n }\n }, VALIDATION_TIMEOUT_MS)\n\n // Run validation and ensure event is always sent back\n // Use Promise.resolve().then() to ensure async event sending\n // This prevents issues where synchronous validation might not trigger XState properly\n Promise.resolve().then(() => {\n try {\n const result = validationService.validateSchema(context)\n \n if (!hasResponded) {\n hasResponded = true\n clearTimeout(timeoutId)\n \n if (result.isValid) {\n sendBack({ type: 'validationSuccess', errors: [] })\n } else {\n sendBack({ type: 'validationError', errors: result.errors })\n }\n }\n } catch (error) {\n if (!hasResponded) {\n hasResponded = true\n clearTimeout(timeoutId)\n \n // Ensure error is always sent back\n sendBack({\n type: 'validationError',\n errors: [{\n field: 'schema',\n message: error instanceof Error ? error.message : 'Unknown validation error',\n code: 'validation_exception',\n severity: 'error' as const,\n }],\n })\n }\n }\n })\n\n return () => {\n // Cleanup function - clear timeout if actor is stopped\n clearTimeout(timeoutId)\n }\n})\n\n","import { assign, setup, fromCallback } from 'xstate'\nimport type { EventObject, DoneActorEvent } from 'xstate'\nimport { SchemaMachineContext } from './schemaMachine'\nimport { Model } from '@/Model/Model'\nimport type { Schema } from '@/Schema/Schema'\nimport { addModelsToDb } from '@/helpers/db'\nimport { createModelFromJson } from '@/imports/json'\n\nexport type AddModelsMachineContext = {\n schemaContext: SchemaMachineContext\n models: { [modelName: string]: any }\n existingModels: { [modelName: string]: any }\n modelInstances?: Map<string, Model>\n modelFileIds?: Map<string, string>\n errors?: Array<{ modelName: string; error: Error }>\n addedModels?: { addedModels: any }\n progress?: {\n stage: 'preparing' | 'creatingInstances' | 'collectingIds' | 'persisting'\n currentModel?: string\n totalModels: number\n completedModels: number\n }\n}\n\nexport const addModelsMachine = setup({\n types: {\n context: {} as AddModelsMachineContext,\n input: {} as {\n schemaContext: SchemaMachineContext\n models: { [modelName: string]: any }\n existingModels: { [modelName: string]: any }\n },\n events: {} as\n | { type: 'validateModels' }\n | { type: 'createModelInstances' }\n | { type: 'collectModelFileIds' }\n | { type: 'persistModelsToDb' }\n | { type: 'progress'; stage: 'preparing' | 'creatingInstances' | 'collectingIds' | 'persisting'; currentModel?: string }\n | { type: 'error'; error: Error; modelName?: string },\n },\n actors: {\n validateModels: fromCallback<\n EventObject,\n { newModels: { [modelName: string]: any }; existingModels: { [modelName: string]: any } }\n >(({ sendBack, input }) => {\n const _validate = async () => {\n // Check for duplicate model names\n const newModelNames = Object.keys(input.newModels)\n const existingModelNames = Object.keys(input.existingModels || {})\n \n for (const modelName of newModelNames) {\n if (existingModelNames.includes(modelName)) {\n throw new Error(`Model \"${modelName}\" already exists in schema`)\n }\n }\n \n // Check for duplicates within new models\n const seenNames = new Set<string>()\n for (const modelName of newModelNames) {\n if (seenNames.has(modelName)) {\n throw new Error(`Duplicate model name detected: \"${modelName}\". Each model must have a unique name.`)\n }\n seenNames.add(modelName)\n }\n \n // Basic validation - ensure models have required structure\n for (const [modelName, modelDef] of Object.entries(input.newModels)) {\n if (!modelDef || typeof modelDef !== 'object') {\n throw new Error(`Invalid model definition for \"${modelName}\": must be an object`)\n }\n if (!modelDef.properties || typeof modelDef.properties !== 'object') {\n throw new Error(`Model \"${modelName}\" must have a \"properties\" object`)\n }\n }\n \n sendBack({ type: 'done', output: { valid: true } })\n }\n \n _validate().catch((error) => {\n sendBack({ type: 'error', error: error instanceof Error ? error : new Error(String(error)) })\n })\n \n return () => {\n // Cleanup\n }\n }),\n createModelInstances: fromCallback<\n EventObject,\n { schemaContext: SchemaMachineContext; models: { [modelName: string]: any } }\n >(({ sendBack, input }) => {\n const _createInstances = async () => {\n const { Schema } = await import('@/Schema/Schema')\n const { BaseDb } = await import('@/db/Db/BaseDb')\n const { models: modelsTable } = await import('@/seedSchema/ModelSchema')\n const { eq } = await import('drizzle-orm')\n const { generateId } = await import('@/helpers')\n const debug = (await import('debug')).default\n const logger = debug('seedSdk:schema:addModels:createInstances')\n \n const schemaName = input.schemaContext.metadata?.name || input.schemaContext.schemaName\n const schemaInstance = Schema.create(schemaName, {\n waitForReady: false,\n }) as Schema\n const modelInstances = new Map<string, Model>()\n \n // Get instance state to store model instances\n const { schemaInstanceState } = await import('@/Schema/Schema')\n const instanceState = schemaInstanceState.get(schemaInstance)\n if (!instanceState) {\n throw new Error('Schema instance state not found')\n }\n \n for (const [modelName, modelData] of Object.entries(input.models)) {\n try {\n logger(`Creating model instance for \"${modelName}\"`)\n \n // Look up modelFileId from database BEFORE creating the Model instance\n let modelFileId: string | undefined = undefined\n try {\n const db = BaseDb.getAppDb()\n if (db) {\n const dbModels = await db\n .select()\n .from(modelsTable)\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n \n if (dbModels.length > 0 && dbModels[0].schemaFileId) {\n modelFileId = dbModels[0].schemaFileId\n logger(`Found modelFileId \"${modelFileId}\" for model \"${modelName}\" from database`)\n }\n }\n } catch (error) {\n logger(`Error looking up modelFileId from database: ${error}`)\n }\n \n // If not found in database, generate a new modelFileId for new models\n if (!modelFileId) {\n modelFileId = generateId()\n logger(`Generated new modelFileId \"${modelFileId}\" for new model \"${modelName}\"`)\n }\n \n // Create new Model instance with modelFileId\n // Model.create() will set _modelFileId in the context automatically\n const modelInstance = Model.create(modelName, schemaName, {\n modelFileId,\n waitForReady: false,\n }) as Model\n const service = modelInstance.getService()\n \n logger(`Created Model instance for \"${modelName}\" with modelFileId \"${modelFileId}\"`)\n \n // Wait for the Model service to finish loading (loadOrCreateModel completes)\n await new Promise<void>((resolve) => {\n let resolved = false\n let subscription: any = null\n \n // Check if already idle\n const snapshot = service.getSnapshot()\n if (snapshot.value === 'idle') {\n const currentModelFileId = snapshot.context._modelFileId\n if (currentModelFileId === modelFileId) {\n logger(`ModelFileId \"${modelFileId}\" correctly set for model \"${modelName}\"`)\n } else {\n logger(`WARNING: ModelFileId not set for model \"${modelName}\" (expected: \"${modelFileId}\", got: \"${currentModelFileId || 'undefined'}\")`)\n // Try to set it again\n service.send({\n type: 'updateContext',\n _modelFileId: modelFileId,\n })\n }\n resolved = true\n resolve()\n return\n }\n \n // Wait for service to become idle\n subscription = service.subscribe((snapshot) => {\n if (snapshot.value === 'idle') {\n if (subscription) {\n subscription.unsubscribe()\n subscription = null\n }\n \n const currentModelFileId = snapshot.context._modelFileId\n if (currentModelFileId === modelFileId) {\n logger(`ModelFileId \"${modelFileId}\" correctly set for model \"${modelName}\"`)\n } else {\n logger(`WARNING: ModelFileId not set for model \"${modelName}\" (expected: \"${modelFileId}\", got: \"${currentModelFileId || 'undefined'}\")`)\n // Try to set it again - but only once to avoid infinite loop\n if (!resolved) {\n service.send({\n type: 'updateContext',\n _modelFileId: modelFileId,\n })\n }\n }\n \n if (!resolved) {\n resolved = true\n resolve()\n }\n } else if (snapshot.value === 'error') {\n if (subscription) {\n subscription.unsubscribe()\n subscription = null\n }\n if (!resolved) {\n resolved = true\n resolve()\n }\n }\n })\n \n // Timeout after 2 seconds\n setTimeout(() => {\n if (subscription) {\n subscription.unsubscribe()\n subscription = null\n }\n if (!resolved) {\n resolved = true\n resolve()\n }\n }, 2000)\n })\n \n // Update the model instance with current data\n modelInstance.getService().send({\n type: 'updateContext',\n properties: modelData.properties || {},\n })\n \n // Initialize original values\n modelInstance.getService().send({\n type: 'initializeOriginalValues',\n originalValues: {\n _originalValues: {\n properties: modelData.properties ? JSON.parse(JSON.stringify(modelData.properties)) : {},\n },\n },\n isEdited: false,\n })\n \n // Store in instance state\n if (!instanceState.modelInstances) {\n instanceState.modelInstances = new Map<string, Model>()\n }\n instanceState.modelInstances.set(modelName, modelInstance)\n modelInstances.set(modelName, modelInstance)\n \n logger(`Successfully created model instance for \"${modelName}\"`)\n } catch (error) {\n logger(`Error creating model instance for \"${modelName}\": ${error}`)\n throw error\n }\n }\n \n sendBack({\n type: 'done',\n output: { modelInstances }\n })\n }\n \n _createInstances().catch((error) => {\n sendBack({ type: 'error', error: error instanceof Error ? error : new Error(String(error)) })\n })\n \n return () => {\n // Cleanup\n }\n }),\n collectModelFileIds: fromCallback<\n EventObject,\n { modelInstances: Map<string, Model> }\n >(({ sendBack, input }) => {\n const _collectIds = async () => {\n const debug = (await import('debug')).default\n const logger = debug('seedSdk:schema:addModels:collectIds')\n \n const modelFileIds = new Map<string, string>()\n \n for (const [modelName, modelInstance] of input.modelInstances.entries()) {\n try {\n const service = modelInstance.getService()\n let modelFileId: string | undefined = undefined\n \n // Check current snapshot first\n const snapshot = service.getSnapshot()\n if (snapshot.value === 'idle' && snapshot.context._modelFileId) {\n modelFileId = snapshot.context._modelFileId\n } else {\n // If not ready, wait for it to become idle\n await new Promise<void>((resolve) => {\n const subscription = service.subscribe((snapshot) => {\n if (snapshot.value === 'idle') {\n subscription.unsubscribe()\n if (snapshot.context._modelFileId) {\n modelFileId = snapshot.context._modelFileId\n }\n resolve()\n } else if (snapshot.value === 'error') {\n subscription.unsubscribe()\n resolve()\n }\n })\n \n // Timeout after 1 second\n setTimeout(() => {\n subscription.unsubscribe()\n resolve()\n }, 1000)\n })\n }\n \n if (modelFileId) {\n modelFileIds.set(modelName, modelFileId)\n logger(`Collected modelFileId \"${modelFileId}\" for model \"${modelName}\"`)\n } else {\n logger(`WARNING: modelFileId not found for model \"${modelName}\" after waiting`)\n }\n } catch (error) {\n logger(`Error collecting modelFileId for \"${modelName}\": ${error}`)\n // Continue with other models even if one fails\n }\n }\n \n sendBack({\n type: 'done',\n output: { modelFileIds }\n })\n }\n \n _collectIds().catch((error) => {\n sendBack({ type: 'error', error: error instanceof Error ? error : new Error(String(error)) })\n })\n \n return () => {\n // Cleanup\n }\n }),\n persistModelsToDb: fromCallback<\n EventObject,\n {\n schemaContext: SchemaMachineContext\n models: { [modelName: string]: any }\n modelFileIds: Map<string, string>\n }\n >(({ sendBack, input }) => {\n const _persist = async () => {\n const debug = (await import('debug')).default\n const logger = debug('seedSdk:schema:addModels:persist')\n\n const { BaseDb } = await import('@/db/Db/BaseDb')\n const { schemas: schemasTable } = await import('@/seedSchema/SchemaSchema')\n const { eq } = await import('drizzle-orm')\n \n // Only process in browser environment where store is available\n if (typeof window === 'undefined') {\n logger('Not in browser environment, skipping store update')\n sendBack({\n type: 'done',\n output: { addedModels: input.models }\n })\n return\n }\n \n const schemaName = input.schemaContext.metadata?.name || input.schemaContext.schemaName\n const schemaFileId = input.schemaContext.id // id is the schemaFileId (string) in SchemaMachineContext\n const db = BaseDb.getAppDb()\n if (!db) {\n logger('Database not found, skipping model store update')\n sendBack({\n type: 'done',\n output: { addedModels: input.models }\n })\n return\n }\n \n // Find schema record - prefer schemaFileId lookup (more reliable), then fall back to name\n // Retry up to 3 times with a short delay in case schema is still being saved\n let schemaRecord: typeof schemasTable.$inferSelect | undefined\n const maxRetries = 3\n const retryDelay = 100 // ms\n \n for (let attempt = 0; attempt < maxRetries && !schemaRecord; attempt++) {\n if (attempt > 0) {\n logger(`Retry ${attempt}/${maxRetries - 1} to find schema, waiting ${retryDelay}ms...`)\n await new Promise(resolve => setTimeout(resolve, retryDelay))\n }\n \n // PRIMARY: Look up by schemaFileId if available (most reliable, independent of name changes)\n if (schemaFileId) {\n logger(`Looking up schema by schemaFileId: ${schemaFileId} (attempt ${attempt + 1})`)\n const schemasById = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.schemaFileId, schemaFileId))\n .limit(1)\n \n if (schemasById.length > 0) {\n schemaRecord = schemasById[0]\n if (schemaRecord) {\n logger(`Found schema by schemaFileId: ${schemaFileId} (id: ${schemaRecord.id}, name: ${schemaRecord.name}, isDraft: ${schemaRecord.isDraft})`)\n }\n break\n } else {\n logger(`No schema found by schemaFileId: ${schemaFileId}, will try by name`)\n }\n }\n \n // FALLBACK: If not found by schemaFileId, try by name (prefer draft records)\n if (!schemaRecord) {\n logger(`Looking up schema by name: \"${schemaName}\" (attempt ${attempt + 1})`)\n const { desc } = await import('drizzle-orm')\n const schemasByName = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.name, schemaName))\n .orderBy(desc(schemasTable.isDraft), desc(schemasTable.version))\n .limit(10) // Get multiple to find drafts\n \n if (schemasByName.length > 0) {\n // Prefer draft records\n const draftRecord = schemasByName.find((s: typeof schemasTable.$inferSelect) => s.isDraft === true)\n schemaRecord = draftRecord || schemasByName[0]\n if (schemaRecord) {\n logger(`Found schema by name \"${schemaName}\": selected ${draftRecord ? 'draft' : 'first'} record (id: ${schemaRecord.id}, isDraft: ${schemaRecord.isDraft})`)\n }\n break\n }\n }\n }\n \n if (!schemaRecord) {\n logger(`Schema \"${schemaName}\" (schemaFileId: ${schemaFileId || 'none'}) not found in database after ${maxRetries} attempts, skipping model store update`)\n sendBack({\n type: 'done',\n output: { addedModels: input.models }\n })\n return\n }\n \n // Convert schema model format to JSON import format for createModelFromJson\n const modelDefinitions: { [modelName: string]: any } = {}\n \n for (const [modelName, modelDef] of Object.entries(input.models)) {\n // Convert properties from schema format to JSON import format\n const convertedProperties: { [propName: string]: any } = {}\n if (modelDef.properties) {\n for (const [propName, propDef] of Object.entries(modelDef.properties)) {\n // Schema format: { dataType, ref, refValueType, storageType, localStorageDir, filenameSuffix }\n // JSON import format: { type, model, items, storage: { type, path, extension } }\n const schemaProp = propDef as any\n const jsonProp: any = {\n type: schemaProp.dataType || schemaProp.type,\n }\n \n // Handle Relation type\n if (schemaProp.ref || schemaProp.refModelName) {\n jsonProp.model = schemaProp.refModelName || schemaProp.ref\n }\n \n // Handle List type\n if (schemaProp.dataType === 'List' && schemaProp.refValueType) {\n jsonProp.items = {\n type: schemaProp.refValueType,\n model: schemaProp.refModelName || schemaProp.ref,\n }\n }\n \n // Handle storage configuration\n if (schemaProp.storageType || schemaProp.localStorageDir || schemaProp.filenameSuffix) {\n jsonProp.storage = {\n type: schemaProp.storageType === 'ItemStorage' ? 'ItemStorage' : 'PropertyStorage',\n path: schemaProp.localStorageDir,\n extension: schemaProp.filenameSuffix,\n }\n }\n \n convertedProperties[propName] = jsonProp\n }\n }\n \n // Create model definition in JSON import format\n // Note: description is not passed - JSON files can have it but we ignore it at runtime\n const jsonModelDef = {\n properties: convertedProperties,\n }\n \n // Create Model instance\n const ModelClass = await createModelFromJson(modelName, jsonModelDef, schemaName)\n modelDefinitions[modelName] = ModelClass\n \n // Model is now accessible via Model static methods, no registration needed\n logger(`Created model \"${modelName}\"`)\n }\n \n // Add models to database with modelFileIds\n if (Object.keys(modelDefinitions).length > 0) {\n await addModelsToDb(modelDefinitions, schemaRecord, undefined, {\n schemaFileId: input.schemaContext.id, // id is the schemaFileId (string) in SchemaMachineContext\n modelFileIds: input.modelFileIds.size > 0 ? input.modelFileIds : undefined,\n })\n logger(`Added ${Object.keys(modelDefinitions).length} new models to database`)\n }\n \n sendBack({\n type: 'done',\n output: { addedModels: input.models }\n })\n }\n \n _persist().catch((error) => {\n sendBack({ type: 'error', error: error instanceof Error ? error : new Error(String(error)) })\n })\n \n return () => {\n // Cleanup\n }\n }),\n },\n}).createMachine({\n id: 'addModels',\n initial: 'preparing',\n context: ({ input }) => ({\n schemaContext: input.schemaContext,\n models: input.models,\n existingModels: input.existingModels,\n progress: {\n stage: 'preparing',\n totalModels: Object.keys(input.models).length,\n completedModels: 0,\n },\n }),\n states: {\n preparing: {\n invoke: {\n src: 'validateModels',\n input: ({ context }) => ({\n newModels: context.models,\n existingModels: context.existingModels,\n }),\n onDone: {\n target: 'creatingInstances',\n actions: assign({\n progress: ({ context }) => ({\n ...context.progress!,\n stage: 'creatingInstances',\n }),\n }),\n },\n onError: {\n target: 'error',\n actions: assign({\n errors: ({ context, event }) => [\n ...(context.errors || []),\n { \n modelName: 'validation', \n error: event.error instanceof Error ? event.error : new Error(String(event.error))\n },\n ],\n }),\n },\n },\n },\n creatingInstances: {\n invoke: {\n src: 'createModelInstances',\n input: ({ context }) => ({\n schemaContext: context.schemaContext,\n models: context.models,\n }),\n onDone: {\n target: 'collectingIds',\n actions: assign({\n modelInstances: ({ event }) => {\n // Type assertion needed due to XState v5 type inference limitation\n const doneEvent = event as unknown as { output: { modelInstances: Map<string, Model> } }\n return doneEvent.output?.modelInstances\n },\n progress: ({ context }) => ({\n ...context.progress!,\n stage: 'collectingIds',\n }),\n }),\n },\n onError: {\n target: 'error',\n actions: assign({\n errors: ({ context, event }) => [\n ...(context.errors || []),\n { \n modelName: 'createInstances', \n error: event.error instanceof Error ? event.error : new Error(String(event.error))\n },\n ],\n }),\n },\n },\n },\n collectingIds: {\n invoke: {\n src: 'collectModelFileIds',\n input: ({ context }) => ({\n modelInstances: context.modelInstances!,\n }),\n onDone: {\n target: 'persisting',\n actions: assign({\n modelFileIds: ({ event }) => {\n // Type assertion needed due to XState v5 type inference limitation\n const doneEvent = event as unknown as { output: { modelFileIds: Map<string, string> } }\n return doneEvent.output?.modelFileIds\n },\n progress: ({ context }) => ({\n ...context.progress!,\n stage: 'persisting',\n }),\n }),\n },\n onError: {\n target: 'error',\n actions: assign({\n errors: ({ context, event }) => [\n ...(context.errors || []),\n { \n modelName: 'collectIds', \n error: event.error instanceof Error ? event.error : new Error(String(event.error))\n },\n ],\n }),\n },\n },\n },\n persisting: {\n invoke: {\n src: 'persistModelsToDb',\n input: ({ context }) => ({\n schemaContext: context.schemaContext,\n models: context.models,\n modelFileIds: context.modelFileIds!,\n }),\n onDone: {\n target: '#addModels.success',\n actions: assign({\n addedModels: ({ event }) => {\n // Type assertion needed due to XState v5 type inference limitation\n // Convert through unknown first to avoid type overlap error\n const doneEvent = event as unknown as DoneActorEvent<{ addedModels: any }, string>\n return { addedModels: doneEvent.output?.addedModels }\n },\n }),\n },\n onError: {\n target: 'error',\n actions: assign({\n errors: ({ context, event }) => [\n ...(context.errors || []),\n { modelName: 'persist', error: event.error instanceof Error ? event.error : new Error(String(event.error)) },\n ],\n }),\n },\n },\n },\n success: {\n id: 'success',\n type: 'final',\n output: ({ context }) => ({ addedModels: context.addedModels?.addedModels || [] }),\n },\n error: {\n type: 'final',\n output: ({ context }) => ({\n errors: context.errors || [],\n }),\n },\n },\n})\n\n","import { EventObject, fromCallback } from 'xstate'\nimport { FromCallbackInput } from '@/types'\nimport { SchemaMachineContext } from '../schemaMachine'\nimport { getLatestSchemaVersion, listCompleteSchemaFiles } from '@/helpers/schema'\nimport { SchemaFileFormat } from '@/types/import'\nimport { BaseFileManager } from '@/helpers'\nimport { loadModelsFromDbForSchema } from '@/helpers/db'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { schemas } from '@/seedSchema/SchemaSchema'\nimport { modelSchemas } from '@/seedSchema/ModelSchemaSchema'\nimport { models as modelsTable } from '@/seedSchema/ModelSchema'\nimport { eq, and, desc } from 'drizzle-orm'\nimport debug from 'debug'\nimport { isInternalSchema, SEED_PROTOCOL_SCHEMA_NAME } from '@/helpers/constants'\n\nconst logger = debug('seedSdk:schema:actors:checkExistingSchema')\n\n/**\n * Query model IDs (schemaFileId) from database for a given schema\n */\nconst getModelIdsForSchema = async (schemaId: number): Promise<string[]> => {\n const db = BaseDb.getAppDb()\n if (!db) {\n logger('Database not available, cannot query model IDs')\n return []\n }\n\n try {\n const modelRecords = await db\n .select({\n modelFileId: modelsTable.schemaFileId,\n })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, schemaId))\n \n const modelIds = modelRecords\n .map((row: { modelFileId: string | null }) => row.modelFileId)\n .filter((id: string | null | undefined): id is string => id !== null && id !== undefined)\n \n logger(`Found ${modelIds.length} model IDs for schema (id: ${schemaId}): ${modelIds.join(', ')}`)\n return modelIds\n } catch (error) {\n logger(`Error querying model IDs for schema ${schemaId}:`, error)\n return []\n }\n}\n\n/**\n * Get the full file path for a schema\n */\nconst getSchemaFilePath = (name: string, version: number, schemaFileId: string): string => {\n const path = BaseFileManager.getPathModule()\n const sanitizeSchemaName = (name: string): string => {\n return name\n .replace(/[^a-zA-Z0-9\\s_-]/g, '_')\n .replace(/\\s+/g, '_')\n .replace(/^_+|_+$/g, '')\n .replace(/_+/g, '_')\n }\n const sanitizedName = sanitizeSchemaName(name)\n const filename = `${schemaFileId}_${sanitizedName}_v${version}.json`\n const workingDir = BaseFileManager.getWorkingDir()\n return path.join(workingDir, filename)\n}\n\n/**\n * Create Model instances for all model IDs to ensure they're cached\n */\nconst createModelInstances = async (modelIds: string[]): Promise<void> => {\n if (modelIds.length === 0) {\n return\n }\n\n try {\n const mod = await import('@/Model/Model')\n const Model = mod?.Model ?? (mod as { default?: unknown })?.default\n if (!Model) {\n logger('Model not available from dynamic import')\n return\n }\n const createPromises = modelIds.map(async (modelFileId) => {\n try {\n const model = await Model.createById(modelFileId)\n if (model) {\n logger(`Created/cached Model instance for modelFileId \"${modelFileId}\"`)\n }\n } catch (error) {\n logger(`Error creating Model instance for modelFileId \"${modelFileId}\": ${error}`)\n }\n })\n \n await Promise.all(createPromises)\n logger(`Finished creating/caching ${modelIds.length} Model instances`)\n } catch (error) {\n logger(`Error in createModelInstances: ${error}`)\n }\n}\n\nexport const checkExistingSchema = fromCallback<\n EventObject,\n FromCallbackInput<SchemaMachineContext>\n>(({ sendBack, input: { context } }) => {\n const _check = async (): Promise<void> => {\n const { schemaName } = context\n \n if (!schemaName) {\n sendBack({\n type: 'schemaNotFound',\n })\n return\n }\n\n const db = BaseDb.getAppDb()\n if (!db) {\n sendBack({\n type: 'schemaNotFound',\n })\n return\n }\n\n // Check if this is an internal SDK schema (Seed Protocol) — use static import so consumer bundles resolve correctly\n const isInternal = isInternalSchema(schemaName)\n \n if (isInternal && schemaName === SEED_PROTOCOL_SCHEMA_NAME) {\n // For Seed Protocol, check if it exists in database\n try {\n const internalSchema = await import('@/seedSchema/SEEDPROTOCOL_Seed_Protocol_v1.json')\n const schemaFile = internalSchema.default as SchemaFileFormat\n \n if (db && schemaFile.id) {\n const existing = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, schemaFile.id))\n .limit(1)\n \n if (existing.length > 0) {\n const schemaRecord = existing[0]\n let modelIds: string[] = []\n if (schemaRecord.id) {\n modelIds = await getModelIdsForSchema(schemaRecord.id)\n await createModelInstances(modelIds)\n }\n \n sendBack({\n type: 'schemaFound',\n schema: schemaFile,\n schemaRecord,\n modelIds,\n })\n return\n }\n }\n } catch (error) {\n logger(`Error checking internal Seed Protocol schema: ${error}`)\n }\n }\n\n // STEP 1: Query database first for existing schema (prefer drafts)\n let dbSchemas = await db\n .select()\n .from(schemas)\n .where(eq(schemas.name, schemaName))\n .orderBy(desc(schemas.isDraft), desc(schemas.version))\n .limit(1)\n\n // If not found by name, try querying by schemaFileId\n if (dbSchemas.length === 0) {\n logger(`No schema found by name \"${schemaName}\", trying to find by schemaFileId`)\n const schemasByFileId = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, schemaName))\n .orderBy(desc(schemas.isDraft), desc(schemas.version))\n .limit(1)\n \n if (schemasByFileId.length > 0) {\n logger(`Found schema by schemaFileId \"${schemaName}\" (name in DB: ${schemasByFileId[0].name})`)\n dbSchemas = schemasByFileId\n }\n }\n\n // Try to find by schemaFileId from file\n const shouldTrySchemaFileId = dbSchemas.length === 0 || (dbSchemas.length > 0 && dbSchemas[0].isDraft === false)\n \n if (shouldTrySchemaFileId) {\n const completeSchemas = await listCompleteSchemaFiles()\n const matchingFileSchemas = completeSchemas.filter((s) => s.name === schemaName)\n \n if (matchingFileSchemas.length > 0) {\n const latestFile = matchingFileSchemas.reduce((prev, current) =>\n current.version > prev.version ? current : prev,\n )\n \n try {\n const content = await BaseFileManager.readFileAsString(latestFile.filePath)\n const fileSchema = JSON.parse(content) as SchemaFileFormat\n \n if (fileSchema.id) {\n const draftsByFileId = await db\n .select()\n .from(schemas)\n .where(and(\n eq(schemas.schemaFileId, fileSchema.id),\n eq(schemas.isDraft, true)\n ))\n .orderBy(desc(schemas.version))\n .limit(1)\n \n if (draftsByFileId.length > 0) {\n logger(`Found DRAFT by schemaFileId ${fileSchema.id}`)\n dbSchemas = draftsByFileId\n } else {\n const dbSchemasByFileId = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, fileSchema.id))\n .orderBy(desc(schemas.isDraft), desc(schemas.version))\n .limit(1)\n \n if (dbSchemasByFileId.length > 0) {\n const foundSchema = dbSchemasByFileId[0]\n if (foundSchema.isDraft === true || dbSchemas.length === 0) {\n dbSchemas = dbSchemasByFileId\n }\n }\n }\n }\n } catch (error) {\n logger(`Error reading file to get schemaFileId: ${error}`)\n }\n }\n \n // Check all drafts for normalized name match\n if (dbSchemas.length === 0) {\n const allDrafts = await db\n .select()\n .from(schemas)\n .where(eq(schemas.isDraft, true))\n .orderBy(desc(schemas.version))\n \n const normalizeName = (name: string) => name.toLowerCase().replace(/[^a-z0-9]/g, '')\n const normalizedRequested = normalizeName(schemaName)\n \n for (const draft of allDrafts) {\n if (draft.schemaData) {\n try {\n const draftSchema = JSON.parse(draft.schemaData) as SchemaFileFormat\n const draftMetadataName = draftSchema.metadata?.name || ''\n const draftDbName = draft.name || ''\n \n const normalizedDraftMetadata = normalizeName(draftMetadataName)\n const normalizedDraftDb = normalizeName(draftDbName)\n \n if (normalizedDraftMetadata === normalizedRequested || normalizedDraftDb === normalizedRequested) {\n dbSchemas = [draft]\n break\n }\n } catch (error) {\n continue\n }\n }\n }\n }\n }\n\n // If schema found in database, return it\n if (dbSchemas.length > 0) {\n const dbSchema = dbSchemas[0]\n logger(`Found schema record: name=\"${dbSchema.name}\", isDraft=${dbSchema.isDraft}`)\n\n // Load schema from schemaData or file\n let schemaFile: SchemaFileFormat | null = null\n \n if (dbSchema.isDraft === true && dbSchema.schemaData) {\n try {\n schemaFile = JSON.parse(dbSchema.schemaData) as SchemaFileFormat\n \n // Ensure schema.id matches schemaFileId from database\n if (dbSchema.schemaFileId && schemaFile.id !== dbSchema.schemaFileId) {\n schemaFile.id = dbSchema.schemaFileId\n } else if (!schemaFile.id && dbSchema.schemaFileId) {\n schemaFile.id = dbSchema.schemaFileId\n }\n \n // Merge models from database\n if (dbSchema.id) {\n const dbModels = await loadModelsFromDbForSchema(dbSchema.id)\n if (Object.keys(dbModels).length > 0) {\n let mergedModels = { ...(schemaFile.models || {}) }\n mergedModels = { ...mergedModels, ...dbModels }\n for (const [modelName, dbModel] of Object.entries(dbModels)) {\n if (mergedModels[modelName]) {\n mergedModels[modelName] = {\n ...mergedModels[modelName],\n properties: {\n ...mergedModels[modelName].properties,\n ...dbModel.properties,\n },\n }\n }\n }\n schemaFile.models = mergedModels\n }\n }\n } catch (error) {\n logger(`Error parsing schemaData: ${error}`)\n }\n } else if (dbSchema.schemaFileId) {\n // Try to load from file\n try {\n const completeSchemas = await listCompleteSchemaFiles()\n const idBasedMatch = completeSchemas.find((s) => s.schemaFileId === dbSchema.schemaFileId)\n \n if (idBasedMatch) {\n const content = await BaseFileManager.readFileAsString(idBasedMatch.filePath)\n schemaFile = JSON.parse(content) as SchemaFileFormat\n } else {\n const filePath = getSchemaFilePath(dbSchema.name, dbSchema.version, dbSchema.schemaFileId)\n try {\n const content = await BaseFileManager.readFileAsString(filePath)\n schemaFile = JSON.parse(content) as SchemaFileFormat\n } catch {\n // File doesn't exist\n }\n }\n \n // Ensure schema.id matches schemaFileId from database (database is source of truth)\n if (schemaFile && dbSchema.schemaFileId) {\n if (schemaFile.id !== dbSchema.schemaFileId) {\n logger(`Fixing schema ID mismatch: file has id=\"${schemaFile.id}\", DB has schemaFileId=\"${dbSchema.schemaFileId}\". Using DB value.`)\n schemaFile.id = dbSchema.schemaFileId\n } else if (!schemaFile.id && dbSchema.schemaFileId) {\n logger(`Schema missing id, using schemaFileId from database: \"${dbSchema.schemaFileId}\"`)\n schemaFile.id = dbSchema.schemaFileId\n }\n }\n \n if (schemaFile && dbSchema.id) {\n const dbModels = await loadModelsFromDbForSchema(dbSchema.id)\n if (Object.keys(dbModels).length > 0) {\n let mergedModels = { ...(schemaFile.models || {}) }\n mergedModels = { ...mergedModels, ...dbModels }\n for (const [modelName, dbModel] of Object.entries(dbModels)) {\n if (mergedModels[modelName]) {\n mergedModels[modelName] = {\n ...mergedModels[modelName],\n properties: {\n ...mergedModels[modelName].properties,\n ...dbModel.properties,\n },\n }\n }\n }\n schemaFile.models = mergedModels\n }\n }\n } catch (error) {\n logger(`Error loading from file: ${error}`)\n }\n }\n\n if (schemaFile) {\n // Query model IDs and create instances\n let modelIds: string[] = []\n if (dbSchema.id) {\n modelIds = await getModelIdsForSchema(dbSchema.id)\n await createModelInstances(modelIds)\n }\n \n const loadedAt = Date.now()\n const dbVersion = dbSchema.version || schemaFile.version\n const dbUpdatedAt = dbSchema.updatedAt || loadedAt\n \n sendBack({\n type: 'schemaFound',\n schema: schemaFile,\n schemaRecord: dbSchema,\n modelIds,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n })\n return\n }\n }\n\n // Check for existing schema files (backward compatibility)\n const completeSchemas = await listCompleteSchemaFiles()\n const matchingSchemas = completeSchemas.filter((s) => s.name === schemaName)\n\n if (matchingSchemas.length > 0) {\n // Check for matching draft in database\n const allDrafts = await db\n .select()\n .from(schemas)\n .where(eq(schemas.isDraft, true))\n .orderBy(desc(schemas.version))\n \n const normalizeName = (name: string) => name.toLowerCase().replace(/[^a-z0-9]/g, '')\n const normalizedRequested = normalizeName(schemaName)\n \n let matchingDraft = null\n for (const draft of allDrafts) {\n if (draft.schemaData) {\n try {\n const draftSchema = JSON.parse(draft.schemaData) as SchemaFileFormat\n const draftMetadataName = draftSchema.metadata?.name || ''\n const draftDbName = draft.name || ''\n \n const normalizedDraftMetadata = normalizeName(draftMetadataName)\n const normalizedDraftDb = normalizeName(draftDbName)\n \n if (normalizedDraftMetadata === normalizedRequested || normalizedDraftDb === normalizedRequested) {\n matchingDraft = draft\n break\n }\n } catch (error) {\n continue\n }\n }\n }\n \n if (matchingDraft && matchingDraft.schemaData) {\n try {\n const schemaFile = JSON.parse(matchingDraft.schemaData) as SchemaFileFormat\n let modelIds: string[] = []\n if (matchingDraft.id) {\n modelIds = await getModelIdsForSchema(matchingDraft.id)\n await createModelInstances(modelIds)\n }\n \n const loadedAt = Date.now()\n const dbVersion = matchingDraft.version || schemaFile.version\n const dbUpdatedAt = matchingDraft.updatedAt || loadedAt\n \n sendBack({\n type: 'schemaFound',\n schema: schemaFile,\n schemaRecord: matchingDraft,\n modelIds,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n })\n return\n } catch (error) {\n logger(`Error parsing draft schemaData: ${error}`)\n }\n }\n \n // Load from file\n const latest = matchingSchemas.reduce((prev, current) =>\n current.version > prev.version ? current : prev,\n )\n\n const content = await BaseFileManager.readFileAsString(latest.filePath)\n const schemaFile = JSON.parse(content) as SchemaFileFormat\n\n // Query model IDs if schema exists in DB\n let modelIds: string[] = []\n try {\n if (db && schemaFile.id) {\n const schemaRecords = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, schemaFile.id))\n .limit(1)\n \n if (schemaRecords.length > 0 && schemaRecords[0].id) {\n modelIds = await getModelIdsForSchema(schemaRecords[0].id)\n await createModelInstances(modelIds)\n }\n }\n } catch (error) {\n logger(`Error querying model IDs for schema from file: ${error}`)\n }\n \n const loadedAt = Date.now()\n const dbVersion = schemaFile.version\n const dbUpdatedAt = new Date(schemaFile.metadata.updatedAt).getTime() || loadedAt\n \n sendBack({\n type: 'schemaFound',\n schema: schemaFile,\n schemaRecord: null,\n modelIds,\n loadedAt,\n dbVersion,\n dbUpdatedAt,\n })\n return\n }\n\n // No schema found\n sendBack({\n type: 'schemaNotFound',\n })\n }\n\n _check().catch((error) => {\n logger('Error in checkExistingSchema:', error)\n sendBack({\n type: 'schemaNotFound',\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { SchemaFileFormat, type JsonImportSchema } from '@/types/import'\nimport { BaseFileManager, generateId } from '@/helpers'\nimport { addSchemaToDb } from '@/helpers/db'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { schemas } from '@/seedSchema/SchemaSchema'\nimport { eq } from 'drizzle-orm'\nimport { getLatestSchemaVersion } from '@/helpers/schema'\nimport debug from 'debug'\nimport { isInternalSchema, SEED_PROTOCOL_SCHEMA_NAME } from '@/helpers/constants'\n\nconst logger = debug('seedSdk:schema:actors:writeSchemaToDb')\n\nexport type WriteSchemaToDbInput = {\n schemaName: string\n schemaFile?: SchemaFileFormat // Optional: if provided, use this schema\n existingDbSchema?: { version?: number } // Optional: existing schema for version calculation\n}\n\nexport const writeSchemaToDb = fromCallback<\n EventObject,\n WriteSchemaToDbInput\n>(({ sendBack, input }) => {\n const _write = async (): Promise<void> => {\n const { schemaName, schemaFile, existingDbSchema } = input\n \n try {\n // Check if this is an internal SDK schema (Seed Protocol) — use static import so consumer bundles resolve correctly\n const isInternal = isInternalSchema(schemaName)\n \n let finalSchema: SchemaFileFormat\n let schemaRecord: typeof schemas.$inferSelect\n\n if (isInternal && schemaName === SEED_PROTOCOL_SCHEMA_NAME) {\n // For Seed Protocol, load from internal file\n logger(`Loading internal Seed Protocol schema from SDK`)\n const internalSchema = await import('@/seedSchema/SEEDPROTOCOL_Seed_Protocol_v1.json')\n finalSchema = internalSchema.default as SchemaFileFormat\n \n const db = BaseDb.getAppDb()\n if (db && finalSchema.id) {\n // Check if it exists in database\n const existing = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, finalSchema.id))\n .limit(1)\n \n if (existing.length === 0) {\n // Add to database if not present\n const schemaData = JSON.stringify(finalSchema, null, 2)\n schemaRecord = await addSchemaToDb(\n {\n name: schemaName,\n version: finalSchema.version,\n createdAt: new Date(finalSchema.metadata.createdAt).getTime(),\n updatedAt: new Date(finalSchema.metadata.updatedAt).getTime(),\n },\n finalSchema.id,\n schemaData,\n false, // isDraft = false (it's a published internal schema)\n false, // isEdited = false (it's a published internal schema)\n )\n logger(`Added Seed Protocol schema to database`)\n } else {\n schemaRecord = existing[0]\n logger(`Seed Protocol schema already exists in database`)\n }\n } else {\n throw new Error('Database not available for Seed Protocol schema')\n }\n } else if (schemaFile) {\n // Use provided schema file\n finalSchema = schemaFile\n \n // Ensure schema has an ID\n if (!finalSchema.id) {\n finalSchema.id = generateId()\n logger(`Generated schema ID for schema: ${finalSchema.id}`)\n }\n\n const schemaData = JSON.stringify(finalSchema, null, 2)\n schemaRecord = await addSchemaToDb(\n {\n name: schemaName,\n version: finalSchema.version,\n createdAt: new Date(finalSchema.metadata.createdAt).getTime(),\n updatedAt: new Date(finalSchema.metadata.updatedAt).getTime(),\n },\n finalSchema.id,\n schemaData,\n true, // isDraft = true for new schemas\n true, // isEdited = true for runtime-created schemas\n )\n logger(`Created schema ${schemaName} v${finalSchema.version} in database`)\n } else {\n // Create new schema\n const latestVersion = existingDbSchema?.version \n ? existingDbSchema.version + 1 \n : await getLatestSchemaVersion(schemaName)\n const newVersion = latestVersion + 1\n\n const now = new Date().toISOString()\n finalSchema = {\n $schema: 'https://seedprotocol.org/schemas/data-model/v1',\n version: newVersion,\n id: generateId(),\n metadata: {\n name: schemaName,\n createdAt: now,\n updatedAt: now,\n },\n models: {},\n enums: {},\n migrations: [\n {\n version: newVersion,\n timestamp: now,\n description: 'Initial schema',\n changes: [],\n },\n ],\n }\n\n // Save to database as draft\n const schemaData = JSON.stringify(finalSchema, null, 2)\n schemaRecord = await addSchemaToDb(\n {\n name: schemaName,\n version: newVersion,\n createdAt: new Date(now).getTime(),\n updatedAt: new Date(now).getTime(),\n },\n finalSchema.id,\n schemaData,\n true, // isDraft = true\n true, // isEdited = true for runtime-created schemas\n )\n logger(`Created new draft schema ${schemaName} v${newVersion} in database`)\n }\n\n sendBack({\n type: 'schemaWritten',\n schemaRecord,\n schema: finalSchema,\n })\n } catch (error) {\n logger(`Error writing schema to database: ${error}`)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _write().catch((error) => {\n logger('Error in writeSchemaToDb:', error)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { schemas } from '@/seedSchema/SchemaSchema'\nimport { eq } from 'drizzle-orm'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:actors:verifySchemaInDb')\n\nexport type VerifySchemaInDbInput = {\n schemaFileId: string\n expectedSchemaId?: number\n}\n\n/**\n * Verify that a schema record exists in the database with retry logic\n * Uses exponential backoff: 100ms, 200ms, 400ms, 800ms, 1600ms\n * Total timeout: ~3.1 seconds\n */\nasync function verifyWithRetry<T>(\n verifyFn: () => Promise<T>,\n maxRetries: number = 5,\n initialDelay: number = 100\n): Promise<T> {\n let lastError: Error | null = null\n let delay = initialDelay\n \n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await verifyFn()\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error))\n if (attempt < maxRetries - 1) {\n logger(`Verification attempt ${attempt + 1} failed, retrying in ${delay}ms: ${lastError.message}`)\n await new Promise(resolve => setTimeout(resolve, delay))\n delay *= 2 // Exponential backoff\n }\n }\n }\n \n throw lastError || new Error('Verification failed after retries')\n}\n\nexport const verifySchemaInDb = fromCallback<\n EventObject,\n VerifySchemaInDbInput\n>(({ sendBack, input }) => {\n const _verify = async (): Promise<void> => {\n const { schemaFileId, expectedSchemaId } = input\n \n try {\n const result = await verifyWithRetry(async () => {\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not available')\n }\n\n // Query for schema by schemaFileId\n const schemaRecords = await db\n .select()\n .from(schemas)\n .where(eq(schemas.schemaFileId, schemaFileId))\n .limit(1)\n\n if (schemaRecords.length === 0) {\n throw new Error(`Schema with schemaFileId \"${schemaFileId}\" not found in database`)\n }\n\n const schemaRecord = schemaRecords[0]\n\n // If expectedSchemaId is provided, verify it matches\n if (expectedSchemaId !== undefined && schemaRecord.id !== expectedSchemaId) {\n throw new Error(\n `Schema ID mismatch: expected ${expectedSchemaId}, found ${schemaRecord.id}`\n )\n }\n\n logger(`Schema verified: schemaFileId=\"${schemaFileId}\", schemaId=${schemaRecord.id}`)\n return schemaRecord.id!\n })\n\n sendBack({\n type: 'schemaVerified',\n schemaId: result,\n })\n } catch (error) {\n logger(`Schema verification failed after retries: ${error}`)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifySchema',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _verify().catch((error) => {\n logger('Error in verifySchemaInDb:', error)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifySchema',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { SchemaFileFormat, type JsonImportSchema } from '@/types/import'\nimport { generateId } from '@/helpers'\nimport { addModelsToDb } from '@/helpers/db'\nimport { createModelsFromJson } from '@/imports/json'\nimport debug from 'debug'\nimport { isInternalSchema, SEED_PROTOCOL_SCHEMA_NAME } from '@/helpers/constants'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { modelSchemas } from '@/seedSchema/ModelSchemaSchema'\nimport { models as modelsTable } from '@/seedSchema/ModelSchema'\nimport { eq } from 'drizzle-orm'\n\nconst logger = debug('seedSdk:schema:actors:writeModelsToDb')\n\nexport type WriteModelsToDbInput = {\n schema: SchemaFileFormat\n schemaRecord: any // Schema database record\n schemaName: string\n}\n\nexport const writeModelsToDb = fromCallback<\n EventObject,\n WriteModelsToDbInput\n>(({ sendBack, input }) => {\n const _write = async (): Promise<void> => {\n const { schema, schemaRecord, schemaName } = input\n \n try {\n // Check if models already exist in database\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not available')\n }\n\n // Check if models are linked to the schema\n const modelLinks = await db\n .select({\n modelId: modelSchemas.modelId,\n modelName: modelsTable.name,\n })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, schemaRecord.id!))\n\n // Check if we have all expected models\n const expectedModelNames = Object.keys(schema.models || {})\n const linkedModelNames = modelLinks\n .map((link: { modelId: number | null; modelName: string | null }) => link.modelName)\n .filter((n: string | null): n is string => n !== null)\n const missingModels = expectedModelNames.filter(name => !linkedModelNames.includes(name))\n\n // If all models exist, skip writing\n if (missingModels.length === 0 && modelLinks.length > 0) {\n logger(`All models already exist in database for schema ${schemaName}`)\n \n // Extract model IDs from database\n const modelFileIds: string[] = []\n for (const link of modelLinks) {\n if (link.modelId) {\n const modelRecord = await db\n .select({ schemaFileId: modelsTable.schemaFileId })\n .from(modelsTable)\n .where(eq(modelsTable.id, link.modelId))\n .limit(1)\n \n if (modelRecord.length > 0 && modelRecord[0].schemaFileId) {\n modelFileIds.push(modelRecord[0].schemaFileId)\n }\n }\n }\n \n sendBack({\n type: 'modelsWritten',\n modelIds: modelFileIds,\n })\n return\n }\n\n // Check if this is Seed Protocol schema (has different format) — use static import so consumer bundles resolve correctly\n const isInternal = isInternalSchema(schemaName)\n \n let importData: JsonImportSchema\n \n if (isInternal && schemaName === SEED_PROTOCOL_SCHEMA_NAME) {\n // Convert Seed Protocol schema format to JSON import format\n importData = {\n name: schemaName,\n models: Object.fromEntries(\n Object.entries(schema.models || {}).map(([modelName, model]) => [\n modelName,\n {\n ...model,\n id: undefined,\n properties: Object.fromEntries(\n Object.entries(model.properties || {}).map(([propName, prop]) => {\n const schemaProp = prop as any\n const jsonProp: any = {\n type: schemaProp.dataType || schemaProp.type,\n }\n \n // Copy other properties\n Object.keys(schemaProp).forEach(key => {\n if (key !== 'id' && key !== 'dataType') {\n jsonProp[key] = schemaProp[key]\n }\n })\n \n // Handle Relation type\n if (schemaProp.ref || schemaProp.refModelName) {\n jsonProp.model = schemaProp.refModelName || schemaProp.ref\n }\n \n // Handle List type\n if (schemaProp.dataType === 'List' && schemaProp.refValueType) {\n jsonProp.items = {\n type: schemaProp.refValueType,\n model: schemaProp.refModelName || schemaProp.ref,\n }\n }\n \n // Handle storage configuration\n if (schemaProp.storageType || schemaProp.localStorageDir || schemaProp.filenameSuffix) {\n jsonProp.storage = {\n type: schemaProp.storageType === 'ItemStorage' ? 'ItemStorage' : 'PropertyStorage',\n path: schemaProp.localStorageDir,\n extension: schemaProp.filenameSuffix,\n }\n }\n \n return [propName, jsonProp]\n }),\n ),\n },\n ]),\n ) as unknown as JsonImportSchema['models'],\n }\n } else {\n // Standard schema format\n importData = {\n name: schemaName,\n models: Object.fromEntries(\n Object.entries(schema.models || {}).map(([modelName, model]) => [\n modelName,\n {\n ...model,\n id: undefined,\n properties: model.properties || {},\n },\n ]),\n ) as unknown as JsonImportSchema['models'],\n }\n }\n\n // Generate schemaFileIds from JSON file and generate missing ones BEFORE creating models\n const modelFileIds = new Map<string, string>()\n const propertyFileIds = new Map<string, Map<string, string>>()\n \n for (const [modelName, model] of Object.entries(schema.models || {})) {\n // Generate model ID if missing\n if (!model.id) {\n model.id = generateId()\n logger(`Generated model ID for ${modelName}: ${model.id}`)\n }\n modelFileIds.set(modelName, model.id)\n \n const propIds = new Map<string, string>()\n for (const [propName, prop] of Object.entries(model.properties || {})) {\n // Generate property ID if missing\n if (!prop.id) {\n prop.id = generateId()\n logger(`Generated property ID for ${modelName}.${propName}: ${prop.id}`)\n }\n propIds.set(propName, prop.id)\n }\n if (propIds.size > 0) {\n propertyFileIds.set(modelName, propIds)\n }\n }\n\n // Convert JSON models to Model classes\n const modelDefinitions = await createModelsFromJson(importData, modelFileIds, propertyFileIds)\n \n // Add models to database\n if (Object.keys(modelDefinitions).length > 0) {\n await addModelsToDb(modelDefinitions, schemaRecord, undefined, {\n schemaFileId: schema.id,\n modelFileIds,\n propertyFileIds,\n })\n logger(`Added ${Object.keys(modelDefinitions).length} models and their properties to database`)\n }\n\n // Extract model IDs that were written\n const writtenModelIds = Array.from(modelFileIds.values())\n \n sendBack({\n type: 'modelsWritten',\n modelIds: writtenModelIds,\n })\n } catch (error) {\n logger(`Error writing models to database: ${error}`)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _write().catch((error) => {\n logger('Error in writeModelsToDb:', error)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { modelSchemas, models as modelsTable } from '@/seedSchema'\nimport { eq } from 'drizzle-orm'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:actors:verifyModelsInDb')\n\nexport type VerifyModelsInDbInput = {\n schemaId: number\n expectedModelIds?: string[] // Optional: verify specific model IDs exist\n}\n\n/**\n * Verify that model records exist in the database for a schema with retry logic\n */\nasync function verifyWithRetry<T>(\n verifyFn: () => Promise<T>,\n maxRetries: number = 5,\n initialDelay: number = 100\n): Promise<T> {\n let lastError: Error | null = null\n let delay = initialDelay\n \n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await verifyFn()\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error))\n if (attempt < maxRetries - 1) {\n logger(`Verification attempt ${attempt + 1} failed, retrying in ${delay}ms: ${lastError.message}`)\n await new Promise(resolve => setTimeout(resolve, delay))\n delay *= 2 // Exponential backoff\n }\n }\n }\n \n throw lastError || new Error('Verification failed after retries')\n}\n\nexport const verifyModelsInDb = fromCallback<\n EventObject,\n VerifyModelsInDbInput\n>(({ sendBack, input }) => {\n const _verify = async (): Promise<void> => {\n const { schemaId, expectedModelIds } = input\n \n try {\n const result = await verifyWithRetry(async () => {\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not available')\n }\n\n // Query for models linked to this schema\n const modelRecords = await db\n .select({\n modelFileId: modelsTable.schemaFileId,\n modelId: modelsTable.id,\n })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, schemaId))\n\n // If expectedModelIds is provided and empty, it means the schema should have no models\n // This is valid for empty schemas\n if (modelRecords.length === 0) {\n if (expectedModelIds !== undefined && expectedModelIds.length === 0) {\n // Empty schema is expected and valid\n logger(`Schema ${schemaId} has no models (as expected)`)\n return []\n }\n throw new Error(`No models found for schema (id: ${schemaId})`)\n }\n\n const modelIds = modelRecords\n .map((row: { modelFileId: string | null }) => row.modelFileId)\n .filter((id: string | null | undefined): id is string => id !== null && id !== undefined)\n\n // If expectedModelIds provided, verify all are present\n if (expectedModelIds && expectedModelIds.length > 0) {\n const missingIds = expectedModelIds.filter(id => !modelIds.includes(id))\n if (missingIds.length > 0) {\n throw new Error(\n `Missing expected model IDs: ${missingIds.join(', ')}. Found: ${modelIds.join(', ')}`\n )\n }\n }\n\n logger(`Models verified: schemaId=${schemaId}, found ${modelIds.length} models: ${modelIds.join(', ')}`)\n return modelIds\n })\n\n sendBack({\n type: 'modelsVerified',\n modelIds: result,\n })\n } catch (error) {\n logger(`Model verification failed after retries: ${error}`)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifyModels',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _verify().catch((error) => {\n logger('Error in verifyModelsInDb:', error)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifyModels',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:actors:createModelInstances')\n\nexport type CreateModelInstancesInput = {\n modelIds: string[] // Array of model file IDs\n schemaName: string\n}\n\n/**\n * Create Model instances for all model IDs to ensure they're cached\n * This ensures that Model.getById() in Schema.getContext() will find the instances\n */\nexport const createModelInstances = fromCallback<\n EventObject,\n CreateModelInstancesInput\n>(({ sendBack, input }) => {\n const _create = async (): Promise<void> => {\n const { modelIds, schemaName } = input\n \n if (modelIds.length === 0) {\n logger('No model IDs provided, skipping instance creation')\n sendBack({\n type: 'instancesCreated',\n count: 0,\n })\n return\n }\n\n try {\n const { Model } = await import('@/Model/Model')\n \n // Create instances for all model IDs in parallel\n // Model.createById() will check cache first, then query DB and create if needed\n const createPromises = modelIds.map(async (modelFileId) => {\n try {\n const model = await Model.createById(modelFileId)\n if (model) {\n logger(`Created/cached Model instance for modelFileId \"${modelFileId}\"`)\n return true\n } else {\n logger(`Model.createById returned undefined for modelFileId \"${modelFileId}\" (may not exist in DB yet)`)\n return false\n }\n } catch (error) {\n logger(`Error creating Model instance for modelFileId \"${modelFileId}\": ${error}`)\n // Don't throw - continue with other models\n return false\n }\n })\n \n const results = await Promise.all(createPromises)\n const successCount = results.filter(Boolean).length\n \n logger(`Finished creating/caching ${successCount}/${modelIds.length} Model instances`)\n \n sendBack({\n type: 'instancesCreated',\n count: successCount,\n })\n } catch (error) {\n logger(`Error in createModelInstances: ${error}`)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _create().catch((error) => {\n logger('Error in createModelInstances:', error)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:actors:verifyModelInstancesInCache')\n\nexport type VerifyModelInstancesInCacheInput = {\n modelIds: string[] // Array of model file IDs\n}\n\n/**\n * Verify that Model instances exist in the static cache with retry logic\n */\nasync function verifyWithRetry<T>(\n verifyFn: () => Promise<T>,\n maxRetries: number = 5,\n initialDelay: number = 100\n): Promise<T> {\n let lastError: Error | null = null\n let delay = initialDelay\n \n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await verifyFn()\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error))\n if (attempt < maxRetries - 1) {\n logger(`Verification attempt ${attempt + 1} failed, retrying in ${delay}ms: ${lastError.message}`)\n await new Promise(resolve => setTimeout(resolve, delay))\n delay *= 2 // Exponential backoff\n }\n }\n }\n \n throw lastError || new Error('Verification failed after retries')\n}\n\nexport const verifyModelInstancesInCache = fromCallback<\n EventObject,\n VerifyModelInstancesInCacheInput\n>(({ sendBack, input }) => {\n const _verify = async (): Promise<void> => {\n const { modelIds } = input\n \n if (modelIds.length === 0) {\n // No models means no instances to verify - this is valid\n logger('No model IDs provided, skipping instance verification')\n sendBack({\n type: 'instancesVerified',\n count: 0,\n })\n return\n }\n\n try {\n const result = await verifyWithRetry(async () => {\n const { Model } = await import('@/Model/Model')\n \n // Check each model ID in the cache\n const verifiedInstances: string[] = []\n const missingIds: string[] = []\n\n for (const modelFileId of modelIds) {\n // Try to get instance from cache\n const instance = Model.getById(modelFileId)\n if (instance) {\n verifiedInstances.push(modelFileId)\n } else {\n missingIds.push(modelFileId)\n }\n }\n\n if (missingIds.length > 0) {\n throw new Error(\n `Model instances not found in cache: ${missingIds.join(', ')}. Found: ${verifiedInstances.length}/${modelIds.length}`\n )\n }\n\n logger(`Model instances verified: ${verifiedInstances.length} instances in cache`)\n return verifiedInstances.length\n })\n\n sendBack({\n type: 'instancesVerified',\n count: result,\n })\n } catch (error) {\n logger(`Model instance verification failed after retries: ${error}`)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifyModelInstances',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _verify().catch((error) => {\n logger('Error in verifyModelInstancesInCache:', error)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifyModelInstances',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:actors:writePropertiesToDb')\n\nexport type WritePropertiesToDbInput = {\n // Properties are written as part of writeModelsToDb\n // This actor is mainly for verification/consistency\n // In most cases, properties are already written with models\n modelIds: string[] // Model file IDs to get property IDs from\n}\n\n/**\n * Properties are typically written to DB as part of writeModelsToDb\n * This actor verifies that properties exist and extracts their IDs\n */\nexport const writePropertiesToDb = fromCallback<\n EventObject,\n WritePropertiesToDbInput\n>(({ sendBack, input }) => {\n const _write = async (): Promise<void> => {\n const { modelIds } = input\n \n try {\n const { BaseDb } = await import('@/db/Db/BaseDb')\n const { models: modelsTable, properties: propertiesTable } = await import('@/seedSchema/ModelSchema')\n const { eq } = await import('drizzle-orm')\n \n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not available')\n }\n\n // Get property IDs for all models\n const propertyIds: string[] = []\n \n for (const modelFileId of modelIds) {\n // Get model DB ID from modelFileId\n const modelRecords = await db\n .select({ id: modelsTable.id })\n .from(modelsTable)\n .where(eq(modelsTable.schemaFileId, modelFileId))\n .limit(1)\n \n if (modelRecords.length > 0 && modelRecords[0].id) {\n // Get properties for this model\n const propertyRecords = await db\n .select({ schemaFileId: propertiesTable.schemaFileId })\n .from(propertiesTable)\n .where(eq(propertiesTable.modelId, modelRecords[0].id))\n \n for (const prop of propertyRecords) {\n if (prop.schemaFileId) {\n propertyIds.push(prop.schemaFileId)\n }\n }\n }\n }\n \n logger(`Found ${propertyIds.length} properties for ${modelIds.length} models`)\n \n sendBack({\n type: 'propertiesWritten',\n propertyIds,\n })\n } catch (error) {\n logger(`Error writing/verifying properties to database: ${error}`)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _write().catch((error) => {\n logger('Error in writePropertiesToDb:', error)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { models as modelsTable, properties as propertiesTable } from '@/seedSchema'\nimport { eq, and } from 'drizzle-orm'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:actors:verifyPropertiesInDb')\n\nexport type VerifyPropertiesInDbInput = {\n modelIds?: number[] // Array of model DB IDs (preferred)\n modelFileIds?: string[] // Array of model file IDs (alternative)\n expectedPropertyIds?: string[] // Optional: verify specific property IDs exist\n}\n\n/**\n * Verify that property records exist in the database for models with retry logic\n */\nasync function verifyWithRetry<T>(\n verifyFn: () => Promise<T>,\n maxRetries: number = 5,\n initialDelay: number = 100\n): Promise<T> {\n let lastError: Error | null = null\n let delay = initialDelay\n \n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await verifyFn()\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error))\n if (attempt < maxRetries - 1) {\n logger(`Verification attempt ${attempt + 1} failed, retrying in ${delay}ms: ${lastError.message}`)\n await new Promise(resolve => setTimeout(resolve, delay))\n delay *= 2 // Exponential backoff\n }\n }\n }\n \n throw lastError || new Error('Verification failed after retries')\n}\n\nexport const verifyPropertiesInDb = fromCallback<\n EventObject,\n VerifyPropertiesInDbInput\n>(({ sendBack, input }) => {\n const _verify = async (): Promise<void> => {\n const { modelIds, modelFileIds, expectedPropertyIds } = input\n \n // Convert model file IDs to DB IDs if needed\n let dbModelIds: number[] = []\n \n if (modelIds && modelIds.length > 0) {\n dbModelIds = modelIds\n } else if (modelFileIds && modelFileIds.length > 0) {\n // Convert file IDs to DB IDs\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not available')\n }\n \n for (const modelFileId of modelFileIds) {\n const modelRecords = await db\n .select({ id: modelsTable.id })\n .from(modelsTable)\n .where(eq(modelsTable.schemaFileId, modelFileId))\n .limit(1)\n \n if (modelRecords.length > 0 && modelRecords[0].id) {\n dbModelIds.push(modelRecords[0].id)\n }\n }\n }\n \n if (dbModelIds.length === 0) {\n // No models means no properties to verify - this is valid\n logger('No models provided, skipping property verification')\n sendBack({\n type: 'propertiesVerified',\n propertyIds: [],\n })\n return\n }\n\n try {\n const result = await verifyWithRetry(async () => {\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not available')\n }\n\n // Query for properties for all models\n const allProperties = await Promise.all(\n dbModelIds.map(async (modelId) => {\n const props = await db\n .select({\n propertyFileId: propertiesTable.schemaFileId,\n propertyId: propertiesTable.id,\n })\n .from(propertiesTable)\n .where(eq(propertiesTable.modelId, modelId))\n return props\n })\n )\n\n const propertyIds = allProperties\n .flat()\n .map((row: { propertyFileId: string | null }) => row.propertyFileId)\n .filter((id: string | null | undefined): id is string => id !== null && id !== undefined)\n\n // If expectedPropertyIds provided, verify all are present\n if (expectedPropertyIds && expectedPropertyIds.length > 0) {\n const missingIds = expectedPropertyIds.filter(id => !propertyIds.includes(id))\n if (missingIds.length > 0) {\n throw new Error(\n `Missing expected property IDs: ${missingIds.join(', ')}. Found: ${propertyIds.join(', ')}`\n )\n }\n }\n\n logger(`Properties verified: found ${propertyIds.length} properties for ${dbModelIds.length} models`)\n return propertyIds\n })\n\n sendBack({\n type: 'propertiesVerified',\n propertyIds: result,\n })\n } catch (error) {\n logger(`Property verification failed after retries: ${error}`)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifyProperties',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _verify().catch((error) => {\n logger('Error in verifyPropertiesInDb:', error)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifyProperties',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:actors:createPropertyInstances')\n\nexport type CreatePropertyInstancesInput = {\n propertyIds: string[] // Array of property file IDs\n modelIds: string[] // Array of model file IDs (needed to get Model instances)\n}\n\n/**\n * Create ModelProperty instances for all property IDs to ensure they're cached\n * Properties are typically created when Model instances are created, but this\n * ensures they're all available in the cache\n */\nexport const createPropertyInstances = fromCallback<\n EventObject,\n CreatePropertyInstancesInput\n>(({ sendBack, input }) => {\n const _create = async (): Promise<void> => {\n const { propertyIds, modelIds } = input\n \n if (propertyIds.length === 0) {\n logger('No property IDs provided, skipping instance creation')\n sendBack({\n type: 'instancesCreated',\n count: 0,\n })\n return\n }\n\n try {\n const modProp = await import('@/ModelProperty/ModelProperty')\n const ModelProperty = modProp?.ModelProperty ?? (modProp as { default?: unknown })?.default\n const modModel = await import('@/Model/Model')\n const Model = modModel?.Model ?? (modModel as { default?: unknown })?.default\n if (!ModelProperty || !Model) {\n logger('ModelProperty or Model not available from dynamic import')\n sendBack({ type: 'instancesCreated', count: 0 })\n return\n }\n // Properties are typically loaded when Model instances are loaded\n // But we can verify they exist by checking Model instances\n let successCount = 0\n \n // For each model, check if properties are loaded\n for (const modelFileId of modelIds) {\n const model = Model.getById(modelFileId)\n if (model && model.properties) {\n // Count properties that match our property IDs\n for (const prop of model.properties) {\n const context = prop._getSnapshotContext()\n const propFileId = (context as any)._propertyFileId || context.id\n if (propFileId && propertyIds.includes(String(propFileId))) {\n successCount++\n }\n }\n }\n }\n \n // Also try to get properties directly by ID\n for (const propertyFileId of propertyIds) {\n try {\n const property = ModelProperty.getById(propertyFileId)\n if (property) {\n // Check if we already counted this\n // Access _service via type assertion since it's protected\n const context = (property as any)._service.getSnapshot().context\n const propFileId = (context as any)._propertyFileId || context.id\n if (!propertyIds.slice(0, propertyIds.indexOf(propertyFileId)).includes(String(propFileId))) {\n successCount++\n }\n logger(`Found/cached ModelProperty instance for propertyFileId \"${propertyFileId}\"`)\n }\n } catch (error) {\n logger(`Error getting ModelProperty instance for propertyFileId \"${propertyFileId}\": ${error}`)\n }\n }\n \n logger(`Finished verifying/caching ${successCount}/${propertyIds.length} Property instances`)\n \n sendBack({\n type: 'instancesCreated',\n count: successCount,\n })\n } catch (error) {\n logger(`Error in createPropertyInstances: ${error}`)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _create().catch((error) => {\n logger('Error in createPropertyInstances:', error)\n sendBack({\n type: 'writeError',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { EventObject, fromCallback } from 'xstate'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:actors:verifyPropertyInstancesInCache')\n\nexport type VerifyPropertyInstancesInCacheInput = {\n propertyIds: string[] // Array of property file IDs\n}\n\n/**\n * Verify that ModelProperty instances exist in the static cache with retry logic\n */\nasync function verifyWithRetry<T>(\n verifyFn: () => Promise<T>,\n maxRetries: number = 5,\n initialDelay: number = 100\n): Promise<T> {\n let lastError: Error | null = null\n let delay = initialDelay\n \n for (let attempt = 0; attempt < maxRetries; attempt++) {\n try {\n return await verifyFn()\n } catch (error) {\n lastError = error instanceof Error ? error : new Error(String(error))\n if (attempt < maxRetries - 1) {\n logger(`Verification attempt ${attempt + 1} failed, retrying in ${delay}ms: ${lastError.message}`)\n await new Promise(resolve => setTimeout(resolve, delay))\n delay *= 2 // Exponential backoff\n }\n }\n }\n \n throw lastError || new Error('Verification failed after retries')\n}\n\nexport const verifyPropertyInstancesInCache = fromCallback<\n EventObject,\n VerifyPropertyInstancesInCacheInput\n>(({ sendBack, input }) => {\n const _verify = async (): Promise<void> => {\n const { propertyIds } = input\n \n if (propertyIds.length === 0) {\n // No properties means no instances to verify - this is valid\n logger('No property IDs provided, skipping instance verification')\n sendBack({\n type: 'instancesVerified',\n count: 0,\n })\n return\n }\n\n try {\n const result = await verifyWithRetry(async () => {\n const mod = await import('@/ModelProperty/ModelProperty')\n const ModelProperty = mod?.ModelProperty ?? (mod as { default?: unknown })?.default\n if (!ModelProperty) {\n throw new Error('ModelProperty not available from dynamic import')\n }\n // Check each property ID in the cache\n const verifiedInstances: string[] = []\n const missingIds: string[] = []\n\n for (const propertyFileId of propertyIds) {\n // Try to get instance from cache\n const instance = ModelProperty.getById(propertyFileId)\n if (instance) {\n verifiedInstances.push(propertyFileId)\n } else {\n missingIds.push(propertyFileId)\n }\n }\n\n if (missingIds.length > 0) {\n throw new Error(\n `Property instances not found in cache: ${missingIds.join(', ')}. Found: ${verifiedInstances.length}/${propertyIds.length}`\n )\n }\n\n logger(`Property instances verified: ${verifiedInstances.length} instances in cache`)\n return verifiedInstances.length\n })\n\n sendBack({\n type: 'instancesVerified',\n count: result,\n })\n } catch (error) {\n logger(`Property instance verification failed after retries: ${error}`)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifyPropertyInstances',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n }\n }\n\n _verify().catch((error) => {\n logger('Error in verifyPropertyInstancesInCache:', error)\n sendBack({\n type: 'verificationFailed',\n stage: 'verifyPropertyInstances',\n error: error instanceof Error ? error : new Error(String(error)),\n })\n })\n\n return () => {\n // Cleanup function (optional)\n }\n})\n","import { assign, setup, ActorRefFrom } from 'xstate'\nimport { SchemaFileFormat } from '@/types/import'\nimport { loadOrCreateSchema } from './actors/loadOrCreateSchema'\nimport { validateSchema } from './actors/validateSchema'\nimport { ValidationError } from '@/Schema/validation'\nimport { addModelsMachine } from './addModelsMachine'\nimport { writeProcessMachine } from '@/services/write/writeProcessMachine'\nimport { checkExistingSchema } from './actors/checkExistingSchema'\nimport { writeSchemaToDb } from './actors/writeSchemaToDb'\nimport { verifySchemaInDb } from './actors/verifySchemaInDb'\nimport { writeModelsToDb } from './actors/writeModelsToDb'\nimport { verifyModelsInDb } from './actors/verifyModelsInDb'\nimport { createModelInstances } from './actors/createModelInstances'\nimport { verifyModelInstancesInCache } from './actors/verifyModelInstancesInCache'\nimport { writePropertiesToDb } from './actors/writePropertiesToDb'\nimport { verifyPropertiesInDb } from './actors/verifyPropertiesInDb'\nimport { createPropertyInstances } from './actors/createPropertyInstances'\nimport { verifyPropertyInstancesInCache } from './actors/verifyPropertyInstancesInCache'\n\nexport type SchemaMachineContext = {\n schemaName: string\n $schema?: string\n version?: number\n metadata?: {\n name: string\n createdAt: string\n updatedAt: string\n }\n models?: {\n [modelName: string]: {\n properties: {\n [propertyName: string]: any\n }\n }\n }\n enums?: {\n [enumName: string]: any\n }\n migrations?: Array<{\n version: number\n timestamp: string\n description: string\n changes: any[]\n }>\n // Track if schema has unsaved changes\n _isDraft?: boolean\n // Track if schema has been edited locally (persisted in database)\n _isEdited?: boolean\n // Track which properties are edited (e.g., \"ModelName:propertyName\")\n _editedProperties?: Set<string>\n // Validation errors\n _validationErrors?: ValidationError[]\n id?: string // schemaFileId (string) - public ID\n _dbId?: number // Database integer ID - internal only\n // Conflict detection metadata - track when data was loaded from DB\n _loadedAt?: number // Timestamp when data was loaded from DB\n _dbVersion?: number // DB version at load time\n _dbUpdatedAt?: number // DB updatedAt timestamp at load time (milliseconds)\n // Model addition queue and tracking\n _pendingModelAdditions?: Array<{ models: { [modelName: string]: any }; timestamp: number }>\n _modelAdditionErrors?: Array<{ error: Error; timestamp: number }>\n writeProcess?: ActorRefFrom<typeof writeProcessMachine> | null\n // Store model IDs from liveQuery for reactive updates\n _liveQueryModelIds?: string[]\n // Staged loading state tracking\n _modelIds?: string[] // After models written\n _propertyIds?: string[] // After properties written\n _loadingStage?: string // Current stage for debugging\n _loadingError?: { stage: string; error: Error } // Stage-specific errors\n _schemaRecord?: any // Schema database record\n // Destroy lifecycle (for destroy hooks)\n _destroyInProgress?: boolean\n _destroyError?: { message: string; name?: string } | null\n}\n\nexport const schemaMachine = setup({\n types: {\n context: {} as SchemaMachineContext,\n input: {} as Pick<SchemaMachineContext, 'schemaName'>,\n events: {} as\n | { type: 'updateContext'; [key: string]: any }\n | { type: 'loadOrCreateSchema' }\n | { type: 'loadOrCreateSchemaSuccess'; schema: SchemaFileFormat }\n | { type: 'loadOrCreateSchemaError'; error: Error }\n | { type: 'markAsDraft'; propertyKey: string }\n | { type: 'clearDraft'; _dbUpdatedAt?: number; _dbVersion?: number }\n | { type: 'validateSchema' }\n | { type: 'validationSuccess'; errors: ValidationError[] }\n | { type: 'validationError'; errors: ValidationError[] }\n | { type: 'reloadFromDb' }\n | { type: 'addModels'; models: { [modelName: string]: any } }\n | { type: 'requestWrite'; data: any }\n // Staged loading events\n | { type: 'schemaFound'; schema: SchemaFileFormat; schemaRecord: any; modelIds?: string[]; loadedAt?: number; dbVersion?: number; dbUpdatedAt?: number }\n | { type: 'schemaNotFound' }\n | { type: 'schemaWritten'; schemaRecord: any; schema: SchemaFileFormat }\n | { type: 'schemaVerified'; schemaId: number }\n | { type: 'modelsWritten'; modelIds: string[] }\n | { type: 'modelsVerified'; modelIds: string[] }\n | { type: 'instancesCreated'; count: number }\n | { type: 'instancesVerified'; count: number }\n | { type: 'propertiesWritten'; propertyIds: string[] }\n | { type: 'propertiesVerified'; propertyIds: string[] }\n | { type: 'verificationFailed'; stage: string; error: Error }\n | { type: 'writeError'; error: Error }\n | { type: 'destroyStarted' }\n | { type: 'destroyDone' }\n | { type: 'destroyError'; error: unknown }\n | { type: 'clearDestroyError' },\n },\n actors: {\n loadOrCreateSchema,\n validateSchema,\n addModelsMachine,\n writeProcessMachine,\n // Staged loading actors\n checkExistingSchema,\n writeSchemaToDb,\n verifySchemaInDb,\n writeModelsToDb,\n verifyModelsInDb,\n createModelInstances,\n verifyModelInstancesInCache,\n writePropertiesToDb,\n verifyPropertiesInDb,\n createPropertyInstances,\n verifyPropertyInstancesInCache,\n },\n guards: {\n isSchemaValid: ({ context }) => {\n return !context._validationErrors || context._validationErrors.length === 0\n },\n hasValidationErrors: ({ context }) => {\n return !!context._validationErrors && context._validationErrors.length > 0\n },\n },\n}).createMachine({\n id: 'schema',\n initial: 'loading',\n context: ({ input }) => ({\n schemaName: input.schemaName,\n _isDraft: false,\n _editedProperties: new Set<string>(),\n _validationErrors: undefined,\n _liveQueryModelIds: [],\n }),\n on: {\n updateContext: {\n actions: assign(({ context, event }) => {\n const newContext = Object.assign({}, context)\n\n // Check if this is only updating internal fields\n const onlyInternalFields = Object.keys(event).every((key: string) => {\n return key === 'type' || key.startsWith('_')\n })\n\n for (let i = 0; i < Object.keys(event).length; i++) {\n const key = Object.keys(event)[i]\n if (key === 'type') {\n continue\n }\n if (key in newContext || key.startsWith('_')) {\n ;(newContext as any)[key] = event[key]\n }\n }\n // Clear validation errors on context update (will be re-validated if needed)\n newContext._validationErrors = undefined\n \n // Trigger validation if updating non-internal fields\n if (!onlyInternalFields) {\n // Validation will be triggered by the guard below\n }\n \n return newContext\n }),\n // Only trigger validation if we're updating non-internal fields\n guard: ({ event }: { event: any }) => {\n return !Object.keys(event).every((key: string) => {\n return key === 'type' || key.startsWith('_')\n })\n },\n target: '.validating',\n },\n validateSchema: {\n target: '.validating',\n },\n validationSuccess: {\n actions: assign(({ context, event }) => ({\n ...context,\n _validationErrors: [],\n })),\n },\n validationError: {\n actions: assign(({ context, event }) => ({\n ...context,\n _validationErrors: event.errors,\n })),\n },\n markAsDraft: {\n actions: assign(({ context, event }) => ({\n ...context,\n _isDraft: true,\n _isEdited: true,\n _editedProperties: new Set([\n ...(context._editedProperties || []),\n event.propertyKey,\n ]),\n })),\n },\n clearDraft: {\n actions: assign(({ context, event }) => {\n const newContext = { ...context }\n newContext._isDraft = false\n newContext._isEdited = false\n newContext._editedProperties = new Set<string>()\n \n // Update conflict detection metadata if provided\n if ((event as any)._dbUpdatedAt !== undefined) {\n newContext._dbUpdatedAt = (event as any)._dbUpdatedAt\n }\n if ((event as any)._dbVersion !== undefined) {\n newContext._dbVersion = (event as any)._dbVersion\n }\n \n return newContext\n }),\n },\n destroyStarted: {\n actions: assign({ _destroyInProgress: true, _destroyError: null }),\n },\n destroyDone: {\n actions: assign({ _destroyInProgress: false }),\n },\n destroyError: {\n actions: assign(({ event }) => ({\n _destroyInProgress: false,\n _destroyError:\n event.error instanceof Error\n ? { message: event.error.message, name: event.error.name }\n : { message: String(event.error) },\n })),\n },\n clearDestroyError: {\n actions: assign({ _destroyError: null }),\n },\n },\n states: {\n loading: {\n initial: 'checkingExisting',\n states: {\n // Stage 0: Check for existing schema\n checkingExisting: {\n invoke: {\n src: 'checkExistingSchema',\n input: ({ context }) => ({ context }),\n },\n on: {\n schemaFound: {\n target: '#schema.idle',\n actions: assign(({ event }) => {\n return {\n schemaName: event.schema.metadata.name,\n $schema: event.schema.$schema,\n version: event.schema.version,\n metadata: event.schema.metadata,\n models: event.schema.models,\n enums: event.schema.enums,\n migrations: event.schema.migrations,\n _isDraft: false,\n _isEdited: event.schemaRecord?.isEdited ?? false,\n _editedProperties: new Set<string>(),\n _validationErrors: undefined,\n id: event.schema.id, // schemaFileId (string)\n _dbId: event.schemaRecord?.id, // Database integer ID\n _loadedAt: event.loadedAt,\n _dbVersion: event.dbVersion,\n _dbUpdatedAt: event.dbUpdatedAt,\n _liveQueryModelIds: event.modelIds || [],\n _schemaRecord: event.schemaRecord,\n }\n }),\n },\n schemaNotFound: {\n target: 'writingSchema',\n },\n },\n },\n // Stage 1: Write and verify schema\n writingSchema: {\n entry: assign({\n _loadingStage: 'writingSchema',\n }),\n invoke: {\n src: 'writeSchemaToDb',\n input: ({ context }) => ({\n schemaName: context.schemaName,\n }),\n },\n on: {\n schemaWritten: {\n target: 'verifyingSchema',\n actions: assign({\n _schemaRecord: ({ event }) => event.schemaRecord,\n id: ({ event }) => event.schema.id, // schemaFileId (string)\n _dbId: ({ event }) => event.schemaRecord?.id, // Database integer ID\n }),\n },\n writeError: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: 'writingSchema',\n error: event.error,\n }),\n }),\n },\n },\n },\n verifyingSchema: {\n entry: assign({\n _loadingStage: 'verifyingSchema',\n }),\n invoke: {\n src: 'verifySchemaInDb',\n input: ({ context }) => ({\n schemaFileId: context.id!,\n expectedSchemaId: context._dbId,\n }),\n },\n on: {\n schemaVerified: {\n target: 'writingModels',\n actions: assign({\n _dbId: ({ event }) => event.schemaId, // Store database integer ID\n }),\n },\n verificationFailed: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: event.stage,\n error: event.error,\n }),\n }),\n },\n },\n },\n // Stage 2: Write and verify models\n writingModels: {\n entry: assign({\n _loadingStage: 'writingModels',\n }),\n invoke: {\n src: 'writeModelsToDb',\n input: ({ context }) => ({\n schema: {\n id: context.id,\n models: context.models || {},\n version: context.version || 1,\n metadata: context.metadata || { name: context.schemaName, createdAt: '', updatedAt: '' },\n } as SchemaFileFormat,\n schemaRecord: context._schemaRecord!,\n schemaName: context.schemaName,\n }),\n },\n on: {\n modelsWritten: {\n target: 'verifyingModels',\n actions: assign({\n _modelIds: ({ event }) => event.modelIds,\n }),\n },\n writeError: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: 'writingModels',\n error: event.error,\n }),\n }),\n },\n },\n },\n verifyingModels: {\n entry: assign({\n _loadingStage: 'verifyingModels',\n }),\n invoke: {\n src: 'verifyModelsInDb',\n input: ({ context }) => ({\n schemaId: context._dbId!,\n expectedModelIds: context._modelIds,\n }),\n },\n on: {\n modelsVerified: {\n target: 'creatingModelInstances',\n actions: assign({\n _modelIds: ({ event }) => event.modelIds,\n }),\n },\n verificationFailed: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: event.stage,\n error: event.error,\n }),\n }),\n },\n },\n },\n // Stage 3: Create and verify model instances\n creatingModelInstances: {\n entry: assign({\n _loadingStage: 'creatingModelInstances',\n }),\n invoke: {\n src: 'createModelInstances',\n input: ({ context }) => ({\n modelIds: context._modelIds || [],\n schemaName: context.schemaName,\n }),\n },\n on: {\n instancesCreated: {\n target: 'verifyingModelInstances',\n },\n writeError: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: 'creatingModelInstances',\n error: event.error,\n }),\n }),\n },\n },\n },\n verifyingModelInstances: {\n entry: assign({\n _loadingStage: 'verifyingModelInstances',\n }),\n invoke: {\n src: 'verifyModelInstancesInCache',\n input: ({ context }) => ({\n modelIds: context._modelIds || [],\n }),\n },\n on: {\n instancesVerified: {\n target: 'writingProperties',\n },\n verificationFailed: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: event.stage,\n error: event.error,\n }),\n }),\n },\n },\n },\n // Stage 4: Write and verify properties\n writingProperties: {\n entry: assign({\n _loadingStage: 'writingProperties',\n }),\n invoke: {\n src: 'writePropertiesToDb',\n input: ({ context }) => ({\n modelIds: context._modelIds || [],\n }),\n },\n on: {\n propertiesWritten: {\n target: 'verifyingProperties',\n actions: assign({\n _propertyIds: ({ event }) => event.propertyIds,\n }),\n },\n writeError: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: 'writingProperties',\n error: event.error,\n }),\n }),\n },\n },\n },\n verifyingProperties: {\n entry: assign({\n _loadingStage: 'verifyingProperties',\n }),\n invoke: {\n src: 'verifyPropertiesInDb',\n input: ({ context }) => ({\n modelFileIds: context._modelIds,\n expectedPropertyIds: context._propertyIds,\n }),\n },\n on: {\n propertiesVerified: {\n target: 'creatingPropertyInstances',\n actions: assign({\n _propertyIds: ({ event }) => event.propertyIds,\n }),\n },\n verificationFailed: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: event.stage,\n error: event.error,\n }),\n }),\n },\n },\n },\n // Stage 5: Create and verify property instances\n creatingPropertyInstances: {\n entry: assign({\n _loadingStage: 'creatingPropertyInstances',\n }),\n invoke: {\n src: 'createPropertyInstances',\n input: ({ context }) => ({\n propertyIds: context._propertyIds || [],\n modelIds: context._modelIds || [],\n }),\n },\n on: {\n instancesCreated: {\n target: 'verifyingPropertyInstances',\n },\n writeError: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: 'creatingPropertyInstances',\n error: event.error,\n }),\n }),\n },\n },\n },\n verifyingPropertyInstances: {\n entry: assign({\n _loadingStage: 'verifyingPropertyInstances',\n }),\n invoke: {\n src: 'verifyPropertyInstancesInCache',\n input: ({ context }) => ({\n propertyIds: context._propertyIds || [],\n }),\n },\n on: {\n instancesVerified: {\n target: '#schema.idle',\n actions: assign({\n _liveQueryModelIds: ({ context }) => context._modelIds || [],\n _loadingStage: undefined,\n }),\n },\n verificationFailed: {\n target: '#schema.error',\n actions: assign({\n _loadingError: ({ event }) => ({\n stage: event.stage,\n error: event.error,\n }),\n }),\n },\n },\n },\n },\n on: {\n // Keep backward compatibility with old loadOrCreateSchema (for external callers)\n loadOrCreateSchemaSuccess: {\n target: 'idle',\n actions: assign(({ event }) => {\n return {\n schemaName: event.schema.metadata.name,\n $schema: event.schema.$schema,\n version: event.schema.version,\n metadata: event.schema.metadata,\n models: event.schema.models,\n enums: event.schema.enums,\n migrations: event.schema.migrations,\n _isDraft: false,\n _editedProperties: new Set<string>(),\n _validationErrors: undefined,\n id: event.schema.id, // schemaFileId (string)\n _dbId: (event as any)._dbId, // Database integer ID\n _loadedAt: (event as any).loadedAt,\n _dbVersion: (event as any).dbVersion,\n _dbUpdatedAt: (event as any).dbUpdatedAt,\n _liveQueryModelIds: (event as any)._liveQueryModelIds || [],\n }\n }),\n },\n loadOrCreateSchemaError: {\n target: 'error',\n },\n },\n },\n idle: {\n entry: assign({\n writeProcess: ({ spawn, context }) => {\n if (!context.writeProcess && context.id) {\n return spawn(writeProcessMachine, {\n input: {\n entityType: 'schema',\n entityId: context.id,\n entityData: {\n name: context.schemaName,\n $schema: context.$schema,\n version: context.version,\n metadata: context.metadata,\n models: context.models,\n enums: context.enums,\n migrations: context.migrations,\n },\n },\n })\n }\n return context.writeProcess\n },\n }),\n on: {\n addModels: {\n target: 'addingModels',\n },\n validateSchema: {\n target: 'validating',\n },\n reloadFromDb: {\n target: 'loading',\n },\n requestWrite: {\n actions: ({ context, event }) => {\n if (context.writeProcess) {\n context.writeProcess.send({\n type: 'startWrite',\n data: event.data,\n })\n }\n },\n },\n },\n always: {\n guard: 'hasValidationErrors',\n target: 'validating',\n },\n },\n addingModels: {\n entry: assign({\n // Move first pending item to current if not already set\n _pendingModelAdditions: ({ context, event }) => {\n const pending = context._pendingModelAdditions || []\n // If event has models, it's a new request - add to queue if we're already processing\n if ((event as any).models) {\n return [\n ...pending,\n {\n models: (event as any).models,\n timestamp: Date.now(),\n },\n ]\n }\n return pending\n },\n }),\n invoke: {\n src: 'addModelsMachine',\n input: ({ context }) => {\n // Get models from first item in pending queue, or from context if queue is empty\n const pending = context._pendingModelAdditions || []\n const models = pending.length > 0 ? pending[0].models : {}\n return {\n schemaContext: context,\n models,\n existingModels: context.models || {},\n }\n },\n onDone: {\n actions: [\n assign({\n models: ({ context, event }) => {\n const addedModels = (event.output as any)?.addedModels || {}\n return {\n ...(context.models || {}),\n ...addedModels,\n }\n },\n _pendingModelAdditions: ({ context }) => {\n // Remove first item from queue (the one we just processed)\n const pending = context._pendingModelAdditions || []\n return pending.length > 1 ? pending.slice(1) : undefined\n },\n }),\n // Trigger validation after models are added\n ({ self }) => {\n self.send({ type: 'validateSchema' })\n },\n ],\n },\n onError: {\n actions: assign({\n _modelAdditionErrors: ({ context, event }) => {\n const existing = context._modelAdditionErrors || []\n return [\n ...existing,\n {\n error: event.error instanceof Error ? event.error : new Error(String(event.error)),\n timestamp: Date.now(),\n },\n ]\n },\n _pendingModelAdditions: ({ context }) => {\n // Remove first item from queue even on error, so we can process next\n const pending = context._pendingModelAdditions || []\n return pending.length > 1 ? pending.slice(1) : undefined\n },\n }),\n },\n },\n on: {\n // Queue additional requests while processing\n addModels: {\n actions: assign({\n _pendingModelAdditions: ({ context, event }) => {\n const existing = context._pendingModelAdditions || []\n return [\n ...existing,\n {\n models: (event as any).models,\n timestamp: Date.now(),\n },\n ]\n },\n }),\n },\n },\n always: [\n {\n // If there are pending additions after processing, process next one\n guard: ({ context }) => {\n const pending = context._pendingModelAdditions || []\n return pending.length > 0\n },\n target: 'addingModels',\n },\n {\n // No more pending, return to idle\n target: 'idle',\n },\n ],\n },\n validating: {\n on: {\n validationSuccess: {\n target: 'idle',\n },\n validationError: {\n target: 'idle',\n },\n },\n invoke: {\n src: 'validateSchema',\n input: ({ context }) => ({ context }),\n },\n },\n error: {},\n },\n})\n","import { ActorRefFrom, createActor, SnapshotFrom } from 'xstate'\nimport { schemaMachine, SchemaMachineContext } from './service/schemaMachine'\nimport { listCompleteSchemaFiles, listLatestSchemaFiles, loadAllSchemasFromDb } from '@/helpers/schema'\nimport { updateModelProperties, convertPropertyToSchemaUpdate, writeFullSchemaNewVersion } from '@/helpers/updateSchema'\nimport { ModelProperty } from '@/ModelProperty/ModelProperty'\nimport { Model } from '@/Model/Model'\nimport { SchemaFileFormat } from '@/types/import'\nimport type { CreateWaitOptions } from '@/types'\nimport { BaseDb } from '@/db/Db/BaseDb'\nimport { schemas as schemasTable } from '@/seedSchema/SchemaSchema'\nimport { modelSchemas } from '@/seedSchema/ModelSchemaSchema'\nimport { models as modelsTable, properties as propertiesTable } from '@/seedSchema/ModelSchema'\nimport { eq, desc, and } from 'drizzle-orm'\nimport { createReactiveProxy } from '@/helpers/reactiveProxy'\nimport { ConflictError, ConflictResult } from '@/Schema/errors'\nimport { isInternalSchema } from '@/helpers/constants'\nimport { waitForEntityIdle } from '@/helpers/waitForEntityIdle'\nimport { findEntity } from '@/helpers/entity/entityFind'\nimport { setupEntityLiveQuery } from '@/helpers/entity/entityLiveQuery'\nimport { unloadEntity } from '@/helpers/entity/entityUnload'\nimport {\n clearDestroySubscriptions,\n forceRemoveFromCaches,\n runDestroyLifecycle,\n} from '@/helpers/entity/entityDestroy'\nimport { Subscription } from 'rxjs'\nimport debug from 'debug'\n\nconst logger = debug('seedSdk:schema:saveNewVersion')\nconst saveDraftLogger = debug('seedSdk:schema:saveDraftToDb')\n\ntype SchemaService = ActorRefFrom<typeof schemaMachine>\ntype SchemaSnapshot = SnapshotFrom<typeof schemaMachine>\n\n// WeakMap to store non-serializable resources per Schema instance\n// Only stores resources that cannot be serialized (subscriptions, timers, etc.)\nexport const schemaInstanceState = new WeakMap<Schema, {\n liveQuerySubscription: Subscription | null // LiveQuery subscription for cross-instance model updates\n modelInstances?: Map<string, Model> // Model instances cache\n}>()\n\n// Cache client initialization state globally to avoid repeated checks\nlet cachedClientInitialized: boolean | null = null\nlet clientCheckTime: number = 0\nconst CLIENT_CHECK_CACHE_MS = 50 // Cache for 50ms to avoid excessive checks (reduced from 100ms for faster updates)\n\n// Define tracked properties for the Proxy\n// These properties will be read from/written to the actor context\nconst TRACKED_PROPERTIES = [\n 'id', // schemaFileId (string) - public ID\n '$schema',\n 'version',\n 'metadata',\n 'enums',\n 'migrations',\n 'name', // metadata.name (flattened)\n 'createdAt', // metadata.createdAt (flattened)\n 'updatedAt', // metadata.updatedAt (flattened)\n] as const\n\n/**\n * Options for Schema.all() method\n */\nexport interface SchemaAllOptions {\n /**\n * If true, returns all versions of each schema. If false (default), returns only the latest version of each schema.\n * @default false\n */\n includeAllVersions?: boolean\n /**\n * If true, includes the internal Seed Protocol schema. If false (default), excludes it.\n * @default false\n */\n includeInternal?: boolean\n /**\n * If true, wait for each schema to reach idle state before returning.\n * @default false\n */\n waitForReady?: boolean\n /**\n * Timeout in ms for waiting for each schema to be ready (when waitForReady is true).\n * @default 5000\n */\n readyTimeout?: number\n}\n\nexport class Schema {\n // Cache by schemaFileId (primary key - doesn't change when name changes)\n protected static instanceCacheById: Map<\n string,\n { instance: Schema; refCount: number }\n > = new Map()\n // Temporary cache by schemaName (used until schemaFileId is available)\n protected static instanceCacheByName: Map<\n string,\n { instance: Schema; refCount: number }\n > = new Map()\n // Track which schemas are currently being saved to prevent concurrent saves\n protected static savingSchemas: Set<string> = new Set()\n protected readonly _service: SchemaService\n\n $schema?: string\n version?: number\n metadata?: {\n name: string\n createdAt: string\n updatedAt: string\n }\n _models?: Model[] // Internal models array (use getter for public access)\n enums?: {\n [enumName: string]: any\n }\n migrations?: Array<{\n version: number\n timestamp: string\n description: string\n changes: any[]\n }>\n\n constructor(schemaName: string) {\n const serviceInput: Pick<SchemaMachineContext, 'schemaName'> = {\n schemaName,\n }\n\n this._service = createActor(schemaMachine as any, {\n input: serviceInput,\n }) as SchemaService\n\n this._service.start()\n\n console.log('started Schema service for schema:', schemaName)\n\n // Initialize instance state in WeakMap (only non-serializable resources)\n schemaInstanceState.set(this, {\n liveQuerySubscription: null,\n modelInstances: new Map<string, Model>(),\n })\n \n // Set up liveQuery subscription for cross-instance model updates\n // This will be initialized once we have the schemaId\n this._setupLiveQuerySubscription()\n\n // Subscribe to schema context changes to update cache keys when schemaFileId becomes available\n this._service.subscribe((snapshot) => {\n console.log('Schema service subscribed to snapshot', snapshot.value)\n // Update cache to use id (schemaFileId) as key once we have it (only once)\n if (snapshot.value === 'idle' && snapshot.context.metadata?.name && snapshot.context.id) {\n // Use a static Set to track which schemas have had their cache key updated\n const cacheKeyUpdatedSet = (Schema as any)._cacheKeyUpdatedSet || new Set<string>()\n if (!(Schema as any)._cacheKeyUpdatedSet) {\n (Schema as any)._cacheKeyUpdatedSet = cacheKeyUpdatedSet\n }\n if (!cacheKeyUpdatedSet.has(snapshot.context.id)) {\n Schema._updateCacheKey(snapshot.context.schemaName, snapshot.context.id)\n cacheKeyUpdatedSet.add(snapshot.context.id)\n }\n }\n })\n\n // Note: Property getters/setters are now handled by the Proxy in create()\n }\n\n static create(schemaName: string, options?: { waitForReady?: false }): Schema\n static create(\n schemaName: string,\n options?: { waitForReady?: true; readyTimeout?: number },\n ): Promise<Schema>\n static create(\n schemaName: string,\n options?: CreateWaitOptions,\n ): Schema | Promise<Schema> {\n if (!schemaName) {\n throw new Error('Schema name is required')\n }\n\n const waitForReady = options?.waitForReady !== false\n const readyTimeout = options?.readyTimeout ?? 5000\n\n // First, check if we have an instance cached by name\n if (this.instanceCacheByName.has(schemaName)) {\n const { instance, refCount } = this.instanceCacheByName.get(schemaName)!\n this.instanceCacheByName.set(schemaName, {\n instance,\n refCount: refCount + 1,\n })\n if (!waitForReady) return instance\n return waitForEntityIdle(instance, { timeout: readyTimeout }).then(\n () => instance,\n )\n }\n\n // Create new instance\n const newInstance = new this(schemaName)\n \n // Wrap instance in Proxy for reactive property access\n const proxiedInstance = createReactiveProxy<Schema>({\n instance: newInstance,\n service: newInstance._service as any,\n trackedProperties: TRACKED_PROPERTIES,\n getContext: (instance) => {\n // Handle special cases like metadata.name, models array conversion\n const context = instance._getSnapshotContext()\n \n // Get the schema name, ensuring it's never the ID\n // Prefer metadata.name, then schemaName (but only if it's not the ID)\n const schemaFileId = context.id // id is now the schemaFileId (string)\n let name = context.metadata?.name\n \n // If metadata.name is not available, use schemaName but only if it's not the ID\n // This prevents returning the ID when the schema is still loading\n if (!name) {\n name = (context.schemaName && context.schemaName !== schemaFileId) \n ? context.schemaName \n : undefined\n }\n \n // Final fallback - if we still don't have a name, use schemaName (even if it might be the ID)\n // This handles edge cases during loading\n if (!name) {\n name = context.schemaName\n }\n \n // CRITICAL: Always create a new metadata object to ensure React detects changes\n // Even if the metadata content is the same, we need a new reference so React re-renders\n const metadata = context.metadata ? {\n ...context.metadata,\n } : undefined\n \n return {\n ...context,\n // Always return a new metadata object reference so React detects changes\n metadata,\n // Flatten metadata properties to top level for convenience\n // Fall back to schemaName if metadata.name is not available (handles loading states)\n name,\n createdAt: context.metadata?.createdAt,\n updatedAt: context.metadata?.updatedAt,\n }\n },\n sendUpdate: (instance, prop: string, value: any) => {\n // Handle special property updates\n if (prop === 'name') {\n // Update both metadata.name and schemaName\n const context = instance._getSnapshotContext()\n const currentMetadata = context.metadata || {\n name: schemaName,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n const oldName = currentMetadata.name || context.schemaName\n const newName = value as string\n \n // Only update if the name actually changed\n if (oldName !== newName) {\n logger(`Updating schema name from \"${oldName}\" to \"${newName}\"`)\n \n // Check if service is still running before sending events\n let snapshot = instance._service.getSnapshot()\n const wasServiceStopped = snapshot.status === 'stopped'\n \n if (wasServiceStopped) {\n // CRITICAL: Update the schemaName in the service context BEFORE restarting\n // This ensures that when loadOrCreateSchema runs, it looks for the schema with the NEW name\n // We need to do this by sending updateContext to a running service, but if it's stopped,\n // we need to restart it first, update, then it will reload with the new name\n logger(`Service is stopped, will update schemaName to \"${newName}\" then restart`)\n \n // Start the service first\n instance._service.start()\n \n // Immediately update the schemaName so loadOrCreateSchema uses the new name\n // This must happen before loadOrCreateSchema runs\n instance._service.send({\n type: 'updateContext',\n schemaName: newName,\n })\n \n logger(`Updated schemaName to \"${newName}\" before loadOrCreateSchema runs`)\n \n // Re-check snapshot after restart - service might be loading or already idle\n snapshot = instance._service.getSnapshot()\n }\n \n // Build the update event with the new name\n const updateEvent = {\n type: 'updateContext' as const,\n schemaName: newName,\n metadata: {\n ...(currentMetadata || {\n name: newName,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }),\n name: newName, // Always use the new name\n updatedAt: new Date().toISOString(), // Always update timestamp\n },\n }\n \n // Check current state after potential restart\n const currentState = snapshot.value\n // Check if state is a loading state object (XState v5 nested states)\n const isServiceLoading = typeof currentState === 'object' && 'loading' in currentState\n \n // If service is loading (or was just restarted and might be loading), wait for it to finish\n // Otherwise loadOrCreateSchemaSuccess might overwrite our update with old data\n if (isServiceLoading || wasServiceStopped) {\n logger(`Service is ${isServiceLoading ? 'loading' : 'was stopped'}, will send updateContext after loading completes (current state: ${currentState})`)\n \n // Helper function to send the update\n const sendUpdate = () => {\n logger(`Sending updateContext with newName=\"${newName}\"`)\n instance._service.send(updateEvent)\n \n // Verify the update\n setTimeout(() => {\n const verifySnapshot = instance._service.getSnapshot()\n logger(`After updateContext: context schemaName=\"${verifySnapshot.context.schemaName}\", metadata.name=\"${verifySnapshot.context.metadata?.name}\"`)\n }, 0)\n }\n \n // Check if already idle (might have loaded synchronously)\n if (currentState === 'idle') {\n // Service is already idle, but loadOrCreateSchemaSuccess might have just fired\n // Use a small delay to ensure loadOrCreateSchemaSuccess has been processed\n logger(`Service is already idle after restart, will send updateContext after brief delay to ensure loadOrCreateSchemaSuccess processed`)\n setTimeout(() => {\n sendUpdate()\n }, 10)\n } else {\n // Subscribe to wait for loading to complete, then send the update\n // Use a small delay after idle to ensure loadOrCreateSchemaSuccess has been processed\n const loadingSubscription = instance._service.subscribe((snapshot) => {\n if (snapshot.value === 'idle') {\n loadingSubscription.unsubscribe()\n logger(`Service finished loading, will send updateContext with newName=\"${newName}\" after brief delay`)\n setTimeout(() => {\n sendUpdate()\n }, 10)\n } else if (snapshot.value === 'error') {\n loadingSubscription.unsubscribe()\n logger(`Service failed to load, cannot update context`)\n }\n })\n }\n } else {\n // Service is already idle, send update immediately\n logger(`Service is already idle, sending updateContext immediately: newName=\"${newName}\", current context schemaName=\"${snapshot.context.schemaName}\"`)\n instance._service.send(updateEvent)\n \n // Verify the update\n setTimeout(() => {\n const verifySnapshot = instance._service.getSnapshot()\n logger(`After updateContext: context schemaName=\"${verifySnapshot.context.schemaName}\", metadata.name=\"${verifySnapshot.context.metadata?.name}\"`)\n }, 0)\n }\n \n // Mark schema as draft when name changes\n instance._service.send({\n type: 'markAsDraft',\n propertyKey: 'schema:name', // Special key for schema name changes\n })\n \n // Save draft to database immediately so changes persist\n saveDraftLogger(`Name change detected, calling _saveDraftToDb (oldName: \"${oldName}\", newName: \"${newName}\")`)\n instance._saveDraftToDb(oldName, newName).catch((error) => {\n saveDraftLogger(`ERROR: Failed to save draft after name change: ${error instanceof Error ? error.message : String(error)}`)\n logger(`Failed to save draft to database: ${error instanceof Error ? error.message : String(error)}`)\n })\n } else {\n logger(`Schema name unchanged: \"${oldName}\"`)\n }\n } else if (prop === 'models') {\n // Models are read-only computed values from Model instances\n // Cannot be set directly - models are managed via Model instances\n throw new Error('Cannot set schema.models directly. Models are computed from Model instances.')\n // DISABLED: Array assignment to schema.models is temporarily disabled\n // \n // REASON: This approach had race condition issues where _saveDraftToDb() would run\n // before Model instances were fully created, causing models to not be saved to the database.\n // \n // NEW APPROACH: Use Model.create() instead:\n // const model = Model.create('ModelName', schemaInstance, {\n // properties: {...},\n // description: '...'\n // })\n // \n // This ensures:\n // 1. Model instance is created first with its _modelFileId\n // 2. Model automatically registers with the schema\n // 3. Schema saves to database with complete model data\n // 4. No race conditions between model creation and schema persistence\n //\n // TODO: Re-enable this if we can fix the race condition, or if we need backward compatibility\n \n throw new Error(\n 'Direct assignment to schema.models is disabled. ' +\n 'Please use Model.create() instead: ' +\n 'const model = Model.create(\"ModelName\", schemaInstance, { properties: {...}, description: \"...\" })'\n )\n \n /* DISABLED CODE - See comment above\n // Convert array of Model instances or plain objects back to object format\n let modelsObject: { [key: string]: any }\n if (Array.isArray(value)) {\n modelsObject = {}\n const seenNames = new Set<string>()\n \n // Check for duplicate model names\n for (const model of value) {\n // Handle Model instances\n if (model instanceof Model) {\n const modelName = model.modelName!\n if (seenNames.has(modelName)) {\n throw new Error(\n `Duplicate model name detected: \"${modelName}\". Each model must have a unique name.`\n )\n }\n seenNames.add(modelName)\n modelsObject[modelName] = {\n properties: model.properties || {},\n }\n } else if (model && typeof model === 'object' && 'name' in model) {\n // Handle plain objects\n const modelName = model.name as string\n if (seenNames.has(modelName)) {\n throw new Error(\n `Duplicate model name detected: \"${modelName}\". Each model must have a unique name.`\n )\n }\n seenNames.add(modelName)\n const { name, ...modelData } = model\n modelsObject[name] = modelData\n }\n }\n } else {\n modelsObject = value || {}\n // Check for duplicates in object format too\n const modelNames = Object.keys(modelsObject)\n const seenNames = new Set<string>()\n for (const modelName of modelNames) {\n if (seenNames.has(modelName)) {\n throw new Error(\n `Duplicate model name detected: \"${modelName}\". Each model must have a unique name.`\n )\n }\n seenNames.add(modelName)\n }\n }\n \n const context = newInstance._getSnapshotContext()\n \n // Check if service is still running before sending events\n let snapshot = newInstance._service.getSnapshot()\n const wasServiceStopped = snapshot.status === 'stopped'\n \n if (wasServiceStopped) {\n logger(`Service is stopped, will restart before adding models`)\n newInstance._service.start()\n snapshot = newInstance._service.getSnapshot()\n }\n \n // Check current state after potential restart\n const currentState = snapshot.value\n // Check if state is a loading state object (XState v5 nested states)\n const isServiceLoading = typeof currentState === 'object' && 'loading' in currentState\n \n // If service is loading, wait for it to finish before adding models\n if (isServiceLoading || wasServiceStopped) {\n logger(`Service is ${isServiceLoading ? 'loading' : 'was stopped'}, will add models after loading completes`)\n \n const loadingSubscription = newInstance._service.subscribe((snapshot) => {\n if (snapshot.value === 'idle') {\n loadingSubscription.unsubscribe()\n logger(`Service finished loading, sending addModels event`)\n newInstance._service.send({\n type: 'addModels',\n models: modelsObject,\n })\n } else if (snapshot.value === 'error') {\n loadingSubscription.unsubscribe()\n logger(`Service failed to load, cannot add models`)\n }\n })\n } else {\n // Service is ready, send addModels event immediately\n // The state machine will handle all the complexity (validation, instance creation, ID collection, persistence)\n logger(`Service is ready, sending addModels event`)\n newInstance._service.send({\n type: 'addModels',\n models: modelsObject,\n })\n }\n \n // Mark schema as draft when models change\n newInstance._service.send({\n type: 'markAsDraft',\n propertyKey: 'schema:models',\n })\n \n // Save draft to database immediately so changes persist\n newInstance._saveDraftToDb().catch((error) => {\n logger(`Failed to save draft to database: ${error instanceof Error ? error.message : String(error)}`)\n })\n \n // Update client context so useSchema and useSchemas hooks reflect the change\n newInstance._updateClientContext().catch(() => {\n // Silently fail if not in browser environment\n })\n */\n } else if (prop === 'createdAt' || prop === 'updatedAt') {\n // Update metadata object\n const metadataContext = newInstance._getSnapshotContext()\n const currentMetadata = metadataContext.metadata || {\n name: schemaName,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n newInstance._service.send({\n type: 'updateContext',\n metadata: {\n ...currentMetadata,\n [prop]: value,\n updatedAt: new Date().toISOString(),\n },\n })\n } else {\n // Standard property update\n newInstance._service.send({\n type: 'updateContext',\n [prop]: value,\n })\n \n // Mark schema as draft for other property changes\n newInstance._service.send({\n type: 'markAsDraft',\n propertyKey: prop,\n })\n \n // Save draft to database for tracked properties\n if (TRACKED_PROPERTIES.includes(prop as any)) {\n const trackedPropContext = newInstance._getSnapshotContext()\n const schemaName = trackedPropContext.metadata?.name || trackedPropContext.schemaName\n newInstance._saveDraftToDb(schemaName, schemaName).catch((error) => {\n logger(`Failed to save draft to database: ${error instanceof Error ? error.message : String(error)}`)\n })\n }\n }\n },\n })\n \n // Cache by name initially (will be moved to id-based cache once schemaFileId is available)\n this.instanceCacheByName.set(schemaName, {\n instance: proxiedInstance,\n refCount: 1,\n })\n const schema = proxiedInstance as Schema\n if (!waitForReady) return schema\n return waitForEntityIdle(schema, { timeout: readyTimeout }).then(\n () => schema,\n )\n }\n\n /**\n * Update the cache to use schemaFileId as the key instead of schemaName\n * This should be called once the schema is loaded and we have the schemaFileId\n * We keep the instance in BOTH caches for efficient lookups by either name or ID\n */\n private static _updateCacheKey(schemaName: string, schemaFileId: string): void {\n // If we already have an entry with this id, skip (already processed)\n if (this.instanceCacheById.has(schemaFileId)) {\n return\n }\n \n // If we have an instance cached by name, also add it to id-based cache\n // Keep it in both caches for efficient lookups\n if (this.instanceCacheByName.has(schemaName)) {\n const cacheEntry = this.instanceCacheByName.get(schemaName)!\n // Add to ID cache (don't remove from name cache)\n this.instanceCacheById.set(schemaFileId, {\n instance: cacheEntry.instance,\n refCount: cacheEntry.refCount, // Use same refCount\n })\n logger(`Added schema cache entry to id \"${schemaFileId}\" (kept in name cache: \"${schemaName}\")`)\n }\n }\n\n /**\n * Get schema instance by schemaFileId (preferred method)\n * Returns null if not found in cache\n */\n static getById(schemaFileId: string): Schema | null {\n if (this.instanceCacheById.has(schemaFileId)) {\n const { instance, refCount } = this.instanceCacheById.get(schemaFileId)!\n this.instanceCacheById.set(schemaFileId, {\n instance,\n refCount: refCount + 1,\n })\n return instance\n }\n return null\n }\n\n /**\n * Clear all cached Schema instances.\n * This is primarily useful for test cleanup.\n * All cached instances will be unloaded and removed from both caches.\n */\n static clearCache(): void {\n // Collect all unique instances from both caches\n const instances = new Set<Schema>()\n \n // Collect from ID-based cache\n for (const { instance } of this.instanceCacheById.values()) {\n instances.add(instance)\n }\n \n // Collect from name-based cache\n for (const { instance } of this.instanceCacheByName.values()) {\n instances.add(instance)\n }\n \n // Unload all instances (this will properly clean up services and state)\n for (const instance of instances) {\n try {\n instance.unload()\n } catch (error) {\n // Ignore errors during cleanup (instance might already be unloaded)\n }\n }\n \n // Clear both caches explicitly\n this.instanceCacheById.clear()\n this.instanceCacheByName.clear()\n }\n\n /**\n * Create or get schema instance by schemaFileId\n * Queries the database to find the schema name if not cached\n * @param schemaFileId - The schema file ID\n * @returns Schema instance\n */\n static async createById(schemaFileId: string): Promise<Schema> {\n if (!schemaFileId) {\n throw new Error('Schema file ID is required')\n }\n\n // First, check if we have an instance cached by ID\n const cachedInstance = this.getById(schemaFileId)\n if (cachedInstance) {\n return cachedInstance\n }\n\n // Query database to get schema name from ID\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not available')\n }\n\n const dbSchemas = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.schemaFileId, schemaFileId))\n .orderBy(desc(schemasTable.version))\n .limit(1)\n\n if (dbSchemas.length === 0) {\n throw new Error(`Schema with ID \"${schemaFileId}\" not found in database`)\n }\n\n const dbSchema = dbSchemas[0]\n const schemaName = dbSchema.name\n\n if (!schemaName) {\n throw new Error(`Schema with ID \"${schemaFileId}\" has no name in database`)\n }\n\n // Create schema using the name (this will load from database/file)\n return this.create(schemaName)\n }\n\n /**\n * Find schema instance by schemaFileId\n * Waits for the schema to be fully loaded (idle state) by default\n * @param options - Find options including schemaFileId and wait configuration\n * @returns Schema instance if found, undefined otherwise\n */\n static async find({\n schemaFileId,\n waitForReady = true,\n readyTimeout = 5000,\n }: {\n schemaFileId: string\n waitForReady?: boolean\n readyTimeout?: number\n }): Promise<Schema | undefined> {\n if (!schemaFileId) {\n return undefined\n }\n\n try {\n return await findEntity<Schema>(\n {\n getById: (id) => Schema.getById(id) ?? undefined,\n createById: (id) => Schema.createById(id),\n },\n { id: schemaFileId },\n {\n waitForReady,\n readyTimeout,\n }\n )\n } catch (error) {\n return undefined\n }\n }\n\n /**\n * Get instantiated Schema objects for all schemas (from database and files)\n * By default, returns only the latest version of each schema and excludes the internal Seed Protocol schema.\n * Uses loadAllSchemasFromDb() as the single source of truth, which intelligently merges database and file data.\n * \n * @param options - Configuration options\n * @param options.includeAllVersions - If true, returns all versions of each schema. Default: false\n * @param options.includeInternal - If true, includes the internal Seed Protocol schema. Default: false\n * @returns Array of Schema instances\n */\n static async all(options: SchemaAllOptions = {}): Promise<Schema[]> {\n const {\n includeAllVersions = false,\n includeInternal = false,\n waitForReady = false,\n readyTimeout = 5000,\n } = options\n \n try {\n // Use loadAllSchemasFromDb as single source of truth\n // This intelligently merges database and file data, including drafts\n const allSchemasData = await loadAllSchemasFromDb()\n\n // Filter internal schemas unless explicitly included\n let filteredSchemas = includeInternal\n ? allSchemasData\n : allSchemasData.filter(schemaData => {\n const schema = schemaData.schema\n // Check if this is an internal schema by name or ID\n return !isInternalSchema(\n schema.metadata?.name || '',\n schema.id\n )\n })\n \n // Filter to latest versions if needed\n if (!includeAllVersions) {\n // Group by schema name and keep only the latest version of each\n const schemaMap = new Map<string, typeof filteredSchemas[0]>()\n for (const schemaData of filteredSchemas) {\n const schemaName = schemaData.schema.metadata?.name || ''\n if (!schemaName) continue\n \n const existing = schemaMap.get(schemaName)\n if (!existing || schemaData.schema.version > existing.schema.version) {\n schemaMap.set(schemaName, schemaData)\n } else if (schemaData.schema.version === existing.schema.version) {\n // If versions are equal, use updatedAt as tiebreaker\n const currentUpdatedAt = new Date(schemaData.schema.metadata?.updatedAt || 0).getTime()\n const existingUpdatedAt = new Date(existing.schema.metadata?.updatedAt || 0).getTime()\n if (currentUpdatedAt > existingUpdatedAt) {\n schemaMap.set(schemaName, schemaData)\n }\n }\n }\n filteredSchemas = Array.from(schemaMap.values())\n }\n\n // Create Schema instances using the schemaFileId from filtered data to ensure correct version\n const schemaInstances: Schema[] = []\n const processedSchemaNames = new Set<string>()\n \n for (const schemaData of filteredSchemas) {\n const schemaName = schemaData.schema.metadata?.name\n const schemaFileId = schemaData.schema.id\n const expectedVersion = schemaData.schema.version\n \n if (!schemaName) continue\n \n // Skip if we've already processed this schema name (to avoid duplicates)\n if (processedSchemaNames.has(schemaName)) {\n continue\n }\n processedSchemaNames.add(schemaName)\n \n // Try to use schemaFileId to ensure we load the correct version\n // First check if we have a cached instance by schemaFileId\n if (schemaFileId) {\n const cachedById = this.getById(schemaFileId)\n if (cachedById) {\n // Verify the cached instance has the correct version\n const cachedContext = cachedById.getService().getSnapshot().context\n if (cachedContext.version === expectedVersion) {\n schemaInstances.push(cachedById)\n continue\n }\n }\n }\n \n // If no cached instance by ID, check by name but verify version\n const cachedByName = this.instanceCacheByName.get(schemaName)\n if (cachedByName) {\n const cachedContext = cachedByName.instance.getService().getSnapshot().context\n // Only use cached instance if it has the correct version\n if (cachedContext.version === expectedVersion && (!schemaFileId || cachedContext.id === schemaFileId)) {\n schemaInstances.push(cachedByName.instance)\n continue\n }\n }\n \n // Create new instance - it will load from database\n // The loadOrCreateSchema actor should query by name and get the latest version\n // But to ensure we get the correct version, we'll use createById if we have the schemaFileId\n if (schemaFileId) {\n try {\n const instance = await this.createById(schemaFileId)\n schemaInstances.push(instance)\n } catch (error) {\n // Fallback to creating by name if createById fails\n schemaInstances.push(\n this.create(schemaName, { waitForReady: false }) as Schema,\n )\n }\n } else {\n schemaInstances.push(\n this.create(schemaName, { waitForReady: false }) as Schema,\n )\n }\n }\n\n if (waitForReady && schemaInstances.length > 0) {\n await Promise.all(\n schemaInstances.map((s) =>\n waitForEntityIdle(s as Parameters<typeof waitForEntityIdle>[0], {\n timeout: readyTimeout,\n }),\n ),\n )\n }\n\n return schemaInstances\n } catch (error) {\n // Fallback to file-based approach if database is unavailable\n // This maintains backward compatibility for environments without database\n logger(`Error loading schemas from database, falling back to files: ${error instanceof Error ? error.message : String(error)}`)\n \n // Use existing file-based implementation as fallback\n const allSchemaFiles = await listCompleteSchemaFiles()\n \n // Filter out internal schemas unless explicitly included\n const filteredSchemas = includeInternal\n ? allSchemaFiles\n : allSchemaFiles.filter(schema => {\n // Check if this is an internal schema by name or ID\n return !isInternalSchema(schema.name, schema.schemaFileId)\n })\n \n // If includeAllVersions is false, filter to only latest version of each schema\n const schemasToUse = includeAllVersions\n ? filteredSchemas\n : (() => {\n // Group by schema name and keep only the latest version of each\n const schemaMap = new Map<string, typeof filteredSchemas[0]>()\n for (const schema of filteredSchemas) {\n const existing = schemaMap.get(schema.name)\n if (!existing || schema.version > existing.version) {\n schemaMap.set(schema.name, schema)\n }\n }\n return Array.from(schemaMap.values())\n })()\n \n // Get unique schema names (one instance per schema name)\n const uniqueSchemaNames = new Set<string>()\n for (const schema of schemasToUse) {\n uniqueSchemaNames.add(schema.name)\n }\n \n // Create Schema instances for each unique schema name\n const schemaInstances: Schema[] = []\n for (const schemaName of uniqueSchemaNames) {\n schemaInstances.push(\n this.create(schemaName, { waitForReady: false }) as Schema,\n )\n }\n\n if (waitForReady && schemaInstances.length > 0) {\n await Promise.all(\n schemaInstances.map((s) =>\n waitForEntityIdle(s as Parameters<typeof waitForEntityIdle>[0], {\n timeout: readyTimeout,\n }),\n ),\n )\n }\n\n return schemaInstances\n }\n }\n\n getService(): SchemaService {\n return this._service\n }\n\n private _getSnapshot(): SchemaSnapshot {\n return this._service.getSnapshot() as SchemaSnapshot\n }\n\n private _getSnapshotContext(): SchemaMachineContext {\n return this._getSnapshot().context\n }\n\n get schemaName(): string {\n const context = this._getSnapshotContext()\n const schemaFileId = context.id // id is now the schemaFileId (string)\n \n // Prefer metadata.name if available (most reliable)\n if (context.metadata?.name) {\n return context.metadata.name\n }\n \n // If metadata.name is not available, use schemaName but only if it's not the ID\n // This prevents returning the ID when the schema is still loading or if an ID was mistakenly passed\n if (context.schemaName && context.schemaName !== schemaFileId) {\n return context.schemaName\n }\n \n // Final fallback - return schemaName even if it might be the ID\n // This handles edge cases during loading, but should be rare\n return context.schemaName || ''\n }\n\n get schemaFileId(): string | undefined {\n return this._getSnapshotContext().id // id is now the schemaFileId (string)\n }\n\n get id(): string | undefined {\n return this._getSnapshotContext().id // id is now the schemaFileId (string)\n }\n\n /**\n * Returns Model instances for this schema\n * This is a computed property that reads from the service context\n * Note: This is NOT reactive - use useModels() hook for reactivity\n */\n get models(): Model[] {\n const context = this._getSnapshotContext()\n const schemaName = context.schemaName\n\n // Get model IDs from service context (reactive state)\n const liveQueryIds = context._liveQueryModelIds || []\n\n // Get pending model IDs (not yet in DB)\n // Note: schemaId lookup is async, so we skip pending IDs here\n // They will be included when schemaId is available asynchronously\n const pendingIds: string[] = []\n\n // Combine and deduplicate\n const allModelIds = [...new Set([...liveQueryIds, ...pendingIds])]\n\n // Get Model instances from static cache (from schema load)\n const seen = new Set<string>()\n const modelInstances: Model[] = []\n for (const modelFileId of allModelIds) {\n const model = Model.getById(modelFileId)\n if (model && modelFileId && !seen.has(modelFileId)) {\n modelInstances.push(model)\n seen.add(modelFileId)\n }\n }\n\n // Include models created at runtime via Model.create() that belong to this schema\n // (they may not be in _liveQueryModelIds until schema context is updated)\n if (schemaName) {\n const cachedForSchema = Model.getCachedInstancesForSchema(schemaName)\n for (const model of cachedForSchema) {\n const id = model.id\n if (id && !seen.has(id)) {\n modelInstances.push(model)\n seen.add(id)\n }\n }\n }\n\n // Return a new array reference (snapshot at time of access)\n return [...modelInstances]\n }\n\n get status() {\n return this._getSnapshot().value\n }\n\n get isEdited() {\n const context = this._getSnapshotContext()\n // First check in-memory state\n if (context._isEdited !== undefined) {\n return context._isEdited\n }\n // Fall back to reading from database if we have _dbId\n if (context._dbId) {\n // Load from database asynchronously (fire-and-forget for now)\n // For synchronous getter, we'll need to cache it or make it async\n // For now, return false if not in context\n return false\n }\n return false\n }\n\n get validationErrors() {\n return this._getSnapshotContext()._validationErrors || []\n }\n\n get isValid() {\n const errors = this.validationErrors\n return errors.length === 0\n }\n\n /**\n * Validate the schema\n * @returns Validation result\n */\n async validate(): Promise<{ isValid: boolean; errors: any[] }> {\n return new Promise((resolve) => {\n let resolved = false\n const subscription = this._service.subscribe((snapshot) => {\n if (snapshot.value === 'idle' || snapshot.value === 'error') {\n if (!resolved) {\n resolved = true\n subscription.unsubscribe()\n const errors = snapshot.context._validationErrors || []\n resolve({\n isValid: errors.length === 0,\n errors,\n })\n }\n }\n })\n\n this._service.send({ type: 'validateSchema' })\n \n // Timeout fallback to ensure we always resolve (15 seconds - longer than actor timeout)\n setTimeout(() => {\n if (!resolved) {\n resolved = true\n subscription.unsubscribe()\n const errors = this._getSnapshotContext()._validationErrors || []\n resolve({\n isValid: errors.length === 0,\n errors,\n })\n }\n }, 15000)\n })\n }\n\n /**\n * Build models object from Model instances (for persistence)\n * Model instances are the source of truth for model data\n */\n private _buildModelsFromInstances(): { [modelName: string]: any } {\n const context = this._getSnapshotContext()\n const models: { [modelName: string]: any } = {}\n \n // Get model IDs from service context (reactive state)\n const modelIds = context._liveQueryModelIds || []\n \n // Iterate through Model instances from static cache\n for (const modelFileId of modelIds) {\n const modelInstance = Model.getById(modelFileId)\n if (!modelInstance) continue\n try {\n const modelName = modelInstance.modelName\n \n if (!modelName) {\n logger(`Model instance with ID ${modelFileId} has no modelName, skipping`)\n continue\n }\n \n // Build model definition from Model instance context\n // CRITICAL: Read properties from ModelProperty instances, not from Model's properties context\n // ModelProperty instances are the source of truth for property data\n const propertiesFromInstances = (modelInstance as any)._buildPropertiesFromInstances?.() || modelInstance.properties || {}\n \n models[modelName] = {\n properties: propertiesFromInstances,\n }\n \n logger(`Built model \"${modelName}\" from Model instance (ID: ${modelFileId})`)\n } catch (error) {\n logger(`Error building model from instance (ID: ${modelFileId}): ${error instanceof Error ? error.message : String(error)}`)\n }\n }\n \n logger(`Built ${Object.keys(models).length} models from Model instances`)\n return models\n }\n\n /**\n * Saves all edited properties to a new schema version.\n * This writes the changes to a new JSON file and clears the draft flags.\n * Validates the schema before saving.\n * Transitions schema from draft (DB-only) to published (file + DB).\n * @returns The file path of the new schema version\n */\n async saveNewVersion(): Promise<string> {\n // Check for conflicts before saving\n const conflictCheck = await this._checkForConflicts()\n if (conflictCheck.hasConflict) {\n const errorMessage = conflictCheck.message || 'Database was updated externally. Please reload the schema and try again.'\n logger(`CONFLICT DETECTED: ${errorMessage}`)\n throw new ConflictError(errorMessage, conflictCheck)\n }\n \n const context = this._getSnapshotContext()\n const { addSchemaToDb } = await import('@/helpers/db')\n \n if (!context._isDraft || !context._editedProperties || context._editedProperties.size === 0) {\n logger('No changes to save')\n return ''\n }\n\n // Validate schema before saving\n const validationResult = await this.validate()\n if (!validationResult.isValid) {\n logger(`Schema validation failed with ${validationResult.errors.length} errors`)\n throw new Error(`Cannot save schema: validation failed. Errors: ${validationResult.errors.map(e => e.message).join(', ')}`)\n }\n\n logger(`Saving new version for schema ${this.schemaName} with ${context._editedProperties.size} edited properties`)\n\n // STEP 1: Ensure draft exists in database and update it with current state\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not found')\n }\n\n // Build current schema state from context\n // CRITICAL: Read models from Model instances, not from Schema context\n // Model instances are the source of truth for model data\n const modelsFromInstances = this._buildModelsFromInstances()\n \n const currentSchema: SchemaFileFormat = {\n $schema: context.$schema || 'https://seedprotocol.org/schemas/data-model/v1',\n version: context.version || 1,\n metadata: context.metadata || {\n name: this.schemaName,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n models: modelsFromInstances, // Read from Model instances, not context.models\n enums: context.enums || {},\n migrations: context.migrations || [],\n }\n\n // Update draft in database with current state\n await addSchemaToDb(\n {\n name: this.schemaName,\n version: currentSchema.version,\n createdAt: new Date(currentSchema.metadata.createdAt).getTime(),\n updatedAt: new Date(currentSchema.metadata.updatedAt).getTime(),\n },\n currentSchema.id,\n JSON.stringify(currentSchema, null, 2),\n true, // isDraft = true (still a draft until file is written)\n )\n\n const dbSchema = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.name, this.schemaName))\n .limit(1)\n\n // Collect all edited properties and convert them to SchemaPropertyUpdate format\n const propertyUpdates = []\n\n for (const propertyKey of context._editedProperties) {\n // Skip schema-level changes (like schema name changes)\n if (propertyKey === 'schema:name') {\n // Schema name changes are handled by using the updated schemaName in the file path\n continue\n }\n \n const [modelName, propertyName] = propertyKey.split(':')\n \n if (!modelName || !propertyName) {\n logger(`Invalid property key format: ${propertyKey}`)\n continue\n }\n\n // Get ModelProperty instance from cache\n const cacheKey = `${modelName}:${propertyName}`\n const ModelPropertyClass = ModelProperty as typeof ModelProperty & {\n instanceCache: Map<string, { instance: ModelProperty; refCount: number }>\n }\n \n const cachedInstance = ModelPropertyClass.instanceCache.get(cacheKey)\n \n if (!cachedInstance) {\n logger(`ModelProperty instance not found for ${cacheKey}`)\n continue\n }\n\n const modelProperty = cachedInstance.instance\n const propertyContext = modelProperty.getService().getSnapshot().context\n\n // Convert to SchemaPropertyUpdate\n const propertyUpdate = await convertPropertyToSchemaUpdate(\n propertyContext,\n modelName,\n propertyName,\n )\n \n propertyUpdates.push(propertyUpdate)\n }\n\n if (propertyUpdates.length === 0) {\n // When only new models were added, _editedProperties contains 'schema:models' and we write the full schema\n if (context._editedProperties.has('schema:models')) {\n const newFilePath = await writeFullSchemaNewVersion(this.schemaName, currentSchema)\n const { BaseFileManager } = await import('@/helpers/FileManager/BaseFileManager')\n const fileContent = await BaseFileManager.readFileAsString(newFilePath)\n const publishedSchema = JSON.parse(fileContent) as SchemaFileFormat\n if (dbSchema.length > 0) {\n await db\n .update(schemasTable)\n .set({\n isDraft: false,\n isEdited: false,\n schemaFileId: publishedSchema.id,\n schemaData: JSON.stringify(publishedSchema, null, 2),\n version: publishedSchema.version,\n updatedAt: new Date(publishedSchema.metadata.updatedAt).getTime(),\n })\n .where(eq(schemasTable.id, dbSchema[0].id!))\n }\n this._service.send({\n type: 'clearDraft',\n _dbUpdatedAt: new Date(publishedSchema.metadata.updatedAt).getTime(),\n _dbVersion: publishedSchema.version,\n } as any)\n return newFilePath\n }\n logger('No valid property updates to save')\n return ''\n }\n\n // STEP 2: Save to new schema version (writes file)\n const newFilePath = await updateModelProperties(this.schemaName, propertyUpdates)\n\n // STEP 3: After file is written, update database to mark as published (isDraft = false)\n // Load the file to get the final schema with IDs\n const { BaseFileManager } = await import('@/helpers/FileManager/BaseFileManager')\n const fileContent = await BaseFileManager.readFileAsString(newFilePath)\n const publishedSchema = JSON.parse(fileContent) as SchemaFileFormat\n\n // Update database record: set isDraft = false and update schemaFileId\n if (dbSchema.length > 0) {\n await db\n .update(schemasTable)\n .set({\n isDraft: false,\n isEdited: false, // Clear isEdited flag after saving to file\n schemaFileId: publishedSchema.id,\n schemaData: JSON.stringify(publishedSchema, null, 2),\n version: publishedSchema.version,\n updatedAt: new Date(publishedSchema.metadata.updatedAt).getTime(),\n })\n .where(eq(schemasTable.id, dbSchema[0].id!))\n } else {\n // Create new record if it doesn't exist (shouldn't happen, but safety)\n await addSchemaToDb(\n {\n name: this.schemaName,\n version: publishedSchema.version,\n createdAt: new Date(publishedSchema.metadata.createdAt).getTime(),\n updatedAt: new Date(publishedSchema.metadata.updatedAt).getTime(),\n },\n publishedSchema.id,\n JSON.stringify(publishedSchema, null, 2),\n false, // isDraft = false (published)\n false, // isEdited = false (published)\n )\n }\n\n // Clear draft flags on Schema and update conflict detection metadata\n this._service.send({ \n type: 'clearDraft',\n _dbUpdatedAt: new Date(publishedSchema.metadata.updatedAt).getTime(),\n _dbVersion: publishedSchema.version,\n } as any)\n\n // Clear edited flags on all ModelProperty instances and in database\n for (const propertyKey of context._editedProperties) {\n const [modelName, propertyName] = propertyKey.split(':')\n const cacheKey = `${modelName}:${propertyName}`\n \n const ModelPropertyClass = ModelProperty as typeof ModelProperty & {\n instanceCache: Map<string, { instance: ModelProperty; refCount: number }>\n }\n \n const cachedInstance = ModelPropertyClass.instanceCache.get(cacheKey)\n \n if (cachedInstance) {\n const modelProperty = cachedInstance.instance\n const propertyContext = modelProperty.getService().getSnapshot().context\n \n // Update original values to current values and clear edited flag\n modelProperty.getService().send({\n type: 'clearEdited',\n })\n \n // Clear isEdited flag in database\n try {\n if (db && modelName && propertyName) {\n // Find model by name\n const modelRecords = await db\n .select({ id: modelsTable.id })\n .from(modelsTable)\n .where(eq(modelsTable.name, modelName))\n .limit(1)\n \n if (modelRecords.length > 0) {\n // Find property by name and modelId\n const propertyRecords = await db\n .select({ id: propertiesTable.id })\n .from(propertiesTable)\n .where(\n and(\n eq(propertiesTable.name, propertyName),\n eq(propertiesTable.modelId, modelRecords[0].id)\n )\n )\n .limit(1)\n \n if (propertyRecords.length > 0) {\n // Clear isEdited flag in database\n await db\n .update(propertiesTable)\n .set({ isEdited: false })\n .where(eq(propertiesTable.id, propertyRecords[0].id!))\n }\n }\n }\n } catch (error) {\n logger(`Error clearing isEdited flag in database for property ${propertyKey}: ${error}`)\n }\n }\n }\n \n // Clear isEdited flags for all models in this schema\n try {\n if (db && context._dbId) {\n // Get all models for this schema\n const modelRecords = await db\n .select({ id: modelsTable.id })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, context._dbId))\n \n // Clear isEdited flag for all models\n for (const modelRecord of modelRecords) {\n if (modelRecord.id) {\n await db\n .update(modelsTable)\n .set({ isEdited: false })\n .where(eq(modelsTable.id, modelRecord.id))\n }\n }\n }\n } catch (error) {\n logger(`Error clearing isEdited flags for models: ${error}`)\n }\n\n logger(`Successfully saved new version for schema ${this.schemaName} and published to file`)\n return newFilePath\n }\n\n /**\n * Check for conflicts between actor context and database\n * @returns ConflictResult indicating if a conflict exists\n */\n private async _checkForConflicts(): Promise<ConflictResult> {\n const context = this._getSnapshotContext()\n \n // If we don't have load metadata, can't check for conflicts\n if (!context._dbUpdatedAt || !context.id) {\n return { hasConflict: false }\n }\n \n try {\n const db = BaseDb.getAppDb()\n if (!db) {\n return { hasConflict: false } // Can't check without DB\n }\n \n // Get current DB record\n const dbSchemas = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.schemaFileId, context.id)) // id is now the schemaFileId (string)\n .orderBy(desc(schemasTable.version))\n .limit(1)\n \n if (dbSchemas.length === 0) {\n return { hasConflict: false } // No DB record, no conflict\n }\n \n const dbRecord = dbSchemas[0]\n \n // Check if DB was updated after we loaded\n const dbUpdatedAt = dbRecord.updatedAt || 0\n const localUpdatedAt = context._dbUpdatedAt\n \n if (dbUpdatedAt > localUpdatedAt) {\n return {\n hasConflict: true,\n localVersion: context.version,\n dbVersion: dbRecord.version,\n localUpdatedAt: context.metadata?.updatedAt,\n dbUpdatedAt: new Date(dbUpdatedAt).toISOString(),\n message: `Database was updated externally. Local version: ${context.version}, DB version: ${dbRecord.version}`,\n }\n }\n \n return { hasConflict: false }\n } catch (error) {\n logger(`Error checking for conflicts: ${error instanceof Error ? error.message : String(error)}`)\n return { hasConflict: false } // On error, assume no conflict to allow save\n }\n }\n\n /**\n * Reload schema from database\n * This refreshes the actor context with the latest data from the database\n */\n async reload(): Promise<void> {\n logger(`Reloading schema ${this.schemaName} from database`)\n \n // Send reload event to machine\n this._service.send({ type: 'reloadFromDb' })\n \n // Wait for reload to complete\n return new Promise((resolve, reject) => {\n const subscription = this._service.subscribe((snapshot) => {\n if (snapshot.value === 'idle') {\n subscription.unsubscribe()\n resolve()\n } else if (snapshot.value === 'error') {\n subscription.unsubscribe()\n reject(new Error('Failed to reload schema from database'))\n }\n })\n \n // Timeout after 10 seconds\n setTimeout(() => {\n subscription.unsubscribe()\n reject(new Error('Timeout waiting for schema reload'))\n }, 10000)\n })\n }\n\n /**\n * Save the current schema state to the database as a draft\n * This persists changes immediately without creating a new file version\n * @param oldName - Optional old name to look up existing record before name change\n * @param newName - Optional new name to use (if not provided, uses this.schemaName)\n */\n private async _saveDraftToDb(oldName?: string, newName?: string): Promise<void> {\n saveDraftLogger(`_saveDraftToDb called for schema (oldName: \"${oldName}\", newName: \"${newName}\")`)\n \n // Don't save during initialization - schemas are being loaded from files, not created as drafts\n // Check this FIRST before doing any expensive work like _getSnapshotContext()\n if (typeof window !== 'undefined') {\n const now = Date.now()\n // Use cached check to avoid expensive operations\n // Always check if cache is stale or if we previously got false (to allow recovery)\n const cacheIsStale = cachedClientInitialized === null || (now - clientCheckTime) > CLIENT_CHECK_CACHE_MS\n const shouldRecheck = cacheIsStale || cachedClientInitialized === false\n \n saveDraftLogger(`Client check: cacheIsStale=${cacheIsStale}, shouldRecheck=${shouldRecheck}, cachedValue=${cachedClientInitialized}, timeSinceCheck=${now - clientCheckTime}ms`)\n \n if (shouldRecheck) {\n try {\n // Use dynamic import for browser compatibility (require() doesn't work in browsers)\n const { getClient } = await import('@/client/ClientManager')\n const { ClientManagerState } = await import('@/client/constants')\n const client = getClient()\n const clientSnapshot = client.getService().getSnapshot()\n // Check if state is IDLE (primary check) - isInitialized is set in entry action so should be true\n // But we check it as a secondary safeguard\n const isIdle = clientSnapshot.value === ClientManagerState.IDLE\n const isInitialized = clientSnapshot.context.isInitialized\n // If state is IDLE, trust it even if isInitialized isn't set yet (entry action should set it)\n // This aligns with useIsClientReady which only checks the state value\n cachedClientInitialized = isIdle && (isInitialized !== false)\n clientCheckTime = now\n saveDraftLogger(`Client state checked: state=${clientSnapshot.value}, isIdle=${isIdle}, isInitialized=${isInitialized}, result=${cachedClientInitialized}`)\n } catch (error) {\n // If we can't check client state, assume not initialized to be safe\n // But only cache for a short time to allow recovery\n cachedClientInitialized = false\n clientCheckTime = now\n saveDraftLogger(`Error checking client state: ${error instanceof Error ? error.message : String(error)}, setting cachedClientInitialized=false`)\n }\n } else {\n saveDraftLogger(`Using cached client state: cachedClientInitialized=${cachedClientInitialized}`)\n }\n \n if (!cachedClientInitialized) {\n saveDraftLogger(`Client not initialized, skipping save (oldName: \"${oldName}\", newName: \"${newName}\")`)\n // Skip silently during initialization to avoid log spam and reduce overhead\n return\n }\n }\n \n saveDraftLogger(`Client is initialized, proceeding with save (oldName: \"${oldName}\", newName: \"${newName}\")`)\n \n // Check for conflicts before saving\n const conflictCheck = await this._checkForConflicts()\n if (conflictCheck.hasConflict) {\n const errorMessage = conflictCheck.message || 'Database was updated externally. Please reload the schema and try again.'\n saveDraftLogger(`CONFLICT DETECTED: ${errorMessage}`)\n throw new ConflictError(errorMessage, conflictCheck)\n }\n \n const context = this._getSnapshotContext()\n const schemaName = newName || context.schemaName || oldName || ''\n const schemaFileId = context.id || '' // id is now the schemaFileId (string)\n \n // Use schemaFileId as the key if available, otherwise use schemaName\n const saveKey = schemaFileId || schemaName\n \n // Prevent concurrent saves for the same schema\n if (Schema.savingSchemas.has(saveKey)) {\n saveDraftLogger(`Schema ${schemaName} (key: ${saveKey}) is already being saved, skipping concurrent save`)\n return\n }\n \n Schema.savingSchemas.add(saveKey)\n saveDraftLogger(`Starting save for schema ${schemaName} (key: ${saveKey}, schemaFileId: ${schemaFileId})`)\n \n try {\n // Get context - if service is stopped, use the last known context or build from metadata\n let context: SchemaMachineContext\n try {\n context = this._getSnapshotContext()\n } catch (error) {\n // Service might be stopped, build context from what we know\n logger(`Service stopped, building context from available data`)\n context = {\n schemaName: newName || oldName || '',\n metadata: {\n name: newName || oldName || '',\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n },\n version: 1,\n _isDraft: true,\n _editedProperties: new Set<string>(),\n } as SchemaMachineContext\n }\n const { addSchemaToDb } = await import('@/helpers/db')\n const { generateId } = await import('@/helpers')\n\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not found')\n }\n\n // Use provided newName or fall back to context schemaName (avoid getter which might be stale)\n const finalNewName = newName || context.schemaName || this.schemaName\n // CRITICAL: If name changed, we MUST look up by old name to find the existing record\n // Don't use finalNewName if oldName is provided - that would look up by the new name and not find the old record\n const lookupName = oldName && oldName !== finalNewName ? oldName : finalNewName\n\n // Try to get existing schema ID from database to preserve it\n // PRIMARY: Look up by schemaFileId (most reliable, independent of name changes)\n // FALLBACK: Look up by old name if name changed, otherwise by current name\n let existingSchemaId: string | undefined\n let existingSchemaRecord: typeof schemasTable.$inferSelect | undefined\n \n // PRIMARY: Look up by schemaFileId if we have it (this is the most reliable way)\n if (context.id) {\n logger(`Looking up schema by schemaFileId: ${context.id}`)\n const schemasById = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.schemaFileId, context.id)) // id is now the schemaFileId (string)\n .limit(1)\n \n if (schemasById.length > 0) {\n const foundRecord = schemasById[0]\n existingSchemaRecord = foundRecord\n existingSchemaId = foundRecord.schemaFileId || context.id\n logger(`Found schema by schemaFileId: ${context.id} (id: ${foundRecord.id}, name: ${foundRecord.name})`)\n } else {\n logger(`No schema found by schemaFileId: ${context.id}`)\n }\n } else {\n logger(`No id (schemaFileId) in context, will look up by name`)\n }\n \n // FALLBACK: If not found by schemaFileId, try by name (for newly created schemas that don't have schemaFileId yet)\n if (!existingSchemaRecord) {\n logger(`Looking up schema by name \"${lookupName}\" (oldName: ${oldName}, finalNewName: ${finalNewName})`)\n const existingSchemas = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.name, lookupName))\n .limit(10) // Get multiple to find drafts\n \n logger(`Found ${existingSchemas.length} records with name \"${lookupName}\"`)\n \n // If name changed, prefer draft records; otherwise prefer any record\n if (existingSchemas.length > 0) {\n if (oldName && oldName !== finalNewName) {\n // When name changes, prefer draft records\n const draftRecord = existingSchemas.find((s: typeof schemasTable.$inferSelect) => s.isDraft === true)\n const selectedRecord = draftRecord || existingSchemas[0]\n existingSchemaRecord = selectedRecord\n logger(`Selected ${draftRecord ? 'draft' : 'first'} record (id: ${selectedRecord.id}, isDraft: ${selectedRecord.isDraft})`)\n } else {\n const selectedRecord = existingSchemas[0]\n existingSchemaRecord = selectedRecord\n logger(`Selected first record (id: ${selectedRecord.id}, isDraft: ${selectedRecord.isDraft})`)\n }\n \n if (existingSchemaRecord?.schemaFileId) {\n existingSchemaId = existingSchemaRecord.schemaFileId\n }\n } else {\n logger(`No records found with name \"${lookupName}\"`)\n }\n }\n \n if (existingSchemaRecord) {\n logger(`Using existing record (id: ${existingSchemaRecord.id}, name: ${existingSchemaRecord.name}, isDraft: ${existingSchemaRecord.isDraft}, schemaFileId: ${existingSchemaRecord.schemaFileId || 'none'})`)\n } else {\n logger(`No existing record found`)\n }\n\n // Build current schema state from context\n // Use existing schemaFileId if we found one, otherwise use the one from context, or generate new\n const schemaFileId = existingSchemaId || context.id || generateId() // id is now the schemaFileId (string)\n \n // Build metadata - if name changed, use newName, otherwise use context metadata\n // Always ensure metadata.name matches finalNewName to prevent inconsistencies\n const currentMetadata = context.metadata ? {\n ...context.metadata,\n name: finalNewName, // Always use the final name (from newName parameter or context)\n updatedAt: new Date().toISOString(), // Always update timestamp when saving\n } : {\n name: finalNewName,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n }\n \n // CRITICAL: Ensure schema.id always matches schemaFileId (database is source of truth)\n // Use existingSchemaRecord.schemaFileId if available, otherwise use the calculated schemaFileId\n const finalSchemaFileId = existingSchemaRecord?.schemaFileId || schemaFileId\n \n // CRITICAL: Read models from Model instances, not from Schema context\n // Model instances are the source of truth for model data\n const modelsFromInstances = this._buildModelsFromInstances()\n \n const currentSchema: SchemaFileFormat = {\n $schema: context.$schema || 'https://seedprotocol.org/schemas/data-model/v1',\n version: context.version || 1,\n id: finalSchemaFileId, // Always use schemaFileId from database as source of truth\n metadata: currentMetadata,\n models: modelsFromInstances, // Read from Model instances, not context.models\n enums: context.enums || {},\n migrations: context.migrations || [],\n }\n \n // Log if there was a mismatch that we're fixing\n if (existingSchemaRecord?.schemaFileId && context.id && context.id !== finalSchemaFileId) {\n saveDraftLogger(`Fixed schema ID mismatch: context.id=\"${context.id}\" does not match DB schemaFileId=\"${finalSchemaFileId}\". Using DB value.`)\n }\n \n saveDraftLogger(`Building schema with metadata.name=\"${currentMetadata.name}\", finalNewName=\"${finalNewName}\"`)\n\n // If name changed, we MUST update the existing record (don't create a new one)\n if (oldName && oldName !== finalNewName) {\n if (existingSchemaRecord && existingSchemaRecord.id) {\n logger(`Updating existing schema record (id: ${existingSchemaRecord.id}) from \"${oldName}\" to \"${finalNewName}\"`)\n \n // Update the existing record with the new name\n const schemaDataString = JSON.stringify(currentSchema, null, 2)\n saveDraftLogger(`Saving schemaData with metadata.name=\"${currentSchema.metadata.name}\", schemaData length=${schemaDataString.length}`)\n \n // CRITICAL: Ensure schemaFileId column matches schema.id (schema.id is now guaranteed to match finalSchemaFileId)\n // Always update schemaFileId to match the id in the schema JSON to maintain consistency\n const updateData: any = {\n name: finalNewName,\n schemaData: schemaDataString,\n schemaFileId: finalSchemaFileId, // Always set to match schema.id\n version: currentSchema.version,\n updatedAt: new Date(currentSchema.metadata.updatedAt).getTime(),\n isDraft: true, // Ensure it's marked as a draft when saving via _saveDraftToDb\n }\n \n // Log if we're fixing a mismatch\n if (existingSchemaRecord.schemaFileId && existingSchemaRecord.schemaFileId !== finalSchemaFileId) {\n saveDraftLogger(`Fixing schemaFileId mismatch: DB had \"${existingSchemaRecord.schemaFileId}\", schema.id is \"${finalSchemaFileId}\". Updating DB to match schema.id.`)\n } else if (!existingSchemaRecord.schemaFileId && finalSchemaFileId) {\n saveDraftLogger(`Setting schemaFileId to ${finalSchemaFileId} (was null)`)\n }\n \n await db\n .update(schemasTable)\n .set(updateData)\n .where(eq(schemasTable.id, existingSchemaRecord.id))\n \n // Verify what was saved by reading it back\n const verifyRecord = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.id, existingSchemaRecord.id))\n .limit(1)\n \n if (verifyRecord.length > 0 && verifyRecord[0].schemaData) {\n try {\n const savedSchema = JSON.parse(verifyRecord[0].schemaData) as SchemaFileFormat\n saveDraftLogger(`Verified saved schemaData: metadata.name=\"${savedSchema.metadata?.name}\", name column=\"${verifyRecord[0].name}\", isDraft=${verifyRecord[0].isDraft}, schemaFileId=\"${verifyRecord[0].schemaFileId}\"`)\n \n if (verifyRecord[0].isDraft !== true) {\n saveDraftLogger(`ERROR: isDraft is not true after save! Expected true, got ${verifyRecord[0].isDraft}. This will cause the schema to load from file instead of database!`)\n // Try to fix it immediately\n await db\n .update(schemasTable)\n .set({ isDraft: true })\n .where(eq(schemasTable.id, existingSchemaRecord.id))\n saveDraftLogger(`Attempted to fix isDraft by setting it to true again`)\n \n // Verify the fix\n const fixedRecord = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.id, existingSchemaRecord.id))\n .limit(1)\n if (fixedRecord.length > 0) {\n saveDraftLogger(`After fix attempt: isDraft=${fixedRecord[0].isDraft}`)\n }\n }\n } catch (error) {\n saveDraftLogger(`Error parsing saved schemaData for verification: ${error}`)\n }\n } else {\n saveDraftLogger(`WARNING: Could not verify saved record - record not found or has no schemaData`)\n }\n \n // Update the context's id (schemaFileId) and conflict detection metadata\n try {\n const snapshot = this._service.getSnapshot()\n if (snapshot.status !== 'stopped') {\n // Use finalSchemaFileId which matches the schema.id\n // Also update conflict detection metadata after successful save\n this._service.send({\n type: 'updateContext',\n id: finalSchemaFileId, // id is now the schemaFileId (string)\n _dbUpdatedAt: new Date(currentSchema.metadata.updatedAt).getTime(),\n _dbVersion: currentSchema.version,\n })\n }\n } catch (error) {\n // Service might be stopped, ignore\n logger(`Could not update id (schemaFileId) in context: ${error instanceof Error ? error.message : String(error)}`)\n }\n \n logger(`Successfully updated schema name from \"${oldName}\" to \"${finalNewName}\" in database`)\n Schema.savingSchemas.delete(saveKey)\n return\n } else {\n // Name changed but we didn't find the existing record - try harder to find it\n logger(`WARNING: Name changed from \"${oldName}\" to \"${finalNewName}\" but existing record not found. Trying additional lookups...`)\n \n // Try to find by looking for ANY draft with the old name (even if it doesn't match exactly)\n const allDrafts = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.name, oldName))\n .limit(1)\n \n if (allDrafts.length > 0 && allDrafts[0].id) {\n const foundRecord = allDrafts[0]\n logger(`Found existing record by old name \"${oldName}\" (id: ${foundRecord.id}), updating to new name \"${finalNewName}\"`)\n \n // Update the existing record with the new name\n // CRITICAL: Ensure schemaFileId matches schema.id\n await db\n .update(schemasTable)\n .set({\n name: finalNewName,\n schemaData: JSON.stringify(currentSchema, null, 2),\n schemaFileId: finalSchemaFileId, // Always set to match schema.id\n version: currentSchema.version,\n updatedAt: new Date(currentSchema.metadata.updatedAt).getTime(),\n isDraft: true, // Ensure it's marked as a draft when saving via _saveDraftToDb\n })\n .where(eq(schemasTable.id, foundRecord.id))\n \n // Update context with id (schemaFileId) and conflict detection metadata\n try {\n const snapshot = this._service.getSnapshot()\n if (snapshot.status !== 'stopped' && finalSchemaFileId) {\n this._service.send({\n type: 'updateContext',\n id: finalSchemaFileId, // id is now the schemaFileId (string)\n _dbUpdatedAt: new Date(currentSchema.metadata.updatedAt).getTime(),\n _dbVersion: currentSchema.version,\n })\n }\n } catch (error) {\n // Service might be stopped, ignore\n }\n \n logger(`Successfully updated schema name from \"${oldName}\" to \"${finalNewName}\" in database (found by old name)`)\n Schema.savingSchemas.delete(saveKey)\n return\n }\n \n // If we still can't find it, this is an error - don't create a duplicate\n logger(`ERROR: Could not find existing schema record with name \"${oldName}\". Cannot update name to \"${finalNewName}\" without creating a duplicate.`)\n Schema.savingSchemas.delete(saveKey)\n throw new Error(`Cannot update schema name: existing schema with name \"${oldName}\" not found in database`)\n }\n }\n\n // If name changed, we should have already updated the record above and returned\n // Only call addSchemaToDb if name didn't change (normal save scenario)\n if (oldName && oldName !== finalNewName) {\n // This should never happen - we should have updated above and returned\n // But if we get here, it means the update path didn't work, so we need to handle it\n logger(`ERROR: Name changed from \"${oldName}\" to \"${finalNewName}\" but update path didn't complete. This should not occur.`)\n Schema.savingSchemas.delete(saveKey)\n throw new Error(`Failed to update schema name: existing record not found or update failed`)\n }\n\n // Otherwise, use addSchemaToDb which will handle create/update logic (for normal saves, not name changes)\n await addSchemaToDb(\n {\n name: finalNewName,\n version: currentSchema.version,\n createdAt: new Date(currentSchema.metadata.createdAt).getTime(),\n updatedAt: new Date(currentSchema.metadata.updatedAt).getTime(),\n },\n currentSchema.id, // schemaFileId\n JSON.stringify(currentSchema, null, 2), // schemaData\n true, // isDraft = true\n )\n\n // Update conflict detection metadata after successful save\n try {\n const snapshot = this._service.getSnapshot()\n if (snapshot.status !== 'stopped') {\n this._service.send({\n type: 'updateContext',\n _dbUpdatedAt: new Date(currentSchema.metadata.updatedAt).getTime(),\n _dbVersion: currentSchema.version,\n })\n }\n } catch (error) {\n // Service might be stopped, ignore\n }\n \n saveDraftLogger(`Successfully saved draft schema \"${finalNewName}\" to database (key: ${saveKey})`)\n logger(`Saved draft schema ${finalNewName} to database`)\n } catch (error) {\n saveDraftLogger(`ERROR: Failed to save draft to database for schema \"${schemaName}\" (key: ${saveKey}): ${error instanceof Error ? error.message : String(error)}`)\n logger(`Failed to save draft to database: ${error instanceof Error ? error.message : String(error)}`)\n throw error\n } finally {\n // Always remove from saving set, even if there was an error\n Schema.savingSchemas.delete(saveKey)\n saveDraftLogger(`Removed schema from saving set (key: ${saveKey})`)\n }\n }\n\n\n unload(): void {\n try {\n const context = this._getSnapshotContext()\n const cacheKeys: string[] = []\n \n if (context.id) {\n cacheKeys.push(context.id)\n }\n if (context.schemaName) {\n cacheKeys.push(context.schemaName)\n }\n \n unloadEntity(this, {\n getCacheKeys: () => cacheKeys,\n caches: [Schema.instanceCacheById, Schema.instanceCacheByName],\n instanceState: schemaInstanceState,\n getService: (instance) => instance._service,\n onUnload: () => {\n // Clean up WeakMap entry\n schemaInstanceState.delete(this)\n },\n })\n } catch (error) {\n // Service might be stopped, can't get context - that's okay\n logger(`Could not get context during unload: ${error instanceof Error ? error.message : String(error)}`)\n // Still try to clean up what we can\n const instanceState = schemaInstanceState.get(this)\n if (instanceState?.liveQuerySubscription) {\n instanceState.liveQuerySubscription.unsubscribe()\n instanceState.liveQuerySubscription = null\n }\n schemaInstanceState.delete(this)\n try {\n this._service.stop()\n } catch {\n // Service might already be stopped\n }\n }\n }\n\n /**\n * Destroy the schema instance completely: remove from caches, delete from database (cascade),\n * and stop the service. Uses shared destroy helpers.\n */\n async destroy(): Promise<void> {\n const context = this._getSnapshotContext()\n const schemaFileId = context.id\n const schemaName = context.schemaName\n\n clearDestroySubscriptions(this, {\n instanceState: schemaInstanceState,\n onUnload: () => schemaInstanceState.delete(this),\n })\n\n const cacheKeys: string[] = []\n if (schemaFileId) cacheKeys.push(schemaFileId)\n if (schemaName) cacheKeys.push(schemaName)\n forceRemoveFromCaches(this, {\n getCacheKeys: () => cacheKeys,\n caches: [\n Schema.instanceCacheById as Map<string, unknown>,\n Schema.instanceCacheByName as Map<string, unknown>,\n ],\n })\n\n await runDestroyLifecycle(this, {\n getService: (instance) =>\n instance._service as { send: (ev: unknown) => void; stop: () => void },\n doDestroy: async () => {\n const db = BaseDb.getAppDb()\n if (!db || !schemaFileId) return\n\n const schemaRecords = await db\n .select({ id: schemasTable.id })\n .from(schemasTable)\n .where(eq(schemasTable.schemaFileId, schemaFileId))\n\n if (schemaRecords.length === 0) return\n\n const schemaIds = schemaRecords\n .map((r: { id: number | null }) => r.id)\n .filter((id: number | null): id is number => id != null)\n if (schemaIds.length === 0) return\n\n const { inArray } = await import('drizzle-orm')\n const joinRows = await db\n .select({ modelId: modelSchemas.modelId })\n .from(modelSchemas)\n .where(inArray(modelSchemas.schemaId, schemaIds))\n const modelIds = [\n ...new Set(\n joinRows\n .map((r: { modelId: number | null }) => r.modelId)\n .filter((id: number | null): id is number => id != null),\n ),\n ] as number[]\n\n await db.delete(modelSchemas).where(inArray(modelSchemas.schemaId, schemaIds))\n\n for (const modelId of modelIds) {\n await db.delete(propertiesTable).where(eq(propertiesTable.modelId, modelId))\n }\n for (const modelId of modelIds) {\n await db.delete(modelsTable).where(eq(modelsTable.id, modelId))\n }\n await db.delete(schemasTable).where(eq(schemasTable.schemaFileId, schemaFileId))\n },\n })\n }\n\n /**\n * Set up liveQuery subscription to watch for model changes in the database\n * This enables cross-instance synchronization (e.g., changes in other tabs/windows)\n */\n private _setupLiveQuerySubscription(): void {\n // Only set up in browser environment where liveQuery is available\n if (typeof window === 'undefined') {\n return\n }\n\n setupEntityLiveQuery(this, {\n getEntityId: async (schema) => {\n const db = BaseDb.getAppDb()\n if (!db) {\n return undefined\n }\n\n const context = schema._getSnapshotContext()\n const schemaName = context.metadata?.name\n if (!schemaName) {\n return undefined\n }\n\n const schemaRecords = await db\n .select()\n .from(schemasTable)\n .where(eq(schemasTable.name, schemaName))\n .limit(1)\n\n if (schemaRecords.length === 0 || !schemaRecords[0].id) {\n return undefined\n }\n\n return schemaRecords[0].id\n },\n buildQuery: async (schemaId) => {\n const db = BaseDb.getAppDb()\n if (!db) {\n throw new Error('Database not available')\n }\n return BaseDb.liveQuery<{ \n modelId: number\n modelName: string\n modelFileId: string\n }>(\n db\n .select({\n modelId: modelSchemas.modelId,\n modelName: modelsTable.name,\n modelFileId: modelsTable.schemaFileId,\n })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, typeof schemaId === 'string' ? parseInt(schemaId, 10) : schemaId))\n )\n },\n extractEntityIds: (rows) => rows.map(row => row.modelFileId).filter(Boolean) as string[],\n updateContext: (schema, ids) => {\n // Helper function to send updateContext event with model IDs\n const sendUpdateContext = () => {\n // Double-check instance state still exists\n const verifyInstanceState = schemaInstanceState.get(schema)\n if (!verifyInstanceState) {\n logger(`[Schema._setupLiveQuerySubscription] Instance state cleaned up before sending updateContext`)\n return\n }\n \n try {\n const snapshot = schema._service.getSnapshot()\n if (snapshot.status === 'stopped') {\n logger(`[Schema._setupLiveQuerySubscription] Service stopped before sending, skipping`)\n return\n }\n \n // Send updateContext with liveQueryModelIds in service context for reactive updates\n schema._service.send({\n type: 'updateContext',\n _liveQueryModelIds: ids, // Store in service context for reactivity\n _modelsUpdated: Date.now(), // Internal field for tracking\n })\n logger(`[Schema._setupLiveQuerySubscription] Sent updateContext event with ${ids.length} model IDs`)\n } catch (error) {\n logger(`[Schema._setupLiveQuerySubscription] Error sending updateContext: ${error}`)\n }\n }\n \n // Check if service is stopped before sending events\n const snapshot = schema._service.getSnapshot()\n const isServiceStopped = snapshot.status === 'stopped'\n \n if (isServiceStopped) {\n logger(`[Schema._setupLiveQuerySubscription] Service is stopped, restarting before sending updateContext`)\n // Restart the service first\n schema._service.start()\n \n // Wait for service to be ready (idle state) before sending event\n setTimeout(() => {\n const delayedInstanceState = schemaInstanceState.get(schema)\n if (!delayedInstanceState) {\n logger(`[Schema._setupLiveQuerySubscription] Instance state cleaned up during restart delay`)\n return\n }\n \n const newSnapshot = schema._service.getSnapshot()\n if (newSnapshot.status !== 'stopped') {\n sendUpdateContext()\n } else {\n logger(`[Schema._setupLiveQuerySubscription] Service still stopped after restart attempt`)\n }\n }, 10)\n } else {\n // Service is running, send immediately\n sendUpdateContext()\n }\n },\n createChildInstances: async (ids) => {\n for (const id of ids) {\n await Model.createById(id)\n }\n },\n queryInitialData: async (schemaId) => {\n const db = BaseDb.getAppDb()\n if (!db) {\n return []\n }\n\n // Retry logic for initial query\n const queryInitialModels = async (retries = 3): Promise<any[]> => {\n try {\n const initialModels = await db\n .select({\n modelId: modelSchemas.modelId,\n modelName: modelsTable.name,\n modelFileId: modelsTable.schemaFileId,\n })\n .from(modelSchemas)\n .innerJoin(modelsTable, eq(modelSchemas.modelId, modelsTable.id))\n .where(eq(modelSchemas.schemaId, typeof schemaId === 'string' ? parseInt(schemaId, 10) : schemaId))\n \n logger(`[Schema._setupLiveQuerySubscription] Initial query found ${initialModels.length} models`)\n \n if (initialModels.length > 0) {\n return initialModels.map((row: { modelId: number; modelName: string; modelFileId: string | null }) => ({\n modelId: row.modelId,\n modelName: row.modelName,\n modelFileId: row.modelFileId || '',\n }))\n } else if (retries > 0) {\n logger(`[Schema._setupLiveQuerySubscription] No models found, retrying... (${retries} retries left)`)\n await new Promise(resolve => setTimeout(resolve, 100))\n return queryInitialModels(retries - 1)\n } else {\n logger(`[Schema._setupLiveQuerySubscription] No models found in initial query after retries`)\n return []\n }\n } catch (error) {\n if (retries > 0) {\n logger(`[Schema._setupLiveQuerySubscription] Error querying initial models, retrying... (${retries} retries left): ${error}`)\n await new Promise(resolve => setTimeout(resolve, 100))\n return queryInitialModels(retries - 1)\n } else {\n logger(`[Schema._setupLiveQuerySubscription] Error querying initial models after retries: ${error}`)\n return []\n }\n }\n }\n \n return queryInitialModels()\n },\n instanceState: schemaInstanceState as WeakMap<Schema, { liveQuerySubscription: Subscription | null }>,\n loggerName: 'seedSdk:schema:liveQuery',\n isReady: (schema) => {\n const snapshot = schema._service.getSnapshot()\n return snapshot.value === 'idle' && !!snapshot.context.metadata?.name\n },\n })\n }\n\n}"],"names":["logger","getModelIdsForSchema","BaseDb","modelsTable","modelSchemas","eq","createModelInstances","propertiesTable","getSchemaFilePath","BaseFileManager","fromCallback","isInternalSchema","SEED_PROTOCOL_SCHEMA_NAME","schemas","addSchemaToDb","generateId","createModelsFromJson","addModelsToDb","desc","listCompleteSchemaFiles","and","loadModelsFromDbForSchema","getLatestSchemaVersion","SchemaValidationService","setup","Model","createModelFromJson","assign","verifyWithRetry","writeProcessMachine","createActor","waitForEntityIdle","createReactiveProxy","schemasTable","findEntity","loadAllSchemasFromDb","ConflictError","ModelProperty","convertPropertyToSchemaUpdate","writeFullSchemaNewVersion","updateModelProperties","unloadEntity","clearDestroySubscriptions","forceRemoveFromCaches","runDestroyLifecycle","setupEntityLiveQuery"],"mappings":"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"}
|