@aigne/doc-smith 0.9.8-alpha.3 → 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 (257) 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/completer.md +0 -54
  21. package/agentic-agents/common/planner.md +0 -168
  22. package/agentic-agents/common/worker.md +0 -93
  23. package/agentic-agents/create/index.yaml +0 -129
  24. package/agentic-agents/create/objective.md +0 -44
  25. package/agentic-agents/create/set-custom-prompt.mjs +0 -27
  26. package/agentic-agents/detail/index.yaml +0 -95
  27. package/agentic-agents/detail/objective.md +0 -9
  28. package/agentic-agents/detail/set-custom-prompt.mjs +0 -88
  29. package/agentic-agents/predict-resources/index.yaml +0 -44
  30. package/agentic-agents/predict-resources/instructions.md +0 -61
  31. package/agentic-agents/structure/design-rules.md +0 -39
  32. package/agentic-agents/structure/index.yaml +0 -86
  33. package/agentic-agents/structure/objective.md +0 -14
  34. package/agentic-agents/structure/review-criteria.md +0 -55
  35. package/agentic-agents/structure/set-custom-prompt.mjs +0 -78
  36. package/agentic-agents/utils/init-workspace-cache.mjs +0 -171
  37. package/agentic-agents/utils/load-base-sources.mjs +0 -20
  38. package/agentic-agents/workspace-cache-sharing-design.md +0 -671
  39. package/agents/chat/chat-system.md +0 -38
  40. package/agents/chat/index.mjs +0 -59
  41. package/agents/chat/skills/generate-document.yaml +0 -15
  42. package/agents/chat/skills/list-documents.mjs +0 -15
  43. package/agents/chat/skills/update-document.yaml +0 -24
  44. package/agents/clear/choose-contents.mjs +0 -192
  45. package/agents/clear/clear-auth-tokens.mjs +0 -88
  46. package/agents/clear/clear-deployment-config.mjs +0 -49
  47. package/agents/clear/clear-document-config.mjs +0 -36
  48. package/agents/clear/clear-document-structure.mjs +0 -102
  49. package/agents/clear/clear-generated-docs.mjs +0 -142
  50. package/agents/clear/clear-media-description.mjs +0 -129
  51. package/agents/clear/index.yaml +0 -26
  52. package/agents/create/analyze-diagram-type-llm.yaml +0 -160
  53. package/agents/create/analyze-diagram-type.mjs +0 -297
  54. package/agents/create/check-document-structure.yaml +0 -30
  55. package/agents/create/check-need-generate-structure.mjs +0 -105
  56. package/agents/create/document-structure-tools/add-document.mjs +0 -85
  57. package/agents/create/document-structure-tools/delete-document.mjs +0 -116
  58. package/agents/create/document-structure-tools/move-document.mjs +0 -109
  59. package/agents/create/document-structure-tools/update-document.mjs +0 -84
  60. package/agents/create/generate-diagram-image.yaml +0 -60
  61. package/agents/create/generate-structure.yaml +0 -117
  62. package/agents/create/index.yaml +0 -49
  63. package/agents/create/refine-document-structure.yaml +0 -12
  64. package/agents/create/replace-d2-with-image.mjs +0 -625
  65. package/agents/create/update-document-structure.yaml +0 -54
  66. package/agents/create/user-add-document/add-documents-to-structure.mjs +0 -90
  67. package/agents/create/user-add-document/find-documents-to-add-links.yaml +0 -47
  68. package/agents/create/user-add-document/index.yaml +0 -46
  69. package/agents/create/user-add-document/prepare-documents-to-translate.mjs +0 -22
  70. package/agents/create/user-add-document/print-add-document-summary.mjs +0 -63
  71. package/agents/create/user-add-document/review-documents-with-new-links.mjs +0 -110
  72. package/agents/create/user-remove-document/find-documents-with-invalid-links.mjs +0 -78
  73. package/agents/create/user-remove-document/index.yaml +0 -40
  74. package/agents/create/user-remove-document/prepare-documents-to-translate.mjs +0 -22
  75. package/agents/create/user-remove-document/print-remove-document-summary.mjs +0 -53
  76. package/agents/create/user-remove-document/remove-documents-from-structure.mjs +0 -99
  77. package/agents/create/user-remove-document/review-documents-with-invalid-links.mjs +0 -115
  78. package/agents/create/user-review-document-structure.mjs +0 -140
  79. package/agents/create/utils/init-current-content.mjs +0 -34
  80. package/agents/create/utils/merge-document-structures.mjs +0 -30
  81. package/agents/evaluate/code-snippet.mjs +0 -97
  82. package/agents/evaluate/document-structure.yaml +0 -67
  83. package/agents/evaluate/document.yaml +0 -82
  84. package/agents/evaluate/generate-report.mjs +0 -85
  85. package/agents/evaluate/index.yaml +0 -46
  86. package/agents/history/index.yaml +0 -6
  87. package/agents/history/view.mjs +0 -78
  88. package/agents/init/check.mjs +0 -16
  89. package/agents/init/index.mjs +0 -275
  90. package/agents/init/validate.mjs +0 -16
  91. package/agents/localize/choose-language.mjs +0 -107
  92. package/agents/localize/index.yaml +0 -58
  93. package/agents/localize/record-translation-history.mjs +0 -23
  94. package/agents/localize/translate-document.yaml +0 -24
  95. package/agents/localize/translate-multilingual.yaml +0 -51
  96. package/agents/media/batch-generate-media-description.yaml +0 -46
  97. package/agents/media/generate-media-description.yaml +0 -50
  98. package/agents/media/load-media-description.mjs +0 -256
  99. package/agents/prefs/index.mjs +0 -203
  100. package/agents/publish/index.yaml +0 -26
  101. package/agents/publish/publish-docs.mjs +0 -356
  102. package/agents/publish/translate-meta.mjs +0 -103
  103. package/agents/schema/document-structure-item.yaml +0 -26
  104. package/agents/schema/document-structure-refine-item.yaml +0 -23
  105. package/agents/schema/document-structure.yaml +0 -29
  106. package/agents/update/batch-generate-document.yaml +0 -27
  107. package/agents/update/batch-update-document.yaml +0 -7
  108. package/agents/update/check-diagram-flag.mjs +0 -116
  109. package/agents/update/check-document.mjs +0 -162
  110. package/agents/update/check-generate-diagram.mjs +0 -106
  111. package/agents/update/check-sync-image-flag.mjs +0 -55
  112. package/agents/update/check-update-is-single.mjs +0 -53
  113. package/agents/update/document-tools/update-document-content.mjs +0 -303
  114. package/agents/update/generate-diagram.yaml +0 -63
  115. package/agents/update/generate-document.yaml +0 -70
  116. package/agents/update/handle-document-update.yaml +0 -103
  117. package/agents/update/index.yaml +0 -79
  118. package/agents/update/pre-check-generate-diagram.yaml +0 -44
  119. package/agents/update/save-and-translate-document.mjs +0 -76
  120. package/agents/update/sync-images-and-exit.mjs +0 -148
  121. package/agents/update/update-document-detail.yaml +0 -71
  122. package/agents/update/update-single/update-single-document-detail.mjs +0 -280
  123. package/agents/update/update-single-document.yaml +0 -7
  124. package/agents/update/user-review-document.mjs +0 -272
  125. package/agents/utils/action-success.mjs +0 -16
  126. package/agents/utils/analyze-document-feedback-intent.yaml +0 -32
  127. package/agents/utils/analyze-feedback-intent.mjs +0 -136
  128. package/agents/utils/analyze-structure-feedback-intent.yaml +0 -29
  129. package/agents/utils/check-detail-result.mjs +0 -38
  130. package/agents/utils/check-feedback-refiner.mjs +0 -81
  131. package/agents/utils/choose-docs.mjs +0 -293
  132. package/agents/utils/document-icon-generate.yaml +0 -52
  133. package/agents/utils/document-title-streamline.yaml +0 -48
  134. package/agents/utils/ensure-document-icons.mjs +0 -129
  135. package/agents/utils/exit.mjs +0 -6
  136. package/agents/utils/feedback-refiner.yaml +0 -50
  137. package/agents/utils/find-item-by-path.mjs +0 -114
  138. package/agents/utils/find-user-preferences-by-path.mjs +0 -37
  139. package/agents/utils/format-document-structure.mjs +0 -35
  140. package/agents/utils/generate-document-or-skip.mjs +0 -41
  141. package/agents/utils/handle-diagram-operations.mjs +0 -263
  142. package/agents/utils/load-all-document-content.mjs +0 -30
  143. package/agents/utils/load-document-all-content.mjs +0 -84
  144. package/agents/utils/load-sources.mjs +0 -405
  145. package/agents/utils/map-reasoning-effort-level.mjs +0 -15
  146. package/agents/utils/post-generate.mjs +0 -144
  147. package/agents/utils/read-current-document-content.mjs +0 -46
  148. package/agents/utils/save-doc-translation.mjs +0 -61
  149. package/agents/utils/save-doc.mjs +0 -88
  150. package/agents/utils/save-output.mjs +0 -26
  151. package/agents/utils/save-sidebar.mjs +0 -51
  152. package/agents/utils/skip-if-content-exists.mjs +0 -27
  153. package/agents/utils/streamline-document-titles-if-needed.mjs +0 -88
  154. package/agents/utils/transform-detail-data-sources.mjs +0 -45
  155. package/agents/utils/update-branding.mjs +0 -84
  156. package/assets/report-template/report.html +0 -198
  157. package/docs-mcp/analyze-content-relevance.yaml +0 -50
  158. package/docs-mcp/analyze-docs-relevance.yaml +0 -59
  159. package/docs-mcp/docs-search.yaml +0 -42
  160. package/docs-mcp/get-docs-detail.mjs +0 -41
  161. package/docs-mcp/get-docs-structure.mjs +0 -16
  162. package/docs-mcp/read-doc-content.mjs +0 -119
  163. package/prompts/common/document/content-rules-core.md +0 -20
  164. package/prompts/common/document/markdown-syntax-rules.md +0 -65
  165. package/prompts/common/document/media-file-list-usage-rules.md +0 -18
  166. package/prompts/common/document/openapi-usage-rules.md +0 -189
  167. package/prompts/common/document/role-and-personality.md +0 -16
  168. package/prompts/common/document/user-preferences.md +0 -9
  169. package/prompts/common/document-structure/conflict-resolution-guidance.md +0 -16
  170. package/prompts/common/document-structure/document-icon-generate.md +0 -116
  171. package/prompts/common/document-structure/document-structure-rules.md +0 -43
  172. package/prompts/common/document-structure/document-title-streamline.md +0 -86
  173. package/prompts/common/document-structure/glossary.md +0 -7
  174. package/prompts/common/document-structure/intj-traits.md +0 -5
  175. package/prompts/common/document-structure/openapi-usage-rules.md +0 -28
  176. package/prompts/common/document-structure/output-constraints.md +0 -18
  177. package/prompts/common/document-structure/user-locale-rules.md +0 -10
  178. package/prompts/common/document-structure/user-preferences.md +0 -9
  179. package/prompts/detail/custom/admonition-usage-rules.md +0 -94
  180. package/prompts/detail/custom/code-block-usage-rules.md +0 -163
  181. package/prompts/detail/custom/custom-components/x-card-usage-rules.md +0 -63
  182. package/prompts/detail/custom/custom-components/x-cards-usage-rules.md +0 -83
  183. package/prompts/detail/custom/custom-components/x-field-desc-usage-rules.md +0 -120
  184. package/prompts/detail/custom/custom-components/x-field-group-usage-rules.md +0 -80
  185. package/prompts/detail/custom/custom-components/x-field-usage-rules.md +0 -189
  186. package/prompts/detail/custom/custom-components-usage-rules.md +0 -18
  187. package/prompts/detail/diagram/generate-image-system.md +0 -135
  188. package/prompts/detail/diagram/generate-image-user.md +0 -32
  189. package/prompts/detail/diagram/guide.md +0 -29
  190. package/prompts/detail/diagram/official-examples.md +0 -712
  191. package/prompts/detail/diagram/pre-check.md +0 -23
  192. package/prompts/detail/diagram/role-and-personality.md +0 -2
  193. package/prompts/detail/diagram/rules.md +0 -46
  194. package/prompts/detail/diagram/system-prompt.md +0 -1139
  195. package/prompts/detail/diagram/user-prompt.md +0 -43
  196. package/prompts/detail/generate/detail-example.md +0 -457
  197. package/prompts/detail/generate/document-rules.md +0 -45
  198. package/prompts/detail/generate/system-prompt.md +0 -61
  199. package/prompts/detail/generate/user-prompt.md +0 -99
  200. package/prompts/detail/jsx/rules.md +0 -6
  201. package/prompts/detail/update/system-prompt.md +0 -121
  202. package/prompts/detail/update/user-prompt.md +0 -41
  203. package/prompts/evaluate/document-structure.md +0 -93
  204. package/prompts/evaluate/document.md +0 -149
  205. package/prompts/media/media-description/system-prompt.md +0 -43
  206. package/prompts/media/media-description/user-prompt.md +0 -17
  207. package/prompts/structure/check-document-structure.md +0 -93
  208. package/prompts/structure/document-rules.md +0 -21
  209. package/prompts/structure/find-documents-to-add-links.md +0 -52
  210. package/prompts/structure/generate/system-prompt.md +0 -13
  211. package/prompts/structure/generate/user-prompt.md +0 -137
  212. package/prompts/structure/review/structure-review-system.md +0 -81
  213. package/prompts/structure/structure-example.md +0 -89
  214. package/prompts/structure/structure-getting-started.md +0 -10
  215. package/prompts/structure/update/system-prompt.md +0 -93
  216. package/prompts/structure/update/user-prompt.md +0 -43
  217. package/prompts/translate/admonition.md +0 -20
  218. package/prompts/translate/code-block.md +0 -33
  219. package/prompts/translate/glossary.md +0 -6
  220. package/prompts/translate/translate-document.md +0 -305
  221. package/prompts/utils/analyze-document-feedback-intent.md +0 -54
  222. package/prompts/utils/analyze-structure-feedback-intent.md +0 -43
  223. package/prompts/utils/feedback-refiner.md +0 -105
  224. package/types/document-schema.mjs +0 -55
  225. package/types/document-structure-schema.mjs +0 -261
  226. package/utils/auth-utils.mjs +0 -275
  227. package/utils/blocklet.mjs +0 -104
  228. package/utils/check-document-has-diagram.mjs +0 -95
  229. package/utils/conflict-detector.mjs +0 -149
  230. package/utils/constants/index.mjs +0 -620
  231. package/utils/constants/linter.mjs +0 -102
  232. package/utils/d2-utils.mjs +0 -198
  233. package/utils/debug.mjs +0 -3
  234. package/utils/delete-diagram-images.mjs +0 -99
  235. package/utils/deploy.mjs +0 -86
  236. package/utils/docs-finder-utils.mjs +0 -623
  237. package/utils/evaluate/report-utils.mjs +0 -132
  238. package/utils/extract-api.mjs +0 -32
  239. package/utils/file-utils.mjs +0 -960
  240. package/utils/history-utils.mjs +0 -203
  241. package/utils/icon-map.mjs +0 -26
  242. package/utils/image-compress.mjs +0 -75
  243. package/utils/kroki-utils.mjs +0 -173
  244. package/utils/linter/index.mjs +0 -50
  245. package/utils/load-config.mjs +0 -107
  246. package/utils/markdown/index.mjs +0 -26
  247. package/utils/markdown-checker.mjs +0 -694
  248. package/utils/mermaid-validator.mjs +0 -140
  249. package/utils/mermaid-worker-pool.mjs +0 -250
  250. package/utils/mermaid-worker.mjs +0 -233
  251. package/utils/openapi/index.mjs +0 -28
  252. package/utils/preferences-utils.mjs +0 -175
  253. package/utils/request.mjs +0 -10
  254. package/utils/store/index.mjs +0 -45
  255. package/utils/sync-diagram-to-translations.mjs +0 -262
  256. package/utils/upload-files.mjs +0 -231
  257. 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
- }