@highstate/backend 0.17.0 → 0.19.1

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.
Files changed (89) hide show
  1. package/dist/{chunk-JT4KWE3B.js → chunk-V2NILDHS.js} +3 -2
  2. package/dist/chunk-V2NILDHS.js.map +1 -0
  3. package/dist/highstate.manifest.json +3 -4
  4. package/dist/index.js +190 -280
  5. package/dist/index.js.map +1 -1
  6. package/dist/shared/index.js +1 -1
  7. package/package.json +9 -10
  8. package/prisma/backend/postgresql/main.prisma +0 -2
  9. package/prisma/backend/sqlite/main.prisma +0 -2
  10. package/prisma/project/main.prisma +0 -1
  11. package/src/business/project.ts +1 -2
  12. package/src/database/_generated/backend/postgresql/browser.ts +54 -0
  13. package/src/database/_generated/backend/postgresql/client.ts +7 -8
  14. package/src/database/_generated/backend/postgresql/commonInputTypes.ts +3 -2
  15. package/src/database/_generated/backend/postgresql/enums.ts +3 -1
  16. package/src/database/_generated/backend/postgresql/internal/class.ts +24 -71
  17. package/src/database/_generated/backend/postgresql/internal/prismaNamespace.ts +41 -43
  18. package/src/database/_generated/backend/postgresql/internal/prismaNamespaceBrowser.ts +191 -0
  19. package/src/database/_generated/backend/postgresql/models/BackendUnlockMethod.ts +12 -11
  20. package/src/database/_generated/backend/postgresql/models/Library.ts +29 -28
  21. package/src/database/_generated/backend/postgresql/models/Project.ts +69 -68
  22. package/src/database/_generated/backend/postgresql/models/ProjectModelStorage.ts +29 -28
  23. package/src/database/_generated/backend/postgresql/models/ProjectSpace.ts +26 -25
  24. package/src/database/_generated/backend/postgresql/models/PulumiBackend.ts +29 -28
  25. package/src/database/_generated/backend/postgresql/models/UserWorkspaceLayout.ts +12 -11
  26. package/src/database/_generated/backend/postgresql/models.ts +2 -1
  27. package/src/database/_generated/backend/postgresql/pjtg.ts +1 -0
  28. package/src/database/_generated/backend/sqlite/browser.ts +54 -0
  29. package/src/database/_generated/backend/sqlite/client.ts +7 -8
  30. package/src/database/_generated/backend/sqlite/commonInputTypes.ts +3 -2
  31. package/src/database/_generated/backend/sqlite/enums.ts +3 -1
  32. package/src/database/_generated/backend/sqlite/internal/class.ts +24 -71
  33. package/src/database/_generated/backend/sqlite/internal/prismaNamespace.ts +41 -43
  34. package/src/database/_generated/backend/sqlite/internal/prismaNamespaceBrowser.ts +188 -0
  35. package/src/database/_generated/backend/sqlite/models/BackendUnlockMethod.ts +12 -11
  36. package/src/database/_generated/backend/sqlite/models/Library.ts +29 -28
  37. package/src/database/_generated/backend/sqlite/models/Project.ts +69 -68
  38. package/src/database/_generated/backend/sqlite/models/ProjectModelStorage.ts +29 -28
  39. package/src/database/_generated/backend/sqlite/models/ProjectSpace.ts +26 -25
  40. package/src/database/_generated/backend/sqlite/models/PulumiBackend.ts +29 -28
  41. package/src/database/_generated/backend/sqlite/models/UserWorkspaceLayout.ts +12 -11
  42. package/src/database/_generated/backend/sqlite/models.ts +2 -1
  43. package/src/database/_generated/backend/sqlite/pjtg.ts +1 -0
  44. package/src/database/_generated/project/browser.ts +1 -0
  45. package/src/database/_generated/project/client.ts +4 -5
  46. package/src/database/_generated/project/commonInputTypes.ts +1 -0
  47. package/src/database/_generated/project/enums.ts +1 -0
  48. package/src/database/_generated/project/internal/class.ts +20 -62
  49. package/src/database/_generated/project/internal/prismaNamespace.ts +40 -36
  50. package/src/database/_generated/project/internal/prismaNamespaceBrowser.ts +9 -6
  51. package/src/database/_generated/project/models/ApiKey.ts +1 -0
  52. package/src/database/_generated/project/models/Artifact.ts +1 -0
  53. package/src/database/_generated/project/models/HubModel.ts +1 -0
  54. package/src/database/_generated/project/models/InstanceCustomStatus.ts +1 -0
  55. package/src/database/_generated/project/models/InstanceEvaluationState.ts +1 -0
  56. package/src/database/_generated/project/models/InstanceLock.ts +1 -0
  57. package/src/database/_generated/project/models/InstanceModel.ts +1 -0
  58. package/src/database/_generated/project/models/InstanceOperationState.ts +1 -0
  59. package/src/database/_generated/project/models/InstanceState.ts +1 -0
  60. package/src/database/_generated/project/models/Operation.ts +1 -0
  61. package/src/database/_generated/project/models/OperationLog.ts +1 -0
  62. package/src/database/_generated/project/models/Page.ts +1 -0
  63. package/src/database/_generated/project/models/Secret.ts +1 -0
  64. package/src/database/_generated/project/models/ServiceAccount.ts +1 -0
  65. package/src/database/_generated/project/models/Terminal.ts +1 -0
  66. package/src/database/_generated/project/models/TerminalSession.ts +1 -0
  67. package/src/database/_generated/project/models/TerminalSessionLog.ts +1 -0
  68. package/src/database/_generated/project/models/Trigger.ts +1 -0
  69. package/src/database/_generated/project/models/UnlockMethod.ts +1 -0
  70. package/src/database/_generated/project/models/UserCompositeViewport.ts +1 -0
  71. package/src/database/_generated/project/models/UserProjectViewport.ts +1 -0
  72. package/src/database/_generated/project/models/Worker.ts +1 -0
  73. package/src/database/_generated/project/models/WorkerUnitRegistration.ts +1 -0
  74. package/src/database/_generated/project/models/WorkerVersion.ts +1 -0
  75. package/src/database/_generated/project/models/WorkerVersionLog.ts +1 -0
  76. package/src/database/_generated/project/models.ts +1 -0
  77. package/src/database/abstractions.ts +1 -7
  78. package/src/database/index.ts +1 -0
  79. package/src/database/local/backend.ts +19 -30
  80. package/src/database/local/project.ts +4 -9
  81. package/src/database/manager.ts +28 -34
  82. package/src/database/migration.ts +126 -0
  83. package/src/shared/resolvers/input.ts +2 -0
  84. package/src/test-utils/database.ts +28 -14
  85. package/dist/chunk-JT4KWE3B.js.map +0 -1
  86. package/dist/database/local/prisma.config.js +0 -26
  87. package/dist/database/local/prisma.config.js.map +0 -1
  88. package/src/database/local/prisma.config.ts +0 -25
  89. package/src/database/migrate.ts +0 -35
@@ -1125,6 +1125,7 @@ var InputResolver = class extends GraphResolver {
1125
1125
  }
1126
1126
  return {
1127
1127
  kind: "hub",
1128
+ hub: node.hub,
1128
1129
  resolvedInputs: Array.from(hubResult.values())
1129
1130
  };
1130
1131
  }
@@ -1557,5 +1558,5 @@ var resolverFactories = {
1557
1558
  };
1558
1559
 
1559
1560
  export { AccessError, BackendError, BackendUnlockMethodNotFoundError, CannotDeleteLastBackendUnlockMethodError, CannotDeleteLastUnlockMethodError, GraphResolver, InputHashResolver, InputResolver, InstanceLockLostError, InstanceLockedError, InstanceNotFoundError, InstanceStateNotFoundError, InvalidInstanceKindError, MAX_WORKER_START_ATTEMPTS, OperationNotFoundError, ProjectLockedError, ProjectNotFoundError, PromiseTracker, SystemSecretNames, ValidationResolver, WorkerVersionNotFoundError, apiKeyMetaSchema, apiKeyOutputSchema, apiKeyQuerySchema, applyLibraryUpdate, artifactOutputSchema, artifactQuerySchema, backendUnlockMethodInputSchema, backendUnlockMethodMetaSchema, codebaseLibrary, codebaseProjectModelStorage, collectionQueryResult, collectionQuerySchema, createAsyncBatcher, databaseProjectModelStorage, diffLibraries, extractDigestFromImage, finalInstanceOperationStatuses, finalOperationStatuses, forSchema, getAllDependents, getMatchedInjectionInstanceInputs, getResolvedHubInputs, getResolvedInjectionInstanceInputs, getResolvedInstanceInputs, getResolvedInstanceOutputs, getWorkerIdentity, globalProjectSpace, hasObjectMeta, hostPulumiBackend, instanceCustomStatusInputSchema, instanceLockEventSchema, instanceLockOutputSchema, instanceStateEventSchema, int32ToBytes, isFinalOperationStatus, isInstanceDeployed, isTransientInstanceOperationStatus, isTransientOperationStatus, isVirtualGhostInstance, librarySpecSchema, operationEventSchema, operationLaunchInputSchema, operationMetaSchema, operationOptionsSchema, operationOutputSchema, operationPhaseInstanceSchema, operationPhaseSchema, operationPhaseTypeSchema, operationPlanInputSchema, operationStatusSchema, operationTypeSchema, pageDetailsOutputSchema, pageOutputSchema, pageQuerySchema, projectInputSchema, projectModelEventSchema, projectModelStorageSpecSchema, projectOutputSchema, projectUnlockStateSchema, projectUnlockSuiteSchema, pulumiBackendSpecSchema, resolverFactories, secretOutputSchema, secretQuerySchema, serviceAccountOutputSchema, serviceAccountQuerySchema, stableInstanceInputSchema, terminalDetailsOutputSchema, terminalOutputSchema, terminalQuerySchema, terminalSessionOutputSchema, terminalStatusSchema, toApiKeyOutput, toPageOutput, toSecretOutput, toTerminalDetailsOutput, toTerminalOutput, toTerminalSessionOutput, toWorkerOutput, toWorkerVersionOutput, triggerOutputSchema, triggerQuerySchema, unlockMethodInputSchema, unlockMethodMetaSchema, unlockMethodOutputSchema, unlockMethodType, waitAll, workerOutputSchema, workerQuerySchema, workerUnitRegistrationEventSchema, workerVersionOutputSchema, workerVersionStatusSchema };
