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
@@ -0,0 +1,42 @@
1
+ import { ImageAssetNotFoundError, InvalidImageAssetError } from "../../database/image-asset-repository.js";
2
+ import { SessionNotFoundError } from "../../database/project-session-repository.js";
3
+ import { DraftSessionTypeMismatchError } from "../../database/draft-version-errors.js";
4
+ import uiSketchDraftSchema from "../../../schemas/ui-sketch-draft.schema.json" with { type: "json" };
5
+ export function registerUiSketchPngSplitRoutes(server, repository, sessions) {
6
+ for (const preview of [false, true])
7
+ server.post(`/api/v1/sessions/:sessionId/ui-sketch/png-splits${preview ? "/preview" : ""}`, { schema: {
8
+ params: { type: "object", required: ["sessionId"], properties: { sessionId: { type: "string", minLength: 1 } } },
9
+ body: { type: "object", additionalProperties: false, required: ["sources", "options"], properties: {
10
+ sources: { type: "array", minItems: 1, uniqueItems: true, items: {
11
+ type: "object", additionalProperties: false, required: ["nodeId", "assetId"], properties: {
12
+ nodeId: { type: "string", minLength: 1 }, assetId: { type: "string", minLength: 1 },
13
+ regions: uiSketchDraftSchema.$defs.pngSplit.properties.sources.items.properties.regions,
14
+ },
15
+ } },
16
+ options: { type: "object", additionalProperties: false, required: ["alphaThreshold", "minSize", "gap"], properties: {
17
+ alphaThreshold: { type: "integer", minimum: 0, maximum: 254 },
18
+ minSize: { type: "integer", minimum: 0, maximum: Number.MAX_SAFE_INTEGER },
19
+ gap: { type: "number", minimum: 0 },
20
+ } },
21
+ } },
22
+ } }, async (request, reply) => {
23
+ try {
24
+ sessions.getLatestDraftVersion(request.params.sessionId);
25
+ if (new Set(request.body.sources.map(source => source.nodeId)).size !== request.body.sources.length) {
26
+ throw new InvalidImageAssetError("Duplicate PNG source node.");
27
+ }
28
+ return await (preview ? repository.preview(request.params.sessionId, request.body.sources, request.body.options)
29
+ : repository.prepare(request.params.sessionId, request.body.sources, request.body.options));
30
+ }
31
+ catch (error) {
32
+ if (error instanceof SessionNotFoundError || error instanceof ImageAssetNotFoundError) {
33
+ return reply.code(404).send({ code: error.code, message: error.message });
34
+ }
35
+ if (error instanceof InvalidImageAssetError || error instanceof DraftSessionTypeMismatchError) {
36
+ return reply.code(400).send({ code: error.code, message: error.message });
37
+ }
38
+ throw error;
39
+ }
40
+ });
41
+ }
42
+ //# sourceMappingURL=ui-sketch-png-splits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-sketch-png-splits.js","sourceRoot":"","sources":["../../../src/server/routes/ui-sketch-png-splits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { FastifyInstance } from "fastify";
2
+ import type { WorkspaceSettingsRepository } from "../../database/workspace-settings-repository.ts";
3
+ export declare function registerWorkspaceSettingsRoutes(server: FastifyInstance, repository: WorkspaceSettingsRepository): void;
@@ -0,0 +1,25 @@
1
+ import { RevisionConflictError, InvalidRecordError } from "../../database/project-session-repository.js";
2
+ import { MAX_RETENTION_DAYS } from "../../domain/session/storage.js";
3
+ export function registerWorkspaceSettingsRoutes(server, repository) {
4
+ const days = { type: "integer", minimum: 1, maximum: MAX_RETENTION_DAYS };
5
+ const fields = { imageRetentionDays: days, historyRetentionDays: days, trashRetentionDays: days };
6
+ const response = { type: "object", additionalProperties: false, required: ["revision", ...Object.keys(fields)],
7
+ properties: { revision: { type: "integer", minimum: 1 }, ...fields } };
8
+ server.get("/api/v1/settings", { schema: { response: { 200: response } } }, async () => repository.get());
9
+ server.put("/api/v1/settings", {
10
+ schema: { body: { type: "object", additionalProperties: false, required: ["expectedRevision", ...Object.keys(fields)],
11
+ properties: { expectedRevision: { type: "integer", minimum: 1 }, ...fields } }, response: { 200: response } },
12
+ }, async (request, reply) => {
13
+ try {
14
+ return repository.update(request.body);
15
+ }
16
+ catch (error) {
17
+ if (error instanceof RevisionConflictError)
18
+ return reply.code(409).send({ code: error.code, message: error.message, actualRevision: error.actualRevision });
19
+ if (error instanceof InvalidRecordError)
20
+ return reply.code(400).send({ code: error.code, message: error.message });
21
+ throw error;
22
+ }
23
+ });
24
+ }
25
+ //# sourceMappingURL=workspace-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-settings.js","sourceRoot":"","sources":["../../../src/server/routes/workspace-settings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AACzG,OAAO,EAAE,kBAAkB,EAA0B,MAAM,iCAAiC,CAAC;AAE7F,MAAM,UAAU,+BAA+B,CAAC,MAAuB,EAAE,UAAuC;IAC9G,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC1E,MAAM,MAAM,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;IAClG,MAAM,QAAQ,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5G,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC;IACzE,MAAM,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IAC1G,MAAM,CAAC,GAAG,CAA6D,kBAAkB,EAAE;QACzF,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,kBAAkB,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnH,UAAU,EAAE,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;KAChH,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC1B,IAAI,CAAC;YAAC,OAAO,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,CAAC;QAC/C,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,KAAK,YAAY,qBAAqB;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;YAC5J,IAAI,KAAK,YAAY,kBAAkB;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACnH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,12 +1,15 @@
1
1
  import { mkdirSync } from "node:fs";
