rivet-design 0.16.3 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) 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/routes/account.d.ts +4 -0
  55. package/dist/routes/account.d.ts.map +1 -0
  56. package/dist/routes/account.js +53 -0
  57. package/dist/routes/account.js.map +1 -0
  58. package/dist/routes/agentVariants.d.ts +2 -13
  59. package/dist/routes/agentVariants.d.ts.map +1 -1
  60. package/dist/routes/agentVariants.js +13 -45
  61. package/dist/routes/agentVariants.js.map +1 -1
  62. package/dist/routes/library/app.d.ts +8 -0
  63. package/dist/routes/library/app.d.ts.map +1 -0
  64. package/dist/routes/library/app.js +26 -0
  65. package/dist/routes/library/app.js.map +1 -0
  66. package/dist/routes/library/index.d.ts +5 -0
  67. package/dist/routes/library/index.d.ts.map +1 -0
  68. package/dist/routes/library/index.js +32 -0
  69. package/dist/routes/library/index.js.map +1 -0
  70. package/dist/routes/library/middleware.d.ts +9 -0
  71. package/dist/routes/library/middleware.d.ts.map +1 -0
  72. package/dist/routes/library/middleware.js +58 -0
  73. package/dist/routes/library/middleware.js.map +1 -0
  74. package/dist/routes/library/navigation.d.ts +5 -0
  75. package/dist/routes/library/navigation.d.ts.map +1 -0
  76. package/dist/routes/library/navigation.js +39 -0
  77. package/dist/routes/library/navigation.js.map +1 -0
  78. package/dist/routes/library/projects.d.ts +5 -0
  79. package/dist/routes/library/projects.d.ts.map +1 -0
  80. package/dist/routes/library/projects.js +42 -0
  81. package/dist/routes/library/projects.js.map +1 -0
  82. package/dist/routes/library/schemas.d.ts +23 -0
  83. package/dist/routes/library/schemas.d.ts.map +1 -0
  84. package/dist/routes/library/schemas.js +10 -0
  85. package/dist/routes/library/schemas.js.map +1 -0
  86. package/dist/routes/library/staticPreview.d.ts +4 -0
  87. package/dist/routes/library/staticPreview.d.ts.map +1 -0
  88. package/dist/routes/library/staticPreview.js +39 -0
  89. package/dist/routes/library/staticPreview.js.map +1 -0
  90. package/dist/routes/library/types.d.ts +22 -0
  91. package/dist/routes/library/types.d.ts.map +1 -0
  92. package/dist/routes/library/types.js +3 -0
  93. package/dist/routes/library/types.js.map +1 -0
  94. package/dist/routes/library/variants.d.ts +5 -0
  95. package/dist/routes/library/variants.d.ts.map +1 -0
  96. package/dist/routes/library/variants.js +35 -0
  97. package/dist/routes/library/variants.js.map +1 -0
  98. package/dist/server.d.ts +2 -0
  99. package/dist/server.d.ts.map +1 -1
  100. package/dist/server.js +18 -30
  101. package/dist/server.js.map +1 -1
  102. package/dist/services/HistoryReplayService.js +1 -1
  103. package/dist/services/HistoryReplayService.js.map +1 -1
  104. package/dist/services/HubDiscovery.d.ts +46 -0
  105. package/dist/services/HubDiscovery.d.ts.map +1 -0
  106. package/dist/services/HubDiscovery.js +58 -0
  107. package/dist/services/HubDiscovery.js.map +1 -0
  108. package/dist/services/HubNavigation.d.ts +36 -0
  109. package/dist/services/HubNavigation.d.ts.map +1 -0
  110. package/dist/services/HubNavigation.js +76 -0
  111. package/dist/services/HubNavigation.js.map +1 -0
  112. package/dist/services/ProjectCardPreviews.d.ts +27 -0
  113. package/dist/services/ProjectCardPreviews.d.ts.map +1 -0
  114. package/dist/services/ProjectCardPreviews.js +112 -0
  115. package/dist/services/ProjectCardPreviews.js.map +1 -0
  116. package/dist/services/ProjectFolderPicker.d.ts +20 -0
  117. package/dist/services/ProjectFolderPicker.d.ts.map +1 -0
  118. package/dist/services/ProjectFolderPicker.js +174 -0
  119. package/dist/services/ProjectFolderPicker.js.map +1 -0
  120. package/dist/services/ProjectImport.d.ts +13 -0
  121. package/dist/services/ProjectImport.d.ts.map +1 -0
  122. package/dist/services/ProjectImport.js +226 -0
  123. package/dist/services/ProjectImport.js.map +1 -0
  124. package/dist/services/ProjectLibrary.d.ts +74 -0
  125. package/dist/services/ProjectLibrary.d.ts.map +1 -0
  126. package/dist/services/ProjectLibrary.js +261 -0
  127. package/dist/services/ProjectLibrary.js.map +1 -0
  128. package/dist/services/ProjectMetadataStore.d.ts +6 -19
  129. package/dist/services/ProjectMetadataStore.d.ts.map +1 -1
  130. package/dist/services/ProjectMetadataStore.js +29 -147
  131. package/dist/services/ProjectMetadataStore.js.map +1 -1
  132. package/dist/services/ProjectRegistry.d.ts +80 -0
  133. package/dist/services/ProjectRegistry.d.ts.map +1 -0
  134. package/dist/services/ProjectRegistry.js +147 -0
  135. package/dist/services/ProjectRegistry.js.map +1 -0
  136. package/dist/services/ProjectRuntimeService.d.ts +18 -0
  137. package/dist/services/ProjectRuntimeService.d.ts.map +1 -0
  138. package/dist/services/ProjectRuntimeService.js +143 -0
  139. package/dist/services/ProjectRuntimeService.js.map +1 -0
  140. package/dist/services/ProjectScreenshotService.d.ts +15 -0
  141. package/dist/services/ProjectScreenshotService.d.ts.map +1 -0
  142. package/dist/services/ProjectScreenshotService.js +90 -0
  143. package/dist/services/ProjectScreenshotService.js.map +1 -0
  144. package/dist/services/ProjectStorage.d.ts +20 -0
  145. package/dist/services/ProjectStorage.d.ts.map +1 -0
  146. package/dist/services/ProjectStorage.js +41 -0
  147. package/dist/services/ProjectStorage.js.map +1 -0
  148. package/dist/services/StaticLibraryPreviews.d.ts +21 -0
  149. package/dist/services/StaticLibraryPreviews.d.ts.map +1 -0
  150. package/dist/services/StaticLibraryPreviews.js +61 -0
  151. package/dist/services/StaticLibraryPreviews.js.map +1 -0
  152. package/dist/services/TelemetryService.d.ts +7 -0
  153. package/dist/services/TelemetryService.d.ts.map +1 -1
  154. package/dist/services/TelemetryService.js +7 -1
  155. package/dist/services/TelemetryService.js.map +1 -1
  156. package/dist/services/TreeStore.d.ts +8 -3
  157. package/dist/services/TreeStore.d.ts.map +1 -1
  158. package/dist/services/TreeStore.js +39 -18
  159. package/dist/services/TreeStore.js.map +1 -1
  160. package/dist/services/VariantGenerationService.d.ts +5 -0
  161. package/dist/services/VariantGenerationService.d.ts.map +1 -1
  162. package/dist/services/VariantGenerationService.js +13 -1
  163. package/dist/services/VariantGenerationService.js.map +1 -1
  164. package/dist/services/VariantHistoryService.d.ts +17 -162
  165. package/dist/services/VariantHistoryService.d.ts.map +1 -1
  166. package/dist/services/VariantHistoryService.js +186 -45
  167. package/dist/services/VariantHistoryService.js.map +1 -1
  168. package/dist/services/VariantRunService.d.ts +3 -0
  169. package/dist/services/VariantRunService.d.ts.map +1 -1
  170. package/dist/services/VariantRunService.js +2 -0
  171. package/dist/services/VariantRunService.js.map +1 -1
  172. package/dist/services/VariantsRuntime.d.ts +4 -0
  173. package/dist/services/VariantsRuntime.d.ts.map +1 -1
  174. package/dist/services/VariantsRuntime.js +6 -1
  175. package/dist/services/VariantsRuntime.js.map +1 -1
  176. package/dist/services/createAgentVariantsOrchestrator.d.ts +2 -0
  177. package/dist/services/createAgentVariantsOrchestrator.d.ts.map +1 -1
  178. package/dist/services/createAgentVariantsOrchestrator.js +1 -0
  179. package/dist/services/createAgentVariantsOrchestrator.js.map +1 -1
  180. package/dist/services/historyRoots.d.ts +14 -0
  181. package/dist/services/historyRoots.d.ts.map +1 -0
  182. package/dist/services/historyRoots.js +44 -0
  183. package/dist/services/historyRoots.js.map +1 -0
  184. package/dist/services/libraryErrors.d.ts +7 -0
  185. package/dist/services/libraryErrors.d.ts.map +1 -0
  186. package/dist/services/libraryErrors.js +14 -0
  187. package/dist/services/libraryErrors.js.map +1 -0
  188. package/dist/storage/library/BundleMetadataStore.d.ts +53 -0
  189. package/dist/storage/library/BundleMetadataStore.d.ts.map +1 -0
  190. package/dist/storage/library/BundleMetadataStore.js +317 -0
  191. package/dist/storage/library/BundleMetadataStore.js.map +1 -0
  192. package/dist/storage/library/CoordinatorRecords.d.ts +25 -0
  193. package/dist/storage/library/CoordinatorRecords.d.ts.map +1 -0
  194. package/dist/storage/library/CoordinatorRecords.js +84 -0
  195. package/dist/storage/library/CoordinatorRecords.js.map +1 -0
  196. package/dist/storage/library/ProjectPreviewCache.d.ts +34 -0
  197. package/dist/storage/library/ProjectPreviewCache.d.ts.map +1 -0
  198. package/dist/storage/library/ProjectPreviewCache.js +62 -0
  199. package/dist/storage/library/ProjectPreviewCache.js.map +1 -0
  200. package/dist/storage/library/ProjectRecords.d.ts +64 -0
  201. package/dist/storage/library/ProjectRecords.d.ts.map +1 -0
  202. package/dist/storage/library/ProjectRecords.js +139 -0
  203. package/dist/storage/library/ProjectRecords.js.map +1 -0
  204. package/dist/storage/library/database.d.ts +13 -0
  205. package/dist/storage/library/database.d.ts.map +1 -0
  206. package/dist/storage/library/database.js +106 -0
  207. package/dist/storage/library/database.js.map +1 -0
  208. package/dist/storage/library/migrations.d.ts +5 -0
  209. package/dist/storage/library/migrations.d.ts.map +1 -0
  210. package/dist/storage/library/migrations.js +61 -0
  211. package/dist/storage/library/migrations.js.map +1 -0
  212. package/dist/storage/library/schema/bundle.d.ts +734 -0
  213. package/dist/storage/library/schema/bundle.d.ts.map +1 -0
  214. package/dist/storage/library/schema/bundle.js +79 -0
  215. package/dist/storage/library/schema/bundle.js.map +1 -0
  216. package/dist/storage/library/schema/coordinator.d.ts +72 -0
  217. package/dist/storage/library/schema/coordinator.d.ts.map +1 -0
  218. package/dist/storage/library/schema/coordinator.js +12 -0
  219. package/dist/storage/library/schema/coordinator.js.map +1 -0
  220. package/dist/storage/library/schema/registry.d.ts +198 -0
  221. package/dist/storage/library/schema/registry.d.ts.map +1 -0
  222. package/dist/storage/library/schema/registry.js +32 -0
  223. package/dist/storage/library/schema/registry.js.map +1 -0
  224. package/dist/storage/library/sourcePresentation.d.ts +3 -0
  225. package/dist/storage/library/sourcePresentation.d.ts.map +1 -0
  226. package/dist/storage/library/sourcePresentation.js +70 -0
  227. package/dist/storage/library/sourcePresentation.js.map +1 -0
  228. package/dist/storage/project-metadata/ProjectMetadataRecords.d.ts +41 -0
  229. package/dist/storage/project-metadata/ProjectMetadataRecords.d.ts.map +1 -0
  230. package/dist/storage/project-metadata/ProjectMetadataRecords.js +120 -0
  231. package/dist/storage/project-metadata/ProjectMetadataRecords.js.map +1 -0
  232. package/dist/storage/project-metadata/database.d.ts +12 -0
  233. package/dist/storage/project-metadata/database.d.ts.map +1 -0
  234. package/dist/storage/project-metadata/database.js +79 -0
  235. package/dist/storage/project-metadata/database.js.map +1 -0
  236. package/dist/{services/projectMetadataMigrations.d.ts → storage/project-metadata/migrations.d.ts} +1 -1
  237. package/dist/storage/project-metadata/migrations.d.ts.map +1 -0
  238. package/dist/{services/projectMetadataMigrations.js → storage/project-metadata/migrations.js} +1 -1
  239. package/dist/storage/project-metadata/migrations.js.map +1 -0
  240. package/dist/storage/project-metadata/schema.d.ts +288 -0
  241. package/dist/storage/project-metadata/schema.d.ts.map +1 -0
  242. package/dist/storage/project-metadata/schema.js +35 -0
  243. package/dist/storage/project-metadata/schema.js.map +1 -0
  244. package/dist/types/account.d.ts +8 -0
  245. package/dist/types/account.d.ts.map +1 -0
  246. package/dist/types/account.js +3 -0
  247. package/dist/types/account.js.map +1 -0
  248. package/dist/types/project-library.d.ts +28 -0
  249. package/dist/types/project-library.d.ts.map +1 -0
  250. package/dist/types/project-library.js +3 -0
  251. package/dist/types/project-library.js.map +1 -0
  252. package/dist/types/variant-history.d.ts +173 -0
  253. package/dist/types/variant-history.d.ts.map +1 -0
  254. package/dist/types/variant-history.js +3 -0
  255. package/dist/types/variant-history.js.map +1 -0
  256. package/dist/utils/windowPlacement.d.ts +20 -0
  257. package/dist/utils/windowPlacement.d.ts.map +1 -0
  258. package/dist/utils/windowPlacement.js +20 -0
  259. package/dist/utils/windowPlacement.js.map +1 -0
  260. package/package.json +8 -3
  261. package/scripts/verify-node-version.cjs +9 -6
  262. package/src/ui/dist/assets/LibraryApp-B2MZyxIp.js +16 -0
  263. package/src/ui/dist/assets/main-1IMq5Huu.css +1 -0
  264. package/src/ui/dist/assets/main-BId3Sa7r.js +438 -0
  265. package/src/ui/dist/favicon-16.png +0 -0
  266. package/src/ui/dist/favicon-32.png +0 -0
  267. package/src/ui/dist/favicon.ico +0 -0
  268. package/src/ui/dist/index.html +2 -2
  269. package/dist/services/projectMetadataMigrations.d.ts.map +0 -1
  270. package/dist/services/projectMetadataMigrations.js.map +0 -1
  271. package/src/ui/dist/assets/main-C1kowo8p.js +0 -438
  272. package/src/ui/dist/assets/main-Ct1aZend.css +0 -1
