rivet-design 0.16.3 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -2
- package/README.npm.md +8 -2
- package/bin/rivet.js +15 -7
- package/dist/agent-variants/variantContext.d.ts +1 -0
- package/dist/agent-variants/variantContext.d.ts.map +1 -1
- package/dist/agent-variants/variantContext.js +1 -1
- package/dist/agent-variants/variantContext.js.map +1 -1
- package/dist/cli/commandNames.d.ts +2 -0
- package/dist/cli/commandNames.d.ts.map +1 -1
- package/dist/cli/commandNames.js +16 -1
- package/dist/cli/commandNames.js.map +1 -1
- package/dist/cli/commands/libraryOpen.d.ts +10 -0
- package/dist/cli/commands/libraryOpen.d.ts.map +1 -0
- package/dist/cli/commands/libraryOpen.js +126 -0
- package/dist/cli/commands/libraryOpen.js.map +1 -0
- package/dist/cli/commands/open.d.ts +39 -0
- package/dist/cli/commands/open.d.ts.map +1 -1
- package/dist/cli/commands/open.js +35 -21
- package/dist/cli/commands/open.js.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +33 -0
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/router.d.ts.map +1 -1
- package/dist/cli/router.js +34 -3
- package/dist/cli/router.js.map +1 -1
- package/dist/cli/serverHandshake.d.ts +7 -5
- package/dist/cli/serverHandshake.d.ts.map +1 -1
- package/dist/cli/serverHandshake.js +16 -12
- package/dist/cli/serverHandshake.js.map +1 -1
- package/dist/install/installationChannel.d.ts +4 -0
- package/dist/install/installationChannel.d.ts.map +1 -0
- package/dist/install/installationChannel.js +13 -0
- package/dist/install/installationChannel.js.map +1 -0
- package/dist/library/HubClient.d.ts +12 -0
- package/dist/library/HubClient.d.ts.map +1 -0
- package/dist/library/HubClient.js +109 -0
- package/dist/library/HubClient.js.map +1 -0
- package/dist/library/HubServer.d.ts +16 -0
- package/dist/library/HubServer.d.ts.map +1 -0
- package/dist/library/HubServer.js +95 -0
- package/dist/library/HubServer.js.map +1 -0
- package/dist/library/StaticPreviewServer.d.ts +7 -0
- package/dist/library/StaticPreviewServer.d.ts.map +1 -0
- package/dist/library/StaticPreviewServer.js +18 -0
- package/dist/library/StaticPreviewServer.js.map +1 -0
- package/dist/library/http.d.ts +11 -0
- package/dist/library/http.d.ts.map +1 -0
- package/dist/library/http.js +31 -0
- package/dist/library/http.js.map +1 -0
- package/dist/library/importFiles.d.ts +18 -0
- package/dist/library/importFiles.d.ts.map +1 -0
- package/dist/library/importFiles.js +184 -0
- package/dist/library/importFiles.js.map +1 -0
- package/dist/routes/account.d.ts +4 -0
- package/dist/routes/account.d.ts.map +1 -0
- package/dist/routes/account.js +53 -0
- package/dist/routes/account.js.map +1 -0
- package/dist/routes/agentVariants.d.ts +2 -13
- package/dist/routes/agentVariants.d.ts.map +1 -1
- package/dist/routes/agentVariants.js +13 -45
- package/dist/routes/agentVariants.js.map +1 -1
- package/dist/routes/library/app.d.ts +8 -0
- package/dist/routes/library/app.d.ts.map +1 -0
- package/dist/routes/library/app.js +26 -0
- package/dist/routes/library/app.js.map +1 -0
- package/dist/routes/library/index.d.ts +5 -0
- package/dist/routes/library/index.d.ts.map +1 -0
- package/dist/routes/library/index.js +32 -0
- package/dist/routes/library/index.js.map +1 -0
- package/dist/routes/library/middleware.d.ts +9 -0
- package/dist/routes/library/middleware.d.ts.map +1 -0
- package/dist/routes/library/middleware.js +58 -0
- package/dist/routes/library/middleware.js.map +1 -0
- package/dist/routes/library/navigation.d.ts +5 -0
- package/dist/routes/library/navigation.d.ts.map +1 -0
- package/dist/routes/library/navigation.js +39 -0
- package/dist/routes/library/navigation.js.map +1 -0
- package/dist/routes/library/projects.d.ts +5 -0
- package/dist/routes/library/projects.d.ts.map +1 -0
- package/dist/routes/library/projects.js +42 -0
- package/dist/routes/library/projects.js.map +1 -0
- package/dist/routes/library/schemas.d.ts +23 -0
- package/dist/routes/library/schemas.d.ts.map +1 -0
- package/dist/routes/library/schemas.js +10 -0
- package/dist/routes/library/schemas.js.map +1 -0
- package/dist/routes/library/staticPreview.d.ts +4 -0
- package/dist/routes/library/staticPreview.d.ts.map +1 -0
- package/dist/routes/library/staticPreview.js +39 -0
- package/dist/routes/library/staticPreview.js.map +1 -0
- package/dist/routes/library/types.d.ts +22 -0
- package/dist/routes/library/types.d.ts.map +1 -0
- package/dist/routes/library/types.js +3 -0
- package/dist/routes/library/types.js.map +1 -0
- package/dist/routes/library/variants.d.ts +5 -0
- package/dist/routes/library/variants.d.ts.map +1 -0
- package/dist/routes/library/variants.js +35 -0
- package/dist/routes/library/variants.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +18 -30
- package/dist/server.js.map +1 -1
- package/dist/services/HistoryReplayService.js +1 -1
- package/dist/services/HistoryReplayService.js.map +1 -1
- package/dist/services/HubDiscovery.d.ts +46 -0
- package/dist/services/HubDiscovery.d.ts.map +1 -0
- package/dist/services/HubDiscovery.js +58 -0
- package/dist/services/HubDiscovery.js.map +1 -0
- package/dist/services/HubNavigation.d.ts +36 -0
- package/dist/services/HubNavigation.d.ts.map +1 -0
- package/dist/services/HubNavigation.js +76 -0
- package/dist/services/HubNavigation.js.map +1 -0
- package/dist/services/ProjectCardPreviews.d.ts +27 -0
- package/dist/services/ProjectCardPreviews.d.ts.map +1 -0
- package/dist/services/ProjectCardPreviews.js +112 -0
- package/dist/services/ProjectCardPreviews.js.map +1 -0
- package/dist/services/ProjectFolderPicker.d.ts +20 -0
- package/dist/services/ProjectFolderPicker.d.ts.map +1 -0
- package/dist/services/ProjectFolderPicker.js +174 -0
- package/dist/services/ProjectFolderPicker.js.map +1 -0
- package/dist/services/ProjectImport.d.ts +13 -0
- package/dist/services/ProjectImport.d.ts.map +1 -0
- package/dist/services/ProjectImport.js +226 -0
- package/dist/services/ProjectImport.js.map +1 -0
- package/dist/services/ProjectLibrary.d.ts +74 -0
- package/dist/services/ProjectLibrary.d.ts.map +1 -0
- package/dist/services/ProjectLibrary.js +261 -0
- package/dist/services/ProjectLibrary.js.map +1 -0
- package/dist/services/ProjectMetadataStore.d.ts +6 -19
- package/dist/services/ProjectMetadataStore.d.ts.map +1 -1
- package/dist/services/ProjectMetadataStore.js +29 -147
- package/dist/services/ProjectMetadataStore.js.map +1 -1
- package/dist/services/ProjectRegistry.d.ts +80 -0
- package/dist/services/ProjectRegistry.d.ts.map +1 -0
- package/dist/services/ProjectRegistry.js +147 -0
- package/dist/services/ProjectRegistry.js.map +1 -0
- package/dist/services/ProjectRuntimeService.d.ts +18 -0
- package/dist/services/ProjectRuntimeService.d.ts.map +1 -0
- package/dist/services/ProjectRuntimeService.js +143 -0
- package/dist/services/ProjectRuntimeService.js.map +1 -0
- package/dist/services/ProjectScreenshotService.d.ts +15 -0
- package/dist/services/ProjectScreenshotService.d.ts.map +1 -0
- package/dist/services/ProjectScreenshotService.js +90 -0
- package/dist/services/ProjectScreenshotService.js.map +1 -0
- package/dist/services/ProjectStorage.d.ts +20 -0
- package/dist/services/ProjectStorage.d.ts.map +1 -0
- package/dist/services/ProjectStorage.js +41 -0
- package/dist/services/ProjectStorage.js.map +1 -0
- package/dist/services/StaticLibraryPreviews.d.ts +21 -0
- package/dist/services/StaticLibraryPreviews.d.ts.map +1 -0
- package/dist/services/StaticLibraryPreviews.js +61 -0
- package/dist/services/StaticLibraryPreviews.js.map +1 -0
- package/dist/services/TelemetryService.d.ts +7 -0
- package/dist/services/TelemetryService.d.ts.map +1 -1
- package/dist/services/TelemetryService.js +7 -1
- package/dist/services/TelemetryService.js.map +1 -1
- package/dist/services/TreeStore.d.ts +8 -3
- package/dist/services/TreeStore.d.ts.map +1 -1
- package/dist/services/TreeStore.js +39 -18
- package/dist/services/TreeStore.js.map +1 -1
- package/dist/services/VariantGenerationService.d.ts +5 -0
- package/dist/services/VariantGenerationService.d.ts.map +1 -1
- package/dist/services/VariantGenerationService.js +13 -1
- package/dist/services/VariantGenerationService.js.map +1 -1
- package/dist/services/VariantHistoryService.d.ts +17 -162
- package/dist/services/VariantHistoryService.d.ts.map +1 -1
- package/dist/services/VariantHistoryService.js +186 -45
- package/dist/services/VariantHistoryService.js.map +1 -1
- package/dist/services/VariantRunService.d.ts +3 -0
- package/dist/services/VariantRunService.d.ts.map +1 -1
- package/dist/services/VariantRunService.js +2 -0
- package/dist/services/VariantRunService.js.map +1 -1
- package/dist/services/VariantsRuntime.d.ts +4 -0
- package/dist/services/VariantsRuntime.d.ts.map +1 -1
- package/dist/services/VariantsRuntime.js +6 -1
- package/dist/services/VariantsRuntime.js.map +1 -1
- package/dist/services/createAgentVariantsOrchestrator.d.ts +2 -0
- package/dist/services/createAgentVariantsOrchestrator.d.ts.map +1 -1
- package/dist/services/createAgentVariantsOrchestrator.js +1 -0
- package/dist/services/createAgentVariantsOrchestrator.js.map +1 -1
- package/dist/services/historyRoots.d.ts +14 -0
- package/dist/services/historyRoots.d.ts.map +1 -0
- package/dist/services/historyRoots.js +44 -0
- package/dist/services/historyRoots.js.map +1 -0
- package/dist/services/libraryErrors.d.ts +7 -0
- package/dist/services/libraryErrors.d.ts.map +1 -0
- package/dist/services/libraryErrors.js +14 -0
- package/dist/services/libraryErrors.js.map +1 -0
- package/dist/storage/library/BundleMetadataStore.d.ts +53 -0
- package/dist/storage/library/BundleMetadataStore.d.ts.map +1 -0
- package/dist/storage/library/BundleMetadataStore.js +317 -0
- package/dist/storage/library/BundleMetadataStore.js.map +1 -0
- package/dist/storage/library/CoordinatorRecords.d.ts +25 -0
- package/dist/storage/library/CoordinatorRecords.d.ts.map +1 -0
- package/dist/storage/library/CoordinatorRecords.js +84 -0
- package/dist/storage/library/CoordinatorRecords.js.map +1 -0
- package/dist/storage/library/ProjectPreviewCache.d.ts +34 -0
- package/dist/storage/library/ProjectPreviewCache.d.ts.map +1 -0
- package/dist/storage/library/ProjectPreviewCache.js +62 -0
- package/dist/storage/library/ProjectPreviewCache.js.map +1 -0
- package/dist/storage/library/ProjectRecords.d.ts +64 -0
- package/dist/storage/library/ProjectRecords.d.ts.map +1 -0
- package/dist/storage/library/ProjectRecords.js +139 -0
- package/dist/storage/library/ProjectRecords.js.map +1 -0
- package/dist/storage/library/database.d.ts +13 -0
- package/dist/storage/library/database.d.ts.map +1 -0
- package/dist/storage/library/database.js +106 -0
- package/dist/storage/library/database.js.map +1 -0
- package/dist/storage/library/migrations.d.ts +5 -0
- package/dist/storage/library/migrations.d.ts.map +1 -0
- package/dist/storage/library/migrations.js +61 -0
- package/dist/storage/library/migrations.js.map +1 -0
- package/dist/storage/library/schema/bundle.d.ts +734 -0
- package/dist/storage/library/schema/bundle.d.ts.map +1 -0
- package/dist/storage/library/schema/bundle.js +79 -0
- package/dist/storage/library/schema/bundle.js.map +1 -0
- package/dist/storage/library/schema/coordinator.d.ts +72 -0
- package/dist/storage/library/schema/coordinator.d.ts.map +1 -0
- package/dist/storage/library/schema/coordinator.js +12 -0
- package/dist/storage/library/schema/coordinator.js.map +1 -0
- package/dist/storage/library/schema/registry.d.ts +198 -0
- package/dist/storage/library/schema/registry.d.ts.map +1 -0
- package/dist/storage/library/schema/registry.js +32 -0
- package/dist/storage/library/schema/registry.js.map +1 -0
- package/dist/storage/library/sourcePresentation.d.ts +3 -0
- package/dist/storage/library/sourcePresentation.d.ts.map +1 -0
- package/dist/storage/library/sourcePresentation.js +70 -0
- package/dist/storage/library/sourcePresentation.js.map +1 -0
- package/dist/storage/project-metadata/ProjectMetadataRecords.d.ts +41 -0
- package/dist/storage/project-metadata/ProjectMetadataRecords.d.ts.map +1 -0
- package/dist/storage/project-metadata/ProjectMetadataRecords.js +120 -0
- package/dist/storage/project-metadata/ProjectMetadataRecords.js.map +1 -0
- package/dist/storage/project-metadata/database.d.ts +12 -0
- package/dist/storage/project-metadata/database.d.ts.map +1 -0
- package/dist/storage/project-metadata/database.js +79 -0
- package/dist/storage/project-metadata/database.js.map +1 -0
- package/dist/{services/projectMetadataMigrations.d.ts → storage/project-metadata/migrations.d.ts} +1 -1
- package/dist/storage/project-metadata/migrations.d.ts.map +1 -0
- package/dist/{services/projectMetadataMigrations.js → storage/project-metadata/migrations.js} +1 -1
- package/dist/storage/project-metadata/migrations.js.map +1 -0
- package/dist/storage/project-metadata/schema.d.ts +288 -0
- package/dist/storage/project-metadata/schema.d.ts.map +1 -0
- package/dist/storage/project-metadata/schema.js +35 -0
- package/dist/storage/project-metadata/schema.js.map +1 -0
- package/dist/types/account.d.ts +8 -0
- package/dist/types/account.d.ts.map +1 -0
- package/dist/types/account.js +3 -0
- package/dist/types/account.js.map +1 -0
- package/dist/types/project-library.d.ts +28 -0
- package/dist/types/project-library.d.ts.map +1 -0
- package/dist/types/project-library.js +3 -0
- package/dist/types/project-library.js.map +1 -0
- package/dist/types/variant-history.d.ts +173 -0
- package/dist/types/variant-history.d.ts.map +1 -0
- package/dist/types/variant-history.js +3 -0
- package/dist/types/variant-history.js.map +1 -0
- package/dist/utils/windowPlacement.d.ts +20 -0
- package/dist/utils/windowPlacement.d.ts.map +1 -0
- package/dist/utils/windowPlacement.js +20 -0
- package/dist/utils/windowPlacement.js.map +1 -0
- package/package.json +8 -3
- package/scripts/verify-node-version.cjs +9 -6
- package/src/ui/dist/assets/LibraryApp-B2MZyxIp.js +16 -0
- package/src/ui/dist/assets/main-1IMq5Huu.css +1 -0
- package/src/ui/dist/assets/main-BId3Sa7r.js +438 -0
- package/src/ui/dist/favicon-16.png +0 -0
- package/src/ui/dist/favicon-32.png +0 -0
- package/src/ui/dist/favicon.ico +0 -0
- package/src/ui/dist/index.html +2 -2
- package/dist/services/projectMetadataMigrations.d.ts.map +0 -1
- package/dist/services/projectMetadataMigrations.js.map +0 -1
- package/src/ui/dist/assets/main-C1kowo8p.js +0 -438
- package/src/ui/dist/assets/main-Ct1aZend.css +0 -1
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* affordance captured when the row was projected. */
|
|
6
|
-
export interface VariantIndexEntry {
|
|
7
|
-
manifest: VariantHistoryManifest;
|
|
8
|
-
hasStaticPreview: boolean;
|
|
9
|
-
}
|
|
10
|
-
export interface VariantIndexEntryInput extends VariantIndexEntry {
|
|
11
|
-
/** The manifest file's mtime when projected — freshness-audit metadata. */
|
|
12
|
-
manifestMtimeMs: number;
|
|
13
|
-
}
|
|
1
|
+
import { ProjectStorage } from './ProjectStorage';
|
|
2
|
+
import type { VariantHistoryManifest, VariantHistoryStatus, VariantIndexEntry, VariantIndexEntryInput } from '../types/variant-history';
|
|
3
|
+
export type { VariantIndexEntry, VariantIndexEntryInput, } from '../types/variant-history';
|
|
4
|
+
import { type ProjectMetadataMigration } from '../storage/project-metadata/migrations';
|
|
14
5
|
/**
|
|
15
6
|
* Embedded SQLite metadata projection at `<project>/.rivet/rivet.db`.
|
|
16
7
|
*
|
|
@@ -25,6 +16,7 @@ export interface VariantIndexEntryInput extends VariantIndexEntry {
|
|
|
25
16
|
* timeout for cross-process access.
|
|
26
17
|
*/
|
|
27
18
|
export declare class ProjectMetadataStore {
|
|
19
|
+
private readonly storage;
|
|
28
20
|
private readonly handles;
|
|
29
21
|
/** Projects whose index must rebuild before it can be trusted again,
|
|
30
22
|
* regardless of the durable state row. Recording staleness here cannot
|
|
@@ -35,7 +27,7 @@ export declare class ProjectMetadataStore {
|
|
|
35
27
|
private readonly migrations;
|
|
36
28
|
/** `migrations` is injectable so tests can exercise upgrade paths with
|
|
37
29
|
* synthetic lists; production callers use the default. */
|
|
38
|
-
constructor(migrations?: readonly ProjectMetadataMigration[]);
|
|
30
|
+
constructor(migrations?: readonly ProjectMetadataMigration[], storage?: ProjectStorage);
|
|
39
31
|
databasePath(projectPath: string): string;
|
|
40
32
|
hasDatabase(projectPath: string): boolean;
|
|
41
33
|
/**
|
|
@@ -109,10 +101,6 @@ export declare class ProjectMetadataStore {
|
|
|
109
101
|
writeVariantsUiState(projectPath: string, json: string): Promise<void>;
|
|
110
102
|
/** Close every open handle. For tests and process shutdown. */
|
|
111
103
|
closeAll(): void;
|
|
112
|
-
private selectEntries;
|
|
113
|
-
private upsertRow;
|
|
114
|
-
private readState;
|
|
115
|
-
private writeState;
|
|
116
104
|
/**
|
|
117
105
|
* Open the project's database, creating and migrating it as needed. A
|
|
118
106
|
* corrupt file is deleted (with its WAL/SHM siblings) and recreated once —
|
|
@@ -122,7 +110,6 @@ export declare class ProjectMetadataStore {
|
|
|
122
110
|
* @effect Creates `.rivet/` and the database file; caches the open handle.
|
|
123
111
|
*/
|
|
124
112
|
private openDatabase;
|
|
125
|
-
private openAndMigrate;
|
|
126
113
|
private deleteDatabaseFiles;
|
|
127
114
|
}
|
|
128
115
|
//# sourceMappingURL=ProjectMetadataStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectMetadataStore.d.ts","sourceRoot":"","sources":["../../src/services/ProjectMetadataStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectMetadataStore.d.ts","sourceRoot":"","sources":["../../src/services/ProjectMetadataStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,wCAAwC,CAAC;AAsBhD;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAoB;IAc7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAb1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE;;;;iFAI6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IAEjE;+DAC2D;gBAEzD,UAAU,GAAE,SAAS,wBAAwB,EAAgC,EAC5D,OAAO,GAAE,cAAqC;IAKjE,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAOzC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIzC;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD;;;;;;OAMG;IACG,yBAAyB,CAAC,IAAI,EAAE;QACpC,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,sBAAsB,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjB;;;;;;;OAOG;IACG,mBAAmB,CAAC,IAAI,EAAE;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,sBAAsB,EAAE,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjB;;kFAE8E;IACxE,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAShE;;;;;;;;OAQG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,YAAY,CAAC,IAAI,EAAE;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,oBAAoB,CAAC;KAC/B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAK1B,cAAc,CAAC,IAAI,EAAE;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKhC;;;;;OAKG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMtE;;;;OAIG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5E,+DAA+D;IAC/D,QAAQ,IAAI,IAAI;IAWhB;;;;;;;OAOG;YACW,YAAY;IAsD1B,OAAO,CAAC,mBAAmB;CAY5B"}
|
|
@@ -1,37 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
4
|
};
|
|
@@ -39,10 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
39
6
|
exports.ProjectMetadataStore = void 0;
|
|
40
7
|
const fs_1 = __importDefault(require("fs"));
|
|
41
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const ProjectStorage_1 = require("./ProjectStorage");
|
|
42
10
|
const logger_1 = require("../utils/logger");
|
|
43
|
-
const
|
|
11
|
+
const ProjectMetadataRecords_1 = require("../storage/project-metadata/ProjectMetadataRecords");
|
|
12
|
+
const migrations_1 = require("../storage/project-metadata/migrations");
|
|
44
13
|
const log = (0, logger_1.createLogger)('ProjectMetadataStore');
|
|
45
|
-
const RIVET_DIRNAME = '.rivet';
|
|
46
14
|
const DATABASE_FILENAME = 'rivet.db';
|
|
47
15
|
/** Extra files SQLite keeps alongside the database in WAL mode. Removed
|
|
48
16
|
* together with the database when recovering from corruption — a stale WAL
|
|
@@ -57,19 +25,6 @@ const VARIANT_INDEX_STALE = 'stale';
|
|
|
57
25
|
* the arrangement to the default, which callers accept as the trade-off for
|
|
58
26
|
* keeping this out of a separate `.rivet` file. */
|
|
59
27
|
const VARIANTS_UI_STATE_KEY = 'variants_ui_state';
|
|
60
|
-
/** How long a statement waits on a cross-process lock before failing. The
|
|
61
|
-
* CLI and server processes can open the same project database. */
|
|
62
|
-
const BUSY_TIMEOUT_MS = 5_000;
|
|
63
|
-
/** node:sqlite is loaded lazily so its one-time ExperimentalWarning fires
|
|
64
|
-
* only in processes that actually touch the projection, not on every CLI
|
|
65
|
-
* invocation's stderr. */
|
|
66
|
-
let databaseSyncCtor = null;
|
|
67
|
-
const loadDatabaseSync = async () => {
|
|
68
|
-
if (!databaseSyncCtor) {
|
|
69
|
-
databaseSyncCtor = (await Promise.resolve().then(() => __importStar(require('node:sqlite')))).DatabaseSync;
|
|
70
|
-
}
|
|
71
|
-
return databaseSyncCtor;
|
|
72
|
-
};
|
|
73
28
|
/**
|
|
74
29
|
* Embedded SQLite metadata projection at `<project>/.rivet/rivet.db`.
|
|
75
30
|
*
|
|
@@ -84,6 +39,7 @@ const loadDatabaseSync = async () => {
|
|
|
84
39
|
* timeout for cross-process access.
|
|
85
40
|
*/
|
|
86
41
|
class ProjectMetadataStore {
|
|
42
|
+
storage;
|
|
87
43
|
handles = new Map();
|
|
88
44
|
/** Projects whose index must rebuild before it can be trusted again,
|
|
89
45
|
* regardless of the durable state row. Recording staleness here cannot
|
|
@@ -94,11 +50,12 @@ class ProjectMetadataStore {
|
|
|
94
50
|
migrations;
|
|
95
51
|
/** `migrations` is injectable so tests can exercise upgrade paths with
|
|
96
52
|
* synthetic lists; production callers use the default. */
|
|
97
|
-
constructor(migrations =
|
|
53
|
+
constructor(migrations = migrations_1.PROJECT_METADATA_MIGRATIONS, storage = new ProjectStorage_1.ProjectStorage()) {
|
|
54
|
+
this.storage = storage;
|
|
98
55
|
this.migrations = migrations;
|
|
99
56
|
}
|
|
100
57
|
databasePath(projectPath) {
|
|
101
|
-
return path_1.default.join(projectPath,
|
|
58
|
+
return path_1.default.join(this.storage.resolve(projectPath).dataDirectory, DATABASE_FILENAME);
|
|
102
59
|
}
|
|
103
60
|
hasDatabase(projectPath) {
|
|
104
61
|
return fs_1.default.existsSync(this.databasePath(projectPath));
|
|
@@ -121,7 +78,7 @@ class ProjectMetadataStore {
|
|
|
121
78
|
*/
|
|
122
79
|
async upsertVariantFromManifest(args) {
|
|
123
80
|
const db = await this.openDatabase(args.projectPath);
|
|
124
|
-
|
|
81
|
+
db.upsert(args);
|
|
125
82
|
}
|
|
126
83
|
/**
|
|
127
84
|
* Replace the project's entire variants index with `entries` and mark it
|
|
@@ -133,20 +90,13 @@ class ProjectMetadataStore {
|
|
|
133
90
|
*/
|
|
134
91
|
async rebuildVariantIndex(args) {
|
|
135
92
|
const db = await this.openDatabase(args.projectPath);
|
|
136
|
-
db.
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
db.exec('COMMIT');
|
|
144
|
-
this.staleOverrides.delete(path_1.default.resolve(args.projectPath));
|
|
145
|
-
}
|
|
146
|
-
catch (err) {
|
|
147
|
-
db.exec('ROLLBACK');
|
|
148
|
-
throw err;
|
|
149
|
-
}
|
|
93
|
+
db.transaction(() => {
|
|
94
|
+
db.clearVariants();
|
|
95
|
+
for (const entry of args.entries)
|
|
96
|
+
db.upsert(entry);
|
|
97
|
+
db.writeState(VARIANT_INDEX_STATE_KEY, VARIANT_INDEX_READY);
|
|
98
|
+
});
|
|
99
|
+
this.staleOverrides.delete(path_1.default.resolve(args.projectPath));
|
|
150
100
|
}
|
|
151
101
|
/** Whether the variants index can serve reads: the database exists, opens
|
|
152
102
|
* at a supported schema version, no in-process staleness override is
|
|
@@ -159,7 +109,7 @@ class ProjectMetadataStore {
|
|
|
159
109
|
return false;
|
|
160
110
|
}
|
|
161
111
|
const db = await this.openDatabase(projectPath);
|
|
162
|
-
return
|
|
112
|
+
return db.readState(VARIANT_INDEX_STATE_KEY) === VARIANT_INDEX_READY;
|
|
163
113
|
}
|
|
164
114
|
/**
|
|
165
115
|
* Flag the variants index as out of sync with the manifests on disk, so
|
|
@@ -174,7 +124,7 @@ class ProjectMetadataStore {
|
|
|
174
124
|
this.staleOverrides.add(path_1.default.resolve(projectPath));
|
|
175
125
|
try {
|
|
176
126
|
const db = await this.openDatabase(projectPath);
|
|
177
|
-
|
|
127
|
+
db.writeState(VARIANT_INDEX_STATE_KEY, VARIANT_INDEX_STALE);
|
|
178
128
|
}
|
|
179
129
|
catch (err) {
|
|
180
130
|
log.warn(`markVariantIndexStale: durable stale flag failed for ${projectPath} — the in-memory override still forces a rebuild in this process`, err);
|
|
@@ -182,21 +132,11 @@ class ProjectMetadataStore {
|
|
|
182
132
|
}
|
|
183
133
|
async listVariants(args) {
|
|
184
134
|
const db = await this.openDatabase(args.projectPath);
|
|
185
|
-
|
|
186
|
-
const params = [];
|
|
187
|
-
if (args.status) {
|
|
188
|
-
conditions.push('status = ?');
|
|
189
|
-
params.push(args.status);
|
|
190
|
-
}
|
|
191
|
-
return this.selectEntries(db, conditions, params, args.limit);
|
|
135
|
+
return db.list({ status: args.status, limit: args.limit });
|
|
192
136
|
}
|
|
193
137
|
async searchVariants(args) {
|
|
194
138
|
const db = await this.openDatabase(args.projectPath);
|
|
195
|
-
|
|
196
|
-
const escaped = args.query.replace(/[\\%_]/g, (match) => `\\${match}`);
|
|
197
|
-
const pattern = `%${escaped}%`;
|
|
198
|
-
const clause = "(label LIKE ? ESCAPE '\\' OR brief LIKE ? ESCAPE '\\' OR session_prompt LIKE ? ESCAPE '\\' OR run_label LIKE ? ESCAPE '\\')";
|
|
199
|
-
return this.selectEntries(db, [clause], [pattern, pattern, pattern, pattern], args.limit);
|
|
139
|
+
return db.search({ query: args.query, limit: args.limit });
|
|
200
140
|
}
|
|
201
141
|
/**
|
|
202
142
|
* Read the variants panel's stored UI arrangement, or null when none has
|
|
@@ -208,7 +148,7 @@ class ProjectMetadataStore {
|
|
|
208
148
|
if (!this.hasDatabase(projectPath))
|
|
209
149
|
return null;
|
|
210
150
|
const db = await this.openDatabase(projectPath);
|
|
211
|
-
return
|
|
151
|
+
return db.readState(VARIANTS_UI_STATE_KEY);
|
|
212
152
|
}
|
|
213
153
|
/**
|
|
214
154
|
* Persist the variants panel's UI arrangement.
|
|
@@ -217,7 +157,7 @@ class ProjectMetadataStore {
|
|
|
217
157
|
*/
|
|
218
158
|
async writeVariantsUiState(projectPath, json) {
|
|
219
159
|
const db = await this.openDatabase(projectPath);
|
|
220
|
-
|
|
160
|
+
db.writeState(VARIANTS_UI_STATE_KEY, json);
|
|
221
161
|
}
|
|
222
162
|
/** Close every open handle. For tests and process shutdown. */
|
|
223
163
|
closeAll() {
|
|
@@ -231,38 +171,6 @@ class ProjectMetadataStore {
|
|
|
231
171
|
}
|
|
232
172
|
this.handles.clear();
|
|
233
173
|
}
|
|
234
|
-
selectEntries(db, conditions, params, limit) {
|
|
235
|
-
const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
236
|
-
// Newest-first with id tiebreaks so equal timestamps order predictably.
|
|
237
|
-
let sql = `SELECT manifest_json, has_static_preview FROM variants ${where} ORDER BY created_at DESC, session_id ASC, variant_id ASC`;
|
|
238
|
-
if (limit !== undefined && limit > 0) {
|
|
239
|
-
sql += ' LIMIT ?';
|
|
240
|
-
params = [...params, limit];
|
|
241
|
-
}
|
|
242
|
-
const rows = db.prepare(sql).all(...params);
|
|
243
|
-
return rows.map((row) => ({
|
|
244
|
-
manifest: JSON.parse(row.manifest_json),
|
|
245
|
-
hasStaticPreview: row.has_static_preview === 1,
|
|
246
|
-
}));
|
|
247
|
-
}
|
|
248
|
-
upsertRow(db, args) {
|
|
249
|
-
const { manifest } = args;
|
|
250
|
-
db.prepare(`INSERT OR REPLACE INTO variants (
|
|
251
|
-
session_id, variant_id, label, brief, session_prompt, run_label,
|
|
252
|
-
status, created_at, status_changed_at, has_tree, serve_kind,
|
|
253
|
-
has_static_preview, manifest_mtime_ms, manifest_json
|
|
254
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(manifest.sessionId, manifest.variantId, manifest.label, manifest.brief, manifest.sessionPrompt, manifest.runLabel ?? null, manifest.status, manifest.createdAt, manifest.statusChangedAt, manifest.tree ? 1 : 0, manifest.serve?.kind ?? null, args.hasStaticPreview ? 1 : 0, Math.round(args.manifestMtimeMs), JSON.stringify(manifest));
|
|
255
|
-
}
|
|
256
|
-
readState(db, key) {
|
|
257
|
-
const row = db
|
|
258
|
-
.prepare('SELECT value FROM metadata_state WHERE key = ?')
|
|
259
|
-
.get(key);
|
|
260
|
-
return row?.value ?? null;
|
|
261
|
-
}
|
|
262
|
-
writeState(db, key, value) {
|
|
263
|
-
db.prepare(`INSERT INTO metadata_state (key, value, updated_at) VALUES (?, ?, ?)
|
|
264
|
-
ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`).run(key, value, new Date().toISOString());
|
|
265
|
-
}
|
|
266
174
|
/**
|
|
267
175
|
* Open the project's database, creating and migrating it as needed. A
|
|
268
176
|
* corrupt file is deleted (with its WAL/SHM siblings) and recreated once —
|
|
@@ -290,28 +198,27 @@ class ProjectMetadataStore {
|
|
|
290
198
|
this.handles.delete(key);
|
|
291
199
|
}
|
|
292
200
|
fs_1.default.mkdirSync(path_1.default.dirname(dbPath), { recursive: true });
|
|
293
|
-
let
|
|
201
|
+
let db;
|
|
294
202
|
try {
|
|
295
|
-
|
|
203
|
+
db = await ProjectMetadataRecords_1.ProjectMetadataRecords.open(dbPath, this.migrations);
|
|
296
204
|
}
|
|
297
205
|
catch (err) {
|
|
298
|
-
if (err instanceof
|
|
206
|
+
if (err instanceof migrations_1.UnsupportedSchemaVersionError)
|
|
299
207
|
throw err;
|
|
300
208
|
log.warn(`openDatabase: ${dbPath} is unreadable — recreating the projection`, err);
|
|
301
209
|
this.deleteDatabaseFiles(dbPath);
|
|
302
|
-
|
|
210
|
+
db = await ProjectMetadataRecords_1.ProjectMetadataRecords.open(dbPath, this.migrations);
|
|
303
211
|
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
// Migrations only change schema shape (see projectMetadataMigrations)
|
|
212
|
+
if (db.wasUpgraded) {
|
|
213
|
+
// Storage migrations only change schema shape
|
|
307
214
|
// — any column they add that derives from manifests starts empty.
|
|
308
215
|
// Marking the index stale makes the next read re-project every row,
|
|
309
216
|
// so migrations never need data backfills of their own. Outside
|
|
310
|
-
//
|
|
217
|
+
// connection setup so a failed flag write can't look like corruption;
|
|
311
218
|
// the in-memory override alone already forces the rebuild.
|
|
312
219
|
this.staleOverrides.add(key);
|
|
313
220
|
try {
|
|
314
|
-
|
|
221
|
+
db.writeState(VARIANT_INDEX_STATE_KEY, VARIANT_INDEX_STALE);
|
|
315
222
|
}
|
|
316
223
|
catch (err) {
|
|
317
224
|
log.warn(`openDatabase: durable stale flag failed after upgrading ${dbPath}`, err);
|
|
@@ -320,31 +227,6 @@ class ProjectMetadataStore {
|
|
|
320
227
|
this.handles.set(key, db);
|
|
321
228
|
return db;
|
|
322
229
|
}
|
|
323
|
-
async openAndMigrate(dbPath) {
|
|
324
|
-
const DatabaseSync = await loadDatabaseSync();
|
|
325
|
-
const db = new DatabaseSync(dbPath);
|
|
326
|
-
try {
|
|
327
|
-
db.exec('PRAGMA journal_mode = WAL');
|
|
328
|
-
db.exec(`PRAGMA busy_timeout = ${BUSY_TIMEOUT_MS}`);
|
|
329
|
-
const { fromVersion, toVersion } = (0, projectMetadataMigrations_1.applyProjectMetadataMigrations)(db, {
|
|
330
|
-
migrations: this.migrations,
|
|
331
|
-
});
|
|
332
|
-
const wasUpgraded = fromVersion > 0 && toVersion > fromVersion;
|
|
333
|
-
if (wasUpgraded) {
|
|
334
|
-
log.info(`openAndMigrate: upgraded ${dbPath} from schema version ${fromVersion} to ${toVersion} — index will rebuild on next read`);
|
|
335
|
-
}
|
|
336
|
-
return { db, wasUpgraded };
|
|
337
|
-
}
|
|
338
|
-
catch (err) {
|
|
339
|
-
try {
|
|
340
|
-
db.close();
|
|
341
|
-
}
|
|
342
|
-
catch {
|
|
343
|
-
// The open error is the one worth surfacing.
|
|
344
|
-
}
|
|
345
|
-
throw err;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
230
|
deleteDatabaseFiles(dbPath) {
|
|
349
231
|
for (const target of [
|
|
350
232
|
dbPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectMetadataStore.js","sourceRoot":"","sources":["../../src/services/ProjectMetadataStore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectMetadataStore.js","sourceRoot":"","sources":["../../src/services/ProjectMetadataStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const ProjectRowSchema: z.ZodObject<{
|
|
3
|
+
id: z.ZodString;
|
|
4
|
+
workspaceId: z.ZodString;
|
|
5
|
+
name: z.ZodString;
|
|
6
|
+
projectPath: z.ZodString;
|
|
7
|
+
createdAt: z.ZodString;
|
|
8
|
+
lastOpenedAt: z.ZodString;
|
|
9
|
+
storageKind: z.ZodEnum<["project", "bundle"]>;
|
|
10
|
+
sourceFingerprint: z.ZodNullable<z.ZodString>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
id: string;
|
|
13
|
+
projectPath: string;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
name: string;
|
|
16
|
+
lastOpenedAt: string;
|
|
17
|
+
storageKind: "project" | "bundle";
|
|
18
|
+
sourceFingerprint: string | null;
|
|
19
|
+
workspaceId: string;
|
|
20
|
+
}, {
|
|
21
|
+
id: string;
|
|
22
|
+
projectPath: string;
|
|
23
|
+
createdAt: string;
|
|
24
|
+
name: string;
|
|
25
|
+
lastOpenedAt: string;
|
|
26
|
+
storageKind: "project" | "bundle";
|
|
27
|
+
sourceFingerprint: string | null;
|
|
28
|
+
workspaceId: string;
|
|
29
|
+
}>;
|
|
30
|
+
export interface RegisteredProject extends z.infer<typeof ProjectRowSchema> {
|
|
31
|
+
isAvailable: boolean;
|
|
32
|
+
}
|
|
33
|
+
interface LibraryRootOptions {
|
|
34
|
+
homeDirectory?: string;
|
|
35
|
+
channel: 'local' | 'production';
|
|
36
|
+
}
|
|
37
|
+
/** Returns the local user and installation channel's project library directory. */
|
|
38
|
+
export declare const libraryRoot: ({ homeDirectory, channel, }: LibraryRootOptions) => string;
|
|
39
|
+
/** Owns machine-specific workspace attachments and stable project identities. */
|
|
40
|
+
export declare class ProjectRegistry {
|
|
41
|
+
readonly root: string;
|
|
42
|
+
private readonly records;
|
|
43
|
+
private constructor();
|
|
44
|
+
/** Opens the persistent registry; concurrent processes share transactional registration. */
|
|
45
|
+
static open(root: string): Promise<ProjectRegistry>;
|
|
46
|
+
/** Registers a canonical working folder exactly once and records this opening. */
|
|
47
|
+
register({ projectPath, name, }: {
|
|
48
|
+
projectPath: string;
|
|
49
|
+
name?: string;
|
|
50
|
+
}): RegisteredProject;
|
|
51
|
+
/** Lists known projects even when their working directories are unavailable. */
|
|
52
|
+
list(): RegisteredProject[];
|
|
53
|
+
/** Resolves an exact registered project without a current-project fallback. */
|
|
54
|
+
get(projectId: string): RegisteredProject;
|
|
55
|
+
/** Looks up a working folder without requiring it to remain available. */
|
|
56
|
+
findByPath(projectPath: string): RegisteredProject | null;
|
|
57
|
+
/** Attributes a generated history root to its existing project owner. */
|
|
58
|
+
attachHistoryRoot({ projectId, projectPath, }: {
|
|
59
|
+
projectId: string;
|
|
60
|
+
projectPath: string;
|
|
61
|
+
}): void;
|
|
62
|
+
/** Lists explicit history-owning attachments for one project. */
|
|
63
|
+
historyRoots(projectId: string): string[];
|
|
64
|
+
/** Reattaches a project's working folder without changing its saved identity. */
|
|
65
|
+
relink({ projectId, projectPath, }: {
|
|
66
|
+
projectId: string;
|
|
67
|
+
projectPath: string;
|
|
68
|
+
}): RegisteredProject;
|
|
69
|
+
/** Marks a verified bundle authoritative and retains its source fingerprint. */
|
|
70
|
+
activateBundle({ projectId, sourceFingerprint, }: {
|
|
71
|
+
projectId: string;
|
|
72
|
+
sourceFingerprint: string | null;
|
|
73
|
+
}): RegisteredProject;
|
|
74
|
+
/** Resolves a known bundle under the library; untrusted IDs cannot form paths. */
|
|
75
|
+
bundleDirectory(projectId: string): string;
|
|
76
|
+
/** Releases the registry handle. */
|
|
77
|
+
close(): void;
|
|
78
|
+
}
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=ProjectRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectRegistry.d.ts","sourceRoot":"","sources":["../../src/services/ProjectRegistry.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASpB,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC;IACzE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,UAAU,kBAAkB;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC;CACjC;AAED,mFAAmF;AACnF,eAAO,MAAM,WAAW,GAAI,6BAGzB,kBAAkB,KAAG,MACgC,CAAC;AAwBzD,iFAAiF;AACjF,qBAAa,eAAe;IAExB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF1B,OAAO;IAKP,4FAA4F;WAC/E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAOzD,kFAAkF;IAClF,QAAQ,CAAC,EACP,WAAW,EACX,IAAI,GACL,EAAE;QACD,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,iBAAiB;IAqBrB,gFAAgF;IAChF,IAAI,IAAI,iBAAiB,EAAE;IAI3B,+EAA+E;IAC/E,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB;IAUzC,0EAA0E;IAC1E,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAWzD,yEAAyE;IACzE,iBAAiB,CAAC,EAChB,SAAS,EACT,WAAW,GACZ,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,IAAI;IAWR,iEAAiE;IACjE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAMzC,iFAAiF;IACjF,MAAM,CAAC,EACL,SAAS,EACT,WAAW,GACZ,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,iBAAiB;IASrB,gFAAgF;IAChF,cAAc,CAAC,EACb,SAAS,EACT,iBAAiB,GAClB,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;KAClC,GAAG,iBAAiB;IAMrB,kFAAkF;IAClF,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI1C,oCAAoC;IACpC,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ProjectRegistry = exports.libraryRoot = void 0;
|
|
7
|
+
const libraryErrors_1 = require("./libraryErrors");
|
|
8
|
+
const fs_1 = __importDefault(require("fs"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const crypto_1 = require("crypto");
|
|
12
|
+
const zod_1 = require("zod");
|
|
13
|
+
const ProjectRecords_1 = require("../storage/library/ProjectRecords");
|
|
14
|
+
const ProjectRowSchema = zod_1.z.object({
|
|
15
|
+
id: zod_1.z.string().uuid(),
|
|
16
|
+
workspaceId: zod_1.z.string().uuid(),
|
|
17
|
+
name: zod_1.z.string(),
|
|
18
|
+
projectPath: zod_1.z.string(),
|
|
19
|
+
createdAt: zod_1.z.string(),
|
|
20
|
+
lastOpenedAt: zod_1.z.string(),
|
|
21
|
+
storageKind: zod_1.z.enum(['project', 'bundle']),
|
|
22
|
+
sourceFingerprint: zod_1.z.string().nullable(),
|
|
23
|
+
});
|
|
24
|
+
/** Returns the local user and installation channel's project library directory. */
|
|
25
|
+
const libraryRoot = ({ homeDirectory = os_1.default.homedir(), channel, }) => path_1.default.join(homeDirectory, '.rivet', 'library', channel);
|
|
26
|
+
exports.libraryRoot = libraryRoot;
|
|
27
|
+
/** Resolves a selected working directory, rejecting files and missing paths. */
|
|
28
|
+
const canonicalDirectory = (projectPath) => {
|
|
29
|
+
const canonical = fs_1.default.realpathSync(projectPath);
|
|
30
|
+
if (!fs_1.default.statSync(canonical).isDirectory())
|
|
31
|
+
throw new Error('A project must be a directory');
|
|
32
|
+
return canonical;
|
|
33
|
+
};
|
|
34
|
+
/** Reads current workspace availability without discarding persistent identity. */
|
|
35
|
+
const decodeProject = (row) => {
|
|
36
|
+
const project = ProjectRowSchema.parse(row);
|
|
37
|
+
let isAvailable = false;
|
|
38
|
+
try {
|
|
39
|
+
isAvailable = fs_1.default.statSync(project.projectPath).isDirectory();
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
const code = error.code;
|
|
43
|
+
if (code !== 'ENOENT' && code !== 'EACCES' && code !== 'ENOTDIR')
|
|
44
|
+
throw error;
|
|
45
|
+
}
|
|
46
|
+
return { ...project, isAvailable };
|
|
47
|
+
};
|
|
48
|
+
/** Owns machine-specific workspace attachments and stable project identities. */
|
|
49
|
+
class ProjectRegistry {
|
|
50
|
+
root;
|
|
51
|
+
records;
|
|
52
|
+
constructor(root, records) {
|
|
53
|
+
this.root = root;
|
|
54
|
+
this.records = records;
|
|
55
|
+
}
|
|
56
|
+
/** Opens the persistent registry; concurrent processes share transactional registration. */
|
|
57
|
+
static async open(root) {
|
|
58
|
+
return new ProjectRegistry(path_1.default.resolve(root), await ProjectRecords_1.ProjectRecords.open(root));
|
|
59
|
+
}
|
|
60
|
+
/** Registers a canonical working folder exactly once and records this opening. */
|
|
61
|
+
register({ projectPath, name, }) {
|
|
62
|
+
const canonical = canonicalDirectory(projectPath);
|
|
63
|
+
return this.records.transaction(() => {
|
|
64
|
+
const owner = this.findByPath(canonical);
|
|
65
|
+
if (owner) {
|
|
66
|
+
this.records.recordOpening(owner.id, new Date().toISOString());
|
|
67
|
+
return this.get(owner.id);
|
|
68
|
+
}
|
|
69
|
+
const now = new Date().toISOString();
|
|
70
|
+
const id = (0, crypto_1.randomUUID)();
|
|
71
|
+
this.records.insert({
|
|
72
|
+
id,
|
|
73
|
+
name: name ?? path_1.default.basename(canonical),
|
|
74
|
+
workspaceId: (0, crypto_1.randomUUID)(),
|
|
75
|
+
canonicalPath: canonical,
|
|
76
|
+
createdAt: now,
|
|
77
|
+
});
|
|
78
|
+
return this.get(id);
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/** Lists known projects even when their working directories are unavailable. */
|
|
82
|
+
list() {
|
|
83
|
+
return this.records.list().map(decodeProject);
|
|
84
|
+
}
|
|
85
|
+
/** Resolves an exact registered project without a current-project fallback. */
|
|
86
|
+
get(projectId) {
|
|
87
|
+
const row = this.records.get(projectId);
|
|
88
|
+
if (!row)
|
|
89
|
+
throw new libraryErrors_1.LibraryError('project_not_found', `Unknown project: ${projectId}`);
|
|
90
|
+
return decodeProject(row);
|
|
91
|
+
}
|
|
92
|
+
/** Looks up a working folder without requiring it to remain available. */
|
|
93
|
+
findByPath(projectPath) {
|
|
94
|
+
let canonical = path_1.default.resolve(projectPath);
|
|
95
|
+
try {
|
|
96
|
+
canonical = fs_1.default.realpathSync(canonical);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
if (error.code !== 'ENOENT')
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
const row = this.records.findByPath(canonical);
|
|
103
|
+
return row ? decodeProject(row) : null;
|
|
104
|
+
}
|
|
105
|
+
/** Attributes a generated history root to its existing project owner. */
|
|
106
|
+
attachHistoryRoot({ projectId, projectPath, }) {
|
|
107
|
+
const canonical = canonicalDirectory(projectPath);
|
|
108
|
+
this.records.transaction(() => {
|
|
109
|
+
this.get(projectId);
|
|
110
|
+
const existing = this.findByPath(canonical);
|
|
111
|
+
if (existing && existing.id !== projectId)
|
|
112
|
+
throw new Error('History root belongs to another project');
|
|
113
|
+
this.records.attachHistoryRoot(projectId, canonical);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
/** Lists explicit history-owning attachments for one project. */
|
|
117
|
+
historyRoots(projectId) {
|
|
118
|
+
const project = this.get(projectId);
|
|
119
|
+
const aliases = this.records.historyRoots(projectId);
|
|
120
|
+
return Array.from(new Set([project.projectPath, ...aliases]));
|
|
121
|
+
}
|
|
122
|
+
/** Reattaches a project's working folder without changing its saved identity. */
|
|
123
|
+
relink({ projectId, projectPath, }) {
|
|
124
|
+
const canonical = canonicalDirectory(projectPath);
|
|
125
|
+
return this.records.transaction(() => {
|
|
126
|
+
this.get(projectId);
|
|
127
|
+
this.records.relink(projectId, canonical);
|
|
128
|
+
return this.get(projectId);
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
/** Marks a verified bundle authoritative and retains its source fingerprint. */
|
|
132
|
+
activateBundle({ projectId, sourceFingerprint, }) {
|
|
133
|
+
this.get(projectId);
|
|
134
|
+
this.records.activateBundle(projectId, sourceFingerprint);
|
|
135
|
+
return this.get(projectId);
|
|
136
|
+
}
|
|
137
|
+
/** Resolves a known bundle under the library; untrusted IDs cannot form paths. */
|
|
138
|
+
bundleDirectory(projectId) {
|
|
139
|
+
return path_1.default.join(this.root, 'projects', this.get(projectId).id);
|
|
140
|
+
}
|
|
141
|
+
/** Releases the registry handle. */
|
|
142
|
+
close() {
|
|
143
|
+
this.records.close();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
exports.ProjectRegistry = ProjectRegistry;
|
|
147
|
+
//# sourceMappingURL=ProjectRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectRegistry.js","sourceRoot":"","sources":["../../src/services/ProjectRegistry.ts"],"names":[],"mappings":"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"}
|