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.
Files changed (279) hide show
  1. package/README.md +8 -2
  2. package/README.npm.md +8 -2
  3. package/bin/rivet.js +15 -7
  4. package/dist/agent-variants/variantContext.d.ts +1 -0
  5. package/dist/agent-variants/variantContext.d.ts.map +1 -1
  6. package/dist/agent-variants/variantContext.js +1 -1
  7. package/dist/agent-variants/variantContext.js.map +1 -1
  8. package/dist/cli/commandNames.d.ts +2 -0
  9. package/dist/cli/commandNames.d.ts.map +1 -1
  10. package/dist/cli/commandNames.js +16 -1
  11. package/dist/cli/commandNames.js.map +1 -1
  12. package/dist/cli/commands/libraryOpen.d.ts +10 -0
  13. package/dist/cli/commands/libraryOpen.d.ts.map +1 -0
  14. package/dist/cli/commands/libraryOpen.js +126 -0
  15. package/dist/cli/commands/libraryOpen.js.map +1 -0
  16. package/dist/cli/commands/open.d.ts +39 -0
  17. package/dist/cli/commands/open.d.ts.map +1 -1
  18. package/dist/cli/commands/open.js +35 -21
  19. package/dist/cli/commands/open.js.map +1 -1
  20. package/dist/cli/commands/serve.d.ts.map +1 -1
  21. package/dist/cli/commands/serve.js +33 -0
  22. package/dist/cli/commands/serve.js.map +1 -1
  23. package/dist/cli/router.d.ts.map +1 -1
  24. package/dist/cli/router.js +34 -3
  25. package/dist/cli/router.js.map +1 -1
  26. package/dist/cli/serverHandshake.d.ts +7 -5
  27. package/dist/cli/serverHandshake.d.ts.map +1 -1
  28. package/dist/cli/serverHandshake.js +16 -12
  29. package/dist/cli/serverHandshake.js.map +1 -1
  30. package/dist/install/installationChannel.d.ts +4 -0
  31. package/dist/install/installationChannel.d.ts.map +1 -0
  32. package/dist/install/installationChannel.js +13 -0
  33. package/dist/install/installationChannel.js.map +1 -0
  34. package/dist/library/HubClient.d.ts +12 -0
  35. package/dist/library/HubClient.d.ts.map +1 -0
  36. package/dist/library/HubClient.js +109 -0
  37. package/dist/library/HubClient.js.map +1 -0
  38. package/dist/library/HubServer.d.ts +16 -0
  39. package/dist/library/HubServer.d.ts.map +1 -0
  40. package/dist/library/HubServer.js +95 -0
  41. package/dist/library/HubServer.js.map +1 -0
  42. package/dist/library/StaticPreviewServer.d.ts +7 -0
  43. package/dist/library/StaticPreviewServer.d.ts.map +1 -0
  44. package/dist/library/StaticPreviewServer.js +18 -0
  45. package/dist/library/StaticPreviewServer.js.map +1 -0
  46. package/dist/library/http.d.ts +11 -0
  47. package/dist/library/http.d.ts.map +1 -0
  48. package/dist/library/http.js +31 -0
  49. package/dist/library/http.js.map +1 -0
  50. package/dist/library/importFiles.d.ts +18 -0
  51. package/dist/library/importFiles.d.ts.map +1 -0
  52. package/dist/library/importFiles.js +184 -0
  53. package/dist/library/importFiles.js.map +1 -0
  54. package/dist/proxy-middleware/preview-bridge.d.ts.map +1 -1
  55. package/dist/proxy-middleware/preview-bridge.js +6 -16
  56. package/dist/proxy-middleware/preview-bridge.js.map +1 -1
  57. package/dist/routes/account.d.ts +4 -0
  58. package/dist/routes/account.d.ts.map +1 -0
  59. package/dist/routes/account.js +53 -0
  60. package/dist/routes/account.js.map +1 -0
  61. package/dist/routes/agentVariants.d.ts +2 -13
  62. package/dist/routes/agentVariants.d.ts.map +1 -1
  63. package/dist/routes/agentVariants.js +53 -79
  64. package/dist/routes/agentVariants.js.map +1 -1
  65. package/dist/routes/library/app.d.ts +8 -0
  66. package/dist/routes/library/app.d.ts.map +1 -0
  67. package/dist/routes/library/app.js +26 -0
  68. package/dist/routes/library/app.js.map +1 -0
  69. package/dist/routes/library/index.d.ts +5 -0
  70. package/dist/routes/library/index.d.ts.map +1 -0
  71. package/dist/routes/library/index.js +32 -0
  72. package/dist/routes/library/index.js.map +1 -0
  73. package/dist/routes/library/middleware.d.ts +9 -0
  74. package/dist/routes/library/middleware.d.ts.map +1 -0
  75. package/dist/routes/library/middleware.js +58 -0
  76. package/dist/routes/library/middleware.js.map +1 -0
  77. package/dist/routes/library/navigation.d.ts +5 -0
  78. package/dist/routes/library/navigation.d.ts.map +1 -0
  79. package/dist/routes/library/navigation.js +39 -0
  80. package/dist/routes/library/navigation.js.map +1 -0
  81. package/dist/routes/library/projects.d.ts +5 -0
  82. package/dist/routes/library/projects.d.ts.map +1 -0
  83. package/dist/routes/library/projects.js +42 -0
  84. package/dist/routes/library/projects.js.map +1 -0
  85. package/dist/routes/library/schemas.d.ts +23 -0
  86. package/dist/routes/library/schemas.d.ts.map +1 -0
  87. package/dist/routes/library/schemas.js +10 -0
  88. package/dist/routes/library/schemas.js.map +1 -0
  89. package/dist/routes/library/staticPreview.d.ts +4 -0
  90. package/dist/routes/library/staticPreview.d.ts.map +1 -0
  91. package/dist/routes/library/staticPreview.js +39 -0
  92. package/dist/routes/library/staticPreview.js.map +1 -0
  93. package/dist/routes/library/types.d.ts +22 -0
  94. package/dist/routes/library/types.d.ts.map +1 -0
  95. package/dist/routes/library/types.js +3 -0
  96. package/dist/routes/library/types.js.map +1 -0
  97. package/dist/routes/library/variants.d.ts +5 -0
  98. package/dist/routes/library/variants.d.ts.map +1 -0
  99. package/dist/routes/library/variants.js +35 -0
  100. package/dist/routes/library/variants.js.map +1 -0
  101. package/dist/server.d.ts +2 -0
  102. package/dist/server.d.ts.map +1 -1
  103. package/dist/server.js +18 -30
  104. package/dist/server.js.map +1 -1
  105. package/dist/services/HistoryReplayService.js +1 -1
  106. package/dist/services/HistoryReplayService.js.map +1 -1
  107. package/dist/services/HubDiscovery.d.ts +46 -0
  108. package/dist/services/HubDiscovery.d.ts.map +1 -0
  109. package/dist/services/HubDiscovery.js +58 -0
  110. package/dist/services/HubDiscovery.js.map +1 -0
  111. package/dist/services/HubNavigation.d.ts +36 -0
  112. package/dist/services/HubNavigation.d.ts.map +1 -0
  113. package/dist/services/HubNavigation.js +76 -0
  114. package/dist/services/HubNavigation.js.map +1 -0
  115. package/dist/services/ProjectCardPreviews.d.ts +27 -0
  116. package/dist/services/ProjectCardPreviews.d.ts.map +1 -0
  117. package/dist/services/ProjectCardPreviews.js +112 -0
  118. package/dist/services/ProjectCardPreviews.js.map +1 -0
  119. package/dist/services/ProjectFolderPicker.d.ts +20 -0
  120. package/dist/services/ProjectFolderPicker.d.ts.map +1 -0
  121. package/dist/services/ProjectFolderPicker.js +174 -0
  122. package/dist/services/ProjectFolderPicker.js.map +1 -0
  123. package/dist/services/ProjectImport.d.ts +13 -0
  124. package/dist/services/ProjectImport.d.ts.map +1 -0
  125. package/dist/services/ProjectImport.js +226 -0
  126. package/dist/services/ProjectImport.js.map +1 -0
  127. package/dist/services/ProjectLibrary.d.ts +74 -0
  128. package/dist/services/ProjectLibrary.d.ts.map +1 -0
  129. package/dist/services/ProjectLibrary.js +261 -0
  130. package/dist/services/ProjectLibrary.js.map +1 -0
  131. package/dist/services/ProjectMetadataStore.d.ts +6 -19
  132. package/dist/services/ProjectMetadataStore.d.ts.map +1 -1
  133. package/dist/services/ProjectMetadataStore.js +29 -147
  134. package/dist/services/ProjectMetadataStore.js.map +1 -1
  135. package/dist/services/ProjectRegistry.d.ts +80 -0
  136. package/dist/services/ProjectRegistry.d.ts.map +1 -0
  137. package/dist/services/ProjectRegistry.js +147 -0
  138. package/dist/services/ProjectRegistry.js.map +1 -0
  139. package/dist/services/ProjectRuntimeService.d.ts +18 -0
  140. package/dist/services/ProjectRuntimeService.d.ts.map +1 -0
  141. package/dist/services/ProjectRuntimeService.js +143 -0
  142. package/dist/services/ProjectRuntimeService.js.map +1 -0
  143. package/dist/services/ProjectScreenshotService.d.ts +15 -0
  144. package/dist/services/ProjectScreenshotService.d.ts.map +1 -0
  145. package/dist/services/ProjectScreenshotService.js +90 -0
  146. package/dist/services/ProjectScreenshotService.js.map +1 -0
  147. package/dist/services/ProjectStorage.d.ts +20 -0
  148. package/dist/services/ProjectStorage.d.ts.map +1 -0
  149. package/dist/services/ProjectStorage.js +41 -0
  150. package/dist/services/ProjectStorage.js.map +1 -0
  151. package/dist/services/StaticLibraryPreviews.d.ts +21 -0
  152. package/dist/services/StaticLibraryPreviews.d.ts.map +1 -0
  153. package/dist/services/StaticLibraryPreviews.js +61 -0
  154. package/dist/services/StaticLibraryPreviews.js.map +1 -0
  155. package/dist/services/TelemetryService.d.ts +7 -0
  156. package/dist/services/TelemetryService.d.ts.map +1 -1
  157. package/dist/services/TelemetryService.js +7 -1
  158. package/dist/services/TelemetryService.js.map +1 -1
  159. package/dist/services/TreeStore.d.ts +8 -3
  160. package/dist/services/TreeStore.d.ts.map +1 -1
  161. package/dist/services/TreeStore.js +39 -18
  162. package/dist/services/TreeStore.js.map +1 -1
  163. package/dist/services/VariantGenerationService.d.ts +5 -0
  164. package/dist/services/VariantGenerationService.d.ts.map +1 -1
  165. package/dist/services/VariantGenerationService.js +13 -1
  166. package/dist/services/VariantGenerationService.js.map +1 -1
  167. package/dist/services/VariantHistoryService.d.ts +18 -162
  168. package/dist/services/VariantHistoryService.d.ts.map +1 -1
  169. package/dist/services/VariantHistoryService.js +187 -45
  170. package/dist/services/VariantHistoryService.js.map +1 -1
  171. package/dist/services/VariantRunService.d.ts +3 -0
  172. package/dist/services/VariantRunService.d.ts.map +1 -1
  173. package/dist/services/VariantRunService.js +2 -0
  174. package/dist/services/VariantRunService.js.map +1 -1
  175. package/dist/services/VariantsRuntime.d.ts +4 -0
  176. package/dist/services/VariantsRuntime.d.ts.map +1 -1
  177. package/dist/services/VariantsRuntime.js +6 -1
  178. package/dist/services/VariantsRuntime.js.map +1 -1
  179. package/dist/services/createAgentVariantsOrchestrator.d.ts +2 -0
  180. package/dist/services/createAgentVariantsOrchestrator.d.ts.map +1 -1
  181. package/dist/services/createAgentVariantsOrchestrator.js +1 -0
  182. package/dist/services/createAgentVariantsOrchestrator.js.map +1 -1
  183. package/dist/services/historyRoots.d.ts +14 -0
  184. package/dist/services/historyRoots.d.ts.map +1 -0
  185. package/dist/services/historyRoots.js +44 -0
  186. package/dist/services/historyRoots.js.map +1 -0
  187. package/dist/services/libraryErrors.d.ts +7 -0
  188. package/dist/services/libraryErrors.d.ts.map +1 -0
  189. package/dist/services/libraryErrors.js +14 -0
  190. package/dist/services/libraryErrors.js.map +1 -0
  191. package/dist/storage/library/BundleMetadataStore.d.ts +53 -0
  192. package/dist/storage/library/BundleMetadataStore.d.ts.map +1 -0
  193. package/dist/storage/library/BundleMetadataStore.js +317 -0
  194. package/dist/storage/library/BundleMetadataStore.js.map +1 -0
  195. package/dist/storage/library/CoordinatorRecords.d.ts +25 -0
  196. package/dist/storage/library/CoordinatorRecords.d.ts.map +1 -0
  197. package/dist/storage/library/CoordinatorRecords.js +84 -0
  198. package/dist/storage/library/CoordinatorRecords.js.map +1 -0
  199. package/dist/storage/library/ProjectPreviewCache.d.ts +34 -0
  200. package/dist/storage/library/ProjectPreviewCache.d.ts.map +1 -0
  201. package/dist/storage/library/ProjectPreviewCache.js +62 -0
  202. package/dist/storage/library/ProjectPreviewCache.js.map +1 -0
  203. package/dist/storage/library/ProjectRecords.d.ts +64 -0
  204. package/dist/storage/library/ProjectRecords.d.ts.map +1 -0
  205. package/dist/storage/library/ProjectRecords.js +139 -0
  206. package/dist/storage/library/ProjectRecords.js.map +1 -0
  207. package/dist/storage/library/database.d.ts +13 -0
  208. package/dist/storage/library/database.d.ts.map +1 -0
  209. package/dist/storage/library/database.js +106 -0
  210. package/dist/storage/library/database.js.map +1 -0
  211. package/dist/storage/library/migrations.d.ts +5 -0
  212. package/dist/storage/library/migrations.d.ts.map +1 -0
  213. package/dist/storage/library/migrations.js +61 -0
  214. package/dist/storage/library/migrations.js.map +1 -0
  215. package/dist/storage/library/schema/bundle.d.ts +734 -0
  216. package/dist/storage/library/schema/bundle.d.ts.map +1 -0
  217. package/dist/storage/library/schema/bundle.js +79 -0
  218. package/dist/storage/library/schema/bundle.js.map +1 -0
  219. package/dist/storage/library/schema/coordinator.d.ts +72 -0
  220. package/dist/storage/library/schema/coordinator.d.ts.map +1 -0
  221. package/dist/storage/library/schema/coordinator.js +12 -0
  222. package/dist/storage/library/schema/coordinator.js.map +1 -0
  223. package/dist/storage/library/schema/registry.d.ts +198 -0
  224. package/dist/storage/library/schema/registry.d.ts.map +1 -0
  225. package/dist/storage/library/schema/registry.js +32 -0
  226. package/dist/storage/library/schema/registry.js.map +1 -0
  227. package/dist/storage/library/sourcePresentation.d.ts +3 -0
  228. package/dist/storage/library/sourcePresentation.d.ts.map +1 -0
  229. package/dist/storage/library/sourcePresentation.js +70 -0
  230. package/dist/storage/library/sourcePresentation.js.map +1 -0
  231. package/dist/storage/project-metadata/ProjectMetadataRecords.d.ts +41 -0
  232. package/dist/storage/project-metadata/ProjectMetadataRecords.d.ts.map +1 -0
  233. package/dist/storage/project-metadata/ProjectMetadataRecords.js +120 -0
  234. package/dist/storage/project-metadata/ProjectMetadataRecords.js.map +1 -0
  235. package/dist/storage/project-metadata/database.d.ts +12 -0
  236. package/dist/storage/project-metadata/database.d.ts.map +1 -0
  237. package/dist/storage/project-metadata/database.js +79 -0
  238. package/dist/storage/project-metadata/database.js.map +1 -0
  239. package/dist/{services/projectMetadataMigrations.d.ts → storage/project-metadata/migrations.d.ts} +1 -1
  240. package/dist/storage/project-metadata/migrations.d.ts.map +1 -0
  241. package/dist/{services/projectMetadataMigrations.js → storage/project-metadata/migrations.js} +1 -1
  242. package/dist/storage/project-metadata/migrations.js.map +1 -0
  243. package/dist/storage/project-metadata/schema.d.ts +288 -0
  244. package/dist/storage/project-metadata/schema.d.ts.map +1 -0
  245. package/dist/storage/project-metadata/schema.js +35 -0
  246. package/dist/storage/project-metadata/schema.js.map +1 -0
  247. package/dist/types/account.d.ts +8 -0
  248. package/dist/types/account.d.ts.map +1 -0
  249. package/dist/types/account.js +3 -0
  250. package/dist/types/account.js.map +1 -0
  251. package/dist/types/project-library.d.ts +28 -0
  252. package/dist/types/project-library.d.ts.map +1 -0
  253. package/dist/types/project-library.js +3 -0
  254. package/dist/types/project-library.js.map +1 -0
  255. package/dist/types/variant-history.d.ts +173 -0
  256. package/dist/types/variant-history.d.ts.map +1 -0
  257. package/dist/types/variant-history.js +3 -0
  258. package/dist/types/variant-history.js.map +1 -0
  259. package/dist/utils/htmlDocument.d.ts +13 -0
  260. package/dist/utils/htmlDocument.d.ts.map +1 -0
  261. package/dist/utils/htmlDocument.js +42 -0
  262. package/dist/utils/htmlDocument.js.map +1 -0
  263. package/dist/utils/windowPlacement.d.ts +20 -0
  264. package/dist/utils/windowPlacement.d.ts.map +1 -0
  265. package/dist/utils/windowPlacement.js +20 -0
  266. package/dist/utils/windowPlacement.js.map +1 -0
  267. package/package.json +10 -3
  268. package/scripts/verify-node-version.cjs +9 -6
  269. package/src/ui/dist/assets/LibraryApp-B2MZyxIp.js +16 -0
  270. package/src/ui/dist/assets/main-1IMq5Huu.css +1 -0
  271. package/src/ui/dist/assets/main-BId3Sa7r.js +438 -0
  272. package/src/ui/dist/favicon-16.png +0 -0
  273. package/src/ui/dist/favicon-32.png +0 -0
  274. package/src/ui/dist/favicon.ico +0 -0
  275. package/src/ui/dist/index.html +2 -2
  276. package/dist/services/projectMetadataMigrations.d.ts.map +0 -1
  277. package/dist/services/projectMetadataMigrations.js.map +0 -1
  278. package/src/ui/dist/assets/main-BjwDfDy8.js +0 -423
  279. package/src/ui/dist/assets/main-Ct1aZend.css +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectMetadataStore.js","sourceRoot":"","sources":["../../src/services/ProjectMetadataStore.ts"],"names":[],"mappings":"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"}
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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"}
@@ -0,0 +1,18 @@
1
+ import type { ProjectRegistry } from './ProjectRegistry';
2
+ interface ProjectRuntime {
3
+ editorUrl: string;
4
+ }
5
+ /** Starts or attaches the requested project's runtime and verifies its identity. */
6
+ export declare class ProjectRuntimeService {
7
+ private readonly registry;
8
+ private readonly activations;
9
+ constructor(registry: ProjectRegistry);
10
+ /** Resolves only an already-running, identity-verified Original preview; never starts a runtime. */
11
+ originalPreviewUrl(projectId: string): Promise<string | null>;
12
+ /** Shares one in-flight activation per project without changing other runtime targets. */
13
+ activate(projectId: string): Promise<ProjectRuntime>;
14
+ /** Opens the selected workspace and checks its process, path, and installation channel. */
15
+ private open;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=ProjectRuntimeService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectRuntimeService.d.ts","sourceRoot":"","sources":["../../src/services/ProjectRuntimeService.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,mBAAmB,CAAC;AAI5E,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,oFAAoF;AACpF,qBAAa,qBAAqB;IAEpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IADrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;gBAC7C,QAAQ,EAAE,eAAe;IAEtD,oGAAoG;IAC9F,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmCnE,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAiBpD,2FAA2F;YAC7E,IAAI;CAyCnB"}
@@ -0,0 +1,143 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.ProjectRuntimeService = void 0;
40
+ const fs_1 = __importDefault(require("fs"));
41
+ const zod_1 = require("zod");
42
+ const installationChannel_1 = require("../install/installationChannel");
43
+ const libraryErrors_1 = require("./libraryErrors");
44
+ const serverHandshake_1 = require("../cli/serverHandshake");
45
+ const HEALTH_TIMEOUT_MS = 2_000;
46
+ /** Starts or attaches the requested project's runtime and verifies its identity. */
47
+ class ProjectRuntimeService {
48
+ registry;
49
+ activations = new Map();
50
+ constructor(registry) {
51
+ this.registry = registry;
52
+ }
53
+ /** Resolves only an already-running, identity-verified Original preview; never starts a runtime. */
54
+ async originalPreviewUrl(projectId) {
55
+ const project = this.registry.get(projectId);
56
+ if (!project.isAvailable)
57
+ return null;
58
+ const handshake = (0, serverHandshake_1.readHandshake)(project.projectPath);
59
+ if (!handshake || !(0, serverHandshake_1.isPidAlive)(handshake.pid))
60
+ return null;
61
+ const origin = `http://127.0.0.1:${handshake.rivetPort}`;
62
+ try {
63
+ const response = await fetch(`${origin}/api/health`, {
64
+ signal: AbortSignal.timeout(HEALTH_TIMEOUT_MS),
65
+ });
66
+ if (!response.ok)
67
+ return null;
68
+ const health = zod_1.z
69
+ .object({
70
+ projectPath: zod_1.z.string(),
71
+ pid: zod_1.z.number().int(),
72
+ channel: zod_1.z.string(),
73
+ originalPreviewPath: zod_1.z
74
+ .enum(['/static/', '/__rivet/preview/base/'])
75
+ .nullish(),
76
+ })
77
+ .parse(await response.json());
78
+ if (health.pid !== handshake.pid ||
79
+ health.channel !== (0, installationChannel_1.installationChannel)() ||
80
+ fs_1.default.realpathSync(health.projectPath) !== project.projectPath ||
81
+ !health.originalPreviewPath)
82
+ return null;
83
+ return new URL(health.originalPreviewPath, origin).toString();
84
+ }
85
+ catch {
86
+ // A stopped or unverified runtime cannot supply an Original preview.
87
+ return null;
88
+ }
89
+ }
90
+ /** Shares one in-flight activation per project without changing other runtime targets. */
91
+ activate(projectId) {
92
+ const project = this.registry.get(projectId);
93
+ if (!project.isAvailable)
94
+ throw new libraryErrors_1.LibraryError('workspace_unavailable', 'Relink this project to its working folder before editing.');
95
+ const pending = this.activations.get(project.id);
96
+ if (pending)
97
+ return pending;
98
+ const activation = this.open(project);
99
+ this.activations.set(project.id, activation);
100
+ void activation
101
+ .finally(() => this.activations.delete(project.id))
102
+ .catch(() => { });
103
+ return activation;
104
+ }
105
+ /** Opens the selected workspace and checks its process, path, and installation channel. */
106
+ async open(project) {
107
+ const { handleOpen } = await Promise.resolve().then(() => __importStar(require('../cli/commands/open')));
108
+ const result = await handleOpen([
109
+ '--project',
110
+ project.projectPath,
111
+ '--no-browser',
112
+ ...(process.env.RIVET_LIBRARY_TELEMETRY === '0'
113
+ ? ['--no-telemetry']
114
+ : []),
115
+ ], { writeProgress: () => { }, writeEnvelope: () => { } });
116
+ if (!result.envelope.ok)
117
+ throw new Error(result.envelope.error.message);
118
+ const data = zod_1.z
119
+ .object({ editorUrl: zod_1.z.string().url() })
120
+ .parse(result.envelope.data);
121
+ const response = await fetch(new URL('/api/health', data.editorUrl), {
122
+ signal: AbortSignal.timeout(HEALTH_TIMEOUT_MS),
123
+ });
124
+ const health = zod_1.z
125
+ .object({
126
+ projectPath: zod_1.z.string(),
127
+ pid: zod_1.z.number().int(),
128
+ channel: zod_1.z.string(),
129
+ })
130
+ .parse(await response.json());
131
+ const { readHandshake } = await Promise.resolve().then(() => __importStar(require('../cli/serverHandshake')));
132
+ const handshake = readHandshake(project.projectPath);
133
+ if (!response.ok ||
134
+ !handshake ||
135
+ health.pid !== handshake.pid ||
136
+ fs_1.default.realpathSync(health.projectPath) !== project.projectPath ||
137
+ health.channel !== (0, installationChannel_1.installationChannel)())
138
+ throw new Error('The project runtime could not verify its identity. Keep current work running and reopen after it finishes.');
139
+ return data;
140
+ }
141
+ }
142
+ exports.ProjectRuntimeService = ProjectRuntimeService;
143
+ //# sourceMappingURL=ProjectRuntimeService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectRuntimeService.js","sourceRoot":"","sources":["../../src/services/ProjectRuntimeService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /** Renders project thumbnails locally in isolated, short-lived browser contexts. */
2
+ export declare class ProjectScreenshotService {
3
+ private pending;
4
+ private browser;
5
+ private isClosed;
6
+ /** Serializes captures so a large library never launches a browser per card at once. */
7
+ capture(url: string): Promise<string>;
8
+ /** Stops the active browser and prevents queued captures during coordinator shutdown. */
9
+ close(): Promise<void>;
10
+ /** Uses an installed browser without downloading software or reading the user's browser profile. */
11
+ private launch;
12
+ /** Captures a fixed viewport after local content, fonts, and images have had time to render. */
13
+ private render;
14
+ }
15
+ //# sourceMappingURL=ProjectScreenshotService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectScreenshotService.d.ts","sourceRoot":"","sources":["../../src/services/ProjectScreenshotService.ts"],"names":[],"mappings":"AAQA,oFAAoF;AACpF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAS;IAEzB,wFAAwF;IACxF,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMrC,yFAAyF;IACnF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,oGAAoG;YACtF,MAAM;IAiBpB,gGAAgG;YAClF,MAAM;CAqCrB"}
@@ -0,0 +1,90 @@
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.ProjectScreenshotService = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const playwright_core_1 = require("playwright-core");
9
+ const VIEWPORT = { width: 1280, height: 800 };
10
+ const CAPTURE_TIMEOUT_MS = 15_000;
11
+ const SETTLE_MS = 500;
12
+ const JPEG_QUALITY = 70;
13
+ /** Renders project thumbnails locally in isolated, short-lived browser contexts. */
14
+ class ProjectScreenshotService {
15
+ pending = Promise.resolve();
16
+ browser = null;
17
+ isClosed = false;
18
+ /** Serializes captures so a large library never launches a browser per card at once. */
19
+ capture(url) {
20
+ const pending = this.pending.then(() => this.render(url));
21
+ this.pending = pending.catch(() => undefined);
22
+ return pending;
23
+ }
24
+ /** Stops the active browser and prevents queued captures during coordinator shutdown. */
25
+ async close() {
26
+ this.isClosed = true;
27
+ await this.browser?.close();
28
+ await this.pending;
29
+ }
30
+ /** Uses an installed browser without downloading software or reading the user's browser profile. */
31
+ async launch() {
32
+ if (fs_1.default.existsSync(playwright_core_1.chromium.executablePath()))
33
+ return playwright_core_1.chromium.launch({ headless: true, timeout: CAPTURE_TIMEOUT_MS });
34
+ for (const channel of ['chrome', 'msedge']) {
35
+ try {
36
+ return await playwright_core_1.chromium.launch({
37
+ channel,
38
+ headless: true,
39
+ timeout: CAPTURE_TIMEOUT_MS,
40
+ });
41
+ }
42
+ catch {
43
+ // Try the next installed browser; absence leaves the card without a thumbnail.
44
+ }
45
+ }
46
+ throw new Error('No installed browser is available for project previews');
47
+ }
48
+ /** Captures a fixed viewport after local content, fonts, and images have had time to render. */
49
+ async render(url) {
50
+ if (this.isClosed)
51
+ throw new Error('Project screenshot service is closed');
52
+ this.browser = await this.launch();
53
+ const browser = this.browser;
54
+ let timeout;
55
+ try {
56
+ if (this.isClosed)
57
+ throw new Error('Project screenshot service is closed');
58
+ const page = await browser.newPage({
59
+ viewport: VIEWPORT,
60
+ deviceScaleFactor: 1,
61
+ reducedMotion: 'reduce',
62
+ serviceWorkers: 'block',
63
+ });
64
+ page.setDefaultTimeout(CAPTURE_TIMEOUT_MS);
65
+ timeout = setTimeout(() => {
66
+ void browser.close();
67
+ }, CAPTURE_TIMEOUT_MS);
68
+ const response = await page.goto(url, { waitUntil: 'load' });
69
+ if (!response?.ok())
70
+ throw new Error('The project preview could not load');
71
+ await page.evaluate(async () => {
72
+ await document.fonts.ready;
73
+ });
74
+ await page.waitForTimeout(SETTLE_MS);
75
+ const bytes = await page.screenshot({
76
+ type: 'jpeg',
77
+ quality: JPEG_QUALITY,
78
+ animations: 'disabled',
79
+ });
80
+ return `data:image/jpeg;base64,${bytes.toString('base64')}`;
81
+ }
82
+ finally {
83
+ clearTimeout(timeout);
84
+ await browser.close();
85
+ this.browser = null;
86
+ }
87
+ }
88
+ }
89
+ exports.ProjectScreenshotService = ProjectScreenshotService;
90
+ //# sourceMappingURL=ProjectScreenshotService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectScreenshotService.js","sourceRoot":"","sources":["../../src/services/ProjectScreenshotService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface ProjectStorageLocation {
2
+ dataDirectory: string;
3
+ cacheDirectory: string;
4
+ }
5
+ interface ProjectStorageAttachment extends ProjectStorageLocation {
6
+ projectPath: string;
7
+ }
8
+ /** Resolves durable data and disposable caches independently of working files. */
9
+ export declare class ProjectStorage {
10
+ private readonly locations;
11
+ constructor(attachments?: readonly ProjectStorageAttachment[]);
12
+ /** Attaches a generated working directory to an explicitly selected data owner. */
13
+ attach({ projectPath, dataDirectory, cacheDirectory, }: ProjectStorageAttachment): void;
14
+ /** Reports whether a working directory has an explicitly attached data owner. */
15
+ isAttached(projectPath: string): boolean;
16
+ /** Returns an attached storage location or the project's own data directory. */
17
+ resolve(projectPath: string): ProjectStorageLocation;
18
+ }
19
+ export {};
20
+ //# sourceMappingURL=ProjectStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectStorage.d.ts","sourceRoot":"","sources":["../../src/services/ProjectStorage.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,wBAAyB,SAAQ,sBAAsB;IAC/D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,kFAAkF;AAClF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsC;gBAEpD,WAAW,GAAE,SAAS,wBAAwB,EAAO;IAYjE,mFAAmF;IACnF,MAAM,CAAC,EACL,WAAW,EACX,aAAa,EACb,cAAc,GACf,EAAE,wBAAwB,GAAG,IAAI;IAOlC,iFAAiF;IACjF,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIxC,gFAAgF;IAChF,OAAO,CAAC,WAAW,EAAE,MAAM,GAAG,sBAAsB;CASrD"}
@@ -0,0 +1,41 @@
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.ProjectStorage = void 0;
7
+ const path_1 = __importDefault(require("path"));
8
+ /** Resolves durable data and disposable caches independently of working files. */
9
+ class ProjectStorage {
10
+ locations;
11
+ constructor(attachments = []) {
12
+ this.locations = new Map(attachments.map(({ projectPath, dataDirectory, cacheDirectory }) => [
13
+ path_1.default.resolve(projectPath),
14
+ {
15
+ dataDirectory: path_1.default.resolve(dataDirectory),
16
+ cacheDirectory: path_1.default.resolve(cacheDirectory),
17
+ },
18
+ ]));
19
+ }
20
+ /** Attaches a generated working directory to an explicitly selected data owner. */
21
+ attach({ projectPath, dataDirectory, cacheDirectory, }) {
22
+ this.locations.set(path_1.default.resolve(projectPath), {
23
+ dataDirectory: path_1.default.resolve(dataDirectory),
24
+ cacheDirectory: path_1.default.resolve(cacheDirectory),
25
+ });
26
+ }
27
+ /** Reports whether a working directory has an explicitly attached data owner. */
28
+ isAttached(projectPath) {
29
+ return this.locations.has(path_1.default.resolve(projectPath));
30
+ }
31
+ /** Returns an attached storage location or the project's own data directory. */
32
+ resolve(projectPath) {
33
+ const root = path_1.default.resolve(projectPath);
34
+ return (this.locations.get(root) ?? {
35
+ dataDirectory: path_1.default.join(root, '.rivet'),
36
+ cacheDirectory: path_1.default.join(root, '.rivet', 'cache'),
37
+ });
38
+ }
39
+ }
40
+ exports.ProjectStorage = ProjectStorage;
41
+ //# sourceMappingURL=ProjectStorage.js.map