@@ -1,16 +1,7 @@
1
- import type { VariantHistoryManifest, VariantHistoryStatus } from './VariantHistoryService';
2
- import { type ProjectMetadataMigration } from './projectMetadataMigrations';
3
- /** A variant row as stored in (or destined for) the projection. `manifest`
4
- * reproduces the on-disk manifest exactly; `hasStaticPreview` is the listing
5
- * affordance captured when the row was projected. */
6
- export interface VariantIndexEntry {
7
- manifest: VariantHistoryManifest;
8
- hasStaticPreview: boolean;
9
- }
10
- export interface VariantIndexEntryInput extends VariantIndexEntry {
11
- /** The manifest file's mtime when projected — freshness-audit metadata. */
12
- manifestMtimeMs: number;
13
- }
1
+ import { ProjectStorage } from './ProjectStorage';
2
+ import type { VariantHistoryManifest, VariantHistoryStatus, VariantIndexEntry, VariantIndexEntryInput } from '../types/variant-history';
3
+ export type { VariantIndexEntry, VariantIndexEntryInput, } from '../types/variant-history';
4
+ import { type ProjectMetadataMigration } from '../storage/project-metadata/migrations';
14
5
  /**
15
6
  * Embedded SQLite metadata projection at `<project>/.rivet/rivet.db`.
16
7
  *
@@ -25,6 +16,7 @@ export interface VariantIndexEntryInput extends VariantIndexEntry {
25
16
  * timeout for cross-process access.
26
17
  */