1560
- //# sourceMappingURL=chunk-JT4KWE3B.js.map
1561
- //# sourceMappingURL=chunk-JT4KWE3B.js.map
1561
+ //# sourceMappingURL=chunk-V2NILDHS.js.map
1562
+ //# sourceMappingURL=chunk-V2NILDHS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shared/models/backend/library.ts","../src/shared/models/backend/well-known.ts","../src/shared/models/backend/project.ts","../src/shared/models/backend/pulumi.ts","../src/shared/models/backend/unlock-method.ts","../src/shared/models/base.ts","../src/shared/models/errors.ts","../src/shared/models/project/api-key.ts","../src/shared/models/project/artifact.ts","../src/shared/models/project/custom-status.ts","../src/shared/models/project/lock.ts","../src/shared/models/project/model.ts","../src/shared/models/project/operation.ts","../src/shared/models/project/page.ts","../src/shared/models/project/secret.ts","../src/shared/models/project/service-account.ts","../src/shared/models/project/state.ts","../src/shared/models/project/terminal.ts","../src/shared/models/project/trigger.ts","../src/shared/models/project/unlock-method.ts","../src/shared/models/project/worker.ts","../src/shared/resolvers/graph-resolver.ts","../src/shared/resolvers/input.ts","../src/shared/utils/async-batcher.ts","../src/shared/utils/hash.ts","../src/shared/utils/promise-tracker.ts","../src/shared/resolvers/input-hash.ts","../src/shared/resolvers/validation.ts","../src/shared/resolvers/registry.ts"],"names":["z","objectMetaSchema","commonObjectMetaSchema","instanceIdSchema","serviceAccountMetaSchema","SystemSecretNames","globalCommonObjectMetaSchema","nodeId","resolvedInputs","mapValues","isUnitModel"],"mappings":"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","file":"chunk-V2NILDHS.js","sourcesContent":["import { type ComponentModel, type EntityModel, z } from \"@highstate/contract\"\n\nexport const librarySpecSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"host\"),\n }),\n])\n\nexport type LibrarySpec = z.infer<typeof librarySpecSchema>\n\nexport type LibraryModel = {\n components: Record<string, ComponentModel>\n entities: Record<string, EntityModel>\n}\n\nexport type LibraryUpdate =\n | {\n type: \"reload-started\" | \"reload-completed\"\n }\n | {\n type: \"component-updated\"\n component: ComponentModel\n }\n | {\n type: \"entity-updated\"\n entity: EntityModel\n }\n | {\n type: \"component-removed\"\n componentType: string\n }\n | {\n type: \"entity-removed\"\n entityType: string\n }\n\nexport function diffLibraries(oldLibrary: LibraryModel, newLibrary: LibraryModel): LibraryUpdate[] {\n const updates: LibraryUpdate[] = []\n\n for (const [componentType, newComponent] of Object.entries(newLibrary.components)) {\n const existingComponent = oldLibrary.components[componentType]\n if (existingComponent?.definitionHash !== newComponent.definitionHash) {\n updates.push({ type: \"component-updated\", component: newComponent })\n }\n }\n\n for (const componentType of Object.keys(oldLibrary.components)) {\n if (!newLibrary.components[componentType]) {\n updates.push({ type: \"component-removed\", componentType })\n }\n }\n\n for (const [entityType, newEntity] of Object.entries(newLibrary.entities)) {\n const existingEntity = oldLibrary.entities[entityType]\n if (existingEntity?.definitionHash !== newEntity.definitionHash) {\n updates.push({ type: \"entity-updated\", entity: newEntity })\n }\n }\n\n for (const entityType of Object.keys(oldLibrary.entities)) {\n if (!newLibrary.entities[entityType]) {\n updates.push({ type: \"entity-removed\", entityType })\n }\n }\n\n return updates\n}\n\nexport function applyLibraryUpdate(\n components: Record<string, ComponentModel>,\n entities: Record<string, EntityModel>,\n update: LibraryUpdate,\n): void {\n switch (update.type) {\n case \"component-updated\":\n components[update.component.type] = update.component\n break\n case \"entity-updated\":\n entities[update.entity.type] = update.entity\n break\n case \"component-removed\":\n delete components[update.componentType]\n break\n case \"entity-removed\":\n delete entities[update.entityType]\n break\n }\n}\n","import type {\n LibraryCreateInput,\n ProjectModelStorageCreateInput,\n ProjectSpaceCreateInput,\n PulumiBackendCreateInput,\n} from \"../../../database/_generated/backend/postgresql/models\"\n\nexport const globalProjectSpace = {\n id: \"q8xbilhwpsn65zjlv5kz44qh\",\n meta: {\n title: \"Global Project Space\",\n description: \"The default project space for all projects.\",\n icon: \"mdi-earth\",\n iconColor: \"#4CAF50\",\n },\n} satisfies ProjectSpaceCreateInput\n\nexport const codebaseLibrary = {\n id: \"n0rfvpl9o77iqf29ff4kk5gf\",\n meta: {\n title: \"Codebase Library\",\n description:\n \"The library which loads components and entities from packages (local or NPM-installed) in the codebase.\",\n icon: \"mdi-package-variant\",\n iconColor: \"#2196F3\",\n },\n spec: { type: \"host\" },\n} satisfies LibraryCreateInput\n\nexport const hostPulumiBackend = {\n id: \"pmn9y901jeiz2ydh93045l39\",\n meta: {\n title: \"Host Pulumi Backend\",\n description: \"The Pulumi backend which will always use the Pulumi CLI configured on the host.\",\n },\n spec: { type: \"host\" },\n} satisfies PulumiBackendCreateInput\n\nexport const codebaseProjectModelStorage = {\n id: \"qppfcerovu3h22o0x8rlpc3g\",\n meta: {\n title: \"Codebase Model Storage\",\n description: \"The storage which stores project model in the codebase.\",\n icon: \"mdi-code-json\",\n },\n spec: { type: \"codebase\" },\n} satisfies ProjectModelStorageCreateInput\n\nexport const databaseProjectModelStorage = {\n id: \"rmi0hmo1tjjsyfry9l178fus\",\n meta: {\n title: \"Database Model Storage\",\n description:\n \"The storage which stores project model in the database alongside the project state.\",\n icon: \"mdi-database\",\n },\n spec: { type: \"database\" },\n} satisfies ProjectModelStorageCreateInput\n","import { commonObjectMetaSchema, genericNameSchema, timestampsSchema, z } from \"@highstate/contract\"\nimport {\n codebaseLibrary,\n codebaseProjectModelStorage,\n globalProjectSpace,\n hostPulumiBackend,\n} from \"./well-known\"\n\nexport const projectModelStorageSpecSchema = z.discriminatedUnion(\"type\", [\n z.object({\n /**\n * The project model is stored in the codebase where Highstate is running.\n */\n type: z.literal(\"codebase\"),\n }),\n z.object({\n /**\n * The project model is stored in the project database alongside the project data.\n */\n type: z.literal(\"database\"),\n }),\n])\n\nexport const projectInputSchema = z.object({\n name: genericNameSchema,\n spaceId: z.cuid2().default(globalProjectSpace.id),\n modelStorageId: z.cuid2().default(codebaseProjectModelStorage.id),\n libraryId: z.cuid2().default(codebaseLibrary.id),\n pulumiBackendId: z.cuid2().default(hostPulumiBackend.id),\n meta: commonObjectMetaSchema,\n})\n\nexport const projectOutputSchema = z.object({\n id: z.string(),\n name: genericNameSchema,\n meta: commonObjectMetaSchema,\n spaceId: z.cuid2(),\n modelStorageId: z.cuid2(),\n libraryId: z.cuid2(),\n pulumiBackendId: z.cuid2(),\n ...timestampsSchema.shape,\n})\n\nexport type ProjectModelStorageSpec = z.infer<typeof projectModelStorageSpecSchema>\n\nexport type ProjectInput = z.infer<typeof projectInputSchema>\nexport type ProjectOutput = z.infer<typeof projectOutputSchema>\n\n/**\n * The project unlock suite is something that the frontend\n * needs to unlock the project and provide the backend\n * with the necessary information to decrypt the master key.\n */\nexport const projectUnlockSuiteSchema = z.object({\n /**\n * The list of encrypted AGE identities that can be used to decrypt the master key of the project.\n *\n * The frontend should try to decrypt at least one of these identities\n * using the password or passkey.\n */\n encryptedIdentities: z.array(z.string()),\n\n /**\n * Whether one of the identities is a passkey and user should be asked to use it.\n */\n hasPasskey: z.boolean(),\n})\n\nexport type ProjectUnlockSuite = z.infer<typeof projectUnlockSuiteSchema>\n\nexport const projectUnlockStateSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"locked\"),\n unlockSuite: projectUnlockSuiteSchema.optional(),\n }),\n z.object({\n type: z.literal(\"unlocked\"),\n }),\n])\n\nexport type ProjectUnlockState = z.infer<typeof projectUnlockStateSchema>\n\nexport type { Project } from \"../../../database\"\n","import { z } from \"@highstate/contract\"\n\nexport const pulumiBackendSpecSchema = z.discriminatedUnion(\"type\", [\n z.object({\n /**\n * Use the Pulumi backend configured on the host where Highstate backend is running.\n *\n * The backend is expected to be configured with the `pulumi login` command by the user.\n */\n type: z.literal(\"host\"),\n }),\n])\n\nexport type PulumiBackendSpec = z.infer<typeof pulumiBackendSpecSchema>\n","import { objectMetaSchema } from \"@highstate/contract\"\nimport { z } from \"zod\"\n\nexport const backendUnlockMethodMetaSchema = objectMetaSchema\n .pick({ title: true, description: true })\n .required({ title: true })\n\nexport const backendUnlockMethodInputSchema = z.object({\n meta: backendUnlockMethodMetaSchema,\n recipient: z.string(),\n})\n\nexport type BackendUnlockMethodMeta = z.infer<typeof backendUnlockMethodMetaSchema>\nexport type BackendUnlockMethodInput = z.infer<typeof backendUnlockMethodInputSchema>\n","import type { ObjectMeta } from \"@highstate/contract\"\nimport { constant, mapValues } from \"remeda\"\nimport { z } from \"zod\"\n\nexport function hasObjectMeta(value: unknown): value is { meta: ObjectMeta } {\n return typeof value === \"object\" && value !== null && \"meta\" in value\n}\n\nconst sortBySchema = z.object({\n key: z.string(),\n order: z.enum([\"asc\", \"desc\"]),\n})\n\nexport type GenericEntity = {\n id: string\n meta: ObjectMeta\n createdAt?: Date\n}\n\nexport const collectionQuerySchema = z.object({\n /**\n * The search string to filter documents by display name, description, or other text fields.\n */\n search: z.string().optional(),\n\n /**\n * The sorting configuration for the results.\n *\n * Can be a single sort field or an array of sort fields.\n * Each sort field contains the key and order.\n */\n sortBy: z.array(sortBySchema).optional(),\n\n /**\n * The number of items to skip.\n *\n * Defaults to 0 if not specified.\n */\n skip: z.number().int().nonnegative().default(0).optional(),\n\n /**\n * The count of documents to return.\n *\n * Defaults to 20 if not specified.\n * Maximum value is 100.\n */\n count: z.number().int().positive().max(100).default(20).optional(),\n})\n\nexport type CollectionQuery = z.infer<typeof collectionQuerySchema>\n\nexport function collectionQueryResult<TSchema extends z.ZodType>(schema: TSchema) {\n return z.object({\n items: z.array(schema),\n total: z.number().int().nonnegative(),\n })\n}\n\nexport type CollectionQueryResult<T> = {\n /**\n * The list of objects matching the query and restricted by pagination.\n */\n items: T[]\n\n /**\n * The total number of documents matching the query.\n */\n total: number\n}\n\n/**\n * Creates a selection object using the provided schema.\n *\n * It can be used in zod pick or prisma select.\n *\n * @param schema The Zod schema to create the selection object from.\n */\nexport function forSchema<TSchema extends z.ZodObject>(\n schema: TSchema,\n): { [K in keyof TSchema[\"shape\"]]: true } {\n return mapValues(schema.shape, constant(true)) as { [K in keyof TSchema[\"shape\"]]: true }\n}\n","export class BackendError extends Error {\n constructor(message: string, cause?: unknown) {\n super(message, { cause })\n this.name = \"BackendError\"\n }\n}\n\nexport class AccessError extends BackendError {\n constructor(message: string) {\n super(message)\n this.name = \"AccessError\"\n }\n}\n\nexport class ProjectLockedError extends AccessError {\n constructor(projectId: string) {\n super(`The project with ID \"${projectId}\" is locked, decryption is not possible.`)\n }\n}\n\nexport class ProjectNotFoundError extends BackendError {\n constructor(projectId: string) {\n super(`Project with ID \"${projectId}\" not found.`)\n this.name = \"ProjectNotFoundError\"\n }\n}\n\nexport class CannotDeleteLastUnlockMethodError extends BackendError {\n constructor(projectId: string) {\n super(`Refused to delete the last unlock method for project \"${projectId}\".`)\n this.name = \"CannotDeleteLastUnlockMethodError\"\n }\n}\n\nexport class InstanceNotFoundError extends BackendError {\n constructor(projectId: string, instanceId: string) {\n super(`Instance with ID \"${instanceId}\" not found in project \"${projectId}\".`)\n this.name = \"InstanceNotFoundError\"\n }\n}\n\nexport class InvalidInstanceKindError extends BackendError {\n constructor(projectId: string, instanceId: string, expectedKind: string, actualKind: string) {\n super(\n `Instance \"${instanceId}\" in project \"${projectId}\" has kind \"${actualKind}\", but expected \"${expectedKind}\".`,\n )\n this.name = \"InvalidInstanceKindError\"\n }\n}\n\nexport class OperationNotFoundError extends BackendError {\n constructor(projectId: string, operationId: string) {\n super(`Operation with ID \"${operationId}\" not found in project \"${projectId}\".`)\n this.name = \"OperationNotFoundError\"\n }\n}\n\nexport class InstanceLockLostError extends BackendError {\n constructor(projectId: string, instanceIds: string[], token: string) {\n super(\n `Instance lock lost for instances [${instanceIds.join(\", \")}] in project \"${projectId}\" with token \"${token}\".`,\n )\n this.name = \"InstanceLockLostError\"\n }\n}\n\nexport class InstanceStateNotFoundError extends BackendError {\n constructor(projectId: string, instanceId: string) {\n super(`State for instance with ID \"${instanceId}\" not found in project \"${projectId}\".`)\n this.name = \"InstanceStateNotFoundError\"\n }\n}\n\nexport class InstanceLockedError extends BackendError {\n constructor(projectId: string, instanceId: string) {\n super(`Instance with ID \"${instanceId}\" in project \"${projectId}\" is locked.`)\n this.name = \"InstanceLockedError\"\n }\n}\n\nexport class WorkerVersionNotFoundError extends BackendError {\n constructor(projectId: string, workerVersionId: string) {\n super(`Worker version with ID \"${workerVersionId}\" not found in project \"${projectId}\".`)\n this.name = \"WorkerVersionNotFoundError\"\n }\n}\n\nexport class BackendUnlockMethodNotFoundError extends BackendError {\n constructor(id: string) {\n super(`Backend unlock method with ID \"${id}\" not found.`)\n this.name = \"BackendUnlockMethodNotFoundError\"\n }\n}\n\nexport class CannotDeleteLastBackendUnlockMethodError extends BackendError {\n constructor() {\n super(`Refused to delete the last backend unlock method.`)\n this.name = \"CannotDeleteLastBackendUnlockMethodError\"\n }\n}\n","import type { ServiceAccount } from \"../../../database\"\nimport {\n commonObjectMetaSchema,\n objectMetaSchema,\n serviceAccountMetaSchema,\n z,\n} from \"@highstate/contract\"\nimport { collectionQuerySchema } from \"../base\"\n\nexport const apiKeyMetaSchema = objectMetaSchema\n .pick({\n title: true,\n description: true,\n })\n .required({ title: true })\n\nexport type ApiKeyMeta = z.infer<typeof apiKeyMetaSchema>\n\nexport const apiKeyOutputSchema = z.object({\n id: z.cuid2(),\n meta: commonObjectMetaSchema,\n serviceAccountId: z.cuid2(),\n serviceAccountMeta: serviceAccountMetaSchema.nullable(),\n createdAt: z.date(),\n})\n\nexport type ApiKeyOutput = z.infer<typeof apiKeyOutputSchema>\n\nexport const apiKeyQuerySchema = collectionQuerySchema.extend({\n serviceAccountId: z.string().optional(),\n})\n\nexport type ApiKeyQuery = z.infer<typeof apiKeyQuerySchema>\n\nexport function toApiKeyOutput(\n apiKey: Omit<ApiKeyOutput, \"serviceAccountMeta\">,\n serviceAccount?: Pick<ServiceAccount, \"meta\"> | null,\n): ApiKeyOutput {\n return {\n ...apiKey,\n serviceAccountMeta: serviceAccount?.meta ?? null,\n }\n}\n","import { commonObjectMetaSchema } from \"@highstate/contract\"\nimport { z } from \"zod\"\nimport { collectionQuerySchema } from \"../base\"\n\nexport const artifactOutputSchema = z.object({\n id: z.cuid2(),\n hash: z.string(),\n size: z.number(),\n meta: commonObjectMetaSchema,\n createdAt: z.date(),\n updatedAt: z.date(),\n})\n\nexport type ArtifactOutput = z.infer<typeof artifactOutputSchema>\n\nexport const artifactQuerySchema = collectionQuerySchema.extend({\n stateId: z.string().optional(),\n serviceAccountId: z.string().optional(),\n terminalId: z.string().optional(),\n pageId: z.string().optional(),\n})\n\nexport type ArtifactQuery = z.infer<typeof artifactQuerySchema>\n","import { commonObjectMetaSchema } from \"@highstate/contract\"\nimport { z } from \"zod\"\n\nexport const instanceCustomStatusInputSchema = z.object({\n name: z.string(),\n meta: commonObjectMetaSchema,\n value: z.string(),\n message: z.string().optional(),\n order: z.number().min(0).max(100).optional(),\n})\n\nexport type InstanceCustomStatusInput = z.infer<typeof instanceCustomStatusInputSchema>\n","import { commonObjectMetaSchema } from \"@highstate/contract\"\nimport { z } from \"zod\"\n\nexport const instanceLockOutputSchema = z.object({\n stateId: z.cuid2(),\n meta: commonObjectMetaSchema,\n acquiredAt: z.date(),\n})\n\nexport type InstanceLockOutput = z.infer<typeof instanceLockOutputSchema>\n\nexport const instanceLockEventSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"locked\"),\n locks: instanceLockOutputSchema.array(),\n }),\n z.object({\n type: z.literal(\"unlocked\"),\n stateIds: z.array(z.string()),\n }),\n])\n\nexport type InstanceLockEvent = z.infer<typeof instanceLockEventSchema>\n","import {\n type HubModel,\n hubModelSchema,\n type InstanceModel,\n instanceIdSchema,\n instanceModelSchema,\n} from \"@highstate/contract\"\nimport { z } from \"zod\"\n\nexport const projectModelEventSchema = z.object({\n updatedInstances: instanceModelSchema.array().optional(),\n updatedHubs: hubModelSchema.array().optional(),\n updatedVirtualInstances: instanceModelSchema.array().optional(),\n updatedGhostInstances: instanceModelSchema.array().optional(),\n\n deletedInstanceIds: instanceIdSchema.array().optional(),\n deletedHubIds: z.string().array().optional(),\n deletedVirtualInstanceIds: instanceIdSchema.array().optional(),\n deletedGhostInstanceIds: instanceIdSchema.array().optional(),\n})\n\nexport type ProjectNodeEvent = z.infer<typeof projectModelEventSchema>\n\nexport type ProjectModel = {\n instances: InstanceModel[]\n hubs: HubModel[]\n}\n\nexport type FullProjectModel = ProjectModel & {\n virtualInstances: InstanceModel[]\n ghostInstances: InstanceModel[]\n}\n","import type { Operation, OperationStatus, OperationType } from \"../../../database\"\nimport { instanceIdSchema, objectMetaSchema, z } from \"@highstate/contract\"\n\n/**\n * Phase type for operation execution.\n */\nexport const operationPhaseTypeSchema = z.enum([\"destroy\", \"preview\", \"update\", \"refresh\"])\n\n/**\n * Instance information for operation phase.\n */\nexport const operationPhaseInstanceSchema = z.object({\n /**\n * The ID of the instance.\n */\n id: instanceIdSchema,\n\n /**\n * The parent ID of the instance, either from the model or the state.\n */\n parentId: z.string().optional(),\n\n /**\n * Human-readable explanation of the decision.\n * */\n message: z.string(),\n})\n\n/**\n * Single phase of operation execution.\n */\nexport const operationPhaseSchema = z.object({\n /**\n * Type of phase being executed.\n */\n type: operationPhaseTypeSchema,\n\n /**\n * List of instances to be processed in this phase.\n */\n instances: z.array(operationPhaseInstanceSchema),\n})\n\nexport type OperationPhase = z.infer<typeof operationPhaseSchema>\nexport type OperationPhaseType = z.infer<typeof operationPhaseTypeSchema>\nexport type OperationPhaseInstance = z.infer<typeof operationPhaseInstanceSchema>\n\nexport const operationOptionsSchema = z\n .object({\n /**\n * Force update all dependencies regardless of their current state.\n *\n * **Operation Behavior Impact:**\n * - bypasses hash-based change detection for dependency chains;\n * - includes **ALL** dependencies (up-to-date, out-of-date, and error states);\n * - traverses the entire dependency graph from requested instances.\n *\n * **Usage with other options:**\n * - combined with `forceUpdateChildren`: updates entire dependency tree **AND** all composite children;\n * - independent of `allowPartialCompositeInstanceCreation`: affects dependency traversal, not composite logic.\n */\n forceUpdateDependencies: z.boolean().default(false),\n\n /**\n * Ignore dependencies and operate only on explicitly requested instances.\n *\n * **Operation Behavior Impact:**\n * - skips dependency inclusion even when dependencies are failed or undeployed;\n * - caller must explicitly include every prerequisite instance to avoid failures;\n * - complements on-demand or targeted updates where dependency safety is managed externally.\n *\n * **Usage with other options:**\n * - mutually exclusive with `forceUpdateDependencies`;\n * - independent of child/composite inclusion options.\n */\n ignoreDependencies: z.boolean().default(false),\n\n /**\n * Force update all children of composite instances regardless of their state.\n *\n * **Operation Behavior Impact:**\n * - overrides selective child inclusion logic for composites;\n * - includes **ALL** children of affected composites (up-to-date, out-of-date, and error states);\n * - applied after dependency traversal and parent inclusion.\n *\n * **Usage with other options:**\n * - combined with `forceUpdateDependencies`: creates comprehensive force-update behavior;\n * - overrides `allowPartialCompositeInstanceCreation`: when enabled, **ALL** children are included regardless of existence.\n */\n forceUpdateChildren: z.boolean().default(false),\n\n /**\n * Include dependent instances when destroying instances.\n *\n * **Operation Behavior Impact:**\n * - extends destroy operations to include instances that depend on the target;\n * - traverses the dependency graph in reverse (dependents, not dependencies);\n * - prevents orphaned instances that would fail without their dependencies.\n *\n * **Usage with other options:**\n * - works with `invokeDestroyTriggers`: ensures triggers run for all dependents;\n * - independent of update-related options.\n */\n destroyDependentInstances: z.boolean().default(true),\n\n /**\n * Execute destroy triggers when destroying instances.\n *\n * **Operation Behavior Impact:**\n * - affects how individual units are destroyed (triggers vs direct deletion);\n * - does not change which instances are selected for destruction;\n * - controls trigger execution during the destruction phase.\n *\n * **Usage with other options:**\n * - used with `destroyDependentInstances`: ensures triggers run for cascade deletions;\n * - independent of update-related options.\n */\n invokeDestroyTriggers: z.boolean().default(true),\n\n /**\n * Delete Pulumi resources that are no longer referenced in the state.\n *\n * **Operation Behavior Impact:**\n * - does not affect which instances are selected for operations;\n * - deletes orphaned Pulumi resources within individual instances.\n *\n * **Usage with other options:**\n * - independent of instance selection options;\n * - complements destroy-related options for thorough cleanup.\n */\n deleteUnreachableResources: z.boolean().default(false),\n\n /**\n * Force deletion of instance state even if the destroy operation fails.\n *\n * **Operation Behavior Impact:**\n * - forces state deletion even when destroy operations fail;\n * - does not affect which instances are selected for operations;\n * - bypasses normal destroy procedures as emergency fallback.\n *\n * **Usage with other options:**\n * - used with destroy-related options when normal cleanup fails;\n * - should be used cautiously as it can create state inconsistencies.\n */\n forceDeleteState: z.boolean().default(false),\n\n /**\n * Allow partial update of composite instances without requiring all outdated children.\n *\n * **Operation Behavior Impact:**\n * - controls whether composite operations must include all outdated children or only necessary ones;\n * - when `false` (default): all outdated children of substantive composites are included in operations;\n * - when `true`: only necessary children are included, allowing partial composite operations;\n * - applied during composite child traversal phase for substantive composites only.\n *\n * **Usage with other options:**\n * - overridden by `forceUpdateChildren`: when force is enabled, **ALL** children are included regardless;\n * - independent of `forceUpdateDependencies`: affects composite logic, not dependency traversal.\n */\n allowPartialCompositeInstanceUpdate: z.boolean().default(false),\n\n /**\n * Allow partial destruction of composite instances during cascade operations.\n *\n * **Operation Behavior Impact:**\n * - controls whether cascade destruction must include all children or only necessary ones;\n * - when `false` (default): cascade destruction includes **ALL** children of affected composites;\n * - when `true`: cascade destruction includes only directly dependent children;\n * - does not affect explicit composite destruction (always destroys all children);\n * - does not affect parent propagation when destroying sibling composites.\n *\n * **Usage with other options:**\n * - works with `destroyDependentInstances`: controls completeness of cascade destruction;\n * - independent of update-related options.\n */\n allowPartialCompositeInstanceDestruction: z.boolean().default(false),\n\n /**\n * Also refresh the state of instances during the operation.\n *\n * **Operation Behavior Impact:**\n * - does not change which instances are selected for operations;\n * - synchronizes state with actual infrastructure during the operation.\n *\n * **Usage with other options:**\n * - additive with dependency resolution options: refreshes all selected instances;\n * - works with both all operation types.\n */\n refresh: z.boolean().default(false),\n\n /**\n * Enable debug logging for Pulumi engine and resource providers.\n *\n * **Security Note:**\n * Debug mode may expose sensitive information including credentials in the logs.\n * Use only when absolutely necessary for troubleshooting.\n *\n * **Implementation:**\n * - sets Pulumi's debug option to true;\n * - sets TF_LOG=DEBUG environment variable for Terraform providers.\n */\n debug: z.boolean().default(false),\n })\n .partial()\n\nexport const operationTypeSchema = z.enum([\n \"update\",\n \"preview\",\n \"destroy\",\n \"recreate\",\n \"refresh\",\n]) satisfies z.ZodType<OperationType>\n\nexport const operationStatusSchema = z.enum([\n \"pending\",\n \"running\",\n \"failing\",\n \"completed\",\n \"failed\",\n \"cancelled\",\n \"cancelling\",\n]) satisfies z.ZodType<OperationStatus>\n\nexport const operationMetaSchema = objectMetaSchema\n .pick({\n title: true,\n description: true,\n })\n .required({ title: true })\n\nexport const operationPlanInputSchema = z.object({\n projectId: z.string(),\n type: operationTypeSchema,\n instanceIds: z.array(instanceIdSchema).min(1),\n options: operationOptionsSchema.partial().optional(),\n})\n\nexport const operationLaunchInputSchema = operationPlanInputSchema.extend({\n meta: operationMetaSchema,\n plan: operationPhaseSchema.array().optional(),\n})\n\nexport type OperationMeta = z.infer<typeof operationMetaSchema>\nexport type OperationPlanInput = z.infer<typeof operationPlanInputSchema>\nexport type OperationLaunchInput = z.infer<typeof operationLaunchInputSchema>\nexport type OperationOptions = z.infer<typeof operationOptionsSchema>\n\nexport const operationEventSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"updated\"),\n operation: z.custom<Operation>(),\n }),\n z.object({\n type: z.literal(\"deleted\"),\n operationId: z.string(),\n }),\n])\n\nexport const operationOutputSchema = z.object({\n id: z.cuid2(),\n type: operationTypeSchema,\n status: operationStatusSchema,\n meta: operationMetaSchema,\n startedAt: z.date(),\n updatedAt: z.date(),\n finishedAt: z.date().nullable(),\n})\n\nexport type OperationOutput = z.infer<typeof operationOutputSchema>\n\nexport type { Operation, OperationLog, OperationStatus, OperationType } from \"../../../database\"\n\nexport const finalOperationStatuses: OperationStatus[] = [\"completed\", \"failed\", \"cancelled\"]\n\n/**\n * Checks if an operation status is final (stable).\n *\n * Final statuses are: completed, failed, cancelled\n * Transient statuses are: pending, running, failing\n *\n * @param status The operation status to check\n * @returns True if the status is final\n */\nexport function isFinalOperationStatus(status: OperationStatus): boolean {\n return finalOperationStatuses.includes(status)\n}\n\n/**\n * Checks if an operation status exists and is transient (not stable).\n *\n * @param status The operation status to check\n * @returns True if the status is transient\n */\nexport function isTransientOperationStatus(status?: OperationStatus): boolean {\n return !!status && !finalOperationStatuses.includes(status)\n}\n","import type { ServiceAccount } from \"../../../database\"\nimport {\n commonObjectMetaSchema,\n pageBlockSchema,\n serviceAccountMetaSchema,\n} from \"@highstate/contract\"\nimport { z } from \"zod\"\nimport { collectionQuerySchema } from \"../base\"\n\nexport const pageOutputSchema = z.object({\n id: z.cuid2(),\n meta: commonObjectMetaSchema,\n name: z.string().nullable(),\n stateId: z.cuid2().nullable(),\n serviceAccountId: z.cuid2().nullable(),\n serviceAccountMeta: serviceAccountMetaSchema.nullable(),\n createdAt: z.date(),\n updatedAt: z.date(),\n})\n\nexport type PageOutput = z.infer<typeof pageOutputSchema>\n\nexport const pageQuerySchema = collectionQuerySchema.extend({\n serviceAccountId: z.string().optional(),\n stateId: z.string().optional(),\n artifactId: z.string().optional(),\n})\n\nexport type PageQuery = z.infer<typeof pageQuerySchema>\n\nexport const pageDetailsOutputSchema = z.object({\n ...pageOutputSchema.shape,\n content: z.array(pageBlockSchema),\n})\n\nexport type PageDetailsOutput = z.infer<typeof pageDetailsOutputSchema>\n\nexport function toPageOutput(\n page: Omit<PageOutput, \"serviceAccountMeta\">,\n serviceAccount?: Pick<ServiceAccount, \"meta\"> | null,\n): PageOutput {\n return {\n ...page,\n serviceAccountMeta: serviceAccount?.meta ?? null,\n }\n}\n","import type { ServiceAccount } from \"../../../database\"\nimport { globalCommonObjectMetaSchema, serviceAccountMetaSchema, z } from \"@highstate/contract\"\nimport { collectionQuerySchema } from \"../base\"\n\nexport const secretOutputSchema = z.object({\n id: z.cuid2(),\n meta: globalCommonObjectMetaSchema,\n name: z.string().nullable(),\n systemName: z.string().nullable(),\n stateId: z.cuid2().nullable(),\n serviceAccountId: z.cuid2().nullable(),\n serviceAccountMeta: serviceAccountMetaSchema.nullable(),\n createdAt: z.date(),\n updatedAt: z.date(),\n})\n\nexport type SecretOutput = z.infer<typeof secretOutputSchema>\n\nexport const secretQuerySchema = collectionQuerySchema.extend({\n serviceAccountId: z.string().optional(),\n stateId: z.string().optional(),\n})\n\nexport type SecretQuery = z.infer<typeof secretQuerySchema>\n\nexport function toSecretOutput(\n secret: Omit<SecretOutput, \"serviceAccountMeta\">,\n serviceAccount?: Pick<ServiceAccount, \"meta\"> | null,\n): SecretOutput {\n return {\n ...secret,\n serviceAccountMeta: serviceAccount?.meta ?? null,\n }\n}\n\nexport enum SystemSecretNames {\n PulumiPassword = \"pulumi-password\",\n}\n","import { serviceAccountMetaSchema, z } from \"@highstate/contract\"\nimport { collectionQuerySchema } from \"../base\"\n\nexport const serviceAccountOutputSchema = z.object({\n id: z.cuid2(),\n meta: serviceAccountMetaSchema,\n createdAt: z.date(),\n updatedAt: z.date(),\n})\n\nexport type ServiceAccountOutput = z.infer<typeof serviceAccountOutputSchema>\n\nexport const serviceAccountQuerySchema = collectionQuerySchema.extend({\n artifactId: z.string().optional(),\n})\n\nexport type ServiceAccountQuery = z.infer<typeof serviceAccountQuerySchema>\n","import type { InstanceId } from \"@highstate/contract\"\nimport type {\n InstanceState as DatabaseInstanceState,\n InstanceCustomStatus,\n InstanceEvaluationState,\n InstanceOperationState,\n InstanceOperationStatus,\n} from \"../../../database\"\nimport { z } from \"zod\"\n\nexport const stableInstanceInputSchema = z.object({\n stateId: z.string(),\n output: z.string(),\n})\n\n/**\n * The instance input that references state IDs instead of instance IDs.\n *\n * This provides a stable reference to an instance output that is not affected by instance ID changes.\n */\nexport type StableInstanceInput = z.infer<typeof stableInstanceInputSchema>\n\n/**\n * The instance state aggregate including all related states.\n */\nexport type InstanceState = DatabaseInstanceState & {\n /**\n * The ID of the parent instance, if any.\n *\n * Not to be confused with `parentId` which is the surrogate ID of the parent state.\n */\n parentInstanceId?: InstanceId | null\n\n /**\n * The names of the instance secrets which have values set.\n */\n secretNames?: string[]\n\n /**\n * The last operation state of the instance.\n */\n lastOperationState?: InstanceOperationState | null\n\n /**\n * The evaluation state of the instance.\n */\n evaluationState?: InstanceEvaluationState | null\n\n /**\n * The IDs of the terminals produced by this unit instance.\n */\n terminalIds?: string[]\n\n /**\n * The IDs of the pages produced by this unit instance.\n */\n pageIds?: string[]\n\n /**\n * The IDs of the triggers produced by this unit instance.\n */\n triggerIds?: string[]\n\n /**\n * The custom statuses attached to this instance.\n */\n customStatuses?: InstanceCustomStatus[]\n}\n\nexport const instanceStateEventSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"updated\"),\n state: z.custom<InstanceState>(),\n }),\n z.object({\n type: z.literal(\"patched\"),\n stateId: z.string(),\n patch: z.custom<Partial<InstanceState>>(),\n }),\n z.object({\n type: z.literal(\"deleted\"),\n stateId: z.string(),\n }),\n])\n\n/**\n * Checks if the given instance state represents a \"virtual ghost\" instance.\n *\n * Note: The evaluation state must be loaded, otherwise this function will always return true.\n *\n * @param state The instance state to check.\n * @returns True if the instance is a virtual ghost, false otherwise.\n */\nexport function isVirtualGhostInstance(\n state: Pick<InstanceState, \"status\" | \"source\" | \"evaluationState\">,\n): boolean {\n if (state.source !== \"virtual\") return false\n if (state.status === \"undeployed\") return false\n\n return !state.evaluationState\n}\n\n/**\n * Checks if the given instance state represents a deployed instance.\n *\n * An instance is considered deployed if the state exists and its status is not \"undeployed\".\n *\n * @param state The instance state to check (can be undefined).\n * @returns True if the instance is deployed, false otherwise.\n */\nexport function isInstanceDeployed(state: InstanceState | undefined): boolean {\n return !!state && state.status !== \"undeployed\"\n}\n\nexport type {\n InstanceEvaluationState,\n InstanceEvaluationStatus,\n InstanceOperationState,\n InstanceOperationStatus,\n InstanceStatus,\n} from \"../../../database\"\n\nexport const finalInstanceOperationStatuses: InstanceOperationStatus[] = [\n \"previewed\",\n \"destroyed\",\n \"updated\",\n \"cancelled\",\n \"destroyed\",\n \"failed\",\n \"skipped\",\n]\n\n/**\n * Checks if an instance operation status exists and is final transient (not stable).\n *\n * @param status The instance operation status to check\n * @returns True if the status is transient\n */\nexport function isTransientInstanceOperationStatus(status?: InstanceOperationStatus): boolean {\n return !!status && !finalInstanceOperationStatuses.includes(status)\n}\n\nexport const workerUnitRegistrationEventSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"registered\"),\n instanceId: z.string(),\n params: z.record(z.string(), z.unknown()),\n }),\n z.object({\n type: z.literal(\"deregistered\"),\n instanceId: z.string(),\n }),\n])\n\nexport type WorkerUnitRegistrationEvent = z.infer<typeof workerUnitRegistrationEventSchema>\n","import type { ServiceAccount, Terminal, TerminalSession, TerminalStatus } from \"../../../database\"\nimport {\n commonObjectMetaSchema,\n globalCommonObjectMetaSchema,\n serviceAccountMetaSchema,\n terminalSpecSchema,\n} from \"@highstate/contract\"\nimport { z } from \"zod\"\nimport { collectionQuerySchema } from \"../base\"\n\nexport const terminalStatusSchema = z.enum([\n \"active\",\n \"unavailable\",\n]) satisfies z.ZodType<TerminalStatus>\n\nexport const terminalSessionOutputSchema = z.object({\n id: z.cuid2(),\n terminalId: z.cuid2(),\n meta: globalCommonObjectMetaSchema,\n startedAt: z.date(),\n finishedAt: z.date().nullable(),\n})\n\nexport type TerminalSessionOutput = z.infer<typeof terminalSessionOutputSchema>\n\nexport const terminalOutputSchema = z.object({\n id: z.cuid2(),\n name: z.string().nullable(),\n meta: commonObjectMetaSchema,\n status: terminalStatusSchema,\n stateId: z.string().nullable(),\n serviceAccountId: z.string().nullable(),\n serviceAccountMeta: serviceAccountMetaSchema.nullable(),\n createdAt: z.date(),\n updatedAt: z.date(),\n})\n\nexport type TerminalOutput = z.infer<typeof terminalOutputSchema>\n\nexport const terminalQuerySchema = collectionQuerySchema.extend({\n serviceAccountId: z.string().optional(),\n stateId: z.string().optional(),\n artifactId: z.string().optional(),\n})\n\nexport type TerminalQuery = z.infer<typeof terminalQuerySchema>\n\nexport function toTerminalOutput(\n terminal: Omit<TerminalOutput, \"serviceAccountMeta\">,\n serviceAccount?: Pick<ServiceAccount, \"meta\"> | null,\n): TerminalOutput {\n return {\n ...terminal,\n serviceAccountMeta: serviceAccount?.meta ?? null,\n }\n}\n\nexport function toTerminalDetailsOutput(\n terminal: Omit<TerminalDetailsOutput, \"serviceAccountMeta\">,\n serviceAccount?: Pick<ServiceAccount, \"meta\"> | null,\n): TerminalDetailsOutput {\n return {\n ...terminal,\n serviceAccountMeta: serviceAccount?.meta ?? null,\n }\n}\n\nexport const terminalDetailsOutputSchema = z.object({\n ...terminalOutputSchema.shape,\n spec: terminalSpecSchema,\n})\n\nexport type TerminalDetailsOutput = z.infer<typeof terminalDetailsOutputSchema>\n\nexport function toTerminalSessionOutput(\n terminal: Terminal,\n session: TerminalSession,\n): TerminalSessionOutput {\n return {\n id: session.id,\n terminalId: terminal.id,\n meta: terminal.meta,\n startedAt: session.startedAt,\n finishedAt: session.finishedAt,\n }\n}\n","import { commonObjectMetaSchema } from \"@highstate/contract\"\nimport { z } from \"zod\"\nimport { collectionQuerySchema } from \"../base\"\n\nexport const triggerOutputSchema = z.object({\n id: z.cuid2(),\n meta: commonObjectMetaSchema,\n name: z.string(),\n stateId: z.cuid2(),\n createdAt: z.date(),\n updatedAt: z.date(),\n})\n\nexport type TriggerOutput = z.infer<typeof triggerOutputSchema>\n\nexport const triggerQuerySchema = collectionQuerySchema.extend({\n stateId: z.string().optional(),\n})\n\nexport type TriggerQuery = z.infer<typeof triggerQuerySchema>\n","import { objectMetaSchema, z } from \"@highstate/contract\"\n\nexport const unlockMethodType = z.enum([\"password\", \"passkey\"])\n\nexport const unlockMethodMetaSchema = objectMetaSchema\n .pick({\n title: true,\n description: true,\n })\n .required({ title: true })\n\nexport const unlockMethodInputSchema = z.object({\n meta: unlockMethodMetaSchema,\n type: unlockMethodType,\n encryptedIdentity: z.string(),\n recipient: z.string(),\n})\n\nexport const unlockMethodOutputSchema = z.object({\n id: z.cuid2(),\n type: unlockMethodType,\n meta: unlockMethodMetaSchema,\n recipient: z.string(),\n createdAt: z.date(),\n updatedAt: z.date(),\n})\n\nexport type UnlockMethodOutput = z.infer<typeof unlockMethodOutputSchema>\n\nexport type UnlockMethodMeta = z.infer<typeof unlockMethodMetaSchema>\nexport type UnlockMethodInput = z.infer<typeof unlockMethodInputSchema>\nexport type UnlockMethodType = z.infer<typeof unlockMethodType>\n","import type { ApiKey, ServiceAccount } from \"../../../database\"\nimport { commonObjectMetaSchema, serviceAccountMetaSchema } from \"@highstate/contract\"\nimport { z } from \"zod\"\nimport { collectionQuerySchema } from \"../base\"\nimport { apiKeyMetaSchema } from \"./api-key\"\n\nexport const MAX_WORKER_START_ATTEMPTS = 3\n\nconst SHA256_PREFIX = \"sha256:\"\nconst SHA256_REGEX = /^[a-f0-9]{64}$/\n\nexport function extractDigestFromImage(image: string): string {\n const atIndex = image.indexOf(\"@\")\n if (atIndex === -1) {\n throw new Error(`Invalid worker image \"${image}\": missing digest.`)\n }\n\n const digestPart = image.slice(atIndex + 1)\n if (!digestPart.startsWith(SHA256_PREFIX)) {\n throw new Error(`Invalid worker image \"${image}\": digest must start with \"sha256:\".`)\n }\n\n const digest = digestPart.slice(SHA256_PREFIX.length).toLowerCase()\n if (!SHA256_REGEX.test(digest)) {\n throw new Error(`Invalid worker image \"${image}\": digest must be 64 hex chars.`)\n }\n\n return digest\n}\n\nexport function getWorkerIdentity(image: string): string {\n const atIndex = image.indexOf(\"@\")\n const withoutDigest = atIndex === -1 ? image : image.slice(0, atIndex)\n const lastColon = withoutDigest.lastIndexOf(\":\")\n const lastSlash = withoutDigest.lastIndexOf(\"/\")\n\n if (lastColon > -1 && lastColon > lastSlash) {\n return withoutDigest.slice(0, lastColon)\n }\n\n return withoutDigest\n}\n\nexport const workerVersionStatusSchema = z.enum([\n \"unknown\",\n \"starting\",\n \"running\",\n \"stopping\",\n \"stopped\",\n \"error\",\n])\n\nexport type WorkerVersionStatus = z.infer<typeof workerVersionStatusSchema>\n\nexport const workerVersionOutputSchema = z.object({\n id: z.cuid2(),\n digest: z.string(),\n meta: commonObjectMetaSchema,\n status: workerVersionStatusSchema,\n enabled: z.boolean(),\n apiKeyId: z.string(),\n apiKeyMeta: apiKeyMetaSchema,\n createdAt: z.date(),\n updatedAt: z.date(),\n})\n\nexport type WorkerVersionOutput = z.infer<typeof workerVersionOutputSchema>\n\nexport const workerOutputSchema = z.object({\n id: z.cuid2(),\n identity: z.string(),\n meta: commonObjectMetaSchema,\n serviceAccountId: z.string(),\n serviceAccountMeta: serviceAccountMetaSchema,\n createdAt: z.date(),\n})\n\nexport type WorkerOutput = z.infer<typeof workerOutputSchema>\n\nexport const workerQuerySchema = collectionQuerySchema.extend({\n serviceAccountId: z.string().optional(),\n})\n\nexport type WorkerQuery = z.infer<typeof workerQuerySchema>\n\nexport function toWorkerOutput(\n worker: Omit<WorkerOutput, \"meta\" | \"serviceAccountMeta\">,\n lastVersion: Pick<WorkerVersionOutput, \"meta\"> | null,\n serviceAccount: Pick<ServiceAccount, \"meta\">,\n): WorkerOutput {\n return {\n ...worker,\n meta: lastVersion?.meta ?? { title: \"Unknown\" },\n serviceAccountMeta: serviceAccount.meta,\n }\n}\n\nexport function toWorkerVersionOutput(\n version: Omit<WorkerVersionOutput, \"apiKeyMeta\">,\n apiKey: Pick<ApiKey, \"meta\">,\n): WorkerVersionOutput {\n return {\n ...version,\n apiKeyMeta: apiKey.meta,\n }\n}\n","import type { Logger } from \"pino\"\nimport { unique } from \"remeda\"\n\nexport type ResolverOutputHandler<TOutput> = (id: string, value: TOutput) => void\nexport type DependentSetHandler = (id: string, dependentSet: Set<string> | undefined) => void\n\nexport abstract class GraphResolver<TNode, TOutput> {\n private readonly workset: Set<string> = new Set()\n private readonly dependencyMap: Map<string, string[]> = new Map()\n private readonly dependentMap: Map<string, Set<string>> = new Map()\n private readonly outputMap: Map<string, TOutput> = new Map()\n\n constructor(\n private readonly nodes: ReadonlyMap<string, TNode>,\n protected readonly logger: Logger,\n private readonly outputHandler?: ResolverOutputHandler<TOutput>,\n private readonly dependentSetHandler?: DependentSetHandler,\n ) {}\n\n addToWorkset(nodeId: string): void {\n this.workset.add(nodeId)\n }\n\n addAllNodesToWorkset(): void {\n for (const nodeId of this.nodes.keys()) {\n this.workset.add(nodeId)\n }\n }\n\n /**\n * The map of calculated outputs.\n */\n get outputs(): ReadonlyMap<string, TOutput> {\n return this.outputMap\n }\n\n /**\n * The map of dependencies for each node.\n *\n * The key is the node identifier, and the value is an array of identifiers of the nodes which depend on it.\n */\n get dependents(): ReadonlyMap<string, Set<string>> {\n return this.dependentMap\n }\n\n requireOutput(nodeId: string): TOutput {\n const output = this.outputMap.get(nodeId)\n if (!output) {\n throw new Error(`Output for node ${nodeId} is not available`)\n }\n\n return output\n }\n\n /**\n * Gets the list of the identifiers of the dependencies for the node.\n *\n * Used to produce the dependency graph.\n */\n protected abstract getNodeDependencies(node: TNode): string[]\n\n /**\n * Processes the node and returns the output.\n */\n protected abstract processNode(node: TNode, logger: Logger): TOutput | Promise<TOutput>\n\n /**\n * Gets the identifiers of the nodes that depend on the given node directly.\n *\n * Returns an empty array if there are no dependents.\n */\n getDependents(nodeId: string): string[] {\n const dependents = this.dependentMap.get(nodeId)\n if (!dependents) {\n return []\n }\n\n return Array.from(dependents)\n }\n\n /**\n * Invalidates the node and all nodes that depend on it.\n *\n * Also adds the node to the work set for processing.\n */\n invalidate(nodeId: string): void {\n const stack = [nodeId]\n\n while (stack.length > 0) {\n const nodeId = stack.pop()!\n if (!this.nodes.has(nodeId)) {\n // it is ok to invalidate deleted nodes\n continue\n }\n\n // remove the node from the output map\n this.outputMap.delete(nodeId)\n this.workset.add(nodeId)\n\n const dependents = this.dependentMap.get(nodeId)\n if (!dependents) {\n continue\n }\n\n for (const dependentId of dependents) {\n if (this.outputMap.has(dependentId)) {\n // add the dependent to the stack for further processing\n stack.push(dependentId)\n }\n }\n }\n }\n\n /**\n * Invalidates a single node without invalidating its dependents.\n *\n * Also adds the node to the work set for processing.\n *\n * Should be used with caution, as it may lead to inconsistent state if the dependents are not re-processed separately.\n */\n invalidateSingle(nodeId: string): void {\n if (!this.nodes.has(nodeId)) {\n // it is ok to invalidate deleted nodes\n return\n }\n\n // remove the node from the output map\n this.outputMap.delete(nodeId)\n this.workset.add(nodeId)\n }\n\n /**\n * Resolves all not-resolved or invalidated nodes in the graph.\n *\n * The abort signal of the previous operation must be called before calling this method again.\n */\n async process(signal?: AbortSignal): Promise<void> {\n type StackItem = {\n nodeId: string\n resolved: boolean\n dependencies: string[]\n }\n\n while (this.workset.size > 0) {\n const rootNodeId = this.workset.values().next().value!\n const stack: StackItem[] = [{ nodeId: rootNodeId, resolved: false, dependencies: [] }]\n\n while (stack.length > 0) {\n const stackItem = stack[stack.length - 1]\n const { nodeId, resolved } = stackItem\n\n const node = this.nodes.get(nodeId)\n if (!node) {\n this.logger.warn({ nodeId }, \"node not found in the graph, skipping\")\n stack.pop()\n continue\n }\n\n if (this.outputMap.has(nodeId)) {\n // already processed\n stack.pop()\n continue\n }\n\n if (!resolved) {\n stackItem.dependencies = unique(this.getNodeDependencies(node))\n\n let hasUnresolvedDependencies = false\n\n for (const depId of stackItem.dependencies) {\n if (!this.nodes.has(depId)) {\n this.logger.warn({ depId, nodeId }, \"dependency not found in the graph, skipping\")\n continue\n }\n\n if (!this.outputMap.has(depId)) {\n stack.push({ nodeId: depId, resolved: false, dependencies: [] })\n hasUnresolvedDependencies = true\n }\n }\n\n if (hasUnresolvedDependencies) {\n // wait for dependencies to be resolved\n stackItem.resolved = true\n continue\n }\n }\n\n // all dependencies are resolved, process the node\n const output = await this.processNode(node, this.logger)\n\n if (signal?.aborted) {\n this.logger.warn({ nodeId }, \"processing aborted, skipping output\")\n return\n }\n\n const changedDependentMaps = new Set<string>()\n\n // remove all dependent nodes\n const oldDependencies = this.dependencyMap.get(nodeId) ?? []\n for (const depId of oldDependencies) {\n const dependantSet = this.dependentMap.get(depId)\n if (dependantSet) {\n dependantSet.delete(nodeId)\n changedDependentMaps.add(depId)\n if (dependantSet.size === 0) {\n this.dependentMap.delete(depId)\n }\n }\n }\n\n // add the new dependencies\n for (const depId of stackItem.dependencies) {\n let dependantSet = this.dependentMap.get(depId)\n if (!dependantSet) {\n dependantSet = new Set()\n this.dependentMap.set(depId, dependantSet)\n }\n\n dependantSet.add(nodeId)\n changedDependentMaps.add(depId)\n }\n\n // if the dependent map has changed, notify the handler\n if (this.dependentSetHandler) {\n for (const depId of changedDependentMaps) {\n const dependents = this.dependentMap.get(depId)\n this.dependentSetHandler(depId, dependents)\n }\n }\n\n this.outputMap.set(nodeId, output)\n this.outputHandler?.(nodeId, output)\n this.dependencyMap.set(nodeId, stackItem.dependencies)\n\n stack.pop()\n }\n\n this.workset.delete(rootNodeId)\n }\n }\n}\n\n/**\n * Gets all identifiers of the nodes that depend on the given node directly or indirectly.\n *\n * @param dependentMap The map of dependents, received from the graph resolver.\n * @param nodeId The identifier of the node to get dependents for.\n */\nexport function getAllDependents(\n dependentMap: ReadonlyMap<string, Iterable<string>>,\n nodeId: string,\n): string[] {\n const result = new Set<string>()\n const stack: string[] = [nodeId]\n\n while (stack.length > 0) {\n const dependents = dependentMap.get(stack.pop()!)\n if (!dependents) {\n continue\n }\n\n for (const dependentId of dependents) {\n if (!result.has(dependentId)) {\n result.add(dependentId)\n stack.push(dependentId)\n }\n }\n }\n\n return Array.from(result)\n}\n","import {\n type ComponentModel,\n type HubInput,\n type HubModel,\n type InstanceInput,\n type InstanceModel,\n isUnitModel,\n} from \"@highstate/contract\"\nimport { fromEntries, mapValues } from \"remeda\"\nimport { GraphResolver } from \"./graph-resolver\"\n\nexport type InputResolverNode =\n | {\n kind: \"instance\"\n instance: InstanceModel\n component: ComponentModel\n }\n | {\n kind: \"hub\"\n hub: HubModel\n }\n\nexport type ResolvedInstanceInput = {\n input: InstanceInput\n type: string\n}\n\nexport type InputResolverOutput =\n | {\n kind: \"instance\"\n instance: InstanceModel\n component: ComponentModel\n resolvedInputs: Record<string, ResolvedInstanceInput[]>\n resolvedOutputs: Record<string, InstanceInput[]> | undefined\n resolvedInjectionInputs: ResolvedInstanceInput[]\n matchedInjectionInputs: ResolvedInstanceInput[]\n }\n | {\n kind: \"hub\"\n hub: HubModel\n resolvedInputs: ResolvedInstanceInput[]\n }\n\n/**\n * Resolves the all recursive instance and hub inputs based on its direct inputs and injected inputs.\n */\nexport class InputResolver extends GraphResolver<InputResolverNode, InputResolverOutput> {\n getNodeDependencies(node: InputResolverNode): string[] {\n const dependencies: string[] = []\n\n if (node.kind === \"hub\") {\n for (const input of node.hub.inputs ?? []) {\n dependencies.push(`instance:${input.instanceId}`)\n }\n\n for (const input of node.hub.injectionInputs ?? []) {\n dependencies.push(`hub:${input.hubId}`)\n }\n\n return dependencies\n }\n\n for (const inputs of Object.values(node.instance.inputs ?? {})) {\n for (const input of inputs) {\n dependencies.push(`instance:${input.instanceId}`)\n }\n }\n\n for (const inputs of Object.values(node.instance.hubInputs ?? {})) {\n for (const input of inputs) {\n dependencies.push(`hub:${input.hubId}`)\n }\n }\n\n for (const input of node.instance.injectionInputs ?? []) {\n dependencies.push(`hub:${input.hubId}`)\n }\n\n return dependencies\n }\n\n processNode(node: InputResolverNode): InputResolverOutput {\n const getHubOutput = (input: HubInput) => {\n const output = this.outputs.get(`hub:${input.hubId}`)\n if (!output) {\n return { resolvedInputs: [] }\n }\n\n if (output.kind !== \"hub\") {\n throw new Error(\"Expected hub node\")\n }\n\n return output\n }\n\n const getInstanceOutput = (input: InstanceInput) => {\n const output = this.outputs.get(`instance:${input.instanceId}`)\n if (!output) {\n return {\n component: null,\n resolvedInputs: [] as ResolvedInstanceInput[],\n resolvedOutputs: [] as InstanceInput[],\n }\n }\n\n if (output.kind !== \"instance\") {\n throw new Error(\"Expected instance node\")\n }\n\n return {\n component: output.component,\n resolvedInputs: output.resolvedInputs[input.output] ?? [],\n resolvedOutputs: output.resolvedOutputs?.[input.output],\n }\n }\n\n // resolve inputs for hub\n if (node.kind === \"hub\") {\n const hubResult: Map<string, ResolvedInstanceInput> = new Map()\n\n const addHubResult = (input: ResolvedInstanceInput) => {\n hubResult.set(`${input.input.instanceId}:${input.input.output}`, input)\n }\n\n for (const input of node.hub.inputs ?? []) {\n const { component } = getInstanceOutput(input)\n const componentInput = component?.outputs[input.output]\n\n if (!componentInput) {\n this.logger.warn({ msg: \"output not found in the component\", input, component })\n continue\n }\n\n addHubResult({ input, type: componentInput.type })\n }\n\n for (const injectionInput of node.hub.injectionInputs ?? []) {\n const { resolvedInputs } = getHubOutput(injectionInput)\n\n for (const input of resolvedInputs) {\n addHubResult(input)\n }\n }\n\n return {\n kind: \"hub\",\n hub: node.hub,\n resolvedInputs: Array.from(hubResult.values()),\n }\n }\n\n // use evaluation results for virtual instances (composite children)\n // this is NOT an optimization - it's the ONLY way to resolve inputs for composite children\n // because they don't exist in the project model\n // the project model only contains top-level instances,\n // while composite children are produced by evaluation\n // without this, we cannot resolve connections to/from instances inside composites\n // this doesn't create a circular dependency because evaluation only needs resolution for\n // top-level instances (from project model), not for the virtual instances it produces\n if (node.instance.resolvedInputs) {\n return {\n kind: \"instance\",\n instance: node.instance,\n component: node.component,\n resolvedInputs: mapValues(node.instance.resolvedInputs, (inputs, inputName) => {\n const componentInput = node.component.inputs[inputName]\n if (!componentInput) {\n this.logger.warn({\n msg: \"input not found in the component\",\n inputName,\n component: node.component,\n })\n return []\n }\n\n return inputs.map(input => ({ input, type: componentInput.type }))\n }),\n resolvedOutputs: node.instance.resolvedOutputs ?? {},\n resolvedInjectionInputs: [],\n matchedInjectionInputs: [],\n }\n }\n\n // resolve inputs for instance\n const resolvedInputsMap: Map<string, Map<string, ResolvedInstanceInput>> = new Map()\n\n const addInstanceResult = (inputName: string, input: ResolvedInstanceInput) => {\n let inputs = resolvedInputsMap.get(inputName)\n if (!inputs) {\n inputs = new Map()\n resolvedInputsMap.set(inputName, inputs)\n }\n\n inputs.set(`${input.input.instanceId}:${input.input.output}`, input)\n }\n\n const addInstanceInput = (inputName: string, input: InstanceInput) => {\n const componentInput = node.component.inputs[inputName]\n if (!componentInput) {\n this.logger.warn({\n msg: \"input not found in the component\",\n input,\n component: node.component,\n })\n return\n }\n\n const { component, resolvedOutputs } = getInstanceOutput(input)\n\n if (!component) {\n this.logger.warn({ instanceId: node.instance.id, input }, \"no output found for the input\")\n return\n }\n\n if (isUnitModel(component)) {\n addInstanceResult(inputName, { input, type: componentInput.type })\n return\n }\n\n if (resolvedOutputs) {\n for (const output of resolvedOutputs) {\n addInstanceResult(inputName, { input: output, type: componentInput.type })\n }\n } else {\n // if the instance is not evaluated, we a forced to use the input as is\n addInstanceResult(inputName, { input, type: componentInput.type })\n }\n }\n\n for (const [inputName, inputs] of Object.entries(node.instance.inputs ?? {})) {\n for (const input of inputs) {\n addInstanceInput(inputName, input)\n }\n }\n\n const injectionInputs: Map<string, ResolvedInstanceInput> = new Map()\n const matchedInjectionInputs: Map<string, ResolvedInstanceInput> = new Map()\n\n for (const injectionInput of node.instance.injectionInputs ?? []) {\n const { resolvedInputs } = getHubOutput(injectionInput)\n for (const input of resolvedInputs) {\n injectionInputs.set(`${input.input.instanceId}:${input.input.output}`, input)\n }\n }\n\n for (const [inputName, componentInput] of Object.entries(node.component.inputs ?? {})) {\n const allInputs = new Map<string, ResolvedInstanceInput>(injectionInputs)\n const hubInputs = node.instance.hubInputs?.[inputName] ?? []\n\n for (const hubInput of hubInputs) {\n const { resolvedInputs } = getHubOutput(hubInput)\n for (const input of resolvedInputs) {\n allInputs.set(`${input.input.instanceId}:${input.input.output}`, input)\n }\n }\n\n for (const input of allInputs.values()) {\n if (input.type === componentInput.type) {\n addInstanceInput(inputName, input.input)\n\n const key = `${input.input.instanceId}:${input.input.output}`\n if (injectionInputs.has(key)) {\n matchedInjectionInputs.set(key, input)\n }\n }\n }\n }\n\n const resolvedInputs = fromEntries(\n Array.from(resolvedInputsMap.entries()).map(([inputName, inputs]) => [\n inputName,\n Array.from(inputs.values()),\n ]),\n )\n\n return {\n kind: \"instance\",\n instance: node.instance,\n component: node.component,\n resolvedInputs,\n resolvedOutputs: node.instance.resolvedOutputs,\n resolvedInjectionInputs: Array.from(injectionInputs.values()),\n matchedInjectionInputs: Array.from(matchedInjectionInputs.values()),\n }\n }\n}\n\nexport function getResolvedHubInputs(\n outputMap: ReadonlyMap<string, InputResolverOutput>,\n hubId: string,\n): ResolvedInstanceInput[] {\n const output = outputMap.get(`hub:${hubId}`)\n if (!output) {\n return []\n }\n\n if (output.kind !== \"hub\") {\n throw new Error(\"Expected hub node\")\n }\n\n return output.resolvedInputs\n}\n\nexport function getResolvedInstanceInputs(\n outputMap: ReadonlyMap<string, InputResolverOutput>,\n instanceId: string,\n): Record<string, ResolvedInstanceInput[]> {\n const output = outputMap.get(`instance:${instanceId}`)\n if (!output) {\n return {}\n }\n\n if (output.kind !== \"instance\") {\n throw new Error(\"Expected instance node\")\n }\n\n return output.resolvedInputs\n}\n\nexport function getResolvedInjectionInstanceInputs(\n outputMap: ReadonlyMap<string, InputResolverOutput>,\n instanceId: string,\n): ResolvedInstanceInput[] {\n const output = outputMap.get(`instance:${instanceId}`)\n if (!output) {\n return []\n }\n\n if (output.kind !== \"instance\") {\n throw new Error(\"Expected instance node\")\n }\n\n return output.resolvedInjectionInputs\n}\n\nexport function getMatchedInjectionInstanceInputs(\n outputMap: ReadonlyMap<string, InputResolverOutput>,\n instanceId: string,\n): ResolvedInstanceInput[] {\n const output = outputMap.get(`instance:${instanceId}`)\n if (!output) {\n return []\n }\n\n if (output.kind !== \"instance\") {\n throw new Error(\"Expected instance node\")\n }\n\n return output.matchedInjectionInputs\n}\n\nexport function getResolvedInstanceOutputs(\n outputMap: ReadonlyMap<string, InputResolverOutput>,\n instanceId: string,\n): Record<string, InstanceInput[]> | undefined {\n const output = outputMap.get(`instance:${instanceId}`)\n if (!output) {\n return undefined\n }\n\n if (output.kind !== \"instance\") {\n throw new Error(\"Expected instance node\")\n }\n\n return output.resolvedOutputs\n}\n","export type AsyncBatcherOptions = {\n waitMs?: number\n maxWaitTimeMs?: number\n}\n\nexport type AsyncBatcher<T> = {\n /**\n * Add an item to the batch.\n */\n call(item: T): void\n\n /**\n * Immediately flush the pending batch (if any).\n */\n flush(): Promise<void>\n}\n\nexport function createAsyncBatcher<T>(\n fn: (items: T[]) => Promise<void> | void,\n { waitMs = 100, maxWaitTimeMs = 1000 }: AsyncBatcherOptions = {},\n): AsyncBatcher<T> {\n let batch: T[] = []\n let activeTimeout: NodeJS.Timeout | null = null\n let maxWaitTimeout: NodeJS.Timeout | null = null\n let firstCallTimestamp: number | null = null\n\n async function processBatch() {\n if (batch.length === 0) return\n\n const currentBatch = batch\n batch = [] // Reset batch before async call\n\n await fn(currentBatch)\n\n // Clear max wait timer since batch has been processed\n if (maxWaitTimeout) {\n clearTimeout(maxWaitTimeout)\n maxWaitTimeout = null\n }\n firstCallTimestamp = null\n }\n\n function schedule() {\n if (activeTimeout) clearTimeout(activeTimeout)\n activeTimeout = setTimeout(() => {\n activeTimeout = null\n void processBatch()\n }, waitMs)\n\n // Ensure batch is executed within maxWaitTimeMs\n if (!firstCallTimestamp) {\n firstCallTimestamp = Date.now()\n maxWaitTimeout = setTimeout(() => {\n if (activeTimeout) clearTimeout(activeTimeout)\n activeTimeout = null\n void processBatch()\n }, maxWaitTimeMs)\n }\n }\n\n return {\n /**\n * Add an item to the batch.\n */\n call(item: T): void {\n batch.push(item)\n schedule()\n },\n\n /**\n * Immediately flush the pending batch (if any).\n */\n async flush(): Promise<void> {\n if (activeTimeout) {\n clearTimeout(activeTimeout)\n activeTimeout = null\n }\n if (maxWaitTimeout) {\n clearTimeout(maxWaitTimeout)\n maxWaitTimeout = null\n }\n await processBatch()\n },\n }\n}\n","export function int32ToBytes(value: number): Uint8Array {\n const buffer = new ArrayBuffer(4)\n const view = new DataView(buffer)\n view.setInt32(0, value, true) // true for little-endian\n return new Uint8Array(buffer)\n}\n","export class PromiseTracker {\n private readonly trackedPromises = new Set<Promise<unknown>>()\n\n /**\n * Tracks a promise to ensure its rejection is handled inside the tracker's scope.\n */\n track<T>(promise: Promise<T>): void {\n const wrapped = promise.finally(() => this.trackedPromises.delete(promise))\n\n this.trackedPromises.add(wrapped)\n }\n\n /**\n * Waits for all tracked promises to resolve or reject.\n */\n async waitForAll(): Promise<void> {\n if (this.trackedPromises.size === 0) {\n return\n }\n\n const toTrack = Array.from(this.trackedPromises)\n this.trackedPromises.clear()\n\n await waitAll(toTrack)\n }\n}\n\n/**\n * Waits for all promises to resolve or reject.\n *\n * Will throw a `AggregateError` if any of the promises are rejected.\n *\n * Unlike `Promise.all`, this function does not short-circuit on the first rejection,\n * allowing all promises to be awaited before handling errors.\n *\n * @param promises The iterable of promises to wait for.\n */\nexport async function waitAll(promises: Iterable<Promise<unknown>>): Promise<void> {\n const results = await Promise.allSettled(promises)\n const rejected = results.filter(p => p.status === \"rejected\")\n\n if (!rejected.length) {\n return\n }\n\n throw new AggregateError(\n rejected.map(p => p.reason as Error),\n \"Some promises were rejected\",\n )\n}\n","import type { InstanceState } from \"../models/project\"\nimport type { ResolvedInstanceInput } from \"./input\"\nimport { crc32 } from \"@aws-crypto/crc32\"\nimport { type ComponentModel, type InstanceModel, isUnitModel } from \"@highstate/contract\"\nimport { encode } from \"@msgpack/msgpack\"\nimport { Buffer } from \"buffer-polyfill\"\nimport { int32ToBytes } from \"../utils\"\nimport { GraphResolver } from \"./graph-resolver\"\n\nexport type InputHashNode = {\n instance: InstanceModel\n component: ComponentModel\n resolvedInputs: Record<string, ResolvedInstanceInput[]>\n state: InstanceState | undefined\n sourceHash: number | undefined\n}\n\nexport type InputHashOutput = {\n selfHash: number\n inputHash: number\n dependencyOutputHash: number\n outputHash: number\n}\n\n/**\n * Resolves the hash of the instance based on its args, resolved input hashes, source hash, and the output hash.\n */\nexport class InputHashResolver extends GraphResolver<InputHashNode, InputHashOutput> {\n getNodeDependencies({ resolvedInputs }: InputHashNode): string[] {\n const dependencies: string[] = []\n\n for (const inputs of Object.values(resolvedInputs ?? {})) {\n for (const input of inputs) {\n dependencies.push(input.input.instanceId)\n }\n }\n\n return dependencies\n }\n\n processNode({\n instance,\n component,\n resolvedInputs,\n sourceHash,\n state,\n }: InputHashNode): InputHashOutput {\n const selfHashSink: Uint8Array[] = []\n\n // 0. include the instance id to reflect renames\n selfHashSink.push(Buffer.from(instance.id))\n\n // 1. include the component definition hash\n selfHashSink.push(int32ToBytes(component.definitionHash))\n\n // 2. include the input hash nonce if available\n if (state?.inputHashNonce) {\n selfHashSink.push(int32ToBytes(state.inputHashNonce))\n }\n\n // 3. include instance args encoded as msgpack\n if (instance.args) {\n selfHashSink.push(encode(instance.args))\n }\n\n // 4. include the source hash if available\n if (sourceHash) {\n selfHashSink.push(int32ToBytes(sourceHash))\n } else if (isUnitModel(component)) {\n this.logger.warn(\n { instanceId: instance.id },\n \"missing source hash for unit model, this may lead to incorrect input hash\",\n )\n }\n\n const inputHashSink = [...selfHashSink]\n\n const sortedInputs = Object.entries(resolvedInputs)\n //\n .sort(([a], [b]) => a.localeCompare(b))\n\n const dependencyInstanceIds = new Set<string>()\n\n // 5. include the sorted resolved inputs\n for (const [inputKey, inputs] of sortedInputs) {\n if (Object.keys(inputs).length === 0) {\n continue\n }\n\n // 5.1. include the input key to distinguish different inputs with possibly the same instanceId\n inputHashSink.push(Buffer.from(inputKey))\n\n // the instances inside the input should also have stable order\n const instanceIds = inputs.map(input => input.input.instanceId).sort()\n\n for (const instanceId of instanceIds) {\n const dependency = this.outputs.get(instanceId)\n if (!dependency) {\n this.logger.warn(\n { instanceId, dependentInstanceId: instance.id },\n \"missing dependency when calculating input hash, this may lead to incorrect input hash\",\n )\n continue\n }\n\n // 5.2 include both input and output hashes of the dependency\n inputHashSink.push(int32ToBytes(dependency.inputHash))\n inputHashSink.push(int32ToBytes(dependency.outputHash))\n\n dependencyInstanceIds.add(instanceId)\n }\n }\n\n // also calculate the dependency output hash as the combined output hashes of all unique dependencies\n const dependencyOutputHashSink: Uint8Array[] = []\n const sortedDependencyInstanceIds = Array.from(dependencyInstanceIds).sort()\n\n for (const dependencyInstanceId of sortedDependencyInstanceIds) {\n const dependency = this.outputs.get(dependencyInstanceId)\n if (!dependency) {\n this.logger.warn(\n { instanceId: dependencyInstanceId, dependentInstanceId: instance.id },\n \"missing dependency when calculating dependency output hash, this may lead to incorrect input hash\",\n )\n continue\n }\n\n dependencyOutputHashSink.push(int32ToBytes(dependency.outputHash))\n }\n\n return {\n selfHash: crc32(Buffer.concat(selfHashSink)),\n inputHash: crc32(Buffer.concat(inputHashSink)),\n dependencyOutputHash: crc32(Buffer.concat(dependencyOutputHashSink)),\n outputHash: state?.outputHash ?? 0,\n }\n }\n}\n","import type { InstanceState } from \"../models\"\nimport type { ResolvedInstanceInput } from \"./input\"\nimport {\n type ComponentModel,\n type InstanceModel,\n isUnitModel,\n parseArgumentValue,\n} from \"@highstate/contract\"\nimport { Ajv } from \"ajv\"\nimport styles from \"ansi-styles\"\nimport { GraphResolver } from \"./graph-resolver\"\n\nexport type ValidationNode = {\n instance: InstanceModel\n component: ComponentModel\n state: InstanceState | undefined\n resolvedInputs: Record<string, ResolvedInstanceInput[]>\n}\n\nexport type ValidationOutput =\n | {\n status: \"ok\"\n }\n | {\n status: \"error\"\n errorText: string\n }\n\n/**\n * Validates the instance based on its arguments and inputs.\n */\nexport class ValidationResolver extends GraphResolver<ValidationNode, ValidationOutput> {\n getNodeDependencies({ resolvedInputs }: ValidationNode): string[] {\n const dependencies: string[] = []\n\n for (const inputs of Object.values(resolvedInputs)) {\n for (const input of inputs) {\n dependencies.push(input.input.instanceId)\n }\n }\n\n return dependencies\n }\n\n processNode({ instance, component, state, resolvedInputs }: ValidationNode): ValidationOutput {\n const ajv = new Ajv({ strict: false })\n\n this.logger.debug({ instanceId: instance.id }, \"validating instance\")\n\n const validationErrors: string[] = []\n\n for (const [name, argument] of Object.entries(component.args)) {\n try {\n const value = parseArgumentValue(instance.args?.[name])\n\n if (!argument.required && value === undefined) {\n continue\n }\n\n if (!ajv.validate(argument.schema, value)) {\n this.logger.debug({ instanceId: instance.id, argumentName: name }, \"invalid argument\")\n\n validationErrors.push(\n `Invalid argument ` +\n `\"${styles.blueBright.open}${name}${styles.reset.close}\": ` +\n ajv.errorsText(),\n )\n }\n } catch (error) {\n this.logger.debug(\n { instanceId: instance.id, argumentName: name, error },\n \"failed to validate argument\",\n )\n\n validationErrors.push(\n `Failed to validate argument ` +\n `\"${styles.blueBright.open}${name}${styles.reset.close}\": ` +\n (error instanceof Error ? error.message : String(error)),\n )\n }\n }\n\n if (isUnitModel(component)) {\n for (const [secret, secretSchema] of Object.entries(component.secrets)) {\n if (secretSchema.required && !state?.secretNames?.includes(secret)) {\n validationErrors.push(\n `Missing required secret ` +\n `\"${styles.blueBright.open}${secret}${styles.reset.close}\"`,\n )\n }\n }\n }\n\n for (const [key, inputs] of Object.entries(resolvedInputs)) {\n for (const input of inputs) {\n const inputInstance = this.outputs.get(input.input.instanceId)\n if (inputInstance?.status !== \"ok\") {\n validationErrors.push(\n `Invalid input ` +\n `\"${styles.blueBright.open}${key}${styles.reset.close}\":\\n` +\n `\"${styles.blueBright.open}${input.input.instanceId}${styles.reset.close}\" ` +\n `has validation errors`,\n )\n }\n }\n }\n\n for (const [name, input] of Object.entries(component.inputs)) {\n if (!input.required) {\n continue\n }\n\n if (!resolvedInputs[name] || !resolvedInputs[name].length) {\n validationErrors.push(\n `Missing required input ` +\n `\"${styles.blueBright.open}${name}${styles.reset.close}\" ` +\n `of type ` +\n `\"${styles.greenBright.open}${input.type}${styles.reset.close}\"`,\n )\n }\n }\n\n if (validationErrors.length === 0) {\n return { status: \"ok\" }\n }\n\n const numberPrefixLength = (validationErrors.length + 1).toString().length + 2 // +2 for the \". \" prefix\n\n const formattedError = validationErrors\n .map((error, index) => {\n const lines = error.split(\"\\n\")\n const prefix = `${index + 1}. `\n\n return lines\n .map((line, lineIndex) => {\n const linePrefix = lineIndex === 0 ? prefix : \" \".repeat(numberPrefixLength)\n\n return `${linePrefix}${line}`\n })\n .join(\"\\r\\n\")\n })\n .join(\"\\r\\n\")\n\n return {\n status: \"error\",\n errorText: formattedError,\n }\n }\n}\n","import type { Logger } from \"pino\"\nimport type { DependentSetHandler, GraphResolver, ResolverOutputHandler } from \"./graph-resolver\"\nimport { InputResolver, type InputResolverNode, type InputResolverOutput } from \"./input\"\nimport { type InputHashNode, type InputHashOutput, InputHashResolver } from \"./input-hash\"\nimport { type ValidationNode, type ValidationOutput, ValidationResolver } from \"./validation\"\n\nexport type GraphResolverType = keyof GraphResolverMap\n\nexport type GraphResolverMap = {\n InputResolver: [InputResolverNode, InputResolverOutput]\n InputHashResolver: [InputHashNode, InputHashOutput]\n ValidationResolver: [ValidationNode, ValidationOutput]\n}\n\nexport const resolverFactories = {\n InputResolver,\n InputHashResolver,\n ValidationResolver,\n} as Record<\n GraphResolverType,\n new (\n nodes: ReadonlyMap<string, unknown>,\n logger: Logger,\n outputHandler?: ResolverOutputHandler<unknown>,\n dependentSetHandler?: DependentSetHandler,\n ) => GraphResolver<unknown, unknown>\n>\n"]}
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "sourceHashes": {
3
- "./dist/index.js": 844775634,
4
- "./dist/shared/index.js": 2992803358,
3
+ "./dist/index.js": 2629119729,
4
+ "./dist/shared/index.js": 2889300143,
5
5
  "./dist/library/worker/main.js": 3374954088,
6
- "./dist/library/package-resolution-worker.js": 4258495649,
7
- "./dist/database/local/prisma.config.js": 4014074705
6
+ "./dist/library/package-resolution-worker.js": 4258495649
8
7
  }
9
8
  }