@beeintel/batch-image 0.0.0-stage → 1.0.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 (241) hide show
  1. package/FONT-LICENSE.txt +93 -0
  2. package/README.md +181 -2
  3. package/dist/assets/11st-D7qGO5e4.webp +0 -0
  4. package/dist/assets/UPNG-CPfdwFSy.js +2298 -0
  5. package/dist/assets/adjust-card-B63b81iV.webp +0 -0
  6. package/dist/assets/adjust-final.worker-C2JbTvv5.js +6945 -0
  7. package/dist/assets/amazon-CjTtpZTq.webp +0 -0
  8. package/dist/assets/ascii_art-B4UGbtGs.webp +0 -0
  9. package/dist/assets/auction-j26eVUQO.webp +0 -0
  10. package/dist/assets/background-DGdZUdkL.webp +0 -0
  11. package/dist/assets/background-card-wK7DRpvM.png +0 -0
  12. package/dist/assets/body-CUFdRg8w.webp +0 -0
  13. package/dist/assets/bounded-cutout.worker-BZR6mbaI.js +9615 -0
  14. package/dist/assets/brand-mark-card-cFUeDeO2.webp +0 -0
  15. package/dist/assets/buyma-dAxYNjow.webp +0 -0
  16. package/dist/assets/codec.worker-7W6hmsm6.js +7349 -0
  17. package/dist/assets/contour_lines-C_CqrgV1.webp +0 -0
  18. package/dist/assets/creema-B1tWyCPx.webp +0 -0
  19. package/dist/assets/crop-final.worker-Owin7TvX.js +7035 -0
  20. package/dist/assets/cutout-CzMvV5An.webp +0 -0
  21. package/dist/assets/cutout-card-CN4gNFBz.png +0 -0
  22. package/dist/assets/cutout.worker-DyH6Prbn.js +3894 -0
  23. package/dist/assets/depop-CkVC5Fn1.webp +0 -0
  24. package/dist/assets/dewrinkle-kFzP6LqD.webp +0 -0
  25. package/dist/assets/dither-CcxmO2e6.webp +0 -0
  26. package/dist/assets/douyin-CP_HwBDF.webp +0 -0
  27. package/dist/assets/download.worker-DnGSB6P_.js +17779 -0
  28. package/dist/assets/duotone-Cdg_3fQf.webp +0 -0
  29. package/dist/assets/ebay-CxLfrRAf.webp +0 -0
  30. package/dist/assets/edit-Cv-txfZm.webp +0 -0
  31. package/dist/assets/effect.worker-qu1eCcII.js +9227 -0
  32. package/dist/assets/engraving-BENh1O2O.webp +0 -0
  33. package/dist/assets/etsy-CSvz9GpY.webp +0 -0
  34. package/dist/assets/expand-C60VE9nK.webp +0 -0
  35. package/dist/assets/facebook-Ca2nJJiQ.webp +0 -0
  36. package/dist/assets/film_stock-Bqauwcq4.webp +0 -0
  37. package/dist/assets/final.worker-BnzJ3N5C.js +7035 -0
  38. package/dist/assets/final.worker-Csc1zoYS.js +7054 -0
  39. package/dist/assets/final.worker-DzBFT9xk.js +6922 -0
  40. package/dist/assets/final.worker-XpgKnlaz.js +7217 -0
  41. package/dist/assets/flatlay-CPiVmlAa.webp +0 -0
  42. package/dist/assets/flatlay-fold-B-CRYy87.webp +0 -0
  43. package/dist/assets/flatlay-open-Dzas8okC.webp +0 -0
  44. package/dist/assets/g-market-DXuYK_JH.webp +0 -0
  45. package/dist/assets/ghost-BCEAx_Zx.webp +0 -0
  46. package/dist/assets/ghost-front-WFgA4sUo.webp +0 -0
  47. package/dist/assets/ghost-three-quarter-Rt8cXj34.webp +0 -0
  48. package/dist/assets/gif-CObOIITx.js +303 -0
  49. package/dist/assets/glass_tiles-3IXP-Hmg.webp +0 -0
  50. package/dist/assets/glitch_art-D1i3qben.webp +0 -0
  51. package/dist/assets/glitch_blur-C4q_9zyq.webp +0 -0
  52. package/dist/assets/glow-Bv9EHBU5.webp +0 -0
  53. package/dist/assets/gradient_map-BR-UVYMP.webp +0 -0
  54. package/dist/assets/halftone-CWdKu2_6.webp +0 -0
  55. package/dist/assets/holo_sticker-BQDikLg2.webp +0 -0
  56. package/dist/assets/idus-7diqRNPs.webp +0 -0
  57. package/dist/assets/imagetracer.worker-CgunQTPG.js +7096 -0
  58. package/dist/assets/instagram-Bf0IVidT.webp +0 -0
  59. package/dist/assets/kakao-talk-Df79L_Mv.webp +0 -0
  60. package/dist/assets/kaleidoscope-BxqMZuWo.webp +0 -0
  61. package/dist/assets/karrot-BXFPhDwt.webp +0 -0
  62. package/dist/assets/kaufland-BDDy6e0C.webp +0 -0
  63. package/dist/assets/lazada-ConR4e1O.webp +0 -0
  64. package/dist/assets/lens_flare-DgyiAv_j.webp +0 -0
  65. package/dist/assets/light_leak-kUdpoFuC.webp +0 -0
  66. package/dist/assets/line-Dr1j___B.webp +0 -0
  67. package/dist/assets/linkedin-4s_9Wh03.webp +0 -0
  68. package/dist/assets/lo_fi-DSdl3yY_.webp +0 -0
  69. package/dist/assets/logo-preparation.worker-D9oa7SME.js +420 -0
  70. package/dist/assets/mercado-libre-C8CskEiS.webp +0 -0
  71. package/dist/assets/mercari-jp-DHj7nz4O.webp +0 -0
  72. package/dist/assets/metadata.worker-B_9_BgN1.js +6456 -0
  73. package/dist/assets/mirror_collage-JtSKCeSh.webp +0 -0
  74. package/dist/assets/model-BbeF-fsf.webp +0 -0
  75. package/dist/assets/model-BjWhieit.webp +0 -0
  76. package/dist/assets/momo-BWXO_8Df.webp +0 -0
  77. package/dist/assets/motion_blur-B8YUHeSg.webp +0 -0
  78. package/dist/assets/naver-xQKL8lWg.webp +0 -0
  79. package/dist/assets/nuvemshop-DPt6rnA-.webp +0 -0
  80. package/dist/assets/olx-B87gp-Il.webp +0 -0
  81. package/dist/assets/orient-card-Da0ii6mX.webp +0 -0
  82. package/dist/assets/orient-final.worker-CdF5Y5zD.js +6909 -0
  83. package/dist/assets/orientation-preview.worker-B7uFzz3J.js +6865 -0
  84. package/dist/assets/ort.bundle.min-CreFV8V1.js +9311 -0
  85. package/dist/assets/ort.webgpu.bundle.min-CAudaHZO.js +9311 -0
  86. package/dist/assets/otto-market-DWZyNKJn.webp +0 -0
  87. package/dist/assets/paper_texture-CXphyIrs.webp +0 -0
  88. package/dist/assets/pinterest-ByZqih2J.webp +0 -0
  89. package/dist/assets/polish-DFy6LNG7.webp +0 -0
  90. package/dist/assets/poshmark-DnZi2vA1.webp +0 -0
  91. package/dist/assets/posterize-SpLVGq1s.webp +0 -0
  92. package/dist/assets/preview.worker-DcrCKKWl.js +380 -0
  93. package/dist/assets/qoo10-C1pq81Jx.webp +0 -0
  94. package/dist/assets/rakuten-ulYog1hL.webp +0 -0
  95. package/dist/assets/recolor-mBX7vdFT.webp +0 -0
  96. package/dist/assets/resize-DVEAl0Um.webp +0 -0
  97. package/dist/assets/runtime-0663b902fb3937883a34.wasm +0 -0
  98. package/dist/assets/runtime-355a5c80c7bfdf8737de.mjs +2817 -0
  99. package/dist/assets/runtime-49871f5a4409519797e1.wasm +0 -0
  100. package/dist/assets/runtime-74cf72f9a2b7befc115a.mjs +2817 -0
  101. package/dist/assets/shadow-card-DTZEH60r.png +0 -0
  102. package/dist/assets/shopee-Bxfei6sj.webp +0 -0
  103. package/dist/assets/shopify-wVaBafcF.webp +0 -0
  104. package/dist/assets/shopline-DMoaJ7Bh.webp +0 -0
  105. package/dist/assets/sparkle-CD5GSGip.webp +0 -0
  106. package/dist/assets/ssg-DQoFx5u5.webp +0 -0
  107. package/dist/assets/staging-CIc8pQJ6.webp +0 -0
  108. package/dist/assets/standard-cutout.worker-BYLzdpR-.js +1261 -0
  109. package/dist/assets/text-DQW2mBGp.webp +0 -0
  110. package/dist/assets/textured_glass-D2coxp7n.webp +0 -0
  111. package/dist/assets/tga-VGxWDes0.js +752 -0
  112. package/dist/assets/tilt_shift-BKs46yeX.webp +0 -0
  113. package/dist/assets/transformers.web-DB57cIO5.js +28891 -0
  114. package/dist/assets/tritone-CcR4qizk.webp +0 -0
  115. package/dist/assets/upscale-BrLadyUk.webp +0 -0
  116. package/dist/assets/upscale-creative-DnZnQufJ.webp +0 -0
  117. package/dist/assets/upscale-crisp-Ckdmbsnn.webp +0 -0
  118. package/dist/assets/vinted-1QDsxvC6.webp +0 -0
  119. package/dist/assets/watercolor-CV67zYNE.webp +0 -0
  120. package/dist/assets/watermark-CpPrxaT5.webp +0 -0
  121. package/dist/assets/wave_distortion-CV5jVfK4.webp +0 -0
  122. package/dist/assets/whatsapp-CWJxqzR6.webp +0 -0
  123. package/dist/assets/worker-DfrCFP3O.js +55 -0
  124. package/dist/assets/xerox_noise-CbbHY1S1.webp +0 -0
  125. package/dist/assets/youtube-DS12d5mi.webp +0 -0
  126. package/dist/assets/zalando-CenfWOwz.webp +0 -0
  127. package/dist/browser-adapter.d.ts +4 -0
  128. package/dist/browser-cutout-capability.d.ts +4 -0
  129. package/dist/browser-cutout-resources.d.ts +3 -0
  130. package/dist/browser-local-capabilities.d.ts +5 -0
  131. package/dist/capabilities.d.ts +18 -0
  132. package/dist/chunks/AdjustToolPanel-B6dtlFlj.js +195 -0
  133. package/dist/chunks/BackgroundToolPanel-C3Rr9d4S.js +41 -0
  134. package/dist/chunks/BatchMaterials-DDoJTaS5.js +806 -0
  135. package/dist/chunks/BatchModeChoices-DeBARgvY.js +111 -0
  136. package/dist/chunks/BatchOutputColorPicker-D7WIDS4_.js +75 -0
  137. package/dist/chunks/BatchReferenceFields-Cr5WgFRJ.js +316 -0
  138. package/dist/chunks/BeautifyToolPanel-DDZXDQKM.js +215 -0
  139. package/dist/chunks/BrandMarkToolPanel-vKobk_R3.js +1179 -0
  140. package/dist/chunks/ContentTrimControl-BKCJEst5.js +297 -0
  141. package/dist/chunks/CropToolPanel-C_sW5tWL.js +218 -0
  142. package/dist/chunks/CutoutToolPanel-B7ObmiWd.js +73 -0
  143. package/dist/chunks/DisclosureToolPanel-F3ccFJIF.js +76 -0
  144. package/dist/chunks/ExpandToolPanel-BKjj5UJA.js +67 -0
  145. package/dist/chunks/ImageEffectsToolPanel-CsDIBpT6.js +966 -0
  146. package/dist/chunks/IpAuditToolPanel-CduDfFh-.js +96 -0
  147. package/dist/chunks/ListingToolPanel-8pJ2_zvI.js +783 -0
  148. package/dist/chunks/MaterialSelectionPlate-CW7HaS6v.js +30 -0
  149. package/dist/chunks/MetadataToolPanel-C8XJOamN.js +104 -0
  150. package/dist/chunks/OrientToolPanel-C1AzQchm.js +161 -0
  151. package/dist/chunks/PluginActionFooter.vue_vue_type_script_setup_true_lang-BGe419qz.js +102 -0
  152. package/dist/chunks/ResizeToolPanel-DWikcj2G.js +1178 -0
  153. package/dist/chunks/RetouchToolPanel-B4eQKk2W.js +350 -0
  154. package/dist/chunks/ShadowToolPanel-Bbj76hQd.js +254 -0
  155. package/dist/chunks/SvgExportToolPanel-BRxpzd7q.js +219 -0
  156. package/dist/chunks/TranslationToolPanel-Bxv8U2WY.js +125 -0
  157. package/dist/chunks/UpscaleToolPanel-BRIgpszs.js +127 -0
  158. package/dist/chunks/engine-D-T-1RSx.js +69 -0
  159. package/dist/chunks/entry-CboOSe2r.js +42945 -0
  160. package/dist/chunks/gpu-CScw5MNG.js +231 -0
  161. package/dist/chunks/hosted-resources-COzZ7nZY.js +8196 -0
  162. package/dist/chunks/loader-circle-CylCgDqP.js +16 -0
  163. package/dist/chunks/motionFeatures-D67ghPG1.js +4405 -0
  164. package/dist/chunks/search-BwsDnulU.js +18 -0
  165. package/dist/chunks/standard-cutout-vPpP6xBc.js +45 -0
  166. package/dist/chunks/static-logo-2F9ORZWc.js +34 -0
  167. package/dist/config.d.ts +66 -0
  168. package/dist/contracts.d.ts +272 -0
  169. package/dist/index.d.ts +23 -0
  170. package/dist/index.js +13 -0
  171. package/dist/node/catalog.mjs +45 -0
  172. package/dist/node/cli.mjs +11 -0
  173. package/dist/node/index.d.mts +20 -0
  174. package/dist/node/index.mjs +2 -0
  175. package/dist/node/prepare.mjs +114 -0
  176. package/dist/node/vite.mjs +46 -0
  177. package/dist/processing.d.ts +1 -0
  178. package/dist/processing.js +12105 -0
  179. package/dist/remote-contracts.d.ts +114 -0
  180. package/dist/resource-contracts.d.ts +40 -0
  181. package/dist/resources/cutout/9ae2e5375a34fa413530954dc20d085d175faffc86108c13619220d0557f80bf.json +1 -0
  182. package/dist/resources/cutout/f119dabecc64bc436d3d08425dde96ec2598fd40541eba97d8d53a4e8bbdcaea.json +1 -0
  183. package/dist/resources/cutout/resources.json +195 -0
  184. package/dist/resources/cutout/sources.json +294 -0
  185. package/dist/resources.json +1191 -0
  186. package/dist/service-contracts.d.ts +43 -0
  187. package/dist/slots.d.ts +21 -0
  188. package/dist/style.css +1 -0
  189. package/dist/types/batch/api.d.ts +89 -0
  190. package/dist/types/batch/cutout-output.d.ts +2 -0
  191. package/dist/types/batch/features/background/engine.d.mts +12 -0
  192. package/dist/types/batch/features/basic-edit/contracts.d.ts +87 -0
  193. package/dist/types/batch/features/basic-edit/engine.d.mts +96 -0
  194. package/dist/types/batch/features/brand-mark/contracts.d.ts +84 -0
  195. package/dist/types/batch/features/brand-mark/engine.d.mts +68 -0
  196. package/dist/types/batch/features/export-compression/contracts.d.ts +44 -0
  197. package/dist/types/batch/features/export-compression/gifenc.d.ts +33 -0
  198. package/dist/types/batch/features/export-compression/plan.d.ts +45 -0
  199. package/dist/types/batch/features/export-compression/presentation.d.ts +70 -0
  200. package/dist/types/batch/features/export-compression/upng.d.ts +6 -0
  201. package/dist/types/batch/features/final-image/resize.d.mts +15 -0
  202. package/dist/types/batch/features/image-effects/contracts.d.ts +58 -0
  203. package/dist/types/batch/features/image-effects/gpu-pixel-runtime.d.ts +15 -0
  204. package/dist/types/batch/features/image-effects/photo-audit.d.ts +21 -0
  205. package/dist/types/batch/features/image-effects/photo-v7-cpu.d.ts +9 -0
  206. package/dist/types/batch/features/image-effects/profiles-v4.d.ts +157 -0
  207. package/dist/types/batch/features/image-effects/profiles-v5.d.ts +20 -0
  208. package/dist/types/batch/features/image-effects/profiles-v6.d.ts +14 -0
  209. package/dist/types/batch/features/image-effects/profiles-v7.d.ts +53 -0
  210. package/dist/types/batch/features/image-effects/profiles-v8.d.ts +113 -0
  211. package/dist/types/batch/features/image-effects/profiles-v9.d.ts +20 -0
  212. package/dist/types/batch/features/image-translation/params.d.ts +257 -0
  213. package/dist/types/batch/features/listing-remake/transport.d.ts +21 -0
  214. package/dist/types/batch/features/metadata/bytes.d.mts +13 -0
  215. package/dist/types/batch/features/metadata/containers.d.mts +20 -0
  216. package/dist/types/batch/features/metadata/declaration.d.mts +5 -0
  217. package/dist/types/batch/features/metadata/engine.d.mts +9 -0
  218. package/dist/types/batch/features/metadata/exchange.d.mts +48 -0
  219. package/dist/types/batch/features/shadow/contracts.d.ts +43 -0
  220. package/dist/types/batch/features/shadow/engine.d.mts +33 -0
  221. package/dist/types/batch/features/svg-export/download-contract.d.ts +33 -0
  222. package/dist/types/batch/features/svg-export/download-prepare.d.ts +2 -0
  223. package/dist/types/batch/features/svg-export/download.d.ts +7 -0
  224. package/dist/types/batch/features/svg-export/imagetracer.d.ts +6 -0
  225. package/dist/types/batch/features/svg-export/optimizer.d.ts +2 -0
  226. package/dist/types/batch/ids.d.ts +1 -0
  227. package/dist/types/batch/model.d.ts +317 -0
  228. package/dist/types/batch/public/config.d.ts +66 -0
  229. package/dist/types/batch/public/contracts.d.ts +272 -0
  230. package/dist/types/batch/public/remote-contracts.d.ts +114 -0
  231. package/dist/types/batch/public/resource-contracts.d.ts +40 -0
  232. package/dist/types/batch/public/service-contracts.d.ts +43 -0
  233. package/dist/types/batch/queue.d.ts +34 -0
  234. package/dist/types/batch/receipts.d.ts +85 -0
  235. package/dist/types/batch/retention.d.ts +13 -0
  236. package/dist/types/onnxruntime-web.d.ts +5 -0
  237. package/dist/types/plugins/cutout/core/hosted-resources.d.ts +11 -0
  238. package/dist/types/processing.d.ts +18 -0
  239. package/dist/types/shared/svg-security.d.mts +4 -0
  240. package/dist/types/workspace-worker.d.ts +2 -0
  241. package/package.json +91 -3