27
18
  export declare class ProjectMetadataStore {
19
+ private readonly storage;
28
20
  private readonly handles;
29
21
  /** Projects whose index must rebuild before it can be trusted again,
30
22
  * regardless of the durable state row. Recording staleness here cannot
@@ -35,7 +27,7 @@ export declare class ProjectMetadataStore {
35
27
  private readonly migrations;
36
28
  /** `migrations` is injectable so tests can exercise upgrade paths with
37
29
  * synthetic lists; production callers use the default. */
38
- constructor(migrations?: readonly ProjectMetadataMigration[]);
30
+ constructor(migrations?: readonly ProjectMetadataMigration[], storage?: ProjectStorage);
39
31
  databasePath(projectPath: string): string;
40
32
  hasDatabase(projectPath: string): boolean;
41
33
  /**
@@ -109,10 +101,6 @@ export declare class ProjectMetadataStore {
109
101
  writeVariantsUiState(projectPath: string, json: string): Promise<void>;
110
102
  /** Close every open handle. For tests and process shutdown. */
111
103
  closeAll(): void;
112
- private selectEntries;
113
- private upsertRow;
114
- private readState;
115
- private writeState;
116
104
  /**
117
105
  * Open the project's database, creating and migrating it as needed. A
118
106
  * corrupt file is deleted (with its WAL/SHM siblings) and recreated once —
@@ -122,7 +110,6 @@ export declare class ProjectMetadataStore {
122
110
  * @effect Creates `.rivet/` and the database file; caches the open handle.
123
111
  */
124
112
  private openDatabase;
125
- private openAndMigrate;
126
113
  private deleteDatabaseFiles;
127
114
  }
128
115
  //# sourceMappingURL=ProjectMetadataStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectMetadataStore.d.ts","sourceRoot":"","sources":["../../src/services/ProjectMetadataStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAIL,KAAK,wBAAwB,EAC9B,MAAM,6BAA6B,CAAC;AA2BrC;;sDAEsD;AACtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,sBAAsB,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAC;CACzB;AAkBD;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D;;;;iFAI6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IAEjE;+DAC2D;gBAEzD,UAAU,GAAE,SAAS,wBAAwB,EAAgC;IAK/E,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAIzC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIzC;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD;;;;;;OAMG;IACG,yBAAyB,CAAC,IAAI,EAAE;QACpC,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,sBAAsB,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjB;;;;;;;OAOG;IACG,mBAAmB,CAAC,IAAI,EAAE;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,sBAAsB,EAAE,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjB;;kFAE8E;IACxE,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAShE;;;;;;;;OAQG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,YAAY,CAAC,IAAI,EAAE;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,oBAAoB,CAAC;KAC/B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAW1B,cAAc,CAAC,IAAI,EAAE;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAehC;;;;;OAKG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMtE;;;;OAIG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5E,+DAA+D;IAC/D,QAAQ,IAAI,IAAI;IAWhB,OAAO,CAAC,aAAa;IAwBrB,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,UAAU;IAOlB;;;;;;;OAOG;YACW,YAAY;YAqDZ,cAAc;IA4B5B,OAAO,CAAC,mBAAmB;CAY5B"}