2
+ import { WorkspaceSettingsRepository } from "../database/workspace-settings-repository.js";
2
3
  import { dirname, join } from "node:path";
3
4
  import { fileURLToPath } from "node:url";
4
5
  import { CompositionSessionRepository } from "../database/composition-session-repository.js";
5
6
  import { ImageAssetRepository } from "../database/image-asset-repository.js";
7
+ import { SessionStorageRepository } from "../database/session-storage-repository.js";
6
8
  import { openDatabase } from "../database/migrate.js";
7
9
  import { ProjectSessionRepository } from "../database/project-session-repository.js";
8
10
  import { StyleLibraryRepository } from "../database/style-library-repository.js";
9
11
  import { UiSketchSessionRepository } from "../database/ui-sketch-session-repository.js";
12
+ import { UiSketchPngSplitRepository } from "../database/ui-sketch-png-split-repository.js";
10
13
  import { SpatialSessionRepository } from "../database/spatial-session-repository.js";
11
14
  import { HUMAN2AI_SERVICE_CAPABILITIES, buildServer } from "./app.js";
12
15
  import { resolveRuntimeDefaults } from "../runtime-defaults.js";
@@ -99,10 +102,14 @@ export function createHuman2AiServer(options = {}) {
99
102
  databaseClosed = true;
100
103
  database.close();
101
104
  };