@@ -0,0 +1,114 @@
1
+ import type { WorkspaceAssetReference, WorkspaceDisclosure, WorkspaceExecutionPlan } from './contracts';
2
+ export interface WorkspaceRemoteDescriptor {
3
+ readonly serviceId: string;
4
+ readonly modeId: string;
5
+ readonly modelId?: string;
6
+ readonly paramsVersion: string;
7
+ }
8
+ export interface WorkspaceRemotePlan extends WorkspaceExecutionPlan, WorkspaceRemoteDescriptor {
9
+ readonly schemaVersion: 1;
10
+ readonly canonicalVersion: 'sorted-json-v1';
11
+ readonly batchId: string;
12
+ readonly contextRevision: string;
13
+ readonly input: Readonly<WorkspaceAssetReference>;
14
+ readonly paramsSha256: string;
15
+ readonly planSha256: string;
16
+ }
17
+ export interface WorkspaceRemoteGenerated {
18
+ outputId: string;
19
+ sha256: string;
20
+ mime: string;
21
+ bytes: number;
22
+ width: number;
23
+ height: number;
24
+ }
25
+ export interface WorkspaceRemoteResultDetails {
26
+ inputSha256?: string;
27
+ skipped?: boolean;
28
+ reason?: string;
29
+ reasonCode?: 'already_target_language' | 'no_editable_text';
30
+ disclosure?: WorkspaceDisclosure | null;
31
+ translation?: Record<string, unknown>;
32
+ }
33
+ export type WorkspaceRemoteResult = WorkspaceRemoteResultDetails & ({
34
+ kind: 'image';
35
+ asset: WorkspaceAssetReference;
36
+ } | {
37
+ kind: 'analysis';
38
+ });
39
+ export interface WorkspaceRemoteReceipt {
40
+ schemaVersion: 1;
41
+ canonicalVersion: 'sorted-json-v1';
42
+ batchId: string;
43
+ clientRequestId: string;
44
+ operationId: string;
45
+ itemId: string;
46
+ inputVersionId: string;
47
+ inputSha256: string;
48
+ paramsSha256: string;
49
+ planSha256: string;
50
+ serviceId: string;
51
+ modeId: string;
52
+ modelId?: string;
53
+ paramsVersion: string;
54
+ toolId: string;
55
+ toolVersion: '1' | '2';
56
+ taskId: string;
57
+ status: 'accepted' | 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled';
58
+ statusVersion: number;
59
+ stage?: string;
60
+ pollAfterMs?: number;
61
+ result?: WorkspaceRemoteResult;
62
+ generated?: WorkspaceRemoteGenerated;
63
+ /** Validated workflow metadata retained while a generated output awaits publication. */
64
+ generatedDetails?: WorkspaceRemoteResultDetails;
65
+ error?: {
66
+ code: string;
67
+ message: string;
68
+ };
69
+ }
70
+ export type WorkspaceRemoteAdmission = {
71
+ state: 'accepted';
72
+ receipt: WorkspaceRemoteReceipt;
73
+ } | {
74
+ state: 'not_accepted';
75
+ clientRequestId: string;
76
+ planSha256: string;
77
+ code: string;
78
+ reason: string;
79
+ } | {
80
+ state: 'unknown' | 'not_found';
81
+ clientRequestId: string;
82
+ planSha256: string;
83
+ reason?: string;
84
+ };
85
+ export interface WorkspaceRemoteExecution {
86
+ supports(request: {
87
+ toolId: string;
88
+ params: Readonly<Record<string, unknown>>;
89
+ }): boolean;
90
+ describe(request: {
91
+ toolId: string;
92
+ params: Readonly<Record<string, unknown>>;
93
+ }): WorkspaceRemoteDescriptor;
94
+ submit(plan: WorkspaceRemotePlan, context: {
95
+ input: Blob;
96
+ signal: AbortSignal;
97
+ readAsset(reference: WorkspaceAssetReference): Promise<Blob>;
98
+ }): Promise<WorkspaceRemoteAdmission>;
99
+ query(taskId: string, plan: WorkspaceRemotePlan, signal?: AbortSignal): Promise<WorkspaceRemoteReceipt>;
100
+ queryByRequest(clientRequestId: string, plan: WorkspaceRemotePlan, signal?: AbortSignal): Promise<WorkspaceRemoteAdmission>;
101
+ publish?(request: {
102
+ plan: WorkspaceRemotePlan;
103
+ generated: WorkspaceRemoteGenerated;
104
+ publicationId: string;
105
+ }, signal?: AbortSignal): Promise<{
106
+ state: 'published';
107
+ publicationId: string;
108
+ asset: WorkspaceAssetReference;
109
+ } | {
110
+ state: 'unknown' | 'pending';
111
+ publicationId: string;
112
+ }>;
113
+ cancel?(taskId: string, plan: WorkspaceRemotePlan, signal?: AbortSignal): Promise<WorkspaceRemoteReceipt>;
114
+ }
@@ -0,0 +1,40 @@
1
+ /** Explicit, immutable resources for the existing browser cutout modes. No site-root defaults. */
2
+ export type WorkspaceCutoutModel = 'isnet_fp16' | 'birefnet_quality';
3
+ export interface WorkspaceCutoutResourceSource {
4
+ manifestUrl: string;
5
+ manifestSha256: string;
6
+ modelBaseUrl: string;
7
+ runtimeBaseUrl: string;
8
+ }
9
+ export interface WorkspaceCutoutResources {
10
+ models: Partial<Record<WorkspaceCutoutModel, WorkspaceCutoutResourceSource>>;
11
+ /** Optional host-built module workers implementing the documented engine messages. */
12
+ workers?: Partial<Record<WorkspaceCutoutModel, string>>;
13
+ }
14
+ export interface WorkspaceBrowserAdapterOptions {
15
+ namespace: string;
16
+ /** Explicit HTTP(S) directory containing the SDK's prepared immutable resources. */
17
+ resourceBaseUrl?: string;
18
+ /** Advanced custom resource/Worker contract; mutually exclusive with resourceBaseUrl. */
19
+ cutoutResources?: WorkspaceCutoutResources;
20
+ }
21
+ export interface WorkspaceCutoutResourceFile {
22
+ kind: 'model' | 'runtime';
23
+ size: number;
24
+ mime: string;
25
+ sha256: string;
26
+ chunks: {
27
+ name: string;
28
+ offsets: [number, number];
29
+ sha256: string;
30
+ }[];
31
+ }
32
+ export interface WorkspaceCutoutResourceManifest {
33
+ schemaVersion: 1;
34
+ model: WorkspaceCutoutModel;
35
+ modelId: string;
36
+ revision: string;
37
+ runtimeVersion: string;
38
+ /** Model paths are relative to modelBaseUrl; runtime paths to runtimeBaseUrl. */
39
+ files: Record<string, WorkspaceCutoutResourceFile>;
40
+ }
@@ -0,0 +1,43 @@
1
+ /** Optional compatibility services for retained tools. The core owns parsing and queue state.
2
+ * These are never required for browser tools or WorkspaceRemoteExecution. */
3
+ export type WorkspaceServiceSource = {
4
+ kind: 'asset';
5
+ assetId: string;
6
+ assetVersionId: string;
7
+ } | {
8
+ kind: 'external_url';
9
+ url: string;
10
+ expectedSha256?: string;
11
+ };
12
+ export interface WorkspaceTaskSubmission {
13
+ clientRequestId: string;
14
+ operationId: string;
15
+ itemId: string;
16
+ inputVersionId: string;
17
+ source: WorkspaceServiceSource;
18
+ toolId: string;
19
+ toolVersion: string;
20
+ params: Readonly<Record<string, unknown>>;
21
+ resumeFromTaskId?: string;
22
+ retryActionId?: string;
23
+ serviceEpoch?: string;
24
+ }
25
+ export interface WorkspaceUploadOptions {
26
+ resumeUploadId?: string;
27
+ strictResume?: boolean;
28
+ onTicket?: (uploadId: string) => void | Promise<void>;
29
+ }
30
+ export interface WorkspaceServices {
31
+ getCapabilities?(): Promise<unknown>;
32
+ getAiCapabilities?(): Promise<unknown>;
33
+ uploadLocal?(blob: Blob, filename: string, options?: WorkspaceUploadOptions): Promise<unknown>;
34
+ resolveAsset?(assetId: string, versionId: string): Promise<unknown>;
35
+ submitTask?(submission: WorkspaceTaskSubmission): Promise<unknown>;
36
+ queryOriginalTask?(taskId: string): Promise<unknown>;
37
+ getTask?(taskId: string, service?: 'node' | 'python-ai'): Promise<unknown>;
38
+ getTaskByRequest?(requestId: string, service?: 'node' | 'python-ai'): Promise<unknown>;
39
+ submitLirSegment?(body: Readonly<Record<string, unknown>>): Promise<unknown>;
40
+ exportDeclaredImage?(source: WorkspaceServiceSource, format: 'png' | 'jpeg', expectedSha256: string, service?: 'node' | 'python-ai'): Promise<Blob>;
41
+ fetchExternalSource?(url: string, expectedSha256?: string, signal?: AbortSignal): Promise<Blob>;
42
+ fetchExternalThumbnail?(url: string, expectedSha256?: string): Promise<Blob>;
43
+ }
@@ -0,0 +1,34 @@
1
+ import type { Attempt, Batch, Operation, ToolId } from './model';
2
+ export declare const isPendingAttempt: (attempt: Attempt) => boolean;
3
+ export declare const isUnsubmittedAttempt: (attempt: Attempt) => boolean;
4
+ export declare function latestQueueSteps(batch: Batch): Map<string, Attempt>;
5
+ export declare function itemQueueSteps(batch: Batch, itemId: string): Attempt[];
6
+ export declare function queuePredecessors(batch: Batch): Map<string, Attempt>;
7
+ export declare function queuePredecessor(batch: Batch, itemId: string): Attempt | undefined;
8
+ export declare function latestOperationAttempt(batch: Batch, operationId: string, itemId: string): Attempt | undefined;
9
+ export declare function dependsOnStep(batch: Batch, child: Attempt, operationId: string): boolean;
10
+ export declare function queueChain(batch: Batch, step: Attempt): Attempt[];
11
+ export declare function advanceQueue(batch: Batch): boolean;
12
+ /** One operation admits work at a time. Existing receipts finish before queued recoveries. */
13
+ export declare function executionOperation(batch: Batch): Operation | undefined;
14
+ export declare function hasExceptionalDependency(batch: Batch, attempt: Attempt): boolean;
15
+ export declare function createOperation(batch: Batch, itemIds: string[], toolId: ToolId, params: Record<string, unknown>): Operation;
16
+ export declare function canRetryAttempt(batch: Batch, attempt: Attempt): boolean;
17
+ export declare function retryFailed(batch: Batch, operationId: string, itemIds?: string[]): Attempt[];
18
+ export declare function waitingDescendants(batch: Batch, attempt: Attempt): Attempt[];
19
+ /** New intent explicitly replaces an unresolved failure; it never edits its frozen operation. */
20
+ export declare function replaceFailedAttempt(batch: Batch, attemptId: string, toolId: ToolId, params: Record<string, unknown>): Operation;
21
+ export declare function skipFailedStep(batch: Batch, attemptId: string): boolean;
22
+ /** Validate the whole cohort before changing any dependency. Failed receipts remain as history. */
23
+ export declare function skipFailedSteps(batch: Batch, ids: string[]): number;
24
+ export type ForceInput = {
25
+ attemptId: string;
26
+ itemId: string;
27
+ versionId: string;
28
+ };
29
+ export declare function forceContinueCandidates(batch: Batch, operationId: string): ForceInput[];
30
+ /** An explicit input fork: receipt facts remain, while released predecessors can never auto-adopt/replay. */
31
+ export declare function forceContinueOperation(batch: Batch, operationId: string, frozen: ForceInput[]): number;
32
+ export declare function cancelQueueStep(batch: Batch, attemptId: string, includeStep?: boolean): number;
33
+ export declare function attentionItems(batch: Batch): string[];
34
+ export declare function blockingStep(batch: Batch, attempt: Attempt): Attempt | undefined;
@@ -0,0 +1,85 @@
1
+ import type { Asset, WorkflowResult, TaskStep, IpAnalysis } from './model';
2
+ import { type TranslationDetails } from './features/image-translation/params';
3
+ export type TaskResponse = {
4
+ submittedParams?: Record<string, unknown>;
5
+ taskId: string;
6
+ clientRequestId: string;
7
+ operationId: string;
8
+ itemId: string;
9
+ inputVersionId: string;
10
+ status: 'accepted' | 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled';
11
+ statusVersion: number;
12
+ stage?: string;
13
+ pollAfterMs?: number;
14
+ result?: WorkflowResult;
15
+ partialResult?: {
16
+ kind: 'image';
17
+ asset: Asset;
18
+ };
19
+ partialAnalysis?: IpAnalysis;
20
+ partialTranslation?: TranslationDetails;
21
+ steps?: TaskStep[];
22
+ error?: {
23
+ code: string;
24
+ message: string;
25
+ retryAction?: string;
26
+ };
27
+ actualSourceSha256?: string;
28
+ };
29
+ export type ExpectedTask = Partial<Pick<TaskResponse, 'taskId' | 'clientRequestId' | 'operationId' | 'itemId' | 'inputVersionId'>>;
30
+ export declare function record(value: unknown): Record<string, unknown>;
31
+ export declare function text(value: unknown): string;
32
+ export declare function parseAsset(value: unknown): Asset;
33
+ export declare function parseTaskResponse(value: unknown, expected?: ExpectedTask): TaskResponse;
34
+ export declare function parseUploadStatus(value: unknown): {
35
+ status: "failed" | "ready" | "waiting_upload" | "verifying";
36
+ asset: Asset;
37
+ error: {
38
+ code: string;
39
+ message: string;
40
+ retryAction?: string;
41
+ };
42
+ };
43
+ export declare function parseUploadTicket(value: unknown): {
44
+ uploadId: string;
45
+ uploadUrl: string;
46
+ method: string;
47
+ };
48
+ export declare function parseCapabilities(value: unknown): {
49
+ storage: "local" | "r2";
50
+ taskPersistence: "local_disk";
51
+ authentication: "loopback_only";
52
+ idempotencyRetention: "local_state_lifetime";
53
+ uploadStatus: boolean;
54
+ maxItems: number;
55
+ maxUploadBytes: number;
56
+ maxPixels: number;
57
+ tools: string[];
58
+ metadataExport: boolean;
59
+ assetRetentionHours: number;
60
+ };
61
+ export declare function parseAiCapabilities(value: unknown): {
62
+ taskService: "python-ai";
63
+ queue: "sqlite-huey";
64
+ taskPersistence: "sqlite";
65
+ idempotencyRetention: "local_state_lifetime";
66
+ executor: "rembg" | "fixture";
67
+ tools: string[];
68
+ cutoutModels: string[];
69
+ retouchModes: string[];
70
+ upscaleModes: string[];
71
+ svgEngines: string[];
72
+ beautificationModes: string[];
73
+ lir: {
74
+ maxReferenceImages: number;
75
+ maxAcceptedTasks: number;
76
+ serviceEpoch: string;
77
+ };
78
+ };
79
+ export declare function parseErrorBody(value: unknown): {
80
+ code?: string;
81
+ message?: string;
82
+ accepted?: boolean | 'unknown';
83
+ retryAfterMs?: number;
84
+ };
85
+ export declare function parseSubmissionErrorBody(value: unknown): ReturnType<typeof parseErrorBody>;
@@ -0,0 +1,13 @@
1
+ /** UTC milliseconds. File lifetime and page inactivity share a duration, not a start time. */
2
+ export declare const RETENTION_MS: number;
3
+ export declare const TEMP_RETENTION_POLICY: "batch-temp-48h-v1";
4
+ export type RetentionPolicy = typeof TEMP_RETENTION_POLICY;
5
+ export type AssetLifetime = {
6
+ availableUntil?: number;
7
+ retentionPolicy?: RetentionPolicy;
8
+ };
9
+ export declare function assetExpired(asset: AssetLifetime | undefined, now?: number): boolean;
10
+ export declare function pageExpired(record: {
11
+ lastSeenAt?: number;
12
+ hiddenSince?: number;
13
+ }, now?: number): boolean;
@@ -0,0 +1,5 @@
1
+ // onnxruntime-web 1.21.0 omits its declaration from the ESM exports condition.
2
+ // This matches its published types.d.ts and uses the public common API types.
3
+ declare module 'onnxruntime-web' {
4
+ export * from 'onnxruntime-common';
5
+ }
@@ -0,0 +1,11 @@
1
+ import type { WorkspaceCutoutModel, WorkspaceCutoutResourceManifest, WorkspaceCutoutResourceSource } from '../../../batch/public/resource-contracts';
2
+ export type CutoutResourceProgress = (key: string, current: number, total: number) => void;
3
+ export declare function explicitResourceUrl(value: string, directory?: boolean): URL;
4
+ export declare function validateCutoutResourceSource(source: WorkspaceCutoutResourceSource): void;
5
+ /** Worker-safe loader, also usable by host executors. Every request is pinned and bounded. */
6
+ export declare function loadCutoutResources(model: WorkspaceCutoutModel, source: WorkspaceCutoutResourceSource, signal?: AbortSignal, progress?: CutoutResourceProgress): Promise<{
7
+ manifest: WorkspaceCutoutResourceManifest;
8
+ source: WorkspaceCutoutResourceSource;
9
+ read: (path: string) => Promise<Uint8Array>;
10
+ }>;
11
+ export type LoadedCutoutResources = Awaited<ReturnType<typeof loadCutoutResources>>;
@@ -0,0 +1,18 @@
1
+ /** Pure processing protocol shared with optional external executors. No UI, store or network client. */
2
+ export * from './batch/retention';
3
+ export { processCutoutResult } from './batch/cutout-output';
4
+ export * from './batch/features/basic-edit/engine.mjs';
5
+ export * from './batch/features/brand-mark/engine.mjs';
6
+ export * from './batch/features/shadow/engine.mjs';
7
+ export * from './batch/features/background/engine.mjs';
8
+ export { validateSvg } from './shared/svg-security.mjs';
9
+ export type { WorkflowResult } from './batch/model';
10
+ export { loadCutoutResources } from './plugins/cutout/core/hosted-resources';
11
+ export type * from './batch/public/resource-contracts';
12
+ export { createWorkspaceServiceClient, ApiError } from './batch/api';
13
+ export { isPythonTool } from './batch/model';
14
+ export { parseTaskResponse, parseAsset, parseUploadStatus, parseUploadTicket, parseCapabilities, parseAiCapabilities, parseErrorBody, parseSubmissionErrorBody, } from './batch/receipts';
15
+ export { parseLirSegment } from './batch/features/listing-remake/transport';
16
+ export { prepareSvgDownload as prepareSvgArtifactDownload } from './batch/features/svg-export/download-prepare';
17
+ export { prepareSvgDownload } from './batch/features/svg-export/download';
18
+ export type { SvgAssetReader, SvgDownloadInput, SvgDownloadResult } from './batch/features/svg-export/download-contract';
@@ -0,0 +1,4 @@
1
+ export const MAX_SVG_BYTES: number;
2
+ export const MAX_SVG_NODES: number;
3
+ export const MAX_SVG_DEPTH: number;
4
+ export function validateSvg(content: string | Uint8Array): { width: number; height: number };
@@ -0,0 +1,2 @@
1
+ /** Module worker URLs stay relative to the emitted package, independent of the app route. */
2
+ export declare function createModuleWorker(source: string | URL, options?: WorkerOptions): Worker;
package/package.json CHANGED
@@ -1,6 +1,94 @@
1
1
  {
2
2
  "name": "@beeintel/batch-image",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "1.0.0",
4
+ "description": "Embeddable batch image workspace for Vue applications",
5
+ "publishConfig": {
6
+ "access": "public",
7
+ "registry": "https://registry.npmjs.org/"
8
+ },
9
+ "type": "module",
10
+ "files": [
11
+ "dist",
12
+ "README.md",
13
+ "FONT-LICENSE.txt"
14
+ ],
15
+ "main": "./dist/index.js",
16
+ "module": "./dist/index.js",
17
+ "types": "./dist/index.d.ts",
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ },
23
+ "./style.css": "./dist/style.css",
24
+ "./processing": {
25
+ "types": "./dist/processing.d.ts",
26
+ "import": "./dist/processing.js"
27
+ },
28
+ "./resources.json": "./dist/resources.json",
29
+ "./node": {
30
+ "types": "./dist/node/index.d.mts",
31
+ "import": "./dist/node/index.mjs"
32
+ }
33
+ },
34
+ "sideEffects": [
35
+ "**/*.css"
36
+ ],
37
+ "peerDependencies": {
38
+ "vue": "^3.5.0",
39
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
40
+ },
41
+ "dependencies": {
42
+ "@huggingface/transformers": "4.3.0",
43
+ "@imgly/background-removal": "1.7.0",
44
+ "@lucide/vue": "1.47.0",
45
+ "@lunapaint/tga-codec": "0.2.0",
46
+ "@tanstack/vue-virtual": "3.13.39",
47
+ "@xmldom/xmldom": "0.9.12",
48
+ "driver.js": "1.9.0",
49
+ "fflate": "0.8.3",
50
+ "gifenc": "1.0.3",
51
+ "imagetracerjs": "1.2.6",
52
+ "motion-v": "2.5.1",
53
+ "onnxruntime-common": "1.21.0",
54
+ "onnxruntime-web": "1.21.0",
55
+ "pinia": "4.0.3",
56
+ "svgo": "4.0.0",
57
+ "upng-js": "2.1.0",
58
+ "vue-i18n": "11.4.13"
59
+ },
60
+ "devDependencies": {
61
+ "@types/node": "22.18.6",
62
+ "@vitejs/plugin-vue": "5.2.4",
63
+ "@vue/compiler-dom": "3.5.41",
64
+ "@vue/compiler-sfc": "3.5.41",
65
+ "@vue/devtools-api": "8.2.1",
66
+ "@vue/server-renderer": "3.5.41",
67
+ "@vue/test-utils": "2.4.6",
68
+ "@webgpu/types": "0.1.60",
69
+ "css-tree": "3.2.1",
70
+ "fake-indexeddb": "6.2.5",
71
+ "jsdom": "26.1.0",
72
+ "sharp": "0.34.5",
73
+ "typescript": "5.8.3",
74
+ "vite": "6.4.3",
75
+ "vitest": "3.2.4",
76
+ "vue": "3.5.41",
77
+ "vue-router": "4.5.1",
78
+ "vue-tsc": "3.0.8"
79
+ },
80
+ "bin": {
81
+ "batch-images-prepare-resources": "./dist/node/cli.mjs"
82
+ },
83
+ "peerDependenciesMeta": {
84
+ "vite": {
85
+ "optional": true
86
+ }
87
+ },
88
+ "scripts": {
89
+ "build": "node scripts/build.mjs",
90
+ "watch": "node scripts/watch.mjs",
91
+ "typecheck": "vue-tsc --noEmit",
92
+ "test": "vitest run --maxWorkers=1 --config vitest.config.ts"
93
+ }
6
94
  }