@highstate/backend 0.9.26 → 0.9.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-GJTMJQUW.js → chunk-QSHSXLO2.js} +18 -9
- package/dist/chunk-QSHSXLO2.js.map +1 -0
- package/dist/index.js +292 -132
- package/dist/index.js.map +1 -1
- package/dist/shared/index.js +1 -1
- package/package.json +3 -3
- package/prisma/backend/_schema/layout.prisma +3 -1
- package/prisma/backend/_schema/project.prisma +4 -2
- package/prisma/backend/_schema/unlock-method.prisma +19 -0
- package/prisma/backend/sqlite/migrations/{20250818082732_add_models → 20250928124105_initial_migration}/migration.sql +48 -16
- package/prisma/project/api-key.prisma +3 -1
- package/prisma/project/artifact.prisma +2 -2
- package/prisma/project/custom-status.prisma +1 -1
- package/prisma/project/layout.prisma +4 -0
- package/prisma/project/migrations/{20250816081310_initial → 20250928130725_initial_migration}/migration.sql +132 -46
- package/prisma/project/terminal.prisma +2 -2
- package/prisma/project/unlock-method.prisma +1 -1
- package/prisma/project/worker.prisma +1 -1
- package/src/business/backend-unlock.test.ts +133 -0
- package/src/business/backend-unlock.ts +76 -0
- package/src/business/index.ts +1 -0
- package/src/business/settings.test.ts +3 -2
- package/src/database/_generated/backend/postgresql/client.ts +9 -4
- package/src/database/_generated/backend/postgresql/internal/class.ts +147 -168
- package/src/database/_generated/backend/postgresql/internal/prismaNamespace.ts +127 -40
- package/src/database/_generated/backend/postgresql/models/BackendUnlockMethod.ts +1156 -0
- package/src/database/_generated/backend/postgresql/models/Project.ts +2 -2
- package/src/database/_generated/backend/postgresql/models/ProjectSpace.ts +7 -1
- package/src/database/_generated/backend/postgresql/models/UserWorkspaceLayout.ts +1067 -0
- package/src/database/_generated/backend/postgresql/models.ts +2 -1
- package/src/database/_generated/backend/sqlite/client.ts +9 -4
- package/src/database/_generated/backend/sqlite/internal/class.ts +146 -165
- package/src/database/_generated/backend/sqlite/internal/prismaNamespace.ts +127 -40
- package/src/database/_generated/backend/sqlite/models/BackendUnlockMethod.ts +1154 -0
- package/src/database/_generated/backend/sqlite/models/Project.ts +2 -2
- package/src/database/_generated/backend/sqlite/models/ProjectSpace.ts +7 -1
- package/src/database/_generated/backend/sqlite/models/UserWorkspaceLayout.ts +1065 -0
- package/src/database/_generated/backend/sqlite/models.ts +2 -1
- package/src/database/_generated/project/commonInputTypes.ts +26 -26
- package/src/database/_generated/project/internal/class.ts +7 -8
- package/src/database/_generated/project/internal/prismaNamespace.ts +8 -7
- package/src/database/_generated/project/models/ApiKey.ts +2 -0
- package/src/database/_generated/project/models/Artifact.ts +2 -2
- package/src/database/_generated/project/models/InstanceCustomStatus.ts +1 -1
- package/src/database/_generated/project/models/OperationLog.ts +49 -1
- package/src/database/_generated/project/models/UnlockMethod.ts +2 -2
- package/src/database/_generated/project/models/UserCompositeViewport.ts +16 -14
- package/src/database/_generated/project/models/UserProjectViewport.ts +11 -9
- package/src/database/_generated/project/models/WorkerVersion.ts +1 -5
- package/src/database/abstractions.ts +25 -3
- package/src/database/factory.ts +5 -6
- package/src/database/local/backend.ts +148 -18
- package/src/database/manager.ts +30 -2
- package/src/database/prisma.ts +1 -0
- package/src/orchestrator/operation-plan.ts +0 -19
- package/src/orchestrator/operation.ts +21 -4
- package/src/services.ts +12 -3
- package/src/shared/models/backend/unlock-method.ts +7 -13
- package/src/shared/models/errors.ts +14 -0
- package/src/shared/models/prisma.ts +10 -2
- package/src/test-utils/database.ts +34 -6
- package/dist/chunk-GJTMJQUW.js.map +0 -1
- package/prisma/backend/sqlite/migrations/20250817070609_initiial/migration.sql +0 -34
- package/prisma/backend/sqlite/migrations/20250817104948_add_fields/migration.sql +0 -59
- package/prisma/backend/sqlite/migrations/20250818083106_a/migration.sql +0 -19
- package/prisma/backend/sqlite/migrations/20250818101945_hi/migration.sql +0 -1
- package/prisma/backend/sqlite/migrations/20250819082315_a/migration.sql +0 -5
- package/prisma/project/migrations/20250816082523_test/migration.sql +0 -72
- package/prisma/project/migrations/20250818065643_update/migration.sql +0 -42
- package/prisma/project/migrations/20250818070758_a/migration.sql +0 -8
- package/prisma/project/migrations/20250818070913_a/migration.sql +0 -8
- package/prisma/project/migrations/20250818082720_add_motels/migration.sql +0 -11
- package/prisma/project/migrations/20250818112523_hello/migration.sql +0 -35
- package/prisma/project/migrations/20250819082305_a/migration.sql +0 -14
- package/prisma/project/migrations/20250819165004_add_missing_fields/migration.sql +0 -216
- package/prisma/project/migrations/20250819171309_a/migration.sql +0 -22
- package/prisma/project/migrations/20250820113949_a/migration.sql +0 -66
- package/prisma/project/migrations/20250820144256_b/migration.sql +0 -31
- package/prisma/project/migrations/20250820145547_a/migration.sql +0 -24
- package/prisma/project/migrations/20250820182517_b/migration.sql +0 -2
- package/prisma/project/migrations/20250821172324_a/migration.sql +0 -2
- package/prisma/project/migrations/20250822081339_a/migration.sql +0 -219
- package/prisma/project/migrations/20250822083742_b/migration.sql +0 -1
- package/prisma/project/migrations/20250822105134_boom/migration.sql +0 -1
- package/prisma/project/migrations/20250822141028_b/migration.sql +0 -1
- package/prisma/project/migrations/20250822142342_b/migration.sql +0 -16
- package/prisma/project/migrations/20250824072720_a/migration.sql +0 -1
- package/prisma/project/migrations/20250824093656_b/migration.sql +0 -21
- package/prisma/project/migrations/20250825082518_a/migration.sql +0 -1
- package/prisma/project/migrations/20250825085343_b/migration.sql +0 -1
- package/prisma/project/migrations/20250825091312_a/migration.sql +0 -1
- package/prisma/project/migrations/20250903095431_hi/migration.sql +0 -44
- package/prisma/project/migrations/20250903174255_a/migration.sql +0 -24
- package/prisma/project/migrations/20250908095205_hi/migration.sql +0 -18
- package/prisma/project/migrations/20250909155857_hi/migration.sql +0 -15
- package/prisma/project/migrations/20250921092621_b/migration.sql +0 -33
- package/prisma/project/migrations/20250921093911_b/migration.sql +0 -1
- package/src/database/_generated/backend/postgresql/models/UserWorkspaseLayout.ts +0 -1065
- package/src/database/_generated/backend/sqlite/models/UserWorkspaseLayout.ts +0 -1063
package/dist/shared/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AccessError, BackendError, 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,
|
|
1
|
+
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, 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 } from '../chunk-QSHSXLO2.js';
|
|
2
2
|
import '../chunk-I7BWSAN6.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@highstate/backend",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.28",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"highstate": {
|
|
6
6
|
"sourceHash": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"@aws-crypto/crc32": "^5.2.0",
|
|
44
|
-
"@highstate/contract": "^0.9.
|
|
44
|
+
"@highstate/contract": "^0.9.28",
|
|
45
45
|
"@msgpack/msgpack": "^3.1.2",
|
|
46
46
|
"@napi-rs/keyring": "^1.1.8",
|
|
47
47
|
"@noble/ciphers": "^1.3.0",
|
|
@@ -98,5 +98,5 @@
|
|
|
98
98
|
"type-fest": "^4.41.0",
|
|
99
99
|
"vitest": "^3.2.4"
|
|
100
100
|
},
|
|
101
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "6de09d98fa66e808c42aba7fe65e6e0762945b9b"
|
|
102
102
|
}
|
|
@@ -34,10 +34,10 @@ model Project {
|
|
|
34
34
|
/// This is used to determine if the project needs to be migrated.
|
|
35
35
|
databaseVersion Int
|
|
36
36
|
|
|
37
|
-
/// The
|
|
37
|
+
/// The time when the project was created.
|
|
38
38
|
createdAt DateTime @default(now())
|
|
39
39
|
|
|
40
|
-
/// The
|
|
40
|
+
/// The time when the project was last updated.
|
|
41
41
|
updatedAt DateTime @updatedAt
|
|
42
42
|
|
|
43
43
|
/// The project space this project belongs to.
|
|
@@ -80,6 +80,8 @@ model ProjectSpace {
|
|
|
80
80
|
|
|
81
81
|
/// The child project spaces, if any.
|
|
82
82
|
children ProjectSpace[] @relation("ProjectSpaceHierarchy")
|
|
83
|
+
|
|
84
|
+
@@unique([parentId, name])
|
|
83
85
|
}
|
|
84
86
|
|
|
85
87
|
model ProjectModelStorage {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// Unlock methods describe trusted identities that can decrypt the backend master key.
|
|
2
|
+
model BackendUnlockMethod {
|
|
3
|
+
/// The CUIDv2 of the unlock method.
|
|
4
|
+
id String @id @default(cuid(2))
|
|
5
|
+
|
|
6
|
+
/// The metadata of the unlock method managed by the backend.
|
|
7
|
+
///
|
|
8
|
+
/// [BackendUnlockMethodMeta]
|
|
9
|
+
meta Json
|
|
10
|
+
|
|
11
|
+
/// The AGE recipient for this unlock method.
|
|
12
|
+
recipient String @unique
|
|
13
|
+
|
|
14
|
+
/// The time when the unlock method was created.
|
|
15
|
+
createdAt DateTime @default(now())
|
|
16
|
+
|
|
17
|
+
/// The time when the unlock method was last updated.
|
|
18
|
+
updatedAt DateTime @updatedAt
|
|
19
|
+
}
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
-- CreateTable
|
|
2
|
+
CREATE TABLE "UserWorkspaceLayout" (
|
|
3
|
+
"userId" TEXT NOT NULL PRIMARY KEY,
|
|
4
|
+
"layout" JSONB NOT NULL
|
|
5
|
+
);
|
|
5
6
|
|
|
6
|
-
*/
|
|
7
7
|
-- CreateTable
|
|
8
|
-
CREATE TABLE "
|
|
8
|
+
CREATE TABLE "Library" (
|
|
9
9
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
10
|
-
"projectId" TEXT NOT NULL,
|
|
11
10
|
"meta" JSONB NOT NULL,
|
|
12
11
|
"spec" JSONB NOT NULL
|
|
13
12
|
);
|
|
14
13
|
|
|
15
|
-
--
|
|
16
|
-
|
|
17
|
-
PRAGMA foreign_keys=OFF;
|
|
18
|
-
CREATE TABLE "new_Project" (
|
|
14
|
+
-- CreateTable
|
|
15
|
+
CREATE TABLE "Project" (
|
|
19
16
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
20
17
|
"meta" JSONB NOT NULL,
|
|
21
18
|
"name" TEXT NOT NULL,
|
|
@@ -33,9 +30,44 @@ CREATE TABLE "new_Project" (
|
|
|
33
30
|
CONSTRAINT "Project_libraryId_fkey" FOREIGN KEY ("libraryId") REFERENCES "Library" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
34
31
|
CONSTRAINT "Project_pulumiBackendId_fkey" FOREIGN KEY ("pulumiBackendId") REFERENCES "PulumiBackend" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
35
32
|
);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
|
|
34
|
+
-- CreateTable
|
|
35
|
+
CREATE TABLE "ProjectSpace" (
|
|
36
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
37
|
+
"name" TEXT,
|
|
38
|
+
"parentId" TEXT,
|
|
39
|
+
"meta" JSONB NOT NULL,
|
|
40
|
+
CONSTRAINT "ProjectSpace_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "ProjectSpace" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
-- CreateTable
|
|
44
|
+
CREATE TABLE "ProjectModelStorage" (
|
|
45
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
46
|
+
"meta" JSONB NOT NULL,
|
|
47
|
+
"spec" JSONB NOT NULL
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
-- CreateTable
|
|
51
|
+
CREATE TABLE "PulumiBackend" (
|
|
52
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
53
|
+
"meta" JSONB NOT NULL,
|
|
54
|
+
"spec" JSONB NOT NULL
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
-- CreateTable
|
|
58
|
+
CREATE TABLE "BackendUnlockMethod" (
|
|
59
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
60
|
+
"meta" JSONB NOT NULL,
|
|
61
|
+
"recipient" TEXT NOT NULL,
|
|
62
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
63
|
+
"updatedAt" DATETIME NOT NULL
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
-- CreateIndex
|
|
39
67
|
CREATE UNIQUE INDEX "Project_spaceId_name_key" ON "Project"("spaceId", "name");
|
|
40
|
-
|
|
41
|
-
|
|
68
|
+
|
|
69
|
+
-- CreateIndex
|
|
70
|
+
CREATE UNIQUE INDEX "ProjectSpace_parentId_name_key" ON "ProjectSpace"("parentId", "name");
|
|
71
|
+
|
|
72
|
+
-- CreateIndex
|
|
73
|
+
CREATE UNIQUE INDEX "BackendUnlockMethod_recipient_key" ON "BackendUnlockMethod"("recipient");
|
|
@@ -16,6 +16,8 @@ model ApiKey {
|
|
|
16
16
|
serviceAccountId String
|
|
17
17
|
|
|
18
18
|
/// The API token for authentication.
|
|
19
|
+
///
|
|
20
|
+
/// Should be treated as a secret and only shown once at creation/regeneration.
|
|
19
21
|
token String @unique
|
|
20
22
|
|
|
21
23
|
/// The time when the API key was created.
|
|
@@ -28,5 +30,5 @@ model ApiKey {
|
|
|
28
30
|
worker WorkerVersion?
|
|
29
31
|
|
|
30
32
|
/// The service account which this API key impersonates.
|
|
31
|
-
serviceAccount ServiceAccount @relation(fields: [serviceAccountId], references: [id]
|
|
33
|
+
serviceAccount ServiceAccount @relation(fields: [serviceAccountId], references: [id])
|
|
32
34
|
}
|
|
@@ -32,10 +32,10 @@ model Artifact {
|
|
|
32
32
|
/// Used to split the artifact into smaller chunks for storage.
|
|
33
33
|
chunkSize Int
|
|
34
34
|
|
|
35
|
-
/// The
|
|
35
|
+
/// The time when the artifact first appeared in the system.
|
|
36
36
|
createdAt DateTime @default(now())
|
|
37
37
|
|
|
38
|
-
/// The
|
|
38
|
+
/// The time when the artifact was last updated.
|
|
39
39
|
updatedAt DateTime @updatedAt
|
|
40
40
|
|
|
41
41
|
/// The service accounts using this artifact.
|
|
@@ -21,7 +21,7 @@ model InstanceCustomStatus {
|
|
|
21
21
|
/// Can be used to provide additional context or information about the status.
|
|
22
22
|
///
|
|
23
23
|
/// The message will be displayed in the 800x600 ANSI terminal in the UI,
|
|
24
|
-
/// so
|
|
24
|
+
/// so different TUI elements should be drawn within this area.
|
|
25
25
|
message String?
|
|
26
26
|
|
|
27
27
|
/// The order of the custom status in the list of statuses.
|
|
@@ -3,6 +3,8 @@ model UserProjectViewport {
|
|
|
3
3
|
userId String @id
|
|
4
4
|
|
|
5
5
|
/// The viewport of the user project managed by the frontend.
|
|
6
|
+
///
|
|
7
|
+
/// ![unknown]
|
|
6
8
|
viewport Json
|
|
7
9
|
}
|
|
8
10
|
|
|
@@ -14,6 +16,8 @@ model UserCompositeViewport {
|
|
|
14
16
|
stateId String
|
|
15
17
|
|
|
16
18
|
/// The viewport of the user composite instance managed by the frontend.
|
|
19
|
+
///
|
|
20
|
+
/// ![unknown]
|
|
17
21
|
viewport Json
|
|
18
22
|
|
|
19
23
|
/// The instance state to which this viewport belongs.
|
|
@@ -2,8 +2,11 @@
|
|
|
2
2
|
CREATE TABLE "ApiKey" (
|
|
3
3
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
4
4
|
"meta" JSONB NOT NULL,
|
|
5
|
-
"
|
|
6
|
-
"token" TEXT NOT NULL
|
|
5
|
+
"serviceAccountId" TEXT NOT NULL,
|
|
6
|
+
"token" TEXT NOT NULL,
|
|
7
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
8
|
+
"updatedAt" DATETIME NOT NULL,
|
|
9
|
+
CONSTRAINT "ApiKey_serviceAccountId_fkey" FOREIGN KEY ("serviceAccountId") REFERENCES "ServiceAccount" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
7
10
|
);
|
|
8
11
|
|
|
9
12
|
-- CreateTable
|
|
@@ -12,52 +15,97 @@ CREATE TABLE "Artifact" (
|
|
|
12
15
|
"meta" JSONB NOT NULL,
|
|
13
16
|
"hash" TEXT NOT NULL,
|
|
14
17
|
"size" INTEGER NOT NULL,
|
|
18
|
+
"chunkSize" INTEGER NOT NULL,
|
|
15
19
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
16
20
|
"updatedAt" DATETIME NOT NULL
|
|
17
21
|
);
|
|
18
22
|
|
|
19
23
|
-- CreateTable
|
|
20
24
|
CREATE TABLE "InstanceCustomStatus" (
|
|
21
|
-
"
|
|
25
|
+
"stateId" TEXT NOT NULL,
|
|
26
|
+
"serviceAccountId" TEXT NOT NULL,
|
|
22
27
|
"name" TEXT NOT NULL,
|
|
23
28
|
"meta" JSONB NOT NULL,
|
|
24
29
|
"value" TEXT NOT NULL,
|
|
25
30
|
"message" TEXT,
|
|
26
31
|
"order" INTEGER NOT NULL DEFAULT 50,
|
|
32
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
33
|
+
"updatedAt" DATETIME NOT NULL,
|
|
27
34
|
|
|
28
|
-
PRIMARY KEY ("
|
|
29
|
-
CONSTRAINT "
|
|
35
|
+
PRIMARY KEY ("stateId", "serviceAccountId", "name"),
|
|
36
|
+
CONSTRAINT "InstanceCustomStatus_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
37
|
+
CONSTRAINT "InstanceCustomStatus_serviceAccountId_fkey" FOREIGN KEY ("serviceAccountId") REFERENCES "ServiceAccount" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
30
38
|
);
|
|
31
39
|
|
|
32
40
|
-- CreateTable
|
|
33
41
|
CREATE TABLE "InstanceEvaluationState" (
|
|
34
|
-
"
|
|
42
|
+
"stateId" TEXT NOT NULL PRIMARY KEY,
|
|
35
43
|
"status" TEXT NOT NULL,
|
|
36
44
|
"message" TEXT,
|
|
37
45
|
"model" JSONB,
|
|
38
|
-
|
|
46
|
+
"evaluatedAt" DATETIME NOT NULL,
|
|
47
|
+
CONSTRAINT "InstanceEvaluationState_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
39
48
|
);
|
|
40
49
|
|
|
41
50
|
-- CreateTable
|
|
42
51
|
CREATE TABLE "InstanceState" (
|
|
43
52
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
53
|
+
"instanceId" TEXT NOT NULL,
|
|
44
54
|
"status" TEXT NOT NULL,
|
|
55
|
+
"source" TEXT NOT NULL,
|
|
45
56
|
"kind" TEXT NOT NULL,
|
|
57
|
+
"parentId" TEXT,
|
|
46
58
|
"inputHashNonce" INTEGER,
|
|
47
|
-
"lastOperationId" TEXT,
|
|
48
|
-
"statusFields" JSONB,
|
|
49
59
|
"inputHash" INTEGER,
|
|
50
60
|
"outputHash" INTEGER,
|
|
51
61
|
"dependencyOutputHash" INTEGER,
|
|
52
|
-
|
|
53
|
-
|
|
62
|
+
"exportedArtifactIds" JSONB,
|
|
63
|
+
"model" JSONB,
|
|
64
|
+
"resolvedInputs" JSONB,
|
|
65
|
+
"currentResourceCount" INTEGER,
|
|
66
|
+
"statusFields" JSONB,
|
|
67
|
+
CONSTRAINT "InstanceState_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "InstanceState" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
-- CreateTable
|
|
71
|
+
CREATE TABLE "UserProjectViewport" (
|
|
72
|
+
"userId" TEXT NOT NULL PRIMARY KEY,
|
|
73
|
+
"viewport" JSONB NOT NULL
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
-- CreateTable
|
|
77
|
+
CREATE TABLE "UserCompositeViewport" (
|
|
78
|
+
"userId" TEXT NOT NULL,
|
|
79
|
+
"stateId" TEXT NOT NULL,
|
|
80
|
+
"viewport" JSONB NOT NULL,
|
|
81
|
+
|
|
82
|
+
PRIMARY KEY ("userId", "stateId"),
|
|
83
|
+
CONSTRAINT "UserCompositeViewport_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
54
84
|
);
|
|
55
85
|
|
|
56
86
|
-- CreateTable
|
|
57
87
|
CREATE TABLE "InstanceLock" (
|
|
58
|
-
"
|
|
88
|
+
"stateId" TEXT NOT NULL PRIMARY KEY,
|
|
59
89
|
"meta" JSONB NOT NULL,
|
|
60
|
-
|
|
90
|
+
"token" TEXT NOT NULL,
|
|
91
|
+
"acquiredAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
92
|
+
CONSTRAINT "InstanceLock_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
93
|
+
);
|
|
94
|
+
|
|
95
|
+
-- CreateTable
|
|
96
|
+
CREATE TABLE "InstanceModel" (
|
|
97
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
98
|
+
"model" JSONB NOT NULL,
|
|
99
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
100
|
+
"updatedAt" DATETIME NOT NULL
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
-- CreateTable
|
|
104
|
+
CREATE TABLE "HubModel" (
|
|
105
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
106
|
+
"model" JSONB NOT NULL,
|
|
107
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
108
|
+
"updatedAt" DATETIME NOT NULL
|
|
61
109
|
);
|
|
62
110
|
|
|
63
111
|
-- CreateTable
|
|
@@ -65,47 +113,54 @@ CREATE TABLE "Operation" (
|
|
|
65
113
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
66
114
|
"meta" JSONB NOT NULL,
|
|
67
115
|
"type" TEXT NOT NULL,
|
|
116
|
+
"status" TEXT NOT NULL DEFAULT 'pending',
|
|
68
117
|
"options" JSONB NOT NULL,
|
|
69
118
|
"requestedInstanceIds" JSONB NOT NULL,
|
|
119
|
+
"phases" JSONB,
|
|
70
120
|
"startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
71
|
-
"
|
|
121
|
+
"updatedAt" DATETIME NOT NULL,
|
|
122
|
+
"finishedAt" DATETIME
|
|
72
123
|
);
|
|
73
124
|
|
|
74
125
|
-- CreateTable
|
|
75
126
|
CREATE TABLE "InstanceOperationState" (
|
|
76
127
|
"operationId" TEXT NOT NULL,
|
|
77
|
-
"
|
|
78
|
-
"parentId" TEXT,
|
|
128
|
+
"stateId" TEXT NOT NULL,
|
|
79
129
|
"status" TEXT NOT NULL,
|
|
80
|
-
"message" TEXT,
|
|
81
130
|
"currentResourceCount" INTEGER,
|
|
82
131
|
"totalResourceCount" INTEGER,
|
|
83
|
-
"
|
|
132
|
+
"model" JSONB NOT NULL,
|
|
84
133
|
"resolvedInputs" JSONB NOT NULL,
|
|
134
|
+
"startedAt" DATETIME,
|
|
135
|
+
"finishedAt" DATETIME,
|
|
85
136
|
|
|
86
|
-
PRIMARY KEY ("operationId", "
|
|
137
|
+
PRIMARY KEY ("operationId", "stateId"),
|
|
87
138
|
CONSTRAINT "InstanceOperationState_operationId_fkey" FOREIGN KEY ("operationId") REFERENCES "Operation" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
88
|
-
CONSTRAINT "
|
|
139
|
+
CONSTRAINT "InstanceOperationState_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
89
140
|
);
|
|
90
141
|
|
|
91
142
|
-- CreateTable
|
|
92
143
|
CREATE TABLE "OperationLog" (
|
|
93
144
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
94
145
|
"operationId" TEXT NOT NULL,
|
|
95
|
-
"
|
|
146
|
+
"stateId" TEXT,
|
|
147
|
+
"isSystem" BOOLEAN NOT NULL DEFAULT false,
|
|
96
148
|
"content" TEXT NOT NULL,
|
|
97
149
|
CONSTRAINT "OperationLog_operationId_fkey" FOREIGN KEY ("operationId") REFERENCES "Operation" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
98
|
-
CONSTRAINT "
|
|
150
|
+
CONSTRAINT "OperationLog_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
99
151
|
);
|
|
100
152
|
|
|
101
153
|
-- CreateTable
|
|
102
154
|
CREATE TABLE "Page" (
|
|
103
155
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
104
156
|
"meta" JSONB NOT NULL,
|
|
105
|
-
"
|
|
157
|
+
"stateId" TEXT,
|
|
158
|
+
"name" TEXT,
|
|
106
159
|
"serviceAccountId" TEXT,
|
|
107
160
|
"content" JSONB NOT NULL,
|
|
108
|
-
|
|
161
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
162
|
+
"updatedAt" DATETIME NOT NULL,
|
|
163
|
+
CONSTRAINT "Page_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
109
164
|
CONSTRAINT "Page_serviceAccountId_fkey" FOREIGN KEY ("serviceAccountId") REFERENCES "ServiceAccount" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
110
165
|
);
|
|
111
166
|
|
|
@@ -113,39 +168,47 @@ CREATE TABLE "Page" (
|
|
|
113
168
|
CREATE TABLE "Secret" (
|
|
114
169
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
115
170
|
"meta" JSONB NOT NULL,
|
|
116
|
-
"
|
|
171
|
+
"stateId" TEXT,
|
|
117
172
|
"name" TEXT,
|
|
118
173
|
"systemName" TEXT,
|
|
119
174
|
"serviceAccountId" TEXT,
|
|
120
175
|
"content" JSONB NOT NULL,
|
|
121
|
-
|
|
176
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
177
|
+
"updatedAt" DATETIME NOT NULL,
|
|
178
|
+
CONSTRAINT "Secret_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
122
179
|
CONSTRAINT "Secret_serviceAccountId_fkey" FOREIGN KEY ("serviceAccountId") REFERENCES "ServiceAccount" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
123
180
|
);
|
|
124
181
|
|
|
125
182
|
-- CreateTable
|
|
126
183
|
CREATE TABLE "ServiceAccount" (
|
|
127
184
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
128
|
-
"meta" JSONB NOT NULL
|
|
185
|
+
"meta" JSONB NOT NULL,
|
|
186
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
187
|
+
"updatedAt" DATETIME NOT NULL
|
|
129
188
|
);
|
|
130
189
|
|
|
131
190
|
-- CreateTable
|
|
132
191
|
CREATE TABLE "Terminal" (
|
|
133
192
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
134
193
|
"meta" JSONB NOT NULL,
|
|
194
|
+
"status" TEXT NOT NULL DEFAULT 'active',
|
|
135
195
|
"spec" JSONB NOT NULL,
|
|
136
|
-
"
|
|
196
|
+
"stateId" TEXT,
|
|
137
197
|
"name" TEXT,
|
|
138
198
|
"serviceAccountId" TEXT,
|
|
139
|
-
|
|
199
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
200
|
+
"updatedAt" DATETIME NOT NULL,
|
|
201
|
+
CONSTRAINT "Terminal_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE SET NULL ON UPDATE CASCADE,
|
|
140
202
|
CONSTRAINT "Terminal_serviceAccountId_fkey" FOREIGN KEY ("serviceAccountId") REFERENCES "ServiceAccount" ("id") ON DELETE SET NULL ON UPDATE CASCADE
|
|
141
203
|
);
|
|
142
204
|
|
|
143
205
|
-- CreateTable
|
|
144
206
|
CREATE TABLE "TerminalSession" (
|
|
145
207
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
146
|
-
"meta" JSONB NOT NULL,
|
|
147
208
|
"terminalId" TEXT NOT NULL,
|
|
148
|
-
|
|
209
|
+
"startedAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
210
|
+
"finishedAt" DATETIME,
|
|
211
|
+
CONSTRAINT "TerminalSession_terminalId_fkey" FOREIGN KEY ("terminalId") REFERENCES "Terminal" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
149
212
|
);
|
|
150
213
|
|
|
151
214
|
-- CreateTable
|
|
@@ -153,17 +216,19 @@ CREATE TABLE "TerminalSessionLog" (
|
|
|
153
216
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
154
217
|
"sessionId" TEXT NOT NULL,
|
|
155
218
|
"content" TEXT NOT NULL,
|
|
156
|
-
CONSTRAINT "TerminalSessionLog_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "TerminalSession" ("id") ON DELETE
|
|
219
|
+
CONSTRAINT "TerminalSessionLog_sessionId_fkey" FOREIGN KEY ("sessionId") REFERENCES "TerminalSession" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
157
220
|
);
|
|
158
221
|
|
|
159
222
|
-- CreateTable
|
|
160
223
|
CREATE TABLE "Trigger" (
|
|
161
224
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
162
225
|
"meta" JSONB NOT NULL,
|
|
163
|
-
"
|
|
226
|
+
"stateId" TEXT NOT NULL,
|
|
164
227
|
"name" TEXT NOT NULL,
|
|
165
228
|
"spec" JSONB NOT NULL,
|
|
166
|
-
|
|
229
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
230
|
+
"updatedAt" DATETIME NOT NULL,
|
|
231
|
+
CONSTRAINT "Trigger_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
167
232
|
);
|
|
168
233
|
|
|
169
234
|
-- CreateTable
|
|
@@ -172,7 +237,9 @@ CREATE TABLE "UnlockMethod" (
|
|
|
172
237
|
"meta" JSONB NOT NULL,
|
|
173
238
|
"type" TEXT NOT NULL,
|
|
174
239
|
"encryptedIdentity" TEXT NOT NULL,
|
|
175
|
-
"recipient" TEXT NOT NULL
|
|
240
|
+
"recipient" TEXT NOT NULL,
|
|
241
|
+
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
242
|
+
"updatedAt" DATETIME NOT NULL
|
|
176
243
|
);
|
|
177
244
|
|
|
178
245
|
-- CreateTable
|
|
@@ -187,24 +254,40 @@ CREATE TABLE "Worker" (
|
|
|
187
254
|
-- CreateTable
|
|
188
255
|
CREATE TABLE "WorkerVersion" (
|
|
189
256
|
"id" TEXT NOT NULL PRIMARY KEY,
|
|
257
|
+
"meta" JSONB NOT NULL,
|
|
258
|
+
"status" TEXT NOT NULL DEFAULT 'unknown',
|
|
259
|
+
"enabled" BOOLEAN NOT NULL DEFAULT true,
|
|
260
|
+
"runtimeId" TEXT,
|
|
190
261
|
"workerId" TEXT NOT NULL,
|
|
191
262
|
"digest" TEXT NOT NULL,
|
|
192
263
|
"apiKeyId" TEXT NOT NULL,
|
|
193
264
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
265
|
+
"updatedAt" DATETIME NOT NULL,
|
|
266
|
+
CONSTRAINT "WorkerVersion_workerId_fkey" FOREIGN KEY ("workerId") REFERENCES "Worker" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
194
267
|
CONSTRAINT "WorkerVersion_apiKeyId_fkey" FOREIGN KEY ("apiKeyId") REFERENCES "ApiKey" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
195
268
|
);
|
|
196
269
|
|
|
197
270
|
-- CreateTable
|
|
198
271
|
CREATE TABLE "WorkerUnitRegistration" (
|
|
199
|
-
"
|
|
200
|
-
"
|
|
272
|
+
"stateId" TEXT NOT NULL,
|
|
273
|
+
"name" TEXT NOT NULL,
|
|
201
274
|
"params" JSONB NOT NULL,
|
|
275
|
+
"workerVersionId" TEXT NOT NULL,
|
|
202
276
|
"createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
203
277
|
"updatedAt" DATETIME NOT NULL,
|
|
204
278
|
|
|
205
|
-
PRIMARY KEY ("
|
|
206
|
-
CONSTRAINT "
|
|
207
|
-
CONSTRAINT "
|
|
279
|
+
PRIMARY KEY ("stateId", "name"),
|
|
280
|
+
CONSTRAINT "WorkerUnitRegistration_stateId_fkey" FOREIGN KEY ("stateId") REFERENCES "InstanceState" ("id") ON DELETE RESTRICT ON UPDATE CASCADE,
|
|
281
|
+
CONSTRAINT "WorkerUnitRegistration_workerVersionId_fkey" FOREIGN KEY ("workerVersionId") REFERENCES "WorkerVersion" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
|
|
282
|
+
);
|
|
283
|
+
|
|
284
|
+
-- CreateTable
|
|
285
|
+
CREATE TABLE "WorkerVersionLog" (
|
|
286
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
287
|
+
"workerVersionId" TEXT NOT NULL,
|
|
288
|
+
"content" TEXT NOT NULL,
|
|
289
|
+
"isSystem" BOOLEAN NOT NULL DEFAULT false,
|
|
290
|
+
CONSTRAINT "WorkerVersionLog_workerVersionId_fkey" FOREIGN KEY ("workerVersionId") REFERENCES "WorkerVersion" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
208
291
|
);
|
|
209
292
|
|
|
210
293
|
-- CreateTable
|
|
@@ -246,22 +329,25 @@ CREATE UNIQUE INDEX "ApiKey_token_key" ON "ApiKey"("token");
|
|
|
246
329
|
CREATE UNIQUE INDEX "Artifact_hash_key" ON "Artifact"("hash");
|
|
247
330
|
|
|
248
331
|
-- CreateIndex
|
|
249
|
-
CREATE UNIQUE INDEX "
|
|
332
|
+
CREATE UNIQUE INDEX "InstanceState_instanceId_key" ON "InstanceState"("instanceId");
|
|
333
|
+
|
|
334
|
+
-- CreateIndex
|
|
335
|
+
CREATE UNIQUE INDEX "Page_stateId_name_key" ON "Page"("stateId", "name");
|
|
250
336
|
|
|
251
337
|
-- CreateIndex
|
|
252
|
-
CREATE INDEX "
|
|
338
|
+
CREATE UNIQUE INDEX "Secret_systemName_key" ON "Secret"("systemName");
|
|
253
339
|
|
|
254
340
|
-- CreateIndex
|
|
255
|
-
CREATE INDEX "
|
|
341
|
+
CREATE UNIQUE INDEX "Secret_stateId_name_key" ON "Secret"("stateId", "name");
|
|
256
342
|
|
|
257
343
|
-- CreateIndex
|
|
258
|
-
CREATE INDEX "
|
|
344
|
+
CREATE UNIQUE INDEX "Terminal_stateId_name_key" ON "Terminal"("stateId", "name");
|
|
259
345
|
|
|
260
346
|
-- CreateIndex
|
|
261
|
-
CREATE UNIQUE INDEX "
|
|
347
|
+
CREATE UNIQUE INDEX "Trigger_stateId_name_key" ON "Trigger"("stateId", "name");
|
|
262
348
|
|
|
263
349
|
-- CreateIndex
|
|
264
|
-
CREATE UNIQUE INDEX "
|
|
350
|
+
CREATE UNIQUE INDEX "UnlockMethod_recipient_key" ON "UnlockMethod"("recipient");
|
|
265
351
|
|
|
266
352
|
-- CreateIndex
|
|
267
353
|
CREATE UNIQUE INDEX "Worker_identity_key" ON "Worker"("identity");
|
|
@@ -52,10 +52,10 @@ model Terminal {
|
|
|
52
52
|
updatedAt DateTime @updatedAt
|
|
53
53
|
|
|
54
54
|
/// The instance this terminal belongs to.
|
|
55
|
-
state InstanceState? @relation(fields: [stateId], references: [id]
|
|
55
|
+
state InstanceState? @relation(fields: [stateId], references: [id])
|
|
56
56
|
|
|
57
57
|
/// The service account this terminal belongs to.
|
|
58
|
-
serviceAccount ServiceAccount? @relation(fields: [serviceAccountId], references: [id]
|
|
58
|
+
serviceAccount ServiceAccount? @relation(fields: [serviceAccountId], references: [id])
|
|
59
59
|
|
|
60
60
|
/// The terminal sessions associated with this terminal.
|
|
61
61
|
sessions TerminalSession[]
|
|
@@ -84,7 +84,7 @@ model WorkerVersion {
|
|
|
84
84
|
workerId String
|
|
85
85
|
|
|
86
86
|
/// The digest of the worker version used to identify it.
|
|
87
|
-
/// The format is raw SHA256 digest without the `sha256:` prefix.
|
|
87
|
+
/// The format is raw SHA256 digest without the `sha256:` prefix in lowercase hex.
|
|
88
88
|
digest String @unique
|
|
89
89
|
|
|
90
90
|
/// The ID of the API key this worker version uses.
|