105
+ const imageAssets = new ImageAssetRepository(database, artifactsDirectory);
102
106
  const server = buildServer({ logger: options.logger ?? false }, {
103
107
  compositionSessions: new CompositionSessionRepository(database),
104
- imageAssets: new ImageAssetRepository(database, artifactsDirectory),
108
+ imageAssets,
109
+ storage: new SessionStorageRepository(database, imageAssets, artifactsDirectory),
110
+ pngSplits: new UiSketchPngSplitRepository(database, imageAssets),
105
111
  projectSessions: new ProjectSessionRepository(database),
112
+ settings: new WorkspaceSettingsRepository(database),
106
113
  styleLibrary: new StyleLibraryRepository(database, artifactsDirectory),
107
114
  uiSketchSessions: new UiSketchSessionRepository(database),
108
115
  spatialSessions: new SpatialSessionRepository(database),
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/server/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/server/runtime.ts"],"names":[],"mappings":"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"}
@@ -120,10 +120,11 @@ export class SessionPreviewService {
120
120
  draft = selectCompositionState(this.deps.compositionSessions.getDraftVersion(source.sessionId, revision).draft, source.stateId);
121
121
  }
122
122
  const assets = new Map();
123
- await Promise.all([...new Set(draft.images.flatMap(image => image.assetId && image.visible !== false ? [image.assetId] : []))].map(async (id) => {
123
+ const assetIds = [...new Set(draft.images.flatMap(image => image.assetId && image.visible !== false ? [image.assetId] : []))];
124
+ await this.deps.imageAssets.withProtection(assetIds, () => Promise.all(assetIds.map(async (id) => {
124
125
  const { asset, filePath } = this.deps.imageAssets.get(source.sessionId, id);
125
126
  assets.set(id, `data:${asset.mimeType};base64,${(await readFile(filePath)).toString("base64")}`);
126
- }));
127
+ })));
127
128
  const svg = draft.kind === "ui-layout-draft" ? renderUiSketchSvg(draft, id => assets.get(id)) : renderCompositionReferenceSvg(draft, id => assets.get(id));
128
129
  key = createHash("sha256").update(svg).digest("hex");
129
130
  create = () => Promise.resolve(Buffer.from(svg));
@@ -140,7 +141,8 @@ export class SessionPreviewService {
140
141
  async materialize(ownerId, source) {
141
142
  const { data, extension, revision } = await this.render(ownerId, source);
142
143
  this.assertSource(ownerId, source);
143
- const asset = await this.deps.imageAssets.create(ownerId, { filename: `session-preview.${extension}`, data });
144
+ const asset = await this.deps.imageAssets.create(ownerId, { filename: `session-preview.${extension}`, data,
145
+ previewReference: { ...source, renderedRevision: revision } });
144
146
  return { assetId: asset.id, width: asset.width, height: asset.height, reference: { ...source, renderedRevision: revision } };
145
147
  }
146
148
  enqueue(id, revision) {
@@ -210,7 +212,8 @@ export class SessionPreviewService {
210
212
  if (matches.every(item => item.assetId && this.deps.imageAssets.get(id, item.assetId).asset.sha256 === sha))
211
213
  continue;
212
214
  this.assertSource(id, ref);
213
- const asset = await this.deps.imageAssets.create(id, { filename: `session-preview.${extension}`, data });
215
+ const asset = await this.deps.imageAssets.create(id, { filename: `session-preview.${extension}`, data,
216
+ previewReference: { ...ref, renderedRevision: revision } });
214
217
  updates.set(previewSourceKey(ref), { assetId: asset.id, width: asset.width, height: asset.height, reference: { ...ref, renderedRevision: revision } });
215
218
  }
216
219
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"session-preview-service.js","sourceRoot":"","sources":["../../src/server/session-preview-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-preview-service.js","sourceRoot":"","sources":["../../src/server/session-preview-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { SessionStorageRepository } from "../database/session-storage-repository.ts";
2
+ import type { FastifyInstance } from "fastify";
3
+ import type { CompositionSessionRepository } from "../database/composition-session-repository.ts";
4
+ import type { UiSketchSessionRepository } from "../database/ui-sketch-session-repository.ts";
5
+ import type { SpatialSessionRepository } from "../database/spatial-session-repository.ts";
6
+ export declare function registerStorageMaintenance(server: FastifyInstance, storage: SessionStorageRepository, repositories: (CompositionSessionRepository | UiSketchSessionRepository | SpatialSessionRepository)[]): void;
@@ -0,0 +1,65 @@
1
+ export function registerStorageMaintenance(server, storage, repositories) {
2
+ let timer, work, closed = false;
3
+ let all = false, lastWrite = Date.now();
4
+ const pending = new Set();
5
+ const run = async () => {
6
+ if (closed || work)
7
+ return;
8
+ const full = all, sessions = [...pending];
9
+ all = false;
10
+ pending.clear();
11
+ work = (async () => {
12
+ const collections = full ? [await storage.collect()] : [];
13
+ if (!full)
14
+ for (const id of sessions)
15
+ collections.push(await storage.collect(id));
16
+ for (const result of collections)
17
+ if (result.failedFiles.length)
18
+ server.log.warn({ files: result.failedFiles }, "Image cleanup will retry");
19
+ if (full && Date.now() - lastWrite > 10 * 60_000)
20
+ storage.compact();
21
+ })().catch(error => { server.log.error(error, "Storage maintenance will retry on the next sweep"); });
22
+ await work;
23
+ work = undefined;
24
+ if (all || pending.size)
25
+ schedule();
26
+ };
27
+ const schedule = (id) => {
28
+ if (closed)
29
+ return;
30
+ if (id)
31
+ pending.add(id);
32
+ if (!timer)
33
+ timer = setTimeout(() => { timer = undefined; void run(); }, 2000).unref();
34
+ };
35
+ const unsubscribe = repositories.map(repository => repository.onDraftSaved(({ version }) => {
36
+ lastWrite = Date.now();
37
+ schedule(version.sessionId);
38
+ }));
39
+ server.addHook("onReady", async () => { all = true; await run(); });
40
+ server.addHook("onResponse", async (request, reply) => {
41
+ if (reply.statusCode >= 300 || request.method === "GET" || request.method === "HEAD"
42
+ || request.url.includes("/storage-protection/"))
43
+ return;
44
+ lastWrite = Date.now();
45
+ if (request.method === "DELETE" || request.url === "/api/v1/settings") {
46
+ all = true;
47
+ schedule();
48
+ }
49
+ else {
50
+ const id = /^\/api\/v1\/sessions\/([^/]+)\//.exec(request.url)?.[1];
51
+ if (id)
52
+ schedule(decodeURIComponent(id));
53
+ }
54
+ });
55
+ const interval = setInterval(() => { all = true; schedule(); }, 60 * 60_000).unref();
56
+ server.addHook("preClose", async () => {
57
+ closed = true;
58
+ if (timer)
59
+ clearTimeout(timer);
60
+ clearInterval(interval);
61
+ unsubscribe.forEach(stop => stop());
62
+ await work;
63
+ });
64
+ }
65
+ //# sourceMappingURL=storage-maintenance-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-maintenance-service.js","sourceRoot":"","sources":["../../src/server/storage-maintenance-service.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,8 @@
11
11
  },
12
12
  "integrations": {
13
13
  "workbuddy": {
14
- "description": "Create and edit compositions, UI sketches and 3D spaces in a shared local workspace.",
14
+ "name": "human2ai",
15
+ "description": "An agent-operated tool for drawing and UI design. Let your agent create and edit compositions, interfaces and 3D spaces, export previews, and collaborate with you on one canvas.",
15
16
  "examples": {
16
17
  "composition": "Recreate this reference image's composition on a canvas I can keep editing.",
17
18
  "uiSketch": "Read this UI sketch, adjust the layout using my notes, and export a preview.",
@@ -115,6 +116,7 @@
115
116
  "label": "Note",
116
117
  "prompt": "- Note: {{note}}",
117
118
  "nodePlaceholder": "Describe what this node represents",
119
+ "nodeHelp": "Add requirements for this node to include in the prompt.",
118
120
  "regionPlaceholder": "Describe the layout content represented by this region",
119
121
  "textPlaceholder": "Describe what this text communicates"
120
122
  }
@@ -133,6 +135,7 @@
133
135
  "agentCommand": "Use the following CLI command to connect to the current session:\n\n{{command}}\n\nOnce connected, stop and wait for the next instruction."
134
136
  },
135
137
  "workspaceSidebar": {
138
+ "containsCurrentSession": "Contains current session",
136
139
  "functionArea": "Actions",
137
140
  "projectArea": "Projects",
138
141
  "newComposition": "New composition",
@@ -158,7 +161,7 @@
158
161
  "renameSessionTitle": "Rename session",
159
162
  "renameSessionPlaceholder": "Enter session name",
160
163
  "deleteSessionTitle": "Delete session",
161
- "deleteSessionDescription": "Deleting this session also removes its drafts and refinement records.",
164
+ "deleteSessionDescription": "This session will move to Trash and can be restored before its retention period ends.",
162
165
  "loading": "Loading projects",
163
166
  "loadFailed": "Could not load projects",
164
167
  "newSessionGroup": "New group",
@@ -194,6 +197,8 @@
194
197
  },
195
198
  "imageEditor": {
196
199
  "content": "Image content",
200
+ "sourceDimensions": "{{width}} × {{height}} px",
201
+ "sourceFileSize": "{{size}} {{unit}}",
197
202
  "upload": "Upload image",
198
203
  "replace": "Replace image",
199
204
  "uploading": "Uploading",
@@ -225,6 +230,7 @@
225
230
  },
226
231
  "node": {
227
232
  "nodeDescription": "Node description",
233
+ "nodeDescriptionHelp": "Explains this node's role; agents can read and edit it.",
228
234
  "originUser": "user",
229
235
  "originAgent": "agent",
230
236
  "originImport": "import"
@@ -545,11 +551,35 @@
545
551
  "new": "New state",
546
552
  "delete": "Delete state",
547
553
  "deleteTitle": "Delete state “{{name}}”?",
548
- "reorderHint": "Hold a tab to drag it, or press Ctrl + Shift + Left/Right to reorder.",
549
554
  "notFound": "Unknown UI state: {{state}}."
550
555
  },
551
556
  "preview": {
552
557
  "outputFormatError": "UI preview output must use a .png or .svg filename."
558
+ },
559
+ "pngSplit": {
560
+ "action": "Split PNG",
561
+ "alphaThreshold": "Alpha threshold",
562
+ "minSize": "Minimum size",
563
+ "gap": "Gap",
564
+ "failed": "Splitting failed. Please retry.",
565
+ "invalid": "Select nonempty static PNG images with transparent areas.",
566
+ "complete": "Created {{count}} images; filtered {{discarded}} fragments.",
567
+ "alreadySplit": "Selected images have already been split.",
568
+ "retrySave": "Retry save",
569
+ "settings": "PNG split settings",
570
+ "applySettings": "Split",
571
+ "running": "Splitting PNG…",
572
+ "preview": "Split bounds preview",
573
+ "previewing": "Calculating split bounds…",
574
+ "previewFailed": "Could not preview split bounds. Please retry.",
575
+ "previewSummary": "Will create {{count}} images and filter {{discarded}} fragments.",
576
+ "zoomIn": "Zoom in",
577
+ "zoomOut": "Zoom out",
578
+ "help": "Preview controls",
579
+ "interactionHelp": "Scroll to zoom. Right-drag or Space-drag to pan. Choose Free anchors and click to add points. With at least three non-collinear points, click the first point or press Enter to close; Esc cancels drawing. Closed regions can be selected and deleted, but not reshaped. Each region becomes one image; earlier regions own overlapping pixels.",
580
+ "freeAnchors": "Free anchors",
581
+ "manualRegion": "Manual region {{index}}",
582
+ "closeRegion": "Close region"
553
583
  }
554
584
  },
555
585
  "clipboard": {
@@ -561,7 +591,10 @@
561
591
  "copyPreview": "Copy preview",
562
592
  "previewImage": "Preview image",
563
593
  "previewFailed": "Could not copy the preview.",
564
- "previewDownloaded": "This browser cannot copy images, so the preview was downloaded"
594
+ "previewDownloaded": "This browser cannot copy images, so the preview was downloaded",
595
+ "promptPreview": "Prompt preview",
596
+ "promptPreviewLoading": "Loading prompt",
597
+ "promptPreviewFailed": "Could not preview prompt"
565
598
  },
566
599
  "visualWeight": {
567
600
  "auto": "Auto",
@@ -584,6 +617,7 @@
584
617
  "uiSketchPlaceholder": "Enter text"
585
618
  },
586
619
  "errors": {
620
+ "historyExpired": "This history has expired. Reload the current canvas.",
587
621
  "serviceSync": "Could not synchronize with Human2AI: {{message}}",
588
622
  "operationFailed": "The action failed. Try again."
589
623
  },
@@ -830,5 +864,35 @@
830
864
  "loading": "Loading preview sources",
831
865
  "descendantMatches": "{{count}} matching descendants",
832
866
  "searchResults": "{{count}} matches"
867
+ },
868
+ "units": {
869
+ "pixels": "px"
870
+ },
871
+ "settings": {
872
+ "title": "Settings",
873
+ "navigationLabel": "Settings sections",
874
+ "close": "Close settings",
875
+ "autoRelease": "Automatic cleanup",
876
+ "imageDays": "Unused images",
877
+ "imageHint": "Images in use are kept.",
878
+ "historyDays": "Canvas history",
879
+ "historyHint": "The latest version and active undo history are kept. Ordinary history is limited to 100 versions.",
880
+ "trash": "Trash",
881
+ "trashDays": "Auto-delete after",
882
+ "trashHint": "Deleted sessions and their content are permanently removed when this period ends.",
883
+ "resetDefaults": "Reset to defaults",
884
+ "restoreSession": "Restore session",
885
+ "emptyTrash": "Trash is empty",
886
+ "deletedAt": "Deleted at",
887
+ "loading": "Loading settings",
888
+ "invalidDays": "Enter a whole number of days from 1 to 3650.",
889
+ "conflict": "Settings have changed. Retry to save your changes.",
890
+ "daysUnit_one": "day",
891
+ "daysUnit_other": "days",
892
+ "deleteNow": "Delete now",
893
+ "deleteNowConfirm": "Permanently delete “{{title}}”?",
894
+ "clearTrash": "Empty trash",
895
+ "clearTrashConfirm": "Empty the trash?",
896
+ "permanentDeleteHint": "Deleted sessions and their content cannot be restored."
833
897
  }
834
898
  }
@@ -0,0 +1,6 @@
1
+ CREATE TABLE ui_sketch_png_splits (
2
+ id TEXT PRIMARY KEY,
3
+ session_id TEXT NOT NULL,
4
+ record_json TEXT NOT NULL,
5
+ FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
6
+ ) STRICT;
@@ -0,0 +1,43 @@
1
+ ALTER TABLE image_assets ADD COLUMN unreferenced_since TEXT;
2
+ ALTER TABLE image_assets ADD COLUMN deleting INTEGER NOT NULL DEFAULT 0 CHECK (deleting IN (0, 1));
3
+ ALTER TABLE image_assets ADD COLUMN preview_reference_json TEXT;
4
+ CREATE INDEX image_assets_sha256 ON image_assets(sha256);
5
+
6
+ -- Existing destination-owned previews remain verifiable after source history expires.
7
+ UPDATE image_assets AS asset SET preview_reference_json = previews.reference
8
+ FROM (
9
+ SELECT versions.session_id, json_extract(image.value, '$.assetId') AS asset_id,
10
+ json_extract(image.value, '$.previewReference') AS reference,
11
+ row_number() OVER (PARTITION BY versions.session_id, json_extract(image.value, '$.assetId') ORDER BY versions.revision) AS first_reference
12
+ FROM ui_sketch_draft_versions versions, json_each(versions.draft_json, '$.images') image
13
+ WHERE json_type(image.value, '$.previewReference') = 'object'
14
+ ) previews
15
+ WHERE previews.first_reference = 1 AND previews.session_id = asset.session_id AND previews.asset_id = asset.id;
16
+
17
+ ALTER TABLE ui_sketch_png_splits ADD COLUMN updated_at TEXT NOT NULL DEFAULT '';
18
+ UPDATE ui_sketch_png_splits SET updated_at = strftime('%Y-%m-%dT%H:%M:%fZ', 'now');
19
+
20
+ CREATE TABLE session_storage_protections (
21
+ session_id TEXT NOT NULL REFERENCES sessions(id) ON DELETE CASCADE,
22
+ client_id TEXT NOT NULL,
23
+ revisions_json TEXT NOT NULL,
24
+ asset_ids_json TEXT NOT NULL,
25
+ expires_at TEXT NOT NULL,
26
+ PRIMARY KEY (session_id, client_id)
27
+ ) STRICT;
28
+
29
+ CREATE TABLE storage_orphan_files (
30
+ relative_path TEXT PRIMARY KEY,
31
+ unreferenced_since TEXT NOT NULL
32
+ ) STRICT;
33
+
34
+ -- Cascading session/project deletion must not lose the paths of source files.
35
+ CREATE TRIGGER image_asset_file_removed AFTER DELETE ON image_assets BEGIN
36
+ INSERT OR IGNORE INTO storage_orphan_files VALUES (OLD.relative_path, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'));
37
+ END;
38
+ CREATE TRIGGER style_image_file_removed AFTER DELETE ON style_reference_images BEGIN
39
+ INSERT OR IGNORE INTO storage_orphan_files VALUES (OLD.relative_path, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'));
40
+ END;
41
+ CREATE TRIGGER style_model_file_removed AFTER DELETE ON style_preview_models BEGIN
42
+ INSERT OR IGNORE INTO storage_orphan_files VALUES (OLD.relative_path, strftime('%Y-%m-%dT%H:%M:%fZ', 'now'));
43
+ END;
@@ -0,0 +1,11 @@
1
+ ALTER TABLE sessions ADD COLUMN deleted_at TEXT;
2
+ CREATE INDEX sessions_deleted_at ON sessions(deleted_at) WHERE deleted_at IS NOT NULL;
3
+
4
+ CREATE TABLE workspace_settings (
5
+ id INTEGER PRIMARY KEY CHECK (id = 1),
6
+ revision INTEGER NOT NULL CHECK (revision >= 1),
7
+ image_retention_days INTEGER NOT NULL CHECK (image_retention_days BETWEEN 1 AND 3650),
8
+ history_retention_days INTEGER NOT NULL CHECK (history_retention_days BETWEEN 1 AND 3650),
9
+ trash_retention_days INTEGER NOT NULL CHECK (trash_retention_days BETWEEN 1 AND 3650)
10
+ ) STRICT;
11
+ INSERT INTO workspace_settings VALUES (1, 1, 1, 7, 7);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "human2ai",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Local visual collaboration workspace for people and AI agents, with a browser UI and CLI.",
5
5
  "license": "MIT",
6
6
  "author": "贾思斋",