rivet-design 0.16.2 → 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/proxy-middleware/preview-bridge.d.ts.map +1 -1
- package/dist/proxy-middleware/preview-bridge.js +6 -16
- package/dist/proxy-middleware/preview-bridge.js.map +1 -1
- 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 +53 -79
- 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 +18 -162
- package/dist/services/VariantHistoryService.d.ts.map +1 -1
- package/dist/services/VariantHistoryService.js +187 -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/htmlDocument.d.ts +13 -0
- package/dist/utils/htmlDocument.d.ts.map +1 -0
- package/dist/utils/htmlDocument.js +42 -0
- package/dist/utils/htmlDocument.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 +10 -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-BjwDfDy8.js +0 -423
- package/src/ui/dist/assets/main-Ct1aZend.css +0 -1
|
@@ -0,0 +1,95 @@
|
|
|
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.startHubServer = void 0;
|
|
7
|
+
const StaticPreviewServer_1 = require("./StaticPreviewServer");
|
|
8
|
+
const app_1 = require("../routes/library/app");
|
|
9
|
+
const ProjectRuntimeService_1 = require("../services/ProjectRuntimeService");
|
|
10
|
+
const ProjectFolderPicker_1 = require("../services/ProjectFolderPicker");
|
|
11
|
+
const ProjectCardPreviews_1 = require("../services/ProjectCardPreviews");
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const HubDiscovery_1 = require("../services/HubDiscovery");
|
|
14
|
+
const HubNavigation_1 = require("../services/HubNavigation");
|
|
15
|
+
const ProjectLibrary_1 = require("../services/ProjectLibrary");
|
|
16
|
+
const StaticLibraryPreviews_1 = require("../services/StaticLibraryPreviews");
|
|
17
|
+
const http_1 = require("./http");
|
|
18
|
+
/** Starts one shared application coordinator while keeping project runtimes independent. */
|
|
19
|
+
const startHubServer = async ({ root = (0, ProjectLibrary_1.currentLibraryRoot)(), telemetry, uiDirectory = path_1.default.resolve(__dirname, '../../src/ui/dist'), } = {}) => {
|
|
20
|
+
const discovery = await HubDiscovery_1.HubDiscovery.open(root);
|
|
21
|
+
const claim = discovery.claim();
|
|
22
|
+
if (claim.status === 'occupied') {
|
|
23
|
+
discovery.close();
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const token = claim.token;
|
|
27
|
+
let library;
|
|
28
|
+
try {
|
|
29
|
+
library = await ProjectLibrary_1.ProjectLibrary.open(root);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
discovery.release(token);
|
|
33
|
+
discovery.close();
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
const navigation = new HubNavigation_1.HubNavigation();
|
|
37
|
+
const previews = new StaticLibraryPreviews_1.StaticLibraryPreviews(library, StaticPreviewServer_1.startStaticPreviewServer);
|
|
38
|
+
const runtime = new ProjectRuntimeService_1.ProjectRuntimeService(library.registry);
|
|
39
|
+
const cardPreviews = new ProjectCardPreviews_1.ProjectCardPreviews({
|
|
40
|
+
library,
|
|
41
|
+
runtime,
|
|
42
|
+
previews,
|
|
43
|
+
telemetry,
|
|
44
|
+
});
|
|
45
|
+
const folderPicker = new ProjectFolderPicker_1.ProjectFolderPicker();
|
|
46
|
+
const app = (0, app_1.createLibraryApp)({
|
|
47
|
+
token,
|
|
48
|
+
library,
|
|
49
|
+
navigation,
|
|
50
|
+
previews,
|
|
51
|
+
runtime,
|
|
52
|
+
cardPreviews,
|
|
53
|
+
folderPicker,
|
|
54
|
+
telemetry,
|
|
55
|
+
uiDirectory,
|
|
56
|
+
});
|
|
57
|
+
let listener;
|
|
58
|
+
try {
|
|
59
|
+
listener = await (0, http_1.listenLocally)(app);
|
|
60
|
+
discovery.publish({ token, port: listener.port });
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
if (listener)
|
|
64
|
+
await (0, http_1.closeListener)(listener.server);
|
|
65
|
+
navigation.close();
|
|
66
|
+
await cardPreviews.close();
|
|
67
|
+
await previews.close();
|
|
68
|
+
library.close();
|
|
69
|
+
discovery.release(token);
|
|
70
|
+
discovery.close();
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
const activeListener = listener;
|
|
74
|
+
let isClosed = false;
|
|
75
|
+
return {
|
|
76
|
+
url: activeListener.url,
|
|
77
|
+
token,
|
|
78
|
+
library,
|
|
79
|
+
close: async () => {
|
|
80
|
+
if (isClosed)
|
|
81
|
+
return;
|
|
82
|
+
isClosed = true;
|
|
83
|
+
folderPicker.close();
|
|
84
|
+
navigation.close();
|
|
85
|
+
await cardPreviews.close();
|
|
86
|
+
await (0, http_1.closeListener)(activeListener.server);
|
|
87
|
+
await previews.close();
|
|
88
|
+
library.close();
|
|
89
|
+
discovery.release(token);
|
|
90
|
+
discovery.close();
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
};
|
|
94
|
+
exports.startHubServer = startHubServer;
|
|
95
|
+
//# sourceMappingURL=HubServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HubServer.js","sourceRoot":"","sources":["../../src/library/HubServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Starts the dedicated listener for one canonical saved snapshot directory. */
|
|
2
|
+
export declare const startStaticPreviewServer: (root: string) => Promise<{
|
|
3
|
+
server: import("node:http").Server;
|
|
4
|
+
url: string;
|
|
5
|
+
port: number;
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=StaticPreviewServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticPreviewServer.d.ts","sourceRoot":"","sources":["../../src/library/StaticPreviewServer.ts"],"names":[],"mappings":"AAKA,gFAAgF;AAChF,eAAO,MAAM,wBAAwB,GAAU,MAAM,MAAM;;;;EAI1D,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
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.startStaticPreviewServer = void 0;
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
9
|
+
const staticPreview_1 = require("../routes/library/staticPreview");
|
|
10
|
+
const http_1 = require("./http");
|
|
11
|
+
/** Starts the dedicated listener for one canonical saved snapshot directory. */
|
|
12
|
+
const startStaticPreviewServer = async (root) => {
|
|
13
|
+
const app = (0, express_1.default)();
|
|
14
|
+
app.use((0, staticPreview_1.createStaticPreviewRoutes)(await promises_1.default.realpath(root)));
|
|
15
|
+
return (0, http_1.listenLocally)(app);
|
|
16
|
+
};
|
|
17
|
+
exports.startStaticPreviewServer = startStaticPreviewServer;
|
|
18
|
+
//# sourceMappingURL=StaticPreviewServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StaticPreviewServer.js","sourceRoot":"","sources":["../../src/library/StaticPreviewServer.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAC9B,2DAA6B;AAC7B,mEAA4E;AAC5E,iCAAuC;AAEvC,gFAAgF;AACzE,MAAM,wBAAwB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7D,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,IAAA,yCAAyB,EAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,OAAO,IAAA,oBAAa,EAAC,GAAG,CAAC,CAAC;AAC5B,CAAC,CAAC;AAJW,QAAA,wBAAwB,4BAInC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Server } from 'http';
|
|
2
|
+
import type { Express } from 'express';
|
|
3
|
+
/** Listens on loopback with an OS-assigned port, never exposing project files to the LAN. */
|
|
4
|
+
export declare const listenLocally: (app: Express) => Promise<{
|
|
5
|
+
server: Server;
|
|
6
|
+
url: string;
|
|
7
|
+
port: number;
|
|
8
|
+
}>;
|
|
9
|
+
/** Closes a listener and its idle HTTP connections. */
|
|
10
|
+
export declare const closeListener: (server: Server) => Promise<void>;
|
|
11
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/library/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,MAAM,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,6FAA6F;AAC7F,eAAO,MAAM,aAAa,GACxB,KAAK,OAAO,KACX,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAiBvD,CAAC;AAEF,uDAAuD;AACvD,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAIvD,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.closeListener = exports.listenLocally = void 0;
|
|
4
|
+
const http_1 = require("http");
|
|
5
|
+
/** Listens on loopback with an OS-assigned port, never exposing project files to the LAN. */
|
|
6
|
+
const listenLocally = async (app) => {
|
|
7
|
+
const server = (0, http_1.createServer)(app);
|
|
8
|
+
await new Promise((resolve, reject) => {
|
|
9
|
+
server.once('error', reject);
|
|
10
|
+
server.listen(0, '127.0.0.1', () => {
|
|
11
|
+
server.removeListener('error', reject);
|
|
12
|
+
resolve();
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
const address = server.address();
|
|
16
|
+
if (!address || typeof address === 'string')
|
|
17
|
+
throw new Error('No local listening address');
|
|
18
|
+
return {
|
|
19
|
+
server,
|
|
20
|
+
url: `http://127.0.0.1:${address.port}`,
|
|
21
|
+
port: address.port,
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
exports.listenLocally = listenLocally;
|
|
25
|
+
/** Closes a listener and its idle HTTP connections. */
|
|
26
|
+
const closeListener = (server) => new Promise((resolve, reject) => {
|
|
27
|
+
server.close((error) => (error ? reject(error) : resolve()));
|
|
28
|
+
server.closeIdleConnections();
|
|
29
|
+
});
|
|
30
|
+
exports.closeListener = closeListener;
|
|
31
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/library/http.ts"],"names":[],"mappings":";;;AAAA,+BAAiD;AAGjD,6FAA6F;AACtF,MAAM,aAAa,GAAG,KAAK,EAChC,GAAY,EAC4C,EAAE;IAC1D,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvC,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QACzC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,OAAO;QACL,MAAM;QACN,GAAG,EAAE,oBAAoB,OAAO,CAAC,IAAI,EAAE;QACvC,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,aAAa,iBAmBxB;AAEF,uDAAuD;AAChD,MAAM,aAAa,GAAG,CAAC,MAAc,EAAiB,EAAE,CAC7D,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,oBAAoB,EAAE,CAAC;AAChC,CAAC,CAAC,CAAC;AAJQ,QAAA,aAAa,iBAIrB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { VariantHistoryManifest } from '../services/VariantHistoryService';
|
|
2
|
+
/** Enumerates only durable source files, rejecting links and borrowed object stores. */
|
|
3
|
+
export declare const sourceFiles: (dataDirectory: string) => Promise<string[]>;
|
|
4
|
+
/** Hashes source content rather than volatile index/WAL bytes for divergence detection. */
|
|
5
|
+
export declare const sourceFingerprint: (dataDirectory: string) => Promise<string>;
|
|
6
|
+
/** Copies durable bytes into staging without modifying or linking source files. */
|
|
7
|
+
export declare const copySourceFiles: (source: string, destination: string) => Promise<void>;
|
|
8
|
+
/** Reads supported persisted manifests and checks that path and metadata identities agree. */
|
|
9
|
+
export declare const readSourceManifests: (dataDirectory: string) => Promise<VariantHistoryManifest[]>;
|
|
10
|
+
/** Resolves artifact paths within their owner and verifies regular files exist. */
|
|
11
|
+
export declare const verifyArtifactFile: (root: string, relative: string) => Promise<void>;
|
|
12
|
+
/** Relocates managed reference paths while preserving external workspace references. */
|
|
13
|
+
export declare const relocateContext: (args: {
|
|
14
|
+
sourceDirectory: string;
|
|
15
|
+
stageDirectory: string;
|
|
16
|
+
bundleDirectory: string;
|
|
17
|
+
}) => Promise<void>;
|
|
18
|
+
//# sourceMappingURL=importFiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importFiles.d.ts","sourceRoot":"","sources":["../../src/library/importFiles.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAiDhF,wFAAwF;AACxF,eAAO,MAAM,WAAW,GAAU,eAAe,MAAM,KAAG,OAAO,CAAC,MAAM,EAAE,CAyBzE,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,GAC5B,eAAe,MAAM,KACpB,OAAO,CAAC,MAAM,CAchB,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,eAAe,GAC1B,QAAQ,MAAM,EACd,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,8FAA8F;AAC9F,eAAO,MAAM,mBAAmB,GAC9B,eAAe,MAAM,KACpB,OAAO,CAAC,sBAAsB,EAAE,CA2BlC,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,GAC7B,MAAM,MAAM,EACZ,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,eAAe,GAAU,MAAM;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB,KAAG,OAAO,CAAC,IAAI,CA2Cf,CAAC"}
|
|
@@ -0,0 +1,184 @@
|
|
|
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.relocateContext = exports.verifyArtifactFile = exports.readSourceManifests = exports.copySourceFiles = exports.sourceFingerprint = exports.sourceFiles = void 0;
|
|
7
|
+
const sourcePresentation_1 = require("../storage/library/sourcePresentation");
|
|
8
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const crypto_1 = require("crypto");
|
|
12
|
+
const zod_1 = require("zod");
|
|
13
|
+
const HISTORY_DIRECTORIES = [
|
|
14
|
+
'variants',
|
|
15
|
+
'variant-context',
|
|
16
|
+
'store.git',
|
|
17
|
+
];
|
|
18
|
+
const SNAPSHOT_TOP_LEVEL = new Set([
|
|
19
|
+
'HEAD',
|
|
20
|
+
'config',
|
|
21
|
+
'objects',
|
|
22
|
+
'refs',
|
|
23
|
+
'packed-refs',
|
|
24
|
+
]);
|
|
25
|
+
const SafeId = zod_1.z.string().regex(/^[A-Za-z0-9_-]+$/);
|
|
26
|
+
const Pointer = zod_1.z
|
|
27
|
+
.object({ ref: zod_1.z.string(), commitSha: zod_1.z.string().regex(/^[a-f0-9]{40}$/) })
|
|
28
|
+
.passthrough();
|
|
29
|
+
const ManifestSchema = zod_1.z
|
|
30
|
+
.object({
|
|
31
|
+
schemaVersion: zod_1.z.literal(2),
|
|
32
|
+
sessionId: SafeId,
|
|
33
|
+
variantId: SafeId,
|
|
34
|
+
label: zod_1.z.string(),
|
|
35
|
+
brief: zod_1.z.string(),
|
|
36
|
+
sessionPrompt: zod_1.z.string(),
|
|
37
|
+
projectKind: zod_1.z.enum(['existing', 'fresh']),
|
|
38
|
+
status: zod_1.z.enum([
|
|
39
|
+
'completed',
|
|
40
|
+
'committed',
|
|
41
|
+
'rejected',
|
|
42
|
+
'cancelled',
|
|
43
|
+
'removed',
|
|
44
|
+
]),
|
|
45
|
+
createdAt: zod_1.z.string(),
|
|
46
|
+
statusChangedAt: zod_1.z.string(),
|
|
47
|
+
changedFilesCount: zod_1.z.number().int().nonnegative(),
|
|
48
|
+
artifact: zod_1.z.object({ kind: zod_1.z.enum(['diff', 'project']) }).passthrough(),
|
|
49
|
+
preview: zod_1.z
|
|
50
|
+
.object({ kind: zod_1.z.enum(['static', 'dev-server', 'none']) })
|
|
51
|
+
.passthrough(),
|
|
52
|
+
tree: Pointer.extend({
|
|
53
|
+
treeSha: zod_1.z.string().regex(/^[a-f0-9]{40}$/),
|
|
54
|
+
}).optional(),
|
|
55
|
+
base: Pointer.optional(),
|
|
56
|
+
parent: Pointer.optional(),
|
|
57
|
+
})
|
|
58
|
+
.passthrough();
|
|
59
|
+
/** Enumerates only durable source files, rejecting links and borrowed object stores. */
|
|
60
|
+
const sourceFiles = async (dataDirectory) => {
|
|
61
|
+
const files = [];
|
|
62
|
+
const walk = async (relative) => {
|
|
63
|
+
const absolute = path_1.default.join(dataDirectory, relative);
|
|
64
|
+
const stat = await promises_1.default.lstat(absolute);
|
|
65
|
+
if (stat.isSymbolicLink())
|
|
66
|
+
throw new Error(`Cannot import symbolic link: ${relative}`);
|
|
67
|
+
if (relative === path_1.default.join('store.git', 'objects', 'info', 'alternates'))
|
|
68
|
+
throw new Error('Snapshot store depends on an external object database');
|
|
69
|
+
if (stat.isFile()) {
|
|
70
|
+
files.push(relative);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (!stat.isDirectory())
|
|
74
|
+
throw new Error(`Cannot import non-regular file: ${relative}`);
|
|
75
|
+
for (const name of (await promises_1.default.readdir(absolute)).sort()) {
|
|
76
|
+
if (relative === 'store.git' && !SNAPSHOT_TOP_LEVEL.has(name))
|
|
77
|
+
continue;
|
|
78
|
+
if (name.endsWith('.lock'))
|
|
79
|
+
continue;
|
|
80
|
+
await walk(path_1.default.join(relative, name));
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
for (const name of HISTORY_DIRECTORIES) {
|
|
84
|
+
if (fs_1.default.existsSync(path_1.default.join(dataDirectory, name)))
|
|
85
|
+
await walk(name);
|
|
86
|
+
}
|
|
87
|
+
return files.sort();
|
|
88
|
+
};
|
|
89
|
+
exports.sourceFiles = sourceFiles;
|
|
90
|
+
/** Hashes source content rather than volatile index/WAL bytes for divergence detection. */
|
|
91
|
+
const sourceFingerprint = async (dataDirectory) => {
|
|
92
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
93
|
+
for (const relative of await (0, exports.sourceFiles)(dataDirectory)) {
|
|
94
|
+
hash.update(relative);
|
|
95
|
+
hash.update('\0');
|
|
96
|
+
const fileHash = (0, crypto_1.createHash)('sha256');
|
|
97
|
+
for await (const chunk of fs_1.default.createReadStream(path_1.default.join(dataDirectory, relative)))
|
|
98
|
+
fileHash.update(chunk);
|
|
99
|
+
hash.update(fileHash.digest());
|
|
100
|
+
}
|
|
101
|
+
hash.update((await (0, sourcePresentation_1.readSourcePresentation)(dataDirectory)) ?? '');
|
|
102
|
+
return hash.digest('hex');
|
|
103
|
+
};
|
|
104
|
+
exports.sourceFingerprint = sourceFingerprint;
|
|
105
|
+
/** Copies durable bytes into staging without modifying or linking source files. */
|
|
106
|
+
const copySourceFiles = async (source, destination) => {
|
|
107
|
+
for (const relative of await (0, exports.sourceFiles)(source)) {
|
|
108
|
+
const target = path_1.default.join(destination, relative);
|
|
109
|
+
await promises_1.default.mkdir(path_1.default.dirname(target), { recursive: true });
|
|
110
|
+
await promises_1.default.copyFile(path_1.default.join(source, relative), target);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
exports.copySourceFiles = copySourceFiles;
|
|
114
|
+
/** Reads supported persisted manifests and checks that path and metadata identities agree. */
|
|
115
|
+
const readSourceManifests = async (dataDirectory) => {
|
|
116
|
+
const manifests = [];
|
|
117
|
+
for (const relative of await (0, exports.sourceFiles)(dataDirectory)) {
|
|
118
|
+
const parts = relative.split(path_1.default.sep);
|
|
119
|
+
if (parts[0] !== 'variants' ||
|
|
120
|
+
parts.length !== 4 ||
|
|
121
|
+
parts[3] !== 'manifest.json')
|
|
122
|
+
continue;
|
|
123
|
+
if (parts[2].includes('.tmp-'))
|
|
124
|
+
continue;
|
|
125
|
+
const raw = JSON.parse(await promises_1.default.readFile(path_1.default.join(dataDirectory, relative), 'utf8'));
|
|
126
|
+
if (typeof raw !== 'object' ||
|
|
127
|
+
!raw ||
|
|
128
|
+
!('schemaVersion' in raw) ||
|
|
129
|
+
raw.schemaVersion !== 2)
|
|
130
|
+
throw new Error(`Unsupported history schema in ${relative}`);
|
|
131
|
+
const parsed = ManifestSchema.parse(raw);
|
|
132
|
+
if (parsed.sessionId !== parts[1] || parsed.variantId !== parts[2])
|
|
133
|
+
throw new Error(`History identity mismatch in ${relative}`);
|
|
134
|
+
manifests.push(parsed);
|
|
135
|
+
}
|
|
136
|
+
return manifests;
|
|
137
|
+
};
|
|
138
|
+
exports.readSourceManifests = readSourceManifests;
|
|
139
|
+
/** Resolves artifact paths within their owner and verifies regular files exist. */
|
|
140
|
+
const verifyArtifactFile = async (root, relative) => {
|
|
141
|
+
const absolute = path_1.default.resolve(root, relative);
|
|
142
|
+
if (!absolute.startsWith(path_1.default.resolve(root) + path_1.default.sep))
|
|
143
|
+
throw new Error('Artifact escapes its history directory');
|
|
144
|
+
if (!(await promises_1.default.stat(absolute)).isFile())
|
|
145
|
+
throw new Error(`Missing artifact: ${relative}`);
|
|
146
|
+
};
|
|
147
|
+
exports.verifyArtifactFile = verifyArtifactFile;
|
|
148
|
+
/** Relocates managed reference paths while preserving external workspace references. */
|
|
149
|
+
const relocateContext = async (args) => {
|
|
150
|
+
const sourceContext = path_1.default.join(args.sourceDirectory, 'variant-context');
|
|
151
|
+
const canonicalContext = fs_1.default.existsSync(sourceContext)
|
|
152
|
+
? fs_1.default.realpathSync(sourceContext)
|
|
153
|
+
: sourceContext;
|
|
154
|
+
const destinationContext = path_1.default.join(args.bundleDirectory, 'variant-context');
|
|
155
|
+
const relocate = (value) => {
|
|
156
|
+
if (typeof value === 'string' && path_1.default.isAbsolute(value)) {
|
|
157
|
+
let canonical = value;
|
|
158
|
+
try {
|
|
159
|
+
canonical = fs_1.default.realpathSync(value);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
/* Unavailable external references retain their provenance. */
|
|
163
|
+
}
|
|
164
|
+
if (canonical === canonicalContext ||
|
|
165
|
+
canonical.startsWith(canonicalContext + path_1.default.sep))
|
|
166
|
+
return path_1.default.join(destinationContext, path_1.default.relative(canonicalContext, canonical));
|
|
167
|
+
}
|
|
168
|
+
if (Array.isArray(value))
|
|
169
|
+
return value.map(relocate);
|
|
170
|
+
if (value && typeof value === 'object')
|
|
171
|
+
return Object.fromEntries(Object.entries(value).map(([key, nested]) => [key, relocate(nested)]));
|
|
172
|
+
return value;
|
|
173
|
+
};
|
|
174
|
+
for (const relative of await (0, exports.sourceFiles)(args.sourceDirectory)) {
|
|
175
|
+
if (!relative.startsWith('variant-context' + path_1.default.sep) ||
|
|
176
|
+
!relative.endsWith(path_1.default.sep + 'context.json'))
|
|
177
|
+
continue;
|
|
178
|
+
const filename = path_1.default.join(args.stageDirectory, relative);
|
|
179
|
+
const document = JSON.parse(await promises_1.default.readFile(filename, 'utf8'));
|
|
180
|
+
await promises_1.default.writeFile(filename, JSON.stringify(relocate(document), null, 2) + '\n');
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
exports.relocateContext = relocateContext;
|
|
184
|
+
//# sourceMappingURL=importFiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"importFiles.js","sourceRoot":"","sources":["../../src/library/importFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-bridge.d.ts","sourceRoot":"","sources":["../../src/proxy-middleware/preview-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"preview-bridge.d.ts","sourceRoot":"","sources":["../../src/proxy-middleware/preview-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAG5C,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,eAAO,MAAM,sBAAsB,yBAAyB,CAAC;AAE7D,KAAK,2BAA2B,GAAG;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACjC,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA4RF,eAAO,MAAM,yBAAyB,GACpC,UAAS,6BAAkC,KAC1C,MAKF,CAAC;AAEF,KAAK,uBAAuB,GAAG;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAUF,eAAO,MAAM,4BAA4B,GACvC,KAAK,MAAM,EACX,iBAAiB,uBAAuB,KACvC,MAkCF,CAAC;AAKF,qFAAqF;AACrF,eAAO,MAAM,yBAAyB,GAAI,kCAIvC,2BAA2B,KAAG,OAWhC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,mBAAmB,GAC9B,MAAM,MAAM,EACZ,UAAS,6BAAkC,KAC1C,MAMF,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,KAAK,eAAe,KAAG,OAEa,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isHtmlDocumentRequest = exports.injectPreviewBridge = exports.shouldInjectPreviewBridge = exports.allowPreviewBridgeNonceInCsp = exports.createPreviewBridgeScript = exports.PREVIEW_BRIDGE_CHANNEL = exports.PREVIEW_BRIDGE_SCRIPT_ID = void 0;
|
|
4
|
+
const htmlDocument_1 = require("../utils/htmlDocument");
|
|
4
5
|
exports.PREVIEW_BRIDGE_SCRIPT_ID = 'rivet-preview-bridge';
|
|
5
6
|
exports.PREVIEW_BRIDGE_CHANNEL = 'rivet-preview-bridge';
|
|
6
7
|
const MAX_SIBLING_CONTEXT_COUNT = 6;
|
|
@@ -334,22 +335,11 @@ const shouldInjectPreviewBridge = ({ method, accept, contentType, }) => {
|
|
|
334
335
|
exports.shouldInjectPreviewBridge = shouldInjectPreviewBridge;
|
|
335
336
|
/** Adds the isolated-preview bridge to a proxied HTML document. */
|
|
336
337
|
const injectPreviewBridge = (html, options = {}) => {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
if (headMatch?.index !== undefined) {
|
|
343
|
-
const insertAt = headMatch.index + headMatch[0].length;
|
|
344
|
-
return `${html.slice(0, insertAt)}${script}${html.slice(insertAt)}`;
|
|
345
|
-
}
|
|
346
|
-
if (html.includes('</head>')) {
|
|
347
|
-
return html.replace('</head>', `${script}</head>`);
|
|
348
|
-
}
|
|
349
|
-
if (html.includes('</body>')) {
|
|
350
|
-
return html.replace('</body>', `${script}</body>`);
|
|
351
|
-
}
|
|
352
|
-
return `${script}${html}`;
|
|
338
|
+
return (0, htmlDocument_1.insertHtmlHeadElement)(html, {
|
|
339
|
+
tagName: 'script',
|
|
340
|
+
id: exports.PREVIEW_BRIDGE_SCRIPT_ID,
|
|
341
|
+
markup: (0, exports.createPreviewBridgeScript)(options),
|
|
342
|
+
});
|
|
353
343
|
};
|
|
354
344
|
exports.injectPreviewBridge = injectPreviewBridge;
|
|
355
345
|
const isHtmlDocumentRequest = (req) => req.method === 'GET' &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-bridge.js","sourceRoot":"","sources":["../../src/proxy-middleware/preview-bridge.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"preview-bridge.js","sourceRoot":"","sources":["../../src/proxy-middleware/preview-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TelemetryService } from '../services/TelemetryService';
|
|
2
|
+
/** Serves machine account state and stores or clears browser sign-in credentials. */
|
|
3
|
+
export declare const createAccountRouter: (telemetry?: TelemetryService) => import("express-serve-static-core").Router;
|
|
4
|
+
//# sourceMappingURL=account.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMrE,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,GAAI,YAAY,gBAAgB,+CA2C/D,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAccountRouter = void 0;
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
const ConfigManager_1 = require("../services/ConfigManager");
|
|
6
|
+
const logger_1 = require("../utils/logger");
|
|
7
|
+
const log = (0, logger_1.createLogger)('AccountRoutes');
|
|
8
|
+
/** Serves machine account state and stores or clears browser sign-in credentials. */
|
|
9
|
+
const createAccountRouter = (telemetry) => {
|
|
10
|
+
const router = (0, express_1.Router)();
|
|
11
|
+
router.get('/account', (_req, res) => {
|
|
12
|
+
const config = (0, ConfigManager_1.getConfigManager)();
|
|
13
|
+
const account = {
|
|
14
|
+
isAuthenticated: config.isAuthenticated(),
|
|
15
|
+
email: config.getEmail(),
|
|
16
|
+
name: config.getDisplayName(),
|
|
17
|
+
userId: config.getUserId(),
|
|
18
|
+
};
|
|
19
|
+
res.json(account);
|
|
20
|
+
});
|
|
21
|
+
// Store auth credentials after browser-based OAuth completion.
|
|
22
|
+
router.post('/auth/store', (req, res) => {
|
|
23
|
+
const { email, token, refreshToken, userId } = req.body ?? {};
|
|
24
|
+
if (!email || !token) {
|
|
25
|
+
return res.status(400).json({ error: 'Missing email or token' });
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
(0, ConfigManager_1.getConfigManager)().setAuth(token, email, refreshToken, userId);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return res
|
|
32
|
+
.status(500)
|
|
33
|
+
.json({ error: 'Failed to store auth credentials' });
|
|
34
|
+
}
|
|
35
|
+
telemetry?.identifyUser();
|
|
36
|
+
log.info(`Stored auth for ${email} via browser OAuth`);
|
|
37
|
+
res.json({ success: true });
|
|
38
|
+
});
|
|
39
|
+
router.post('/auth/logout', (_req, res) => {
|
|
40
|
+
try {
|
|
41
|
+
(0, ConfigManager_1.getConfigManager)().clearAuth();
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
log.warn('Logout failed', error);
|
|
45
|
+
return res.status(500).json({ error: 'Failed to log out' });
|
|
46
|
+
}
|
|
47
|
+
log.info('Cleared auth via logout');
|
|
48
|
+
res.json({ success: true });
|
|
49
|
+
});
|
|
50
|
+
return router;
|
|
51
|
+
};
|
|
52
|
+
exports.createAccountRouter = createAccountRouter;
|
|
53
|
+
//# sourceMappingURL=account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/routes/account.ts"],"names":[],"mappings":";;;AAAA,qCAAiC;AACjC,6DAA6D;AAG7D,4CAA+C;AAE/C,MAAM,GAAG,GAAG,IAAA,qBAAY,EAAC,eAAe,CAAC,CAAC;AAE1C,qFAAqF;AAC9E,MAAM,mBAAmB,GAAG,CAAC,SAA4B,EAAE,EAAE;IAClE,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;IACxB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,IAAA,gCAAgB,GAAE,CAAC;QAClC,MAAM,OAAO,GAAY;YACvB,eAAe,EAAE,MAAM,CAAC,eAAe,EAAE;YACzC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;YACxB,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE;YAC7B,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;SAC3B,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,+DAA+D;IAC/D,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC;YACH,IAAA,gCAAgB,GAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG;iBACP,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,SAAS,EAAE,YAAY,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,mBAAmB,KAAK,oBAAoB,CAAC,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,IAAA,gCAAgB,GAAE,CAAC,SAAS,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;YACjC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACpC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA3CW,QAAA,mBAAmB,uBA2C9B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export { nestedFreshSessionWorkdirs } from '../services/historyRoots';
|
|
1
2
|
import { Router } from 'express';
|
|
2
3
|
import { type AgentVariantsOrchestrator } from '../agent-variants';
|
|
3
4
|
import type { ActiveLeaseMetadata, SessionBridgeService, WatcherLiveness } from '../services/SessionBridgeService';
|
|
@@ -17,20 +18,8 @@ import { type InlineStartTracker } from './inlineStartTracker';
|
|
|
17
18
|
export type VariantPreviewBridgeOptions = {
|
|
18
19
|
isEnabled: boolean;
|
|
19
20
|
expectedParentOrigin?: string;
|
|
21
|
+
resolveLibraryOrigin?: () => string | undefined;
|
|
20
22
|
};
|
|
21
|
-
/**
|
|
22
|
-
* Fresh sessions scaffold their workdir at `<root>/.rivet/<slug>/` and persist
|
|
23
|
-
* variant history one level deeper (`<slug>/.rivet/variants`, plus the
|
|
24
|
-
* content-addressed `<slug>/.rivet/store.git`). `resolveHistoryProjectPaths`
|
|
25
|
-
* otherwise only walks UP the tree and trusts the live in-memory session's
|
|
26
|
-
* `workspacePath` — so after a Rivet restart, reopening the repo root can't find
|
|
27
|
-
* those nested workdirs and the panel shows zero past directions even though the
|
|
28
|
-
* files are intact. Scan one level of `<projectPath>/.rivet/*` for the tell-tale
|
|
29
|
-
* history markers to rediscover them. Scoped to a single level and gated on the
|
|
30
|
-
* marker so scratch dirs (`.rivet-preview-*`, `mcp-bridge`, a bare `variants`
|
|
31
|
-
* dir) are never mistaken for session workdirs.
|
|
32
|
-
*/
|
|
33
|
-
export declare const nestedFreshSessionWorkdirs: (projectPath: string) => string[];
|
|
34
23
|
/**
|
|
35
24
|
* Stamp the live {@link WatcherLiveness} onto a variants snapshot so the UI can
|
|
36
25
|
* detect a stale host-agent watch loop off real queue/waiter state. Applied to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentVariants.d.ts","sourceRoot":"","sources":["../../src/routes/agentVariants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agentVariants.d.ts","sourceRoot":"","sources":["../../src/routes/agentVariants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAGtE,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAG9D,OAAO,EAGL,KAAK,yBAAyB,EAC/B,MAAM,mBAAmB,CAAC;AAiB3B,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,OAAO,EACL,qBAAqB,EAKtB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAEL,sBAAsB,EAEvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,oBAAoB,EACrB,MAAM,kCAAkC,CAAC;AAK1C,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,sBAAsB,CAAC;AAM9B;;;;;;GAMG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;CACjD,CAAC;AA0lBF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,GAC/B,UAAU,OAAO,EACjB,UAAU,eAAe,GAAG,IAAI,EAChC,4BAA4B,MAAM,EAClC,eAAc,mBAAmB,EAAO,KACvC,OAiBF,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,cAAc,yBAAyB,EACvC,SAAS,oBAAoB,EAC7B,YAAY,gBAAgB,EAC5B,yBAAyB,qBAAqB,EAC9C,wBAAwB,sBAAsB,EAC9C,oBAAoB,IAAI,CACtB,iBAAiB,EACjB,sBAAsB,GAAG,0BAA0B,GAAG,kBAAkB,CACzE,EACD,wBAAwB,oBAAoB,EAC5C,gBAAgB,2BAA2B,EAC3C,6BAA6B,kBAAkB,KAC9C,MAghEF,CAAC"}
|