@aigne/doc-smith 0.9.8-alpha.2 → 0.9.8-alpha.4

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 (256) hide show
  1. package/CLAUDE.md +43 -0
  2. package/README.md +94 -250
  3. package/aigne.yaml +2 -149
  4. package/doc-smith/SKILL.md +117 -0
  5. package/doc-smith/references/changeset_schema.md +118 -0
  6. package/doc-smith/references/document_structure_schema.md +139 -0
  7. package/doc-smith/references/document_update_guide.md +193 -0
  8. package/doc-smith/references/structure_confirmation_guide.md +133 -0
  9. package/doc-smith/references/structure_planning_guide.md +146 -0
  10. package/doc-smith/references/user_intent_guide.md +172 -0
  11. package/doc-smith.yaml +114 -0
  12. package/main-system-prompt.md +56 -0
  13. package/package.json +3 -69
  14. package/scripts/README.md +90 -0
  15. package/scripts/install.sh +86 -0
  16. package/scripts/uninstall.sh +52 -0
  17. package/CHANGELOG.md +0 -994
  18. package/LICENSE +0 -93
  19. package/agentic-agents/common/base-info.md +0 -53
  20. package/agentic-agents/common/planner.md +0 -168
  21. package/agentic-agents/common/worker.md +0 -93
  22. package/agentic-agents/create/index.yaml +0 -118
  23. package/agentic-agents/create/objective.md +0 -44
  24. package/agentic-agents/create/set-custom-prompt.mjs +0 -27
  25. package/agentic-agents/detail/index.yaml +0 -95
  26. package/agentic-agents/detail/objective.md +0 -9
  27. package/agentic-agents/detail/set-custom-prompt.mjs +0 -88
  28. package/agentic-agents/predict-resources/index.yaml +0 -44
  29. package/agentic-agents/predict-resources/instructions.md +0 -61
  30. package/agentic-agents/structure/design-rules.md +0 -39
  31. package/agentic-agents/structure/index.yaml +0 -86
  32. package/agentic-agents/structure/objective.md +0 -14
  33. package/agentic-agents/structure/review-criteria.md +0 -55
  34. package/agentic-agents/structure/set-custom-prompt.mjs +0 -78
  35. package/agentic-agents/utils/init-workspace-cache.mjs +0 -171
  36. package/agentic-agents/utils/load-base-sources.mjs +0 -20
  37. package/agentic-agents/workspace-cache-sharing-design.md +0 -671
  38. package/agents/chat/chat-system.md +0 -38
  39. package/agents/chat/index.mjs +0 -59
  40. package/agents/chat/skills/generate-document.yaml +0 -15
  41. package/agents/chat/skills/list-documents.mjs +0 -15
  42. package/agents/chat/skills/update-document.yaml +0 -24
  43. package/agents/clear/choose-contents.mjs +0 -192
  44. package/agents/clear/clear-auth-tokens.mjs +0 -88
  45. package/agents/clear/clear-deployment-config.mjs +0 -49
  46. package/agents/clear/clear-document-config.mjs +0 -36
  47. package/agents/clear/clear-document-structure.mjs +0 -102
  48. package/agents/clear/clear-generated-docs.mjs +0 -142
  49. package/agents/clear/clear-media-description.mjs +0 -129
  50. package/agents/clear/index.yaml +0 -26
  51. package/agents/create/analyze-diagram-type-llm.yaml +0 -160
  52. package/agents/create/analyze-diagram-type.mjs +0 -297
  53. package/agents/create/check-document-structure.yaml +0 -30
  54. package/agents/create/check-need-generate-structure.mjs +0 -105
  55. package/agents/create/document-structure-tools/add-document.mjs +0 -85
  56. package/agents/create/document-structure-tools/delete-document.mjs +0 -116
  57. package/agents/create/document-structure-tools/move-document.mjs +0 -109
  58. package/agents/create/document-structure-tools/update-document.mjs +0 -84
  59. package/agents/create/generate-diagram-image.yaml +0 -60
  60. package/agents/create/generate-structure.yaml +0 -117
  61. package/agents/create/index.yaml +0 -49
  62. package/agents/create/refine-document-structure.yaml +0 -12
  63. package/agents/create/replace-d2-with-image.mjs +0 -625
  64. package/agents/create/update-document-structure.yaml +0 -54
  65. package/agents/create/user-add-document/add-documents-to-structure.mjs +0 -90
  66. package/agents/create/user-add-document/find-documents-to-add-links.yaml +0 -47
  67. package/agents/create/user-add-document/index.yaml +0 -46
  68. package/agents/create/user-add-document/prepare-documents-to-translate.mjs +0 -22
  69. package/agents/create/user-add-document/print-add-document-summary.mjs +0 -63
  70. package/agents/create/user-add-document/review-documents-with-new-links.mjs +0 -110
  71. package/agents/create/user-remove-document/find-documents-with-invalid-links.mjs +0 -78
  72. package/agents/create/user-remove-document/index.yaml +0 -40
  73. package/agents/create/user-remove-document/prepare-documents-to-translate.mjs +0 -22
  74. package/agents/create/user-remove-document/print-remove-document-summary.mjs +0 -53
  75. package/agents/create/user-remove-document/remove-documents-from-structure.mjs +0 -99
  76. package/agents/create/user-remove-document/review-documents-with-invalid-links.mjs +0 -115
  77. package/agents/create/user-review-document-structure.mjs +0 -140
  78. package/agents/create/utils/init-current-content.mjs +0 -34
  79. package/agents/create/utils/merge-document-structures.mjs +0 -30
  80. package/agents/evaluate/code-snippet.mjs +0 -97
  81. package/agents/evaluate/document-structure.yaml +0 -67
  82. package/agents/evaluate/document.yaml +0 -82
  83. package/agents/evaluate/generate-report.mjs +0 -85
  84. package/agents/evaluate/index.yaml +0 -46
  85. package/agents/history/index.yaml +0 -6
  86. package/agents/history/view.mjs +0 -78
  87. package/agents/init/check.mjs +0 -16
  88. package/agents/init/index.mjs +0 -275
  89. package/agents/init/validate.mjs +0 -16
  90. package/agents/localize/choose-language.mjs +0 -107
  91. package/agents/localize/index.yaml +0 -58
  92. package/agents/localize/record-translation-history.mjs +0 -23
  93. package/agents/localize/translate-document.yaml +0 -24
  94. package/agents/localize/translate-multilingual.yaml +0 -51
  95. package/agents/media/batch-generate-media-description.yaml +0 -46
  96. package/agents/media/generate-media-description.yaml +0 -50
  97. package/agents/media/load-media-description.mjs +0 -256
  98. package/agents/prefs/index.mjs +0 -203
  99. package/agents/publish/index.yaml +0 -26
  100. package/agents/publish/publish-docs.mjs +0 -356
  101. package/agents/publish/translate-meta.mjs +0 -103
  102. package/agents/schema/document-structure-item.yaml +0 -26
  103. package/agents/schema/document-structure-refine-item.yaml +0 -23
  104. package/agents/schema/document-structure.yaml +0 -29
  105. package/agents/update/batch-generate-document.yaml +0 -27
  106. package/agents/update/batch-update-document.yaml +0 -7
  107. package/agents/update/check-diagram-flag.mjs +0 -116
  108. package/agents/update/check-document.mjs +0 -162
  109. package/agents/update/check-generate-diagram.mjs +0 -106
  110. package/agents/update/check-sync-image-flag.mjs +0 -55
  111. package/agents/update/check-update-is-single.mjs +0 -53
  112. package/agents/update/document-tools/update-document-content.mjs +0 -303
  113. package/agents/update/generate-diagram.yaml +0 -63
  114. package/agents/update/generate-document.yaml +0 -70
  115. package/agents/update/handle-document-update.yaml +0 -103
  116. package/agents/update/index.yaml +0 -79
  117. package/agents/update/pre-check-generate-diagram.yaml +0 -44
  118. package/agents/update/save-and-translate-document.mjs +0 -76
  119. package/agents/update/sync-images-and-exit.mjs +0 -148
  120. package/agents/update/update-document-detail.yaml +0 -71
  121. package/agents/update/update-single/update-single-document-detail.mjs +0 -280
  122. package/agents/update/update-single-document.yaml +0 -7
  123. package/agents/update/user-review-document.mjs +0 -272
  124. package/agents/utils/action-success.mjs +0 -16
  125. package/agents/utils/analyze-document-feedback-intent.yaml +0 -32
  126. package/agents/utils/analyze-feedback-intent.mjs +0 -136
  127. package/agents/utils/analyze-structure-feedback-intent.yaml +0 -29
  128. package/agents/utils/check-detail-result.mjs +0 -38
  129. package/agents/utils/check-feedback-refiner.mjs +0 -81
  130. package/agents/utils/choose-docs.mjs +0 -293
  131. package/agents/utils/document-icon-generate.yaml +0 -52
  132. package/agents/utils/document-title-streamline.yaml +0 -48
  133. package/agents/utils/ensure-document-icons.mjs +0 -129
  134. package/agents/utils/exit.mjs +0 -6
  135. package/agents/utils/feedback-refiner.yaml +0 -50
  136. package/agents/utils/find-item-by-path.mjs +0 -114
  137. package/agents/utils/find-user-preferences-by-path.mjs +0 -37
  138. package/agents/utils/format-document-structure.mjs +0 -35
  139. package/agents/utils/generate-document-or-skip.mjs +0 -41
  140. package/agents/utils/handle-diagram-operations.mjs +0 -263
  141. package/agents/utils/load-all-document-content.mjs +0 -30
  142. package/agents/utils/load-document-all-content.mjs +0 -84
  143. package/agents/utils/load-sources.mjs +0 -405
  144. package/agents/utils/map-reasoning-effort-level.mjs +0 -15
  145. package/agents/utils/post-generate.mjs +0 -144
  146. package/agents/utils/read-current-document-content.mjs +0 -46
  147. package/agents/utils/save-doc-translation.mjs +0 -61
  148. package/agents/utils/save-doc.mjs +0 -88
  149. package/agents/utils/save-output.mjs +0 -26
  150. package/agents/utils/save-sidebar.mjs +0 -51
  151. package/agents/utils/skip-if-content-exists.mjs +0 -27
  152. package/agents/utils/streamline-document-titles-if-needed.mjs +0 -88
  153. package/agents/utils/transform-detail-data-sources.mjs +0 -45
  154. package/agents/utils/update-branding.mjs +0 -84
  155. package/assets/report-template/report.html +0 -198
  156. package/docs-mcp/analyze-content-relevance.yaml +0 -50
  157. package/docs-mcp/analyze-docs-relevance.yaml +0 -59
  158. package/docs-mcp/docs-search.yaml +0 -42
  159. package/docs-mcp/get-docs-detail.mjs +0 -41
  160. package/docs-mcp/get-docs-structure.mjs +0 -16
  161. package/docs-mcp/read-doc-content.mjs +0 -119
  162. package/prompts/common/document/content-rules-core.md +0 -20
  163. package/prompts/common/document/markdown-syntax-rules.md +0 -65
  164. package/prompts/common/document/media-file-list-usage-rules.md +0 -18
  165. package/prompts/common/document/openapi-usage-rules.md +0 -189
  166. package/prompts/common/document/role-and-personality.md +0 -16
  167. package/prompts/common/document/user-preferences.md +0 -9
  168. package/prompts/common/document-structure/conflict-resolution-guidance.md +0 -16
  169. package/prompts/common/document-structure/document-icon-generate.md +0 -116
  170. package/prompts/common/document-structure/document-structure-rules.md +0 -43
  171. package/prompts/common/document-structure/document-title-streamline.md +0 -86
  172. package/prompts/common/document-structure/glossary.md +0 -7
  173. package/prompts/common/document-structure/intj-traits.md +0 -5
  174. package/prompts/common/document-structure/openapi-usage-rules.md +0 -28
  175. package/prompts/common/document-structure/output-constraints.md +0 -18
  176. package/prompts/common/document-structure/user-locale-rules.md +0 -10
  177. package/prompts/common/document-structure/user-preferences.md +0 -9
  178. package/prompts/detail/custom/admonition-usage-rules.md +0 -94
  179. package/prompts/detail/custom/code-block-usage-rules.md +0 -163
  180. package/prompts/detail/custom/custom-components/x-card-usage-rules.md +0 -63
  181. package/prompts/detail/custom/custom-components/x-cards-usage-rules.md +0 -83
  182. package/prompts/detail/custom/custom-components/x-field-desc-usage-rules.md +0 -120
  183. package/prompts/detail/custom/custom-components/x-field-group-usage-rules.md +0 -80
  184. package/prompts/detail/custom/custom-components/x-field-usage-rules.md +0 -189
  185. package/prompts/detail/custom/custom-components-usage-rules.md +0 -18
  186. package/prompts/detail/diagram/generate-image-system.md +0 -135
  187. package/prompts/detail/diagram/generate-image-user.md +0 -32
  188. package/prompts/detail/diagram/guide.md +0 -29
  189. package/prompts/detail/diagram/official-examples.md +0 -712
  190. package/prompts/detail/diagram/pre-check.md +0 -23
  191. package/prompts/detail/diagram/role-and-personality.md +0 -2
  192. package/prompts/detail/diagram/rules.md +0 -46
  193. package/prompts/detail/diagram/system-prompt.md +0 -1139
  194. package/prompts/detail/diagram/user-prompt.md +0 -43
  195. package/prompts/detail/generate/detail-example.md +0 -457
  196. package/prompts/detail/generate/document-rules.md +0 -45
  197. package/prompts/detail/generate/system-prompt.md +0 -61
  198. package/prompts/detail/generate/user-prompt.md +0 -99
  199. package/prompts/detail/jsx/rules.md +0 -6
  200. package/prompts/detail/update/system-prompt.md +0 -121
  201. package/prompts/detail/update/user-prompt.md +0 -41
  202. package/prompts/evaluate/document-structure.md +0 -93
  203. package/prompts/evaluate/document.md +0 -149
  204. package/prompts/media/media-description/system-prompt.md +0 -43
  205. package/prompts/media/media-description/user-prompt.md +0 -17
  206. package/prompts/structure/check-document-structure.md +0 -93
  207. package/prompts/structure/document-rules.md +0 -21
  208. package/prompts/structure/find-documents-to-add-links.md +0 -52
  209. package/prompts/structure/generate/system-prompt.md +0 -13
  210. package/prompts/structure/generate/user-prompt.md +0 -137
  211. package/prompts/structure/review/structure-review-system.md +0 -81
  212. package/prompts/structure/structure-example.md +0 -89
  213. package/prompts/structure/structure-getting-started.md +0 -10
  214. package/prompts/structure/update/system-prompt.md +0 -93
  215. package/prompts/structure/update/user-prompt.md +0 -43
  216. package/prompts/translate/admonition.md +0 -20
  217. package/prompts/translate/code-block.md +0 -33
  218. package/prompts/translate/glossary.md +0 -6
  219. package/prompts/translate/translate-document.md +0 -305
  220. package/prompts/utils/analyze-document-feedback-intent.md +0 -54
  221. package/prompts/utils/analyze-structure-feedback-intent.md +0 -43
  222. package/prompts/utils/feedback-refiner.md +0 -105
  223. package/types/document-schema.mjs +0 -55
  224. package/types/document-structure-schema.mjs +0 -261
  225. package/utils/auth-utils.mjs +0 -275
  226. package/utils/blocklet.mjs +0 -104
  227. package/utils/check-document-has-diagram.mjs +0 -95
  228. package/utils/conflict-detector.mjs +0 -149
  229. package/utils/constants/index.mjs +0 -620
  230. package/utils/constants/linter.mjs +0 -102
  231. package/utils/d2-utils.mjs +0 -198
  232. package/utils/debug.mjs +0 -3
  233. package/utils/delete-diagram-images.mjs +0 -99
  234. package/utils/deploy.mjs +0 -86
  235. package/utils/docs-finder-utils.mjs +0 -623
  236. package/utils/evaluate/report-utils.mjs +0 -132
  237. package/utils/extract-api.mjs +0 -32
  238. package/utils/file-utils.mjs +0 -960
  239. package/utils/history-utils.mjs +0 -203
  240. package/utils/icon-map.mjs +0 -26
  241. package/utils/image-compress.mjs +0 -75
  242. package/utils/kroki-utils.mjs +0 -173
  243. package/utils/linter/index.mjs +0 -50
  244. package/utils/load-config.mjs +0 -107
  245. package/utils/markdown/index.mjs +0 -26
  246. package/utils/markdown-checker.mjs +0 -694
  247. package/utils/mermaid-validator.mjs +0 -140
  248. package/utils/mermaid-worker-pool.mjs +0 -250
  249. package/utils/mermaid-worker.mjs +0 -233
  250. package/utils/openapi/index.mjs +0 -28
  251. package/utils/preferences-utils.mjs +0 -175
  252. package/utils/request.mjs +0 -10
  253. package/utils/store/index.mjs +0 -45
  254. package/utils/sync-diagram-to-translations.mjs +0 -262
  255. package/utils/upload-files.mjs +0 -231
  256. package/utils/utils.mjs +0 -1354