1
+ {"version":3,"file":"ProjectMetadataStore.d.ts","sourceRoot":"","sources":["../../src/services/ProjectMetadataStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,wCAAwC,CAAC;AAsBhD;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAoB;IAc7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAb1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE;;;;iFAI6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IAEjE;+DAC2D;gBAEzD,UAAU,GAAE,SAAS,wBAAwB,EAAgC,EAC5D,OAAO,GAAE,cAAqC;IAKjE,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAOzC,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAIzC;;;;;OAKG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD;;;;;;OAMG;IACG,yBAAyB,CAAC,IAAI,EAAE;QACpC,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,sBAAsB,CAAC;QACjC,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,OAAO,CAAC;KAC3B,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjB;;;;;;;OAOG;IACG,mBAAmB,CAAC,IAAI,EAAE;QAC9B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,sBAAsB,EAAE,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjB;;kFAE8E;IACxE,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAShE;;;;;;;;OAQG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,YAAY,CAAC,IAAI,EAAE;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,oBAAoB,CAAC;KAC/B,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAK1B,cAAc,CAAC,IAAI,EAAE;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAKhC;;;;;OAKG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMtE;;;;OAIG;IACG,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5E,+DAA+D;IAC/D,QAAQ,IAAI,IAAI;IAWhB;;;;;;;OAOG;YACW,YAAY;IAsD1B,OAAO,CAAC,mBAAmB;CAY5B"}
@@ -1,37 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
@@ -39,10 +6,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
6
  exports.ProjectMetadataStore = void 0;
40
7
  const fs_1 = __importDefault(require("fs"));
41
8
  const path_1 = __importDefault(require("path"));
9
+ const ProjectStorage_1 = require("./ProjectStorage");
42
10
  const logger_1 = require("../utils/logger");
43
- const projectMetadataMigrations_1 = require("./projectMetadataMigrations");
11
+ const ProjectMetadataRecords_1 = require("../storage/project-metadata/ProjectMetadataRecords");
12
+ const migrations_1 = require("../storage/project-metadata/migrations");
44
13
  const log = (0, logger_1.createLogger)('ProjectMetadataStore');
45
- const RIVET_DIRNAME = '.rivet';
46
14
  const DATABASE_FILENAME = 'rivet.db';
47
15
  /** Extra files SQLite keeps alongside the database in WAL mode. Removed
48
16
  * together with the database when recovering from corruption — a stale WAL
@@ -57,19 +25,6 @@ const VARIANT_INDEX_STALE = 'stale';
57
25
  * the arrangement to the default, which callers accept as the trade-off for
58
26
  * keeping this out of a separate `.rivet` file. */
59
27
  const VARIANTS_UI_STATE_KEY = 'variants_ui_state';
60
- /** How long a statement waits on a cross-process lock before failing. The
61
- * CLI and server processes can open the same project database. */
62
- const BUSY_TIMEOUT_MS = 5_000;
63
- /** node:sqlite is loaded lazily so its one-time ExperimentalWarning fires
64
- * only in processes that actually touch the projection, not on every CLI
65
- * invocation's stderr. */
66
- let databaseSyncCtor = null;
67
- const loadDatabaseSync = async () => {
68
- if (!databaseSyncCtor) {
69
- databaseSyncCtor = (await Promise.resolve().then(() => __importStar(require('node:sqlite')))).DatabaseSync;
70
- }
71
- return databaseSyncCtor;
72
- };
73
28
  /**
74
29
  * Embedded SQLite metadata projection at `<project>/.rivet/rivet.db`.
75
30
  *
@@ -84,6 +39,7 @@ const loadDatabaseSync = async () => {
84
39
  * timeout for cross-process access.
85
40
  */
86
41
  class ProjectMetadataStore {
42
+ storage;
87
43
  handles = new Map();
88
44
  /** Projects whose index must rebuild before it can be trusted again,
89
45
  * regardless of the durable state row. Recording staleness here cannot
@@ -94,11 +50,12 @@ class ProjectMetadataStore {
94
50
  migrations;
95
51
  /** `migrations` is injectable so tests can exercise upgrade paths with
96
52
  * synthetic lists; production callers use the default. */
97
- constructor(migrations = projectMetadataMigrations_1.PROJECT_METADATA_MIGRATIONS) {
53
+ constructor(migrations = migrations_1.PROJECT_METADATA_MIGRATIONS, storage = new ProjectStorage_1.ProjectStorage()) {
54
+ this.storage = storage;
98
55
  this.migrations = migrations;
99
56
  }
100
57
  databasePath(projectPath) {
101
- return path_1.default.join(projectPath, RIVET_DIRNAME, DATABASE_FILENAME);
58
+ return path_1.default.join(this.storage.resolve(projectPath).dataDirectory, DATABASE_FILENAME);
102
59
  }
103
60
  hasDatabase(projectPath) {
104
61
  return fs_1.default.existsSync(this.databasePath(projectPath));
@@ -121,7 +78,7 @@ class ProjectMetadataStore {
121
78
  */
122
79
  async upsertVariantFromManifest(args) {
123
80
  const db = await this.openDatabase(args.projectPath);
124
- this.upsertRow(db, args);
81
+ db.upsert(args);
125
82
  }
126
83
  /**
127
84
  * Replace the project's entire variants index with `entries` and mark it
@@ -133,20 +90,13 @@ class ProjectMetadataStore {
133
90
  */
134
91
  async rebuildVariantIndex(args) {
135
92
  const db = await this.openDatabase(args.projectPath);
136
- db.exec('BEGIN IMMEDIATE');
137
- try {
138
- db.exec('DELETE FROM variants');
139
- for (const entry of args.entries) {
140
- this.upsertRow(db, { ...entry, projectPath: args.projectPath });
141
- }
142
- this.writeState(db, VARIANT_INDEX_STATE_KEY, VARIANT_INDEX_READY);
143
- db.exec('COMMIT');
144
- this.staleOverrides.delete(path_1.default.resolve(args.projectPath));
145
- }
146
- catch (err) {
147
- db.exec('ROLLBACK');
148
- throw err;
149
- }
93
+ db.transaction(() => {
94
+ db.clearVariants();
95
+ for (const entry of args.entries)
96
+ db.upsert(entry);
97
+ db.writeState(VARIANT_INDEX_STATE_KEY, VARIANT_INDEX_READY);
98
+ });
99
+ this.staleOverrides.delete(path_1.default.resolve(args.projectPath));
150
100
  }
151
101
  /** Whether the variants index can serve reads: the database exists, opens
152
102
  * at a supported schema version, no in-process staleness override is
@@ -159,7 +109,7 @@ class ProjectMetadataStore {
159
109
  return false;
160
110
  }
161
111
  const db = await this.openDatabase(projectPath);
162
- return this.readState(db, VARIANT_INDEX_STATE_KEY) === VARIANT_INDEX_READY;
112
+ return db.readState(VARIANT_INDEX_STATE_KEY) === VARIANT_INDEX_READY;
163
113
  }
164
114
  /**
165
115
  * Flag the variants index as out of sync with the manifests on disk, so
@@ -174,7 +124,7 @@ class ProjectMetadataStore {
174
124
  this.staleOverrides.add(path_1.default.resolve(projectPath));
175
125
  try {
176
126
  const db = await this.openDatabase(projectPath);
177
- this.writeState(db, VARIANT_INDEX_STATE_KEY, VARIANT_INDEX_STALE);
127
+ db.writeState(VARIANT_INDEX_STATE_KEY, VARIANT_INDEX_STALE);
178
128
  }
179
129
  catch (err) {
180
130
  log.warn(`markVariantIndexStale: durable stale flag failed for ${projectPath} — the in-memory override still forces a rebuild in this process`, err);
@@ -182,21 +132,11 @@ class ProjectMetadataStore {
182
132
  }
183
133
  async listVariants(args) {
184
134
  const db = await this.openDatabase(args.projectPath);
185
- const conditions = [];
186
- const params = [];
187
- if (args.status) {
188
- conditions.push('status = ?');
189
- params.push(args.status);
190
- }
191
- return this.selectEntries(db, conditions, params, args.limit);
135
+ return db.list({ status: args.status, limit: args.limit });
192
136
  }
193
137
  async searchVariants(args) {
194
138
  const db = await this.openDatabase(args.projectPath);
195
- // Escape LIKE wildcards so the query only ever matches literally.
196
- const escaped = args.query.replace(/[\\%_]/g, (match) => `\\${match}`);
197
- const pattern = `%${escaped}%`;
198
- const clause = "(label LIKE ? ESCAPE '\\' OR brief LIKE ? ESCAPE '\\' OR session_prompt LIKE ? ESCAPE '\\' OR run_label LIKE ? ESCAPE '\\')";
199
- return this.selectEntries(db, [clause], [pattern, pattern, pattern, pattern], args.limit);
139
+ return db.search({ query: args.query, limit: args.limit });
200
140
  }
201
141
  /**
202
142
  * Read the variants panel's stored UI arrangement, or null when none has
@@ -208,7 +148,7 @@ class ProjectMetadataStore {
208
148
  if (!this.hasDatabase(projectPath))
209
149
  return null;
210
150
  const db = await this.openDatabase(projectPath);
211
- return this.readState(db, VARIANTS_UI_STATE_KEY);
151
+ return db.readState(VARIANTS_UI_STATE_KEY);
212
152
  }
213
153
  /**
214
154
  * Persist the variants panel's UI arrangement.
@@ -217,7 +157,7 @@ class ProjectMetadataStore {
217
157
  */
218
158
  async writeVariantsUiState(projectPath, json) {
219
159
  const db = await this.openDatabase(projectPath);
220
- this.writeState(db, VARIANTS_UI_STATE_KEY, json);
160
+ db.writeState(VARIANTS_UI_STATE_KEY, json);
221
161
  }
222
162
  /** Close every open handle. For tests and process shutdown. */
223
163
  closeAll() {
@@ -231,38 +171,6 @@ class ProjectMetadataStore {
231
171
  }
232
172
  this.handles.clear();
233
173
  }
234
- selectEntries(db, conditions, params, limit) {
235
- const where = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
236
- // Newest-first with id tiebreaks so equal timestamps order predictably.
237
- let sql = `SELECT manifest_json, has_static_preview FROM variants ${where} ORDER BY created_at DESC, session_id ASC, variant_id ASC`;
238
- if (limit !== undefined && limit > 0) {
239
- sql += ' LIMIT ?';
240
- params = [...params, limit];
241
- }
242
- const rows = db.prepare(sql).all(...params);
243
- return rows.map((row) => ({
244
- manifest: JSON.parse(row.manifest_json),
245
- hasStaticPreview: row.has_static_preview === 1,
246
- }));
247
- }
248
- upsertRow(db, args) {
249
- const { manifest } = args;
250
- db.prepare(`INSERT OR REPLACE INTO variants (
251
- session_id, variant_id, label, brief, session_prompt, run_label,
252
- status, created_at, status_changed_at, has_tree, serve_kind,
253
- has_static_preview, manifest_mtime_ms, manifest_json
254
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(manifest.sessionId, manifest.variantId, manifest.label, manifest.brief, manifest.sessionPrompt, manifest.runLabel ?? null, manifest.status, manifest.createdAt, manifest.statusChangedAt, manifest.tree ? 1 : 0, manifest.serve?.kind ?? null, args.hasStaticPreview ? 1 : 0, Math.round(args.manifestMtimeMs), JSON.stringify(manifest));
255
- }
256
- readState(db, key) {
257
- const row = db
258
- .prepare('SELECT value FROM metadata_state WHERE key = ?')
259
- .get(key);
260
- return row?.value ?? null;
261
- }
262
- writeState(db, key, value) {
263
- db.prepare(`INSERT INTO metadata_state (key, value, updated_at) VALUES (?, ?, ?)
264
- ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`).run(key, value, new Date().toISOString());
265
- }
266
174
  /**
267
175
  * Open the project's database, creating and migrating it as needed. A
268
176
  * corrupt file is deleted (with its WAL/SHM siblings) and recreated once —
@@ -290,28 +198,27 @@ class ProjectMetadataStore {
290
198
  this.handles.delete(key);
291
199
  }
292
200
  fs_1.default.mkdirSync(path_1.default.dirname(dbPath), { recursive: true });
293
- let opened;
201
+ let db;
294
202
  try {
295
- opened = await this.openAndMigrate(dbPath);
203
+ db = await ProjectMetadataRecords_1.ProjectMetadataRecords.open(dbPath, this.migrations);
296
204
  }
297
205
  catch (err) {
298
- if (err instanceof projectMetadataMigrations_1.UnsupportedSchemaVersionError)
206
+ if (err instanceof migrations_1.UnsupportedSchemaVersionError)
299
207
  throw err;
300
208
  log.warn(`openDatabase: ${dbPath} is unreadable — recreating the projection`, err);
301
209
  this.deleteDatabaseFiles(dbPath);
302
- opened = await this.openAndMigrate(dbPath);
210
+ db = await ProjectMetadataRecords_1.ProjectMetadataRecords.open(dbPath, this.migrations);
303
211
  }
304
- const { db, wasUpgraded } = opened;
305
- if (wasUpgraded) {
306
- // Migrations only change schema shape (see projectMetadataMigrations)
212
+ if (db.wasUpgraded) {
213
+ // Storage migrations only change schema shape
307
214
  // — any column they add that derives from manifests starts empty.
308
215
  // Marking the index stale makes the next read re-project every row,
309
216
  // so migrations never need data backfills of their own. Outside
310
- // openAndMigrate so a failed flag write can't look like corruption;
217
+ // connection setup so a failed flag write can't look like corruption;
311
218
  // the in-memory override alone already forces the rebuild.
312
219
  this.staleOverrides.add(key);
313
220
  try {
314
- this.writeState(db, VARIANT_INDEX_STATE_KEY, VARIANT_INDEX_STALE);
221
+ db.writeState(VARIANT_INDEX_STATE_KEY, VARIANT_INDEX_STALE);
315
222
  }
316
223
  catch (err) {
317
224
  log.warn(`openDatabase: durable stale flag failed after upgrading ${dbPath}`, err);
@@ -320,31 +227,6 @@ class ProjectMetadataStore {
320
227
  this.handles.set(key, db);
321
228
  return db;
322
229
  }
323
- async openAndMigrate(dbPath) {
324
- const DatabaseSync = await loadDatabaseSync();
325
- const db = new DatabaseSync(dbPath);
326
- try {
327
- db.exec('PRAGMA journal_mode = WAL');
328
- db.exec(`PRAGMA busy_timeout = ${BUSY_TIMEOUT_MS}`);
329
- const { fromVersion, toVersion } = (0, projectMetadataMigrations_1.applyProjectMetadataMigrations)(db, {
330
- migrations: this.migrations,
331
- });
332
- const wasUpgraded = fromVersion > 0 && toVersion > fromVersion;
333
- if (wasUpgraded) {
334
- log.info(`openAndMigrate: upgraded ${dbPath} from schema version ${fromVersion} to ${toVersion} — index will rebuild on next read`);
335
- }
336
- return { db, wasUpgraded };
337
- }
338
- catch (err) {
339
- try {
340
- db.close();
341
- }
342
- catch {
343
- // The open error is the one worth surfacing.
344
- }
345
- throw err;
346
- }
347
- }
348
230
  deleteDatabaseFiles(dbPath) {
349
231
  for (const target of [
350
232
  dbPath,
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectMetadataStore.js","sourceRoot":"","sources":["../../src/services/ProjectMetadataStore.ts"],"names":[],"mappings":"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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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"}