human2ai 0.1.6 → 0.1.8

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 (160) hide show
  1. package/README.en.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/cli/main.js +74 -3
  4. package/dist/cli/main.js.map +1 -1
  5. package/dist/database/draft-version-errors.d.ts +6 -0
  6. package/dist/database/draft-version-errors.js +11 -0
  7. package/dist/database/draft-version-errors.js.map +1 -1
  8. package/dist/database/draft-version-store.js +17 -2
  9. package/dist/database/draft-version-store.js.map +1 -1
  10. package/dist/database/image-asset-repository.d.ts +5 -0
  11. package/dist/database/image-asset-repository.js +22 -4
  12. package/dist/database/image-asset-repository.js.map +1 -1
  13. package/dist/database/migrate.js +2 -0
  14. package/dist/database/migrate.js.map +1 -1
  15. package/dist/database/project-session-repository.d.ts +12 -1
  16. package/dist/database/project-session-repository.js +48 -11
  17. package/dist/database/project-session-repository.js.map +1 -1
  18. package/dist/database/session-preview-validation.js +37 -4
  19. package/dist/database/session-preview-validation.js.map +1 -1
  20. package/dist/database/session-storage-repository.d.ts +35 -0
  21. package/dist/database/session-storage-repository.js +281 -0
  22. package/dist/database/session-storage-repository.js.map +1 -0
  23. package/dist/database/ui-sketch-png-split-repository.d.ts +13 -0
  24. package/dist/database/ui-sketch-png-split-repository.js +123 -0
  25. package/dist/database/ui-sketch-png-split-repository.js.map +1 -0
  26. package/dist/database/workspace-settings-repository.d.ts +10 -0
  27. package/dist/database/workspace-settings-repository.js +30 -0
  28. package/dist/database/workspace-settings-repository.js.map +1 -0
  29. package/dist/domain/composition/clipboard.d.ts +3 -0
  30. package/dist/domain/composition/clipboard.js +30 -0
  31. package/dist/domain/composition/clipboard.js.map +1 -0
  32. package/dist/domain/composition/index.d.ts +1 -0
  33. package/dist/domain/composition/index.js +1 -0
  34. package/dist/domain/composition/index.js.map +1 -1
  35. package/dist/domain/session/canvas-edit-history.d.ts +2 -0
  36. package/dist/domain/session/canvas-edit-history.js +4 -0
  37. package/dist/domain/session/canvas-edit-history.js.map +1 -1
  38. package/dist/domain/session/capabilities.js +14 -0
  39. package/dist/domain/session/capabilities.js.map +1 -1
  40. package/dist/domain/session/storage.d.ts +22 -0
  41. package/dist/domain/session/storage.js +10 -0
  42. package/dist/domain/session/storage.js.map +1 -0
  43. package/dist/domain/session/types.d.ts +4 -0
  44. package/dist/domain/ui-sketch/clipboard.d.ts +2 -0
  45. package/dist/domain/ui-sketch/clipboard.js +21 -1
  46. package/dist/domain/ui-sketch/clipboard.js.map +1 -1
  47. package/dist/domain/ui-sketch/draft.js +22 -0
  48. package/dist/domain/ui-sketch/draft.js.map +1 -1
  49. package/dist/domain/ui-sketch/index.d.ts +1 -1
  50. package/dist/domain/ui-sketch/index.js +1 -1
  51. package/dist/domain/ui-sketch/index.js.map +1 -1
  52. package/dist/domain/ui-sketch/png-canvas.d.ts +25 -0
  53. package/dist/domain/ui-sketch/png-canvas.js +78 -0
  54. package/dist/domain/ui-sketch/png-canvas.js.map +1 -0
  55. package/dist/domain/ui-sketch/png-split-regions.d.ts +7 -0
  56. package/dist/domain/ui-sketch/png-split-regions.js +40 -0
  57. package/dist/domain/ui-sketch/png-split-regions.js.map +1 -0
  58. package/dist/domain/ui-sketch/png-split.d.ts +49 -0
  59. package/dist/domain/ui-sketch/png-split.js +39 -0
  60. package/dist/domain/ui-sketch/png-split.js.map +1 -0
  61. package/dist/domain/ui-sketch/transparent-png.d.ts +50 -0
  62. package/dist/domain/ui-sketch/transparent-png.js +178 -0
  63. package/dist/domain/ui-sketch/transparent-png.js.map +1 -0
  64. package/dist/domain/ui-sketch/types.d.ts +2 -0
  65. package/dist/server/app.d.ts +7 -1
  66. package/dist/server/app.js +21 -0
  67. package/dist/server/app.js.map +1 -1
  68. package/dist/server/routes/draft-version-routes.js +12 -3
  69. package/dist/server/routes/draft-version-routes.js.map +1 -1
  70. package/dist/server/routes/project-sessions.js +14 -0
  71. package/dist/server/routes/project-sessions.js.map +1 -1
  72. package/dist/server/routes/storage-protection.d.ts +3 -0
  73. package/dist/server/routes/storage-protection.js +29 -0
  74. package/dist/server/routes/storage-protection.js.map +1 -0
  75. package/dist/server/routes/ui-sketch-png-splits.d.ts +4 -0
  76. package/dist/server/routes/ui-sketch-png-splits.js +42 -0
  77. package/dist/server/routes/ui-sketch-png-splits.js.map +1 -0
  78. package/dist/server/routes/workspace-settings.d.ts +3 -0
  79. package/dist/server/routes/workspace-settings.js +25 -0
  80. package/dist/server/routes/workspace-settings.js.map +1 -0
  81. package/dist/server/runtime.js +8 -1
  82. package/dist/server/runtime.js.map +1 -1
  83. package/dist/server/session-preview-service.js +7 -4
  84. package/dist/server/session-preview-service.js.map +1 -1
  85. package/dist/server/storage-maintenance-service.d.ts +6 -0
  86. package/dist/server/storage-maintenance-service.js +65 -0
  87. package/dist/server/storage-maintenance-service.js.map +1 -0
  88. package/locales/en/common.json +68 -4
  89. package/migrations/0012_ui_sketch_png_splits.sql +6 -0
  90. package/migrations/0013_storage_retention.sql +43 -0
  91. package/migrations/0014_workspace_settings_and_trash.sql +11 -0
  92. package/package.json +1 -1
  93. package/schemas/ui-sketch-draft.schema.json +173 -0
  94. package/skills/human2ai/SKILL.md +8 -2
  95. package/skills/human2ai/references/ui-extraction-prompt.txt +41 -0
  96. package/skills/human2ai/references/ui-extraction.md +38 -0
  97. package/skills/human2ai/references/ui-layout.md +22 -0
  98. package/web/out/404/index.html +1 -1
  99. package/web/out/404.html +1 -1
  100. package/web/out/__next.__PAGE__.txt +8 -8
  101. package/web/out/__next._full.txt +8 -8
  102. package/web/out/__next._tree.txt +4 -4
  103. package/web/out/_next/static/chunks/327-3dba8bbcb4bcb1fc.js +1 -0
  104. package/web/out/_next/static/chunks/868-6a413fc8c52cf6df.js +1 -0
  105. package/web/out/_next/static/chunks/{164-d8dd2b053f27bf62.js → 989-6d7aa6a22a75f7de.js} +61 -61
  106. package/web/out/_next/static/chunks/app/_not-found/{page-742cf440bebb3b9b.js → page-fddf8e0980e10cc5.js} +1 -1
  107. package/web/out/_next/static/chunks/app/composition/page-f810843a0f114d13.js +1 -0
  108. package/web/out/_next/static/chunks/app/layout-9c5f0b5667b84400.js +1 -0
  109. package/web/out/_next/static/chunks/app/{page-9b8bd42a93c9242c.js → page-29cacabbd1c90b6f.js} +1 -1
  110. package/web/out/_next/static/chunks/app/spatial/page-014875456f84d8fa.js +1 -0
  111. package/web/out/_next/static/chunks/app/styles/page-1077a7decb9be158.js +1 -0
  112. package/web/out/_next/static/chunks/app/ui-sketch/page-ea382541f80cad0d.js +1 -0
  113. package/web/out/_next/static/chunks/{main-app-5419a575f3ff4496.js → main-app-9985b291e50ea69b.js} +1 -1
  114. package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-1193cefa6c9c6179.js +1 -0
  115. package/web/out/_next/static/chunks/{webpack-e781b4e158568ba0.js → webpack-cfe3662bbaa8d6ce.js} +1 -1
  116. package/web/out/_next/static/css/04c7fcbfa9004e04.css +1 -0
  117. package/web/out/_next/static/css/15abfc5e59099f48.css +1 -0
  118. package/web/out/_next/static/css/{210db1811016f805.css → 5062b0bcc3118ed8.css} +1 -1
  119. package/web/out/_next/static/css/57ecc433cb654a57.css +1 -0
  120. package/web/out/_next/static/css/7a62016f8918890b.css +5 -0
  121. package/web/out/_not-found/__next._full.txt +7 -7
  122. package/web/out/_not-found/__next._not-found.__PAGE__.txt +7 -7
  123. package/web/out/_not-found/__next._tree.txt +4 -4
  124. package/web/out/_not-found/index.html +1 -1
  125. package/web/out/_not-found/index.txt +7 -7
  126. package/web/out/composition/__next._full.txt +9 -9
  127. package/web/out/composition/__next._tree.txt +5 -5
  128. package/web/out/composition/__next.composition.__PAGE__.txt +9 -9
  129. package/web/out/composition/index.html +1 -1
  130. package/web/out/composition/index.txt +9 -9
  131. package/web/out/index.html +1 -1
  132. package/web/out/index.txt +8 -8
  133. package/web/out/spatial/__next._full.txt +8 -8
  134. package/web/out/spatial/__next._tree.txt +4 -4
  135. package/web/out/spatial/__next.spatial.__PAGE__.txt +8 -8
  136. package/web/out/spatial/index.html +1 -1
  137. package/web/out/spatial/index.txt +8 -8
  138. package/web/out/styles/__next._full.txt +8 -8
  139. package/web/out/styles/__next._tree.txt +4 -4
  140. package/web/out/styles/__next.styles.__PAGE__.txt +8 -8
  141. package/web/out/styles/index.html +1 -1
  142. package/web/out/styles/index.txt +8 -8
  143. package/web/out/ui-sketch/__next._full.txt +9 -9
  144. package/web/out/ui-sketch/__next._tree.txt +5 -5
  145. package/web/out/ui-sketch/__next.ui-sketch.__PAGE__.txt +9 -9
  146. package/web/out/ui-sketch/index.html +1 -1
  147. package/web/out/ui-sketch/index.txt +9 -9
  148. package/web/out/_next/static/chunks/348-6baeec6b3dbf02ab.js +0 -1
  149. package/web/out/_next/static/chunks/app/composition/page-8d037a4b99bb5546.js +0 -1
  150. package/web/out/_next/static/chunks/app/layout-ca2f61a5a618caea.js +0 -1
  151. package/web/out/_next/static/chunks/app/spatial/page-1d16089ca24b2eb8.js +0 -1
  152. package/web/out/_next/static/chunks/app/styles/page-e4d3c95957349351.js +0 -1
  153. package/web/out/_next/static/chunks/app/ui-sketch/page-23e5c3b12d99082c.js +0 -1
  154. package/web/out/_next/static/chunks/next/dist/client/components/builtin/global-error-15f5118ed5e001a8.js +0 -1
  155. package/web/out/_next/static/css/2160a6bbf2cb551c.css +0 -1
  156. package/web/out/_next/static/css/28a4978acacc40b0.css +0 -1
  157. package/web/out/_next/static/css/2a0db06638359895.css +0 -1
  158. package/web/out/_next/static/css/4b1f9941c214d619.css +0 -5
  159. /package/web/out/_next/static/{MtSBeMOcAQHxKAV1fmedM → SiEWNIZfGL4sShRQt9h5W}/_buildManifest.js +0 -0
  160. /package/web/out/_next/static/{MtSBeMOcAQHxKAV1fmedM → SiEWNIZfGL4sShRQt9h5W}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"draft-version-store.js","sourceRoot":"","sources":["../../src/database/draft-version-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draft-version-store.js","sourceRoot":"","sources":["../../src/database/draft-version-store.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { DatabaseConnection } from "./migrate.ts";
2
+ import type { SessionPreviewReference } from "../domain/session/preview.ts";
2
3
  export { MAX_IMAGE_ASSET_BYTES } from "./image-input.ts";
3
4
  export interface ImageAsset {
4
5
  id: string;
@@ -23,10 +24,14 @@ export declare class ImageAssetNotFoundError extends Error {
23
24
  export declare class ImageAssetRepository {
24
25
  private readonly database;
25
26
  private readonly root;
27
+ private readonly protections;
28
+ isProtected(id: string): boolean;
29
+ withProtection<T>(ids: string[], operation: () => Promise<T>): Promise<T>;
26
30
  constructor(database: DatabaseConnection, artifactsDirectory: string);
27
31
  create(sessionId: string, input: {
28
32
  filename: string;
29
33
  data: Buffer;
34
+ previewReference?: SessionPreviewReference;
30
35
  }): Promise<ImageAsset>;
31
36
  get(sessionId: string, assetId: string): {
32
37
  asset: ImageAsset;
@@ -21,6 +21,24 @@ export class ImageAssetNotFoundError extends Error {
21
21
  export class ImageAssetRepository {
22
22
  database;
23
23
  root;
24
+ protections = new Map();
25
+ isProtected(id) { return this.protections.has(id); }
26
+ async withProtection(ids, operation) {
27
+ for (const id of new Set(ids))
28
+ this.protections.set(id, (this.protections.get(id) ?? 0) + 1);
29
+ try {
30
+ return await operation();
31
+ }
32
+ finally {
33
+ for (const id of new Set(ids)) {
34
+ const remaining = this.protections.get(id) - 1;
35
+ if (remaining)
36
+ this.protections.set(id, remaining);
37
+ else
38
+ this.protections.delete(id);
39
+ }
40
+ }
41
+ }
24
42
  constructor(database, artifactsDirectory) {
25
43
  this.database = database;
26
44
  this.root = resolve(artifactsDirectory);
@@ -46,8 +64,8 @@ export class ImageAssetRepository {
46
64
  try {
47
65
  this.database.prepare(`INSERT INTO image_assets
48
66
  (id, session_id, relative_path, original_filename, mime_type,
49
- byte_size, width, height, sha256, created_at)
50
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, sessionId, relativePath, originalFilename, mimeType, input.data.byteLength, width, height, sha256, createdAt);
67
+ byte_size, width, height, sha256, created_at, preview_reference_json)
68
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, sessionId, relativePath, originalFilename, mimeType, input.data.byteLength, width, height, sha256, createdAt, input.previewReference ? JSON.stringify(input.previewReference) : null);
51
69
  }
52
70
  catch (error) {
53
71
  await unlink(filePath).catch(() => undefined);
@@ -60,7 +78,7 @@ export class ImageAssetRepository {
60
78
  const row = this.database.prepare(`SELECT id, session_id, relative_path, original_filename, mime_type,
61
79
  byte_size, width, height, sha256, created_at
62
80
  FROM image_assets
63
- WHERE session_id = ? AND id = ?`).get(sessionId, assetId);
81
+ WHERE session_id = ? AND id = ? AND deleting = 0`).get(sessionId, assetId);
64
82
  if (!row)
65
83
  throw new ImageAssetNotFoundError(sessionId, assetId);
66
84
  const filePath = this.filePath(row.relative_path);
@@ -69,7 +87,7 @@ export class ImageAssetRepository {
69
87
  return { asset: mapImageAsset(row), filePath };
70
88
  }
71
89
  assertSession(sessionId) {
72
- const row = this.database.prepare("SELECT id FROM sessions WHERE id = ?").get(sessionId);
90
+ const row = this.database.prepare("SELECT id FROM sessions WHERE id = ? AND deleted_at IS NULL").get(sessionId);
73
91
  if (!row)
74
92
  throw new SessionNotFoundError(sessionId);
75
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"image-asset-repository.js","sourceRoot":"","sources":["../../src/database/image-asset-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-asset-repository.js","sourceRoot":"","sources":["../../src/database/image-asset-repository.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,8 @@ const migrationFilePattern = /^\d{4}_[a-z0-9][a-z0-9_-]*\.sql$/;
5
5
  export function openDatabase(databasePath, migrationsDirectory) {
6
6
  const database = new Database(databasePath);
7
7
  try {
8
+ if (database.pragma("page_count", { simple: true }) === 0)
9
+ database.pragma("auto_vacuum = INCREMENTAL");
8
10
  database.pragma("foreign_keys = ON");
9
11
  database.pragma("synchronous = FULL");
10
12
  database.pragma("busy_timeout = 5000");
@@ -1 +1 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/database/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAEhE,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,mBAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACrC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACtC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACvC,eAAe,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAA4B,EAC5B,mBAA2B;IAE3B,QAAQ,CAAC,IAAI,CAAC;;;;;GAKb,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,QAAQ;SACL,OAAO,CAAuB,oCAAoC,CAAC;SACnE,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAC3B,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACtE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CACtC,gEAAgE,CACjE,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAClE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/database/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,MAAM,oBAAoB,GAAG,kCAAkC,CAAC;AAEhE,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,mBAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,YAAY,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC;YAAE,QAAQ,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACxG,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACrC,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACtC,QAAQ,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACvC,eAAe,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,QAA4B,EAC5B,mBAA2B;IAE3B,QAAQ,CAAC,IAAI,CAAC;;;;;GAKb,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,GAAG,CACrB,QAAQ;SACL,OAAO,CAAuB,oCAAoC,CAAC;SACnE,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAC3B,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACtE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;SAC1E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CACtC,gEAAgE,CACjE,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAClE,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnB,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { type Project, type Session, type SessionGroup, type SessionType } from "../domain/session/index.ts";
2
+ import type { TrashSession } from "../domain/session/types.ts";
2
3
  import type { DatabaseConnection } from "./migrate.ts";
3
4
  export declare class ProjectNotFoundError extends Error {
4
5
  readonly projectId: string;
@@ -40,7 +41,8 @@ export declare class SessionGroupNameConflictError extends Error {
40
41
  }
41
42
  export declare class ProjectSessionRepository {
42
43
  private readonly database;
43
- constructor(database: DatabaseConnection);
44
+ private readonly now;
45
+ constructor(database: DatabaseConnection, now?: () => number);
44
46
  listSessionGroups(): SessionGroup[];
45
47
  private getSessionGroup;
46
48
  private sessionGroupName;
@@ -90,6 +92,15 @@ export declare class ProjectSessionRepository {
90
92
  deleteSession(sessionId: string, input: {
91
93
  expectedRevision: number;
92
94
  }): void;
95
+ listTrashSessions(): TrashSession[];
96
+ restoreSession(sessionId: string, input: {
97
+ expectedRevision: number;
98
+ }): Session;
99
+ purgeExpiredTrash(cutoff: string): number;
100
+ deleteTrashSession(sessionId: string, input: {
101
+ expectedRevision: number;
102
+ }): void;
103
+ clearTrash(): void;
93
104
  private selectSessions;
94
105
  private assertProjectNameAvailable;
95
106
  }
@@ -57,12 +57,15 @@ export class SessionGroupNameConflictError extends Error {
57
57
  }
58
58
  export class ProjectSessionRepository {
59
59
  database;
60
- constructor(database) {
60
+ now;
61
+ constructor(database, now = Date.now) {
61
62
  this.database = database;
63
+ this.now = now;
62
64
  }
63
65
  listSessionGroups() {
64
66
  const groups = this.database.prepare("SELECT id, project_id AS projectId, name, revision FROM session_groups ORDER BY rowid").all();
65
- const members = this.database.prepare("SELECT session_id AS sessionId, group_id AS groupId FROM session_group_members ORDER BY session_id").all();
67
+ const members = this.database.prepare(`SELECT member.session_id AS sessionId, member.group_id AS groupId FROM session_group_members member
68
+ JOIN sessions session ON session.id = member.session_id WHERE session.deleted_at IS NULL ORDER BY member.session_id`).all();
66
69
  const byGroup = new Map();
67
70
  for (const member of members) {
68
71
  const ids = byGroup.get(member.groupId) ?? [];
@@ -75,7 +78,8 @@ export class ProjectSessionRepository {
75
78
  const group = this.database.prepare("SELECT id, project_id AS projectId, name, revision FROM session_groups WHERE id = ?").get(groupId);
76
79
  if (!group)
77
80
  throw new SessionGroupNotFoundError(groupId);
78
- const members = this.database.prepare("SELECT session_id AS id FROM session_group_members WHERE group_id = ? ORDER BY session_id").all(groupId);
81
+ const members = this.database.prepare(`SELECT member.session_id AS id FROM session_group_members member JOIN sessions session ON session.id = member.session_id
82
+ WHERE member.group_id = ? AND session.deleted_at IS NULL ORDER BY member.session_id`).all(groupId);
79
83
  return { ...group, sessionIds: members.map(member => member.id) };
80
84
  }
81
85
  sessionGroupName(projectId, value, excludedId = "") {
@@ -139,7 +143,7 @@ export class ProjectSessionRepository {
139
143
  p.updated_at,
140
144
  count(s.id) AS session_count
141
145
  FROM projects p
142
- LEFT JOIN sessions s ON s.project_id = p.id
146
+ LEFT JOIN sessions s ON s.project_id = p.id AND s.deleted_at IS NULL
143
147
  GROUP BY p.id
144
148
  ORDER BY p.updated_at DESC, p.id
145
149
  `)
@@ -158,7 +162,7 @@ export class ProjectSessionRepository {
158
162
  p.updated_at,
159
163
  count(s.id) AS session_count
160
164
  FROM projects p
161
- LEFT JOIN sessions s ON s.project_id = p.id
165
+ LEFT JOIN sessions s ON s.project_id = p.id AND s.deleted_at IS NULL
162
166
  WHERE p.id = ?
163
167
  GROUP BY p.id
164
168
  `)
@@ -204,7 +208,7 @@ export class ProjectSessionRepository {
204
208
  this.database
205
209
  .prepare(`DELETE FROM projects
206
210
  WHERE id = ? AND revision = ?
207
- AND NOT EXISTS (SELECT 1 FROM sessions WHERE project_id = ?)`)
211
+ AND NOT EXISTS (SELECT 1 FROM sessions WHERE project_id = ? AND deleted_at IS NULL)`)
208
212
  .run(projectId, input.expectedRevision, projectId);
209
213
  }
210
214
  listSessions() {
@@ -219,7 +223,7 @@ export class ProjectSessionRepository {
219
223
  }
220
224
  getSession(sessionId) {
221
225
  const row = this.database
222
- .prepare(`${SESSION_SELECT} WHERE id = ?`)
226
+ .prepare(`${SESSION_SELECT} WHERE id = ? AND deleted_at IS NULL`)
223
227
  .get(sessionId);
224
228
  if (!row)
225
229
  throw new SessionNotFoundError(sessionId);
@@ -293,12 +297,44 @@ export class ProjectSessionRepository {
293
297
  const session = this.getSession(sessionId);
294
298
  assertRevision(input.expectedRevision, session.revision);
295
299
  this.database
296
- .prepare("DELETE FROM sessions WHERE id = ? AND revision = ?")
297
- .run(sessionId, input.expectedRevision);
300
+ .prepare("UPDATE sessions SET deleted_at = ?, updated_at = ?, revision = revision + 1 WHERE id = ? AND revision = ?")
301
+ .run(new Date(this.now()).toISOString(), new Date(this.now()).toISOString(), sessionId, input.expectedRevision);
302
+ }
303
+ listTrashSessions() {
304
+ return this.database.prepare(`${SESSION_SELECT} WHERE deleted_at IS NOT NULL ORDER BY deleted_at DESC, id`)
305
+ .all().map(row => ({ ...mapSession(row), deletedAt: row.deleted_at }));
306
+ }
307
+ restoreSession(sessionId, input) {
308
+ return this.database.transaction(() => {
309
+ const row = this.database.prepare(`${SESSION_SELECT} WHERE id = ? AND deleted_at IS NOT NULL`).get(sessionId);
310
+ if (!row)
311
+ throw new SessionNotFoundError(sessionId);
312
+ assertRevision(input.expectedRevision, row.revision);
313
+ this.database.prepare("UPDATE sessions SET deleted_at = NULL, revision = revision + 1, updated_at = ? WHERE id = ?")
314
+ .run(new Date(this.now()).toISOString(), sessionId);
315
+ // Trash suspends image collection; restoring restarts the unused-image grace period.
316
+ this.database.prepare("UPDATE image_assets SET unreferenced_since = NULL WHERE session_id = ?").run(sessionId);
317
+ return this.getSession(sessionId);
318
+ })();
319
+ }
320
+ purgeExpiredTrash(cutoff) {
321
+ return this.database.prepare("DELETE FROM sessions WHERE deleted_at IS NOT NULL AND deleted_at <= ?").run(cutoff).changes;
322
+ }
323
+ deleteTrashSession(sessionId, input) {
324
+ this.database.transaction(() => {
325
+ const row = this.database.prepare(`${SESSION_SELECT} WHERE id = ? AND deleted_at IS NOT NULL`).get(sessionId);
326
+ if (!row)
327
+ throw new SessionNotFoundError(sessionId);
328
+ assertRevision(input.expectedRevision, row.revision);
329
+ this.database.prepare("DELETE FROM sessions WHERE id = ? AND deleted_at IS NOT NULL").run(sessionId);
330
+ })();
331
+ }
332
+ clearTrash() {
333
+ this.database.prepare("DELETE FROM sessions WHERE deleted_at IS NOT NULL").run();
298
334
  }
299
335
  selectSessions(where, parameters) {
300
336
  const rows = this.database
301
- .prepare(`${SESSION_SELECT} ${where} ORDER BY updated_at DESC, id`)
337
+ .prepare(`${SESSION_SELECT} ${where ? `${where} AND` : "WHERE"} deleted_at IS NULL ORDER BY updated_at DESC, id`)
302
338
  .all(...parameters);
303
339
  return rows.map(mapSession);
304
340
  }
@@ -324,7 +360,8 @@ const SESSION_SELECT = `
324
360
  lifecycle_stage,
325
361
  revision,
326
362
  created_at,
327
- updated_at
363
+ updated_at,
364
+ deleted_at
328
365
  FROM sessions
329
366
  `;
330
367
  function mapProject(row) {
@@ -1 +1 @@
1
- {"version":3,"file":"project-session-repository.js","sourceRoot":"","sources":["../../src/database/project-session-repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-session-repository.js","sourceRoot":"","sources":["../../src/database/project-session-repository.ts"],"names":[],"mappings":"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"}
@@ -8,16 +8,46 @@ export function validateSessionPreviewReferences(database, ownerId, draft, previ
8
8
  continue;
9
9
  if (ref.sessionId === ownerId)
10
10
  throw new InvalidRecordError("A session preview cannot reference its own session.");
11
- if (!image.assetId || !database.prepare("SELECT id FROM image_assets WHERE id = ? AND session_id = ?").get(image.assetId, ownerId)) {
11
+ const asset = image.assetId && database.prepare("SELECT preview_reference_json, sha256 FROM image_assets WHERE id = ? AND session_id = ? AND deleting = 0").get(image.assetId, ownerId);
12
+ if (!asset) {
12
13
  throw new InvalidRecordError("Session previews require an image owned by the destination session.");
13
14
  }
14
- const source = database.prepare("SELECT project_id, session_type FROM sessions WHERE id = ?").get(ref.sessionId);
15
+ const remember = (reference = JSON.stringify(ref)) => {
16
+ database.prepare("UPDATE image_assets SET preview_reference_json = ? WHERE id = ? AND session_id = ?")
17
+ .run(reference, image.assetId, ownerId);
18
+ asset.preview_reference_json = reference;
19
+ };
20
+ if (!asset.preview_reference_json && owner.project_id) {
21
+ // Cross-session paste uploads the same immutable bytes. Inherit only an exact,
22
+ // verified snapshot from a session that still belongs to this project.
23
+ const copied = database.prepare(`SELECT candidate.preview_reference_json
24
+ FROM image_assets candidate JOIN sessions session ON session.id = candidate.session_id
25
+ WHERE candidate.sha256 = ? AND session.project_id = ? AND candidate.deleting = 0 AND candidate.preview_reference_json IS NOT NULL`)
26
+ .all(asset.sha256, owner.project_id).find(candidate => {
27
+ const reference = JSON.parse(candidate.preview_reference_json);
28
+ return previewSourceKey(reference) === previewSourceKey(ref) && reference.renderedRevision === ref.renderedRevision;
29
+ });
30
+ if (copied) {
31
+ remember(copied.preview_reference_json);
32
+ }
33
+ }
34
+ if (asset.preview_reference_json) {
35
+ const retained = JSON.parse(asset.preview_reference_json);
36
+ if (previewSourceKey(retained) !== previewSourceKey(ref) || retained.renderedRevision !== ref.renderedRevision) {
37
+ throw new InvalidRecordError("The preview reference does not match its image snapshot.");
38
+ }
39
+ // Verified immutable snapshot bytes do not depend on the source's retention window.
40
+ continue;
41
+ }
42
+ const source = database.prepare("SELECT project_id, session_type FROM sessions WHERE id = ? AND deleted_at IS NULL").get(ref.sessionId);
15
43
  if (!source || !owner.project_id || owner.project_id !== source.project_id || source.session_type !== ref.sessionType) {
16
44
  // Retain or restore only an exact destination-owned historical snapshot.
17
45
  // This also covers local undo submitted through the normal save endpoint.
18
46
  if (previous?.images.some(before => before.assetId === image.assetId && before.previewReference
19
- && previewSourceKey(before.previewReference) === previewSourceKey(ref) && before.previewReference.renderedRevision === ref.renderedRevision))
47
+ && previewSourceKey(before.previewReference) === previewSourceKey(ref) && before.previewReference.renderedRevision === ref.renderedRevision)) {
48
+ remember();
20
49
  continue;
50
+ }
21
51
  const retained = database.prepare(`SELECT 1 FROM ui_sketch_draft_versions v, json_each(v.draft_json, '$.images') image
22
52
  WHERE v.session_id = ? AND json_extract(image.value, '$.assetId') = ?
23
53
  AND json_extract(image.value, '$.previewReference.sessionId') = ?
@@ -25,8 +55,10 @@ export function validateSessionPreviewReferences(database, ownerId, draft, previ
25
55
  AND json_extract(image.value, '$.previewReference.renderedRevision') = ?
26
56
  AND coalesce(json_extract(image.value, '$.previewReference.stateId'), json_extract(image.value, '$.previewReference.cameraId')) = ? LIMIT 1`)
27
57
  .get(ownerId, image.assetId, ref.sessionId, ref.sessionType, ref.renderedRevision, ref.sessionType === "spatial" ? ref.cameraId : ref.stateId);
28
- if (retained)
58
+ if (retained) {
59
+ remember();
29
60
  continue;
61
+ }
30
62
  throw new InvalidRecordError("Session previews require another session of the specified type in the same project.");
31
63
  }
32
64
  const table = ref.sessionType === "spatial" ? "spatial_draft_versions" : ref.sessionType === "ui-layout" ? "ui_sketch_draft_versions" : "composition_draft_versions";
@@ -39,6 +71,7 @@ export function validateSessionPreviewReferences(database, ownerId, draft, previ
39
71
  : content.states?.map((s) => s.id) ?? ["state-1"];
40
72
  if (!ids.includes(ref.sessionType === "spatial" ? ref.cameraId : ref.stateId))
41
73
  throw new InvalidRecordError("The selected preview output does not exist.");
74
+ remember();
42
75
  }
43
76
  }
44
77
  //# sourceMappingURL=session-preview-validation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-preview-validation.js","sourceRoot":"","sources":["../../src/database/session-preview-validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-preview-validation.js","sourceRoot":"","sources":["../../src/database/session-preview-validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { DatabaseConnection } from "./migrate.ts";
2
+ import { type ImageAssetRepository } from "./image-asset-repository.ts";
3
+ import { type StorageProtection } from "../domain/session/storage.ts";
4
+ import type { SessionType } from "../domain/session/types.ts";
5
+ declare const tables: {
6
+ readonly "image-composition": "composition_draft_versions";
7
+ readonly "ui-layout": "ui_sketch_draft_versions";
8
+ readonly spatial: "spatial_draft_versions";
9
+ };
10
+ export type DraftVersionTable = typeof tables[SessionType];
11
+ /** Called inside the save transaction so the latest revision is never removed. */
12
+ export declare function pruneDraftVersions(database: DatabaseConnection, table: DraftVersionTable, sessionId: string, now?: number): number;
13
+ export interface StorageCollectionResult {
14
+ versionsDeleted: number;
15
+ imagesDeleted: number;
16
+ bytesFreed: number;
17
+ failedFiles: string[];
18
+ }
19
+ export declare class SessionStorageRepository {
20
+ private readonly database;
21
+ private readonly assets;
22
+ private readonly now;
23
+ private readonly root;
24
+ constructor(database: DatabaseConnection, assets: ImageAssetRepository, artifactsDirectory: string, now?: () => number);
25
+ protect(sessionId: string, clientId: string, protection: StorageProtection): void;
26
+ release(sessionId: string, clientId: string): void;
27
+ private table;
28
+ private usedAssets;
29
+ collect(sessionId?: string): Promise<StorageCollectionResult>;
30
+ private collectOrphanFiles;
31
+ private managedFiles;
32
+ /** Only called while editing is idle. Convert older databases once, then reclaim small batches. */
33
+ compact(): void;
34
+ }
35
+ export {};