@@ -1,231 +0,0 @@
1
- import crypto from "node:crypto";
2
- import fs from "node:fs";
3
- import path from "node:path";
4
-
5
- import pLimit from "p-limit";
6
- import pRetry from "p-retry";
7
-
8
- import { getComponentMountPoint } from "./blocklet.mjs";
9
- import { DISCUSS_KIT_DID, MEDIA_KIT_DID } from "./constants/index.mjs";
10
- import { getMimeType } from "./file-utils.mjs";
11
-
12
- /**
13
- * Perform single file upload
14
- */
15
- async function performSingleUpload(filePath, fileHash, uploadEndpoint, accessToken, url) {
16
- const baseFilename = path.basename(filePath, path.extname(filePath));
17
- const fileBuffer = fs.readFileSync(filePath);
18
- const stats = fs.statSync(filePath);
19
- const fileSize = stats.size;
20
- const fileExt = path.extname(filePath).substring(1);
21
- const mimeType = getMimeType(filePath);
22
-
23
- const hashBasedFilename = `${fileHash.substring(0, 16)}.${fileExt}`;
24
-
25
- const uploaderId = "Uploader";
26
- const fileId = `${uploaderId}-${baseFilename.toLowerCase().replace(/[^a-z0-9]/g, "")}-${fileHash.substring(0, 16)}`;
27
-
28
- const tusMetadata = {
29
- uploaderId,
30
- relativePath: hashBasedFilename,
31
- name: hashBasedFilename,
32
- type: mimeType,
33
- filetype: mimeType,
34
- filename: hashBasedFilename,
35
- };
36
-
37
- const encodedMetadata = Object.entries(tusMetadata)
38
- .map(([key, value]) => `${key} ${Buffer.from(value).toString("base64")}`)
39
- .join(",");
40
-
41
- const uploadEndpointUrl = new URL(uploadEndpoint);
42
- const endpointPath = uploadEndpointUrl.pathname;
43
-
44
- // Create upload
45
- const createResponse = await fetch(uploadEndpoint, {
46
- method: "POST",
47
- headers: {
48
- "Tus-Resumable": "1.0.0",
49
- "Upload-Length": fileSize.toString(),
50
- "Upload-Metadata": encodedMetadata,
51
- Cookie: `login_token=${accessToken}`,
52
- "x-uploader-file-name": hashBasedFilename,
53
- "x-uploader-file-id": fileId,
54
- "x-uploader-file-ext": fileExt,
55
- "x-uploader-base-url": endpointPath,
56
- "x-uploader-endpoint-url": uploadEndpoint,
57
- "x-uploader-metadata": JSON.stringify({
58
- uploaderId,
59
- relativePath: hashBasedFilename,
60
- name: hashBasedFilename,
61
- type: mimeType,
62
- }),
63
- "x-component-did": DISCUSS_KIT_DID,
64
- },
65
- });
66
-
67
- if (!createResponse.ok) {
68
- const errorText = await createResponse.text();
69
- throw new Error(
70
- `Failed to create upload: ${createResponse.status} ${createResponse.statusText}\n${errorText}`,
71
- );
72
- }
73
-
74
- const uploadUrl = createResponse.headers.get("Location");
75
- if (!uploadUrl) {
76
- throw new Error("No upload URL received from server");
77
- }
78
-
79
- // Upload file content
80
- const uploadResponse = await fetch(`${url.origin}${uploadUrl}`, {
81
- method: "PATCH",
82
- headers: {
83
- "Tus-Resumable": "1.0.0",
84
- "Upload-Offset": "0",
85
- "Content-Type": "application/offset+octet-stream",
86
- Cookie: `login_token=${accessToken}`,
87
- "x-uploader-file-name": hashBasedFilename,
88
- "x-uploader-file-id": fileId,
89
- "x-uploader-file-ext": fileExt,
90
- "x-uploader-base-url": endpointPath,
91
- "x-uploader-endpoint-url": uploadEndpoint,
92
- "x-uploader-metadata": JSON.stringify({
93
- uploaderId,
94
- relativePath: hashBasedFilename,
95
- name: hashBasedFilename,
96
- type: mimeType,
97
- }),
98
- "x-component-did": DISCUSS_KIT_DID,
99
- "x-uploader-file-exist": "true",
100
- },
101
- body: fileBuffer,
102
- });
103
-
104
- if (!uploadResponse.ok) {
105
- const errorText = await uploadResponse.text();
106
- throw new Error(
107
- `Failed to upload file: ${uploadResponse.status} ${uploadResponse.statusText}\n${errorText}`,
108
- );
109
- }
110
-
111
- const uploadResult = await uploadResponse.json();
112
-
113
- let uploadedFileUrl = uploadResult.url;
114
- if (!uploadedFileUrl && uploadResult?.size) {
115
- uploadedFileUrl = uploadResponse.url;
116
- }
117
-
118
- if (!uploadedFileUrl) {
119
- throw new Error("No URL found in the upload response");
120
- }
121
-
122
- return {
123
- filePath,
124
- url: uploadedFileUrl,
125
- };
126
- }
127
-
128
- /**
129
- * Upload multiple files with concurrency control
130
- * @param {Object} options - Upload options
131
- * @param {string} options.appUrl - Application URL
132
- * @param {string[]} options.filePaths - Array of file paths to upload
133
- * @param {string} options.accessToken - Access token for authentication
134
- * @param {number} [options.concurrency=3] - Number of concurrent uploads
135
- * @param {string} [options.endpoint] - Custom upload endpoint
136
- * @returns {Promise<{results: Array<{filePath: string, url: string}>}>}
137
- */
138
- export async function uploadFiles(options) {
139
- const { appUrl, filePaths, endpoint, concurrency = 3, accessToken } = options;
140
-
141
- if (filePaths.length === 0) {
142
- return { results: [] };
143
- }
144
-
145
- const url = new URL(appUrl);
146
- const mountPoint = await getComponentMountPoint(appUrl, MEDIA_KIT_DID);
147
-
148
- // Use custom endpoint or default to discuss kit media endpoint
149
- const uploadEndpoint = endpoint || `${url.origin}${mountPoint}/api/uploads`;
150
-
151
- const limit = pLimit(concurrency);
152
- const ongoingUploads = new Map();
153
-
154
- const uploadPromises = filePaths.map((filePath) =>
155
- limit(async () => {
156
- const filename = path.basename(filePath);
157
-
158
- try {
159
- const fileBuffer = fs.readFileSync(filePath);
160
- const fileHash = crypto.createHash("sha256").update(fileBuffer).digest("hex");
161
-
162
- // Check if this file is already being uploaded
163
- const existingUpload = ongoingUploads.get(fileHash);
164
- if (existingUpload) {
165
- const result = await existingUpload;
166
- return {
167
- filePath,
168
- url: result.url,
169
- };
170
- }
171
-
172
- // Create upload promise and cache it
173
- const uploadPromise = (async () => {
174
- try {
175
- const result = await pRetry(
176
- () => performSingleUpload(filePath, fileHash, uploadEndpoint, accessToken, url),
177
- {
178
- retries: 3,
179
- onFailedAttempt: (error) => {
180
- console.warn(
181
- `File upload attempt ${error.attemptNumber} failed for "${filename}". Remaining retries: ${error.retriesLeft}`,
182
- );
183
- if (error.retriesLeft === 0) {
184
- console.error(
185
- `File upload failed - all retry attempts exhausted for "${filename}"`,
186
- );
187
- }
188
- },
189
- },
190
- );
191
-
192
- return result;
193
- } catch (error) {
194
- console.error(
195
- `File upload failed - error uploading "${filename}" after all retries:`,
196
- error,
197
- );
198
- return {
199
- filePath,
200
- url: "",
201
- };
202
- }
203
- })();
204
-
205
- // Cache the upload promise
206
- ongoingUploads.set(fileHash, uploadPromise);
207
-
208
- try {
209
- const result = await uploadPromise;
210
- return {
211
- filePath,
212
- url: result.url,
213
- };
214
- } finally {
215
- // Clean up the ongoing upload tracking
216
- ongoingUploads.delete(fileHash);
217
- }
218
- } catch (error) {
219
- console.error(`Error processing ${filename}:`, error);
220
- return {
221
- filePath,
222
- url: "",
223
- };
224
- }
225
- }),
226
- );
227
-
228
- const uploadResults = await Promise.all(uploadPromises);
229
-
230
- return { results: uploadResults };
231
- }