@cloudinary/asset-management-mcp 0.8.1 → 0.9.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 (902) hide show
  1. package/README.md +103 -58
  2. package/bin/mcp-server.js +6079 -864
  3. package/bin/mcp-server.js.map +113 -82
  4. package/esm/funcs/assetRelationsCreateAssetRelationsByAssetId.d.ts +3 -3
  5. package/esm/funcs/assetRelationsCreateAssetRelationsByAssetId.d.ts.map +1 -1
  6. package/esm/funcs/assetRelationsCreateAssetRelationsByAssetId.js +8 -6
  7. package/esm/funcs/assetRelationsCreateAssetRelationsByAssetId.js.map +1 -1
  8. package/esm/funcs/assetRelationsCreateAssetRelationsByPublicId.d.ts +3 -3
  9. package/esm/funcs/assetRelationsCreateAssetRelationsByPublicId.d.ts.map +1 -1
  10. package/esm/funcs/assetRelationsCreateAssetRelationsByPublicId.js +5 -5
  11. package/esm/funcs/assetRelationsCreateAssetRelationsByPublicId.js.map +1 -1
  12. package/esm/funcs/assetRelationsDeleteAssetRelationsByAssetId.d.ts +3 -3
  13. package/esm/funcs/assetRelationsDeleteAssetRelationsByAssetId.d.ts.map +1 -1
  14. package/esm/funcs/assetRelationsDeleteAssetRelationsByAssetId.js +6 -6
  15. package/esm/funcs/assetRelationsDeleteAssetRelationsByAssetId.js.map +1 -1
  16. package/esm/funcs/assetRelationsDeleteAssetRelationsByPublicId.d.ts +3 -3
  17. package/esm/funcs/assetRelationsDeleteAssetRelationsByPublicId.d.ts.map +1 -1
  18. package/esm/funcs/assetRelationsDeleteAssetRelationsByPublicId.js +5 -5
  19. package/esm/funcs/assetRelationsDeleteAssetRelationsByPublicId.js.map +1 -1
  20. package/esm/funcs/assetsDeleteBackupVersions.d.ts +2 -2
  21. package/esm/funcs/assetsDeleteBackupVersions.d.ts.map +1 -1
  22. package/esm/funcs/assetsDeleteBackupVersions.js +9 -7
  23. package/esm/funcs/assetsDeleteBackupVersions.js.map +1 -1
  24. package/esm/funcs/assetsDestroyByAssetId.d.ts +4 -5
  25. package/esm/funcs/assetsDestroyByAssetId.d.ts.map +1 -1
  26. package/esm/funcs/assetsDestroyByAssetId.js +4 -5
  27. package/esm/funcs/assetsDestroyByAssetId.js.map +1 -1
  28. package/esm/funcs/assetsDownloadAsset.d.ts +2 -2
  29. package/esm/funcs/assetsDownloadAsset.d.ts.map +1 -1
  30. package/esm/funcs/assetsDownloadAsset.js +3 -9
  31. package/esm/funcs/assetsDownloadAsset.js.map +1 -1
  32. package/esm/funcs/assetsDownloadBackupAsset.d.ts +1 -1
  33. package/esm/funcs/assetsDownloadBackupAsset.d.ts.map +1 -1
  34. package/esm/funcs/assetsDownloadBackupAsset.js +3 -9
  35. package/esm/funcs/assetsDownloadBackupAsset.js.map +1 -1
  36. package/esm/funcs/assetsExplicitAsset.d.ts +2 -2
  37. package/esm/funcs/assetsExplicitAsset.d.ts.map +1 -1
  38. package/esm/funcs/assetsExplicitAsset.js +7 -5
  39. package/esm/funcs/assetsExplicitAsset.js.map +1 -1
  40. package/esm/funcs/assetsListImages.d.ts +5 -5
  41. package/esm/funcs/assetsListImages.d.ts.map +1 -1
  42. package/esm/funcs/assetsListImages.js +1 -1
  43. package/esm/funcs/assetsListImages.js.map +1 -1
  44. package/esm/funcs/assetsListRawFiles.d.ts +5 -5
  45. package/esm/funcs/assetsListRawFiles.d.ts.map +1 -1
  46. package/esm/funcs/assetsListRawFiles.js +1 -1
  47. package/esm/funcs/assetsListRawFiles.js.map +1 -1
  48. package/esm/funcs/assetsListResourcesByAssetFolder.d.ts +3 -3
  49. package/esm/funcs/assetsListResourcesByAssetFolder.d.ts.map +1 -1
  50. package/esm/funcs/assetsListResourcesByAssetFolder.js.map +1 -1
  51. package/esm/funcs/assetsListResourcesByAssetIDs.d.ts +2 -2
  52. package/esm/funcs/assetsListResourcesByAssetIDs.d.ts.map +1 -1
  53. package/esm/funcs/assetsListResourcesByAssetIDs.js.map +1 -1
  54. package/esm/funcs/assetsListResourcesByContext.d.ts +3 -3
  55. package/esm/funcs/assetsListResourcesByContext.d.ts.map +1 -1
  56. package/esm/funcs/assetsListResourcesByContext.js.map +1 -1
  57. package/esm/funcs/assetsListResourcesByModerationKindAndStatus.d.ts +5 -4
  58. package/esm/funcs/assetsListResourcesByModerationKindAndStatus.d.ts.map +1 -1
  59. package/esm/funcs/assetsListResourcesByModerationKindAndStatus.js.map +1 -1
  60. package/esm/funcs/assetsListVideos.d.ts +5 -5
  61. package/esm/funcs/assetsListVideos.d.ts.map +1 -1
  62. package/esm/funcs/assetsListVideos.js +1 -1
  63. package/esm/funcs/assetsListVideos.js.map +1 -1
  64. package/esm/funcs/assetsRestoreResourcesByAssetIDs.d.ts +2 -2
  65. package/esm/funcs/assetsRestoreResourcesByAssetIDs.d.ts.map +1 -1
  66. package/esm/funcs/assetsRestoreResourcesByAssetIDs.js +2 -2
  67. package/esm/funcs/assetsRestoreResourcesByAssetIDs.js.map +1 -1
  68. package/esm/funcs/assetsUpdateResourceByAssetId.d.ts +1 -1
  69. package/esm/funcs/assetsUpdateResourceByAssetId.js +1 -1
  70. package/esm/funcs/backupsDeleteBackupVersions.d.ts +2 -2
  71. package/esm/funcs/backupsDeleteBackupVersions.d.ts.map +1 -1
  72. package/esm/funcs/backupsDeleteBackupVersions.js +9 -7
  73. package/esm/funcs/backupsDeleteBackupVersions.js.map +1 -1
  74. package/esm/funcs/foldersSearchFolders.d.ts +4 -2
  75. package/esm/funcs/foldersSearchFolders.d.ts.map +1 -1
  76. package/esm/funcs/foldersSearchFolders.js.map +1 -1
  77. package/esm/funcs/foldersSearchFoldersPost.d.ts +2 -2
  78. package/esm/funcs/foldersSearchFoldersPost.d.ts.map +1 -1
  79. package/esm/funcs/foldersSearchFoldersPost.js +2 -2
  80. package/esm/funcs/foldersSearchFoldersPost.js.map +1 -1
  81. package/esm/funcs/foldersUpdateFolder.d.ts +2 -2
  82. package/esm/funcs/foldersUpdateFolder.d.ts.map +1 -1
  83. package/esm/funcs/foldersUpdateFolder.js +7 -5
  84. package/esm/funcs/foldersUpdateFolder.js.map +1 -1
  85. package/esm/funcs/moderationsListResourcesByModerationKindAndStatus.d.ts +5 -4
  86. package/esm/funcs/moderationsListResourcesByModerationKindAndStatus.d.ts.map +1 -1
  87. package/esm/funcs/moderationsListResourcesByModerationKindAndStatus.js.map +1 -1
  88. package/esm/funcs/peopleListPeople.d.ts +2 -2
  89. package/esm/funcs/peopleListPeople.d.ts.map +1 -1
  90. package/esm/funcs/peopleListPeople.js.map +1 -1
  91. package/esm/funcs/peopleUpdatePerson.d.ts +2 -2
  92. package/esm/funcs/peopleUpdatePerson.d.ts.map +1 -1
  93. package/esm/funcs/peopleUpdatePerson.js +9 -7
  94. package/esm/funcs/peopleUpdatePerson.js.map +1 -1
  95. package/esm/funcs/searchVisualSearchAssets.d.ts +1 -1
  96. package/esm/funcs/searchVisualSearchAssets.js +1 -1
  97. package/esm/funcs/uploadDestroyAsset.d.ts +2 -1
  98. package/esm/funcs/uploadDestroyAsset.d.ts.map +1 -1
  99. package/esm/funcs/uploadDestroyAsset.js +7 -12
  100. package/esm/funcs/uploadDestroyAsset.js.map +1 -1
  101. package/esm/funcs/uploadText.d.ts +3 -2
  102. package/esm/funcs/uploadText.d.ts.map +1 -1
  103. package/esm/funcs/uploadText.js +7 -7
  104. package/esm/funcs/uploadText.js.map +1 -1
  105. package/esm/landing-page.js +1 -1
  106. package/esm/lib/config.d.ts +4 -4
  107. package/esm/lib/config.js +4 -4
  108. package/esm/lib/config.js.map +1 -1
  109. package/esm/lib/encodings.d.ts +1 -0
  110. package/esm/lib/encodings.d.ts.map +1 -1
  111. package/esm/lib/encodings.js +26 -5
  112. package/esm/lib/encodings.js.map +1 -1
  113. package/esm/lib/sdks.js +0 -2
  114. package/esm/lib/sdks.js.map +1 -1
  115. package/esm/lib/security.d.ts +1 -1
  116. package/esm/lib/security.d.ts.map +1 -1
  117. package/esm/lib/security.js +29 -17
  118. package/esm/lib/security.js.map +1 -1
  119. package/esm/mcp-server/apps/app-shared.d.ts +9 -0
  120. package/esm/mcp-server/apps/app-shared.d.ts.map +1 -0
  121. package/esm/mcp-server/apps/app-shared.js +2019 -0
  122. package/esm/mcp-server/apps/app-shared.js.map +1 -0
  123. package/esm/mcp-server/apps/asset-details-app.d.ts +2 -0
  124. package/esm/mcp-server/apps/asset-details-app.d.ts.map +1 -0
  125. package/esm/mcp-server/apps/asset-details-app.js +299 -0
  126. package/esm/mcp-server/apps/asset-details-app.js.map +1 -0
  127. package/esm/mcp-server/apps/asset-gallery-app.d.ts +2 -0
  128. package/esm/mcp-server/apps/asset-gallery-app.d.ts.map +1 -0
  129. package/esm/mcp-server/apps/asset-gallery-app.js +1077 -0
  130. package/esm/mcp-server/apps/asset-gallery-app.js.map +1 -0
  131. package/esm/mcp-server/apps/asset-upload-app.d.ts +2 -0
  132. package/esm/mcp-server/apps/asset-upload-app.d.ts.map +1 -0
  133. package/esm/mcp-server/apps/asset-upload-app.js +1093 -0
  134. package/esm/mcp-server/apps/asset-upload-app.js.map +1 -0
  135. package/esm/mcp-server/apps/cli-flag.d.ts +9 -0
  136. package/esm/mcp-server/apps/cli-flag.d.ts.map +1 -0
  137. package/esm/mcp-server/apps/cli-flag.js +12 -0
  138. package/esm/mcp-server/apps/cli-flag.js.map +1 -0
  139. package/esm/mcp-server/apps/config.d.ts +7 -0
  140. package/esm/mcp-server/apps/config.d.ts.map +1 -0
  141. package/esm/mcp-server/apps/config.js +42 -0
  142. package/esm/mcp-server/apps/config.js.map +1 -0
  143. package/esm/mcp-server/apps/extensions.d.ts +4 -0
  144. package/esm/mcp-server/apps/extensions.d.ts.map +1 -0
  145. package/esm/mcp-server/apps/extensions.js +83 -0
  146. package/esm/mcp-server/apps/extensions.js.map +1 -0
  147. package/esm/mcp-server/apps/tool-hooks.d.ts +2 -0
  148. package/esm/mcp-server/apps/tool-hooks.d.ts.map +1 -0
  149. package/esm/mcp-server/apps/tool-hooks.js +18 -0
  150. package/esm/mcp-server/apps/tool-hooks.js.map +1 -0
  151. package/esm/mcp-server/apps/uri.d.ts +11 -0
  152. package/esm/mcp-server/apps/uri.d.ts.map +1 -0
  153. package/esm/mcp-server/apps/uri.js +31 -0
  154. package/esm/mcp-server/apps/uri.js.map +1 -0
  155. package/esm/mcp-server/cli/serve/command.d.ts.map +1 -1
  156. package/esm/mcp-server/cli/serve/command.js +3 -1
  157. package/esm/mcp-server/cli/serve/command.js.map +1 -1
  158. package/esm/mcp-server/cli/serve/impl.d.ts.map +1 -1
  159. package/esm/mcp-server/cli/serve/impl.js +2 -0
  160. package/esm/mcp-server/cli/serve/impl.js.map +1 -1
  161. package/esm/mcp-server/cli/start/command.d.ts.map +1 -1
  162. package/esm/mcp-server/cli/start/command.js +3 -1
  163. package/esm/mcp-server/cli/start/command.js.map +1 -1
  164. package/esm/mcp-server/cli/start/impl.d.ts.map +1 -1
  165. package/esm/mcp-server/cli/start/impl.js +3 -0
  166. package/esm/mcp-server/cli/start/impl.js.map +1 -1
  167. package/esm/mcp-server/flags.d.ts +2 -0
  168. package/esm/mcp-server/flags.d.ts.map +1 -1
  169. package/esm/mcp-server/mcp-server.js +1 -1
  170. package/esm/mcp-server/server.d.ts +2 -0
  171. package/esm/mcp-server/server.d.ts.map +1 -1
  172. package/esm/mcp-server/server.extensions.d.ts +2 -1
  173. package/esm/mcp-server/server.extensions.d.ts.map +1 -1
  174. package/esm/mcp-server/server.extensions.js +3 -1
  175. package/esm/mcp-server/server.extensions.js.map +1 -1
  176. package/esm/mcp-server/server.js +3 -3
  177. package/esm/mcp-server/server.js.map +1 -1
  178. package/esm/mcp-server/tools/assetRelationsCreateAssetRelationsByAssetId.d.ts +1 -1
  179. package/esm/mcp-server/tools/assetRelationsCreateAssetRelationsByAssetId.d.ts.map +1 -1
  180. package/esm/mcp-server/tools/assetRelationsCreateAssetRelationsByAssetId.js +5 -4
  181. package/esm/mcp-server/tools/assetRelationsCreateAssetRelationsByAssetId.js.map +1 -1
  182. package/esm/mcp-server/tools/assetRelationsDeleteAssetRelationsByAssetId.d.ts +1 -1
  183. package/esm/mcp-server/tools/assetRelationsDeleteAssetRelationsByAssetId.d.ts.map +1 -1
  184. package/esm/mcp-server/tools/assetRelationsDeleteAssetRelationsByAssetId.js +5 -4
  185. package/esm/mcp-server/tools/assetRelationsDeleteAssetRelationsByAssetId.js.map +1 -1
  186. package/esm/mcp-server/tools/assetsDerivedDestroy.d.ts.map +1 -1
  187. package/esm/mcp-server/tools/assetsDerivedDestroy.js +1 -1
  188. package/esm/mcp-server/tools/assetsDerivedDestroy.js.map +1 -1
  189. package/esm/mcp-server/tools/assetsDestroyByAssetId.d.ts +1 -1
  190. package/esm/mcp-server/tools/assetsDestroyByAssetId.d.ts.map +1 -1
  191. package/esm/mcp-server/tools/assetsDestroyByAssetId.js +4 -5
  192. package/esm/mcp-server/tools/assetsDestroyByAssetId.js.map +1 -1
  193. package/esm/mcp-server/tools/assetsDownloadBackupAsset.d.ts +0 -3
  194. package/esm/mcp-server/tools/assetsDownloadBackupAsset.d.ts.map +1 -1
  195. package/esm/mcp-server/tools/assetsDownloadBackupAsset.js +2 -5
  196. package/esm/mcp-server/tools/assetsDownloadBackupAsset.js.map +1 -1
  197. package/esm/mcp-server/tools/assetsGenerateArchive.d.ts.map +1 -1
  198. package/esm/mcp-server/tools/assetsGenerateArchive.js +2 -2
  199. package/esm/mcp-server/tools/assetsGenerateArchive.js.map +1 -1
  200. package/esm/mcp-server/tools/assetsGetResourceByAssetId.d.ts.map +1 -1
  201. package/esm/mcp-server/tools/assetsGetResourceByAssetId.js +4 -0
  202. package/esm/mcp-server/tools/assetsGetResourceByAssetId.js.map +1 -1
  203. package/esm/mcp-server/tools/assetsListImages.d.ts +3 -36
  204. package/esm/mcp-server/tools/assetsListImages.d.ts.map +1 -1
  205. package/esm/mcp-server/tools/assetsListImages.js +14 -10
  206. package/esm/mcp-server/tools/assetsListImages.js.map +1 -1
  207. package/esm/mcp-server/tools/assetsListRawFiles.d.ts +3 -36
  208. package/esm/mcp-server/tools/assetsListRawFiles.d.ts.map +1 -1
  209. package/esm/mcp-server/tools/assetsListRawFiles.js +14 -10
  210. package/esm/mcp-server/tools/assetsListRawFiles.js.map +1 -1
  211. package/esm/mcp-server/tools/assetsListResourceTags.d.ts.map +1 -1
  212. package/esm/mcp-server/tools/assetsListResourceTags.js +2 -2
  213. package/esm/mcp-server/tools/assetsListResourceTags.js.map +1 -1
  214. package/esm/mcp-server/tools/assetsListVideos.d.ts +3 -36
  215. package/esm/mcp-server/tools/assetsListVideos.d.ts.map +1 -1
  216. package/esm/mcp-server/tools/assetsListVideos.js +14 -10
  217. package/esm/mcp-server/tools/assetsListVideos.js.map +1 -1
  218. package/esm/mcp-server/tools/assetsRenameAsset.d.ts.map +1 -1
  219. package/esm/mcp-server/tools/assetsRenameAsset.js +2 -2
  220. package/esm/mcp-server/tools/assetsRenameAsset.js.map +1 -1
  221. package/esm/mcp-server/tools/assetsUpdateResourceByAssetId.d.ts.map +1 -1
  222. package/esm/mcp-server/tools/assetsUpdateResourceByAssetId.js +2 -2
  223. package/esm/mcp-server/tools/assetsUpdateResourceByAssetId.js.map +1 -1
  224. package/esm/mcp-server/tools/foldersCreateFolder.d.ts.map +1 -1
  225. package/esm/mcp-server/tools/foldersCreateFolder.js +1 -1
  226. package/esm/mcp-server/tools/foldersCreateFolder.js.map +1 -1
  227. package/esm/mcp-server/tools/foldersDestroyFolder.d.ts.map +1 -1
  228. package/esm/mcp-server/tools/foldersDestroyFolder.js +1 -1
  229. package/esm/mcp-server/tools/foldersDestroyFolder.js.map +1 -1
  230. package/esm/mcp-server/tools/foldersSearchFolders.d.ts +5 -2
  231. package/esm/mcp-server/tools/foldersSearchFolders.d.ts.map +1 -1
  232. package/esm/mcp-server/tools/foldersSearchFolders.js +3 -3
  233. package/esm/mcp-server/tools/foldersSearchFolders.js.map +1 -1
  234. package/esm/mcp-server/tools/foldersUpdateFolder.d.ts +1 -1
  235. package/esm/mcp-server/tools/foldersUpdateFolder.d.ts.map +1 -1
  236. package/esm/mcp-server/tools/foldersUpdateFolder.js +4 -4
  237. package/esm/mcp-server/tools/foldersUpdateFolder.js.map +1 -1
  238. package/esm/mcp-server/tools/searchSearchAssets.d.ts.map +1 -1
  239. package/esm/mcp-server/tools/searchSearchAssets.js +5 -1
  240. package/esm/mcp-server/tools/searchSearchAssets.js.map +1 -1
  241. package/esm/mcp-server/tools/searchVisualSearchAssets.d.ts.map +1 -1
  242. package/esm/mcp-server/tools/searchVisualSearchAssets.js +2 -2
  243. package/esm/mcp-server/tools/searchVisualSearchAssets.js.map +1 -1
  244. package/esm/mcp-server/tools/uploadUpload.d.ts.map +1 -1
  245. package/esm/mcp-server/tools/uploadUpload.js +6 -7
  246. package/esm/mcp-server/tools/uploadUpload.js.map +1 -1
  247. package/esm/mcp-server/tools/usageGetUsage.d.ts.map +1 -1
  248. package/esm/mcp-server/tools/usageGetUsage.js +1 -1
  249. package/esm/mcp-server/tools/usageGetUsage.js.map +1 -1
  250. package/esm/mcp-server/tools.d.ts +4 -1
  251. package/esm/mcp-server/tools.d.ts.map +1 -1
  252. package/esm/mcp-server/tools.js +19 -10
  253. package/esm/mcp-server/tools.js.map +1 -1
  254. package/esm/models/accesscontrolitem.d.ts +12 -2
  255. package/esm/models/accesscontrolitem.d.ts.map +1 -1
  256. package/esm/models/accesscontrolitem.js +16 -2
  257. package/esm/models/accesscontrolitem.js.map +1 -1
  258. package/esm/models/assetdeliverytype.d.ts +16 -0
  259. package/esm/models/assetdeliverytype.d.ts.map +1 -0
  260. package/esm/models/assetdeliverytype.js +15 -0
  261. package/esm/models/assetdeliverytype.js.map +1 -0
  262. package/esm/models/assignfolderrolesop.d.ts.map +1 -1
  263. package/esm/models/assignfolderrolesop.js +1 -1
  264. package/esm/models/assignfolderrolesop.js.map +1 -1
  265. package/esm/models/asyncuploadresponse.d.ts +2 -2
  266. package/esm/models/asyncuploadresponse.d.ts.map +1 -1
  267. package/esm/models/asyncuploadresponse.js +2 -2
  268. package/esm/models/asyncuploadresponse.js.map +1 -1
  269. package/esm/models/backupversionfailure.d.ts +7 -0
  270. package/esm/models/backupversionfailure.d.ts.map +1 -0
  271. package/esm/models/backupversionfailure.js +11 -0
  272. package/esm/models/backupversionfailure.js.map +1 -0
  273. package/esm/models/componentsdestroyrequest.d.ts +9 -0
  274. package/esm/models/componentsdestroyrequest.d.ts.map +1 -0
  275. package/esm/models/componentsdestroyrequest.js +12 -0
  276. package/esm/models/componentsdestroyrequest.js.map +1 -0
  277. package/esm/models/componentsdestroyresponse.d.ts +22 -0
  278. package/esm/models/componentsdestroyresponse.d.ts.map +1 -0
  279. package/esm/models/componentsdestroyresponse.js +20 -0
  280. package/esm/models/componentsdestroyresponse.js.map +1 -0
  281. package/esm/models/contextfullresponse.d.ts +17 -0
  282. package/esm/models/contextfullresponse.d.ts.map +1 -0
  283. package/esm/models/contextfullresponse.js +21 -0
  284. package/esm/models/contextfullresponse.js.map +1 -0
  285. package/esm/models/coordinatesresponse.d.ts +10 -0
  286. package/esm/models/coordinatesresponse.d.ts.map +1 -0
  287. package/esm/models/coordinatesresponse.js +11 -0
  288. package/esm/models/coordinatesresponse.js.map +1 -0
  289. package/esm/models/createassetrelationsbyassetidop.d.ts +2 -5
  290. package/esm/models/createassetrelationsbyassetidop.d.ts.map +1 -1
  291. package/esm/models/createassetrelationsbyassetidop.js +3 -4
  292. package/esm/models/createassetrelationsbyassetidop.js.map +1 -1
  293. package/esm/models/createassetrelationsbypublicidop.d.ts +4 -7
  294. package/esm/models/createassetrelationsbypublicidop.d.ts.map +1 -1
  295. package/esm/models/createassetrelationsbypublicidop.js +6 -7
  296. package/esm/models/createassetrelationsbypublicidop.js.map +1 -1
  297. package/esm/models/createfolderop.d.ts +3 -11
  298. package/esm/models/createfolderop.d.ts.map +1 -1
  299. package/esm/models/createfolderop.js +4 -9
  300. package/esm/models/createfolderop.js.map +1 -1
  301. package/esm/models/createfolderresponse.d.ts +8 -0
  302. package/esm/models/createfolderresponse.d.ts.map +1 -0
  303. package/esm/models/createfolderresponse.js +12 -0
  304. package/esm/models/createfolderresponse.js.map +1 -0
  305. package/esm/models/deleteassetrelationsbyassetidop.d.ts +2 -5
  306. package/esm/models/deleteassetrelationsbyassetidop.d.ts.map +1 -1
  307. package/esm/models/deleteassetrelationsbyassetidop.js +3 -4
  308. package/esm/models/deleteassetrelationsbyassetidop.js.map +1 -1
  309. package/esm/models/deleteassetrelationsbypublicidop.d.ts +4 -7
  310. package/esm/models/deleteassetrelationsbypublicidop.d.ts.map +1 -1
  311. package/esm/models/deleteassetrelationsbypublicidop.js +5 -7
  312. package/esm/models/deleteassetrelationsbypublicidop.js.map +1 -1
  313. package/esm/models/deletebackupversionsop.d.ts +8 -31
  314. package/esm/models/deletebackupversionsop.d.ts.map +1 -1
  315. package/esm/models/deletebackupversionsop.js +9 -21
  316. package/esm/models/deletebackupversionsop.js.map +1 -1
  317. package/esm/models/deletebackupversionspartialresponse.d.ts +9 -0
  318. package/esm/models/deletebackupversionspartialresponse.d.ts.map +1 -0
  319. package/esm/models/deletebackupversionspartialresponse.js +12 -0
  320. package/esm/models/deletebackupversionspartialresponse.js.map +1 -0
  321. package/esm/models/deletebackupversionsrequest.d.ts +6 -0
  322. package/esm/models/deletebackupversionsrequest.d.ts.map +1 -0
  323. package/esm/models/deletebackupversionsrequest.js +9 -0
  324. package/esm/models/deletebackupversionsrequest.js.map +1 -0
  325. package/esm/models/deletebackupversionsresponse.d.ts +7 -0
  326. package/esm/models/deletebackupversionsresponse.d.ts.map +1 -0
  327. package/esm/models/deletebackupversionsresponse.js +10 -0
  328. package/esm/models/deletebackupversionsresponse.js.map +1 -0
  329. package/esm/models/deletefolderresponse.d.ts +6 -0
  330. package/esm/models/deletefolderresponse.d.ts.map +1 -0
  331. package/esm/models/deletefolderresponse.js +10 -0
  332. package/esm/models/deletefolderresponse.js.map +1 -0
  333. package/esm/models/deliverytype.d.ts +20 -0
  334. package/esm/models/deliverytype.d.ts.map +1 -0
  335. package/esm/models/deliverytype.js +19 -0
  336. package/esm/models/deliverytype.js.map +1 -0
  337. package/esm/models/deliverytypeall.d.ts +20 -0
  338. package/esm/models/deliverytypeall.d.ts.map +1 -0
  339. package/esm/models/deliverytypeall.js +25 -0
  340. package/esm/models/deliverytypeall.js.map +1 -0
  341. package/esm/models/destroyassetop.d.ts +14 -26
  342. package/esm/models/destroyassetop.d.ts.map +1 -1
  343. package/esm/models/destroyassetop.js +11 -18
  344. package/esm/models/destroyassetop.js.map +1 -1
  345. package/esm/models/destroybyassetidop.d.ts +2 -2
  346. package/esm/models/destroybyassetidop.d.ts.map +1 -1
  347. package/esm/models/destroybyassetidop.js +2 -2
  348. package/esm/models/destroybyassetidop.js.map +1 -1
  349. package/esm/models/destroyfolderop.d.ts +2 -8
  350. package/esm/models/destroyfolderop.d.ts.map +1 -1
  351. package/esm/models/destroyfolderop.js +3 -5
  352. package/esm/models/destroyfolderop.js.map +1 -1
  353. package/esm/models/destroyresponse.d.ts +6 -7
  354. package/esm/models/destroyresponse.d.ts.map +1 -1
  355. package/esm/models/destroyresponse.js +5 -6
  356. package/esm/models/destroyresponse.js.map +1 -1
  357. package/esm/models/directionenum.d.ts +18 -0
  358. package/esm/models/directionenum.d.ts.map +1 -0
  359. package/esm/models/directionenum.js +17 -0
  360. package/esm/models/directionenum.js.map +1 -0
  361. package/esm/models/downloadassetop.d.ts +2 -5
  362. package/esm/models/downloadassetop.d.ts.map +1 -1
  363. package/esm/models/downloadassetop.js +3 -6
  364. package/esm/models/downloadassetop.js.map +1 -1
  365. package/esm/models/downloadbackupassetop.d.ts +2 -39
  366. package/esm/models/downloadbackupassetop.d.ts.map +1 -1
  367. package/esm/models/downloadbackupassetop.js +2 -27
  368. package/esm/models/downloadbackupassetop.js.map +1 -1
  369. package/esm/models/explicitassetop.d.ts +2 -62
  370. package/esm/models/explicitassetop.d.ts.map +1 -1
  371. package/esm/models/explicitassetop.js +3 -64
  372. package/esm/models/explicitassetop.js.map +1 -1
  373. package/esm/models/explicitdeliverytype.d.ts +11 -0
  374. package/esm/models/explicitdeliverytype.d.ts.map +1 -0
  375. package/esm/models/explicitdeliverytype.js +17 -0
  376. package/esm/models/explicitdeliverytype.js.map +1 -0
  377. package/esm/models/explicitrequest.d.ts +128 -0
  378. package/esm/models/explicitrequest.d.ts.map +1 -0
  379. package/esm/models/explicitrequest.js +118 -0
  380. package/esm/models/explicitrequest.js.map +1 -0
  381. package/esm/models/exploderesourceop.d.ts +7 -27
  382. package/esm/models/exploderesourceop.d.ts.map +1 -1
  383. package/esm/models/exploderesourceop.js +6 -21
  384. package/esm/models/exploderesourceop.js.map +1 -1
  385. package/esm/models/exploderesponse.d.ts +21 -0
  386. package/esm/models/exploderesponse.d.ts.map +1 -0
  387. package/esm/models/exploderesponse.js +19 -0
  388. package/esm/models/exploderesponse.js.map +1 -0
  389. package/esm/models/fetchdeliverytype.d.ts +18 -0
  390. package/esm/models/fetchdeliverytype.d.ts.map +1 -0
  391. package/esm/models/fetchdeliverytype.js +17 -0
  392. package/esm/models/fetchdeliverytype.js.map +1 -0
  393. package/esm/models/fields.d.ts +5 -0
  394. package/esm/models/fields.d.ts.map +1 -0
  395. package/esm/models/fields.js +11 -0
  396. package/esm/models/fields.js.map +1 -0
  397. package/esm/models/foldernamepath.d.ts +7 -0
  398. package/esm/models/foldernamepath.d.ts.map +1 -0
  399. package/esm/models/foldernamepath.js +10 -0
  400. package/esm/models/foldernamepath.js.map +1 -0
  401. package/esm/models/foldersearchrequest.d.ts +12 -0
  402. package/esm/models/foldersearchrequest.d.ts.map +1 -0
  403. package/esm/models/foldersearchrequest.js +15 -0
  404. package/esm/models/foldersearchrequest.js.map +1 -0
  405. package/esm/models/generatearchiveop.d.ts +27 -34
  406. package/esm/models/generatearchiveop.d.ts.map +1 -1
  407. package/esm/models/generatearchiveop.js +31 -37
  408. package/esm/models/generatearchiveop.js.map +1 -1
  409. package/esm/models/generatearchiveresponse.d.ts +27 -0
  410. package/esm/models/generatearchiveresponse.d.ts.map +1 -0
  411. package/esm/models/generatearchiveresponse.js +30 -0
  412. package/esm/models/generatearchiveresponse.js.map +1 -0
  413. package/esm/models/generateddeliverytype.d.ts +22 -0
  414. package/esm/models/generateddeliverytype.d.ts.map +1 -0
  415. package/esm/models/generateddeliverytype.js +21 -0
  416. package/esm/models/generateddeliverytype.js.map +1 -0
  417. package/esm/models/getpersonop.d.ts +2 -9
  418. package/esm/models/getpersonop.d.ts.map +1 -1
  419. package/esm/models/getpersonop.js +2 -5
  420. package/esm/models/getpersonop.js.map +1 -1
  421. package/esm/models/getusageop.d.ts.map +1 -1
  422. package/esm/models/getusageop.js +1 -1
  423. package/esm/models/getusageop.js.map +1 -1
  424. package/esm/models/getvideoviewsop.d.ts +3 -23
  425. package/esm/models/getvideoviewsop.d.ts.map +1 -1
  426. package/esm/models/getvideoviewsop.js +2 -17
  427. package/esm/models/getvideoviewsop.js.map +1 -1
  428. package/esm/models/info.d.ts +54 -21
  429. package/esm/models/info.d.ts.map +1 -1
  430. package/esm/models/info.js +50 -23
  431. package/esm/models/info.js.map +1 -1
  432. package/esm/models/listimagesop.d.ts +6 -6
  433. package/esm/models/listimagesop.d.ts.map +1 -1
  434. package/esm/models/listimagesop.js +9 -9
  435. package/esm/models/listimagesop.js.map +1 -1
  436. package/esm/models/listpeopleop.d.ts +4 -12
  437. package/esm/models/listpeopleop.d.ts.map +1 -1
  438. package/esm/models/listpeopleop.js +4 -8
  439. package/esm/models/listpeopleop.js.map +1 -1
  440. package/esm/models/listrawfilesop.d.ts +6 -6
  441. package/esm/models/listrawfilesop.d.ts.map +1 -1
  442. package/esm/models/listrawfilesop.js +9 -9
  443. package/esm/models/listrawfilesop.js.map +1 -1
  444. package/esm/models/listresourcesbyassetfolderop.d.ts +4 -4
  445. package/esm/models/listresourcesbyassetfolderop.d.ts.map +1 -1
  446. package/esm/models/listresourcesbyassetfolderop.js +5 -5
  447. package/esm/models/listresourcesbyassetfolderop.js.map +1 -1
  448. package/esm/models/listresourcesbyassetidsop.d.ts +2 -2
  449. package/esm/models/listresourcesbyassetidsop.d.ts.map +1 -1
  450. package/esm/models/listresourcesbyassetidsop.js +3 -3
  451. package/esm/models/listresourcesbyassetidsop.js.map +1 -1
  452. package/esm/models/listresourcesbycontextop.d.ts +4 -4
  453. package/esm/models/listresourcesbycontextop.d.ts.map +1 -1
  454. package/esm/models/listresourcesbycontextop.js +5 -5
  455. package/esm/models/listresourcesbycontextop.js.map +1 -1
  456. package/esm/models/listresourcesbymoderationkindandstatusop.d.ts +7 -40
  457. package/esm/models/listresourcesbymoderationkindandstatusop.d.ts.map +1 -1
  458. package/esm/models/listresourcesbymoderationkindandstatusop.js +9 -39
  459. package/esm/models/listresourcesbymoderationkindandstatusop.js.map +1 -1
  460. package/esm/models/listresourcetagsop.d.ts +2 -9
  461. package/esm/models/listresourcetagsop.d.ts.map +1 -1
  462. package/esm/models/listresourcetagsop.js +4 -7
  463. package/esm/models/listresourcetagsop.js.map +1 -1
  464. package/esm/models/listresourcetypesop.d.ts +3 -21
  465. package/esm/models/listresourcetypesop.d.ts.map +1 -1
  466. package/esm/models/listresourcetypesop.js +3 -16
  467. package/esm/models/listresourcetypesop.js.map +1 -1
  468. package/esm/models/listvideosop.d.ts +6 -6
  469. package/esm/models/listvideosop.d.ts.map +1 -1
  470. package/esm/models/listvideosop.js +9 -9
  471. package/esm/models/listvideosop.js.map +1 -1
  472. package/esm/models/manageddeliverytype.d.ts +20 -0
  473. package/esm/models/manageddeliverytype.d.ts.map +1 -0
  474. package/esm/models/manageddeliverytype.js +19 -0
  475. package/esm/models/manageddeliverytype.js.map +1 -0
  476. package/esm/models/moderationkind.d.ts +22 -0
  477. package/esm/models/moderationkind.d.ts.map +1 -0
  478. package/esm/models/moderationkind.js +24 -0
  479. package/esm/models/moderationkind.js.map +1 -0
  480. package/esm/models/moderationstatusparameter.d.ts +18 -0
  481. package/esm/models/moderationstatusparameter.d.ts.map +1 -0
  482. package/esm/models/moderationstatusparameter.js +20 -0
  483. package/esm/models/moderationstatusparameter.js.map +1 -0
  484. package/esm/models/movefolderrequest.d.ts +9 -0
  485. package/esm/models/movefolderrequest.d.ts.map +1 -0
  486. package/esm/models/movefolderrequest.js +10 -0
  487. package/esm/models/movefolderrequest.js.map +1 -0
  488. package/esm/models/movefolderresponse.d.ts +8 -0
  489. package/esm/models/movefolderresponse.d.ts.map +1 -0
  490. package/esm/models/movefolderresponse.js +12 -0
  491. package/esm/models/movefolderresponse.js.map +1 -0
  492. package/esm/models/nonfinalchunkuploadresponse.d.ts +2 -2
  493. package/esm/models/nonfinalchunkuploadresponse.d.ts.map +1 -1
  494. package/esm/models/nonfinalchunkuploadresponse.js +2 -2
  495. package/esm/models/nonfinalchunkuploadresponse.js.map +1 -1
  496. package/esm/models/peoplelistresponse.d.ts +8 -0
  497. package/esm/models/peoplelistresponse.d.ts.map +1 -0
  498. package/esm/models/peoplelistresponse.js +12 -0
  499. package/esm/models/peoplelistresponse.js.map +1 -0
  500. package/esm/models/personresponse.d.ts +7 -0
  501. package/esm/models/personresponse.d.ts.map +1 -0
  502. package/esm/models/personresponse.js +10 -0
  503. package/esm/models/personresponse.js.map +1 -0
  504. package/esm/models/relateassetsbyassetidrequest.d.ts +9 -0
  505. package/esm/models/relateassetsbyassetidrequest.d.ts.map +1 -0
  506. package/esm/models/relateassetsbyassetidrequest.js +9 -0
  507. package/esm/models/relateassetsbyassetidrequest.js.map +1 -0
  508. package/esm/models/relateassetsbypublicidrequest.d.ts +9 -0
  509. package/esm/models/relateassetsbypublicidrequest.d.ts.map +1 -0
  510. package/esm/models/relateassetsbypublicidrequest.js +9 -0
  511. package/esm/models/relateassetsbypublicidrequest.js.map +1 -0
  512. package/esm/models/renameassetop.d.ts +8 -8
  513. package/esm/models/renameassetop.d.ts.map +1 -1
  514. package/esm/models/renameassetop.js +10 -13
  515. package/esm/models/renameassetop.js.map +1 -1
  516. package/esm/models/resourcefieldsenum.d.ts +66 -0
  517. package/esm/models/resourcefieldsenum.d.ts.map +1 -0
  518. package/esm/models/resourcefieldsenum.js +65 -0
  519. package/esm/models/resourcefieldsenum.js.map +1 -0
  520. package/esm/models/resourcetypesresponse.d.ts +18 -0
  521. package/esm/models/resourcetypesresponse.d.ts.map +1 -0
  522. package/esm/models/resourcetypesresponse.js +20 -0
  523. package/esm/models/resourcetypesresponse.js.map +1 -0
  524. package/esm/models/resourceupdaterequest.d.ts +11 -6
  525. package/esm/models/resourceupdaterequest.d.ts.map +1 -1
  526. package/esm/models/resourceupdaterequest.js +11 -8
  527. package/esm/models/resourceupdaterequest.js.map +1 -1
  528. package/esm/models/responsivebreakpoint.d.ts +11 -0
  529. package/esm/models/responsivebreakpoint.d.ts.map +1 -0
  530. package/esm/models/responsivebreakpoint.js +15 -0
  531. package/esm/models/responsivebreakpoint.js.map +1 -0
  532. package/esm/models/restorerequest.d.ts +8 -0
  533. package/esm/models/restorerequest.d.ts.map +1 -0
  534. package/esm/models/restorerequest.js +11 -0
  535. package/esm/models/restorerequest.js.map +1 -0
  536. package/esm/models/restoreresourcesbyassetidsop.d.ts +0 -6
  537. package/esm/models/restoreresourcesbyassetidsop.d.ts.map +1 -1
  538. package/esm/models/restoreresourcesbyassetidsop.js +0 -5
  539. package/esm/models/restoreresourcesbyassetidsop.js.map +1 -1
  540. package/esm/models/restoreresponseunion.d.ts +1 -1
  541. package/esm/models/searchfoldersop.d.ts +5 -9
  542. package/esm/models/searchfoldersop.d.ts.map +1 -1
  543. package/esm/models/searchfoldersop.js +3 -10
  544. package/esm/models/searchfoldersop.js.map +1 -1
  545. package/esm/models/searchfolderspostop.d.ts +0 -7
  546. package/esm/models/searchfolderspostop.d.ts.map +1 -1
  547. package/esm/models/searchfolderspostop.js +0 -6
  548. package/esm/models/searchfolderspostop.js.map +1 -1
  549. package/esm/models/searchparameters.d.ts +11 -8
  550. package/esm/models/searchparameters.d.ts.map +1 -1
  551. package/esm/models/searchparameters.js +7 -7
  552. package/esm/models/searchparameters.js.map +1 -1
  553. package/esm/models/searchresponse.d.ts +6 -29
  554. package/esm/models/searchresponse.d.ts.map +1 -1
  555. package/esm/models/searchresponse.js +4 -21
  556. package/esm/models/searchresponse.js.map +1 -1
  557. package/esm/models/showfolderop.d.ts.map +1 -1
  558. package/esm/models/showfolderop.js +1 -1
  559. package/esm/models/showfolderop.js.map +1 -1
  560. package/esm/models/{extendedstoragetype.d.ts → socialdeliverytype.d.ts} +14 -18
  561. package/esm/models/socialdeliverytype.d.ts.map +1 -0
  562. package/esm/models/{extendedstoragetype.js → socialdeliverytype.js} +14 -18
  563. package/esm/models/socialdeliverytype.js.map +1 -0
  564. package/esm/models/structuredmetadataparam.d.ts +12 -0
  565. package/esm/models/structuredmetadataparam.d.ts.map +1 -0
  566. package/esm/models/structuredmetadataparam.js +11 -0
  567. package/esm/models/structuredmetadataparam.js.map +1 -0
  568. package/esm/models/structuredmetadatavalue.d.ts +4 -0
  569. package/esm/models/structuredmetadatavalue.d.ts.map +1 -0
  570. package/esm/models/structuredmetadatavalue.js +11 -0
  571. package/esm/models/structuredmetadatavalue.js.map +1 -0
  572. package/esm/models/tagslistresponse.d.ts +7 -0
  573. package/esm/models/tagslistresponse.d.ts.map +1 -0
  574. package/esm/models/tagslistresponse.js +10 -0
  575. package/esm/models/tagslistresponse.js.map +1 -0
  576. package/esm/models/tagsparam.d.ts +7 -0
  577. package/esm/models/tagsparam.d.ts.map +1 -0
  578. package/esm/models/tagsparam.js +10 -0
  579. package/esm/models/tagsparam.js.map +1 -0
  580. package/esm/models/textop.d.ts +7 -127
  581. package/esm/models/textop.d.ts.map +1 -1
  582. package/esm/models/textop.js +8 -97
  583. package/esm/models/textop.js.map +1 -1
  584. package/esm/models/textrequest.d.ts +82 -0
  585. package/esm/models/textrequest.d.ts.map +1 -0
  586. package/esm/models/textrequest.js +68 -0
  587. package/esm/models/textrequest.js.map +1 -0
  588. package/esm/models/textresponse.d.ts +41 -0
  589. package/esm/models/textresponse.d.ts.map +1 -0
  590. package/esm/models/textresponse.js +36 -0
  591. package/esm/models/textresponse.js.map +1 -0
  592. package/esm/models/unrelateassetsbyassetidrequest.d.ts +9 -0
  593. package/esm/models/unrelateassetsbyassetidrequest.d.ts.map +1 -0
  594. package/esm/models/unrelateassetsbyassetidrequest.js +9 -0
  595. package/esm/models/unrelateassetsbyassetidrequest.js.map +1 -0
  596. package/esm/models/unrelateassetsbypublicidrequest.d.ts +9 -0
  597. package/esm/models/unrelateassetsbypublicidrequest.d.ts.map +1 -0
  598. package/esm/models/unrelateassetsbypublicidrequest.js +9 -0
  599. package/esm/models/unrelateassetsbypublicidrequest.js.map +1 -0
  600. package/esm/models/updatefolderop.d.ts +4 -24
  601. package/esm/models/updatefolderop.d.ts.map +1 -1
  602. package/esm/models/updatefolderop.js +5 -18
  603. package/esm/models/updatefolderop.js.map +1 -1
  604. package/esm/models/updatepersonop.d.ts +7 -21
  605. package/esm/models/updatepersonop.d.ts.map +1 -1
  606. package/esm/models/updatepersonop.js +6 -17
  607. package/esm/models/updatepersonop.js.map +1 -1
  608. package/esm/models/updatepersonrequest.d.ts +9 -0
  609. package/esm/models/updatepersonrequest.d.ts.map +1 -0
  610. package/esm/models/updatepersonrequest.js +13 -0
  611. package/esm/models/updatepersonrequest.js.map +1 -0
  612. package/esm/models/updatepersonresponse.d.ts +9 -0
  613. package/esm/models/updatepersonresponse.d.ts.map +1 -0
  614. package/esm/models/updatepersonresponse.js +13 -0
  615. package/esm/models/updatepersonresponse.js.map +1 -0
  616. package/esm/models/updateresourcebyassetidop.d.ts.map +1 -1
  617. package/esm/models/updateresourcebyassetidop.js +1 -1
  618. package/esm/models/updateresourcebyassetidop.js.map +1 -1
  619. package/esm/models/uploadchunkop.d.ts.map +1 -1
  620. package/esm/models/uploadchunkop.js +2 -2
  621. package/esm/models/uploadchunkop.js.map +1 -1
  622. package/esm/models/uploaddeliverytype.d.ts +9 -0
  623. package/esm/models/uploaddeliverytype.d.ts.map +1 -0
  624. package/esm/models/uploaddeliverytype.js +13 -0
  625. package/esm/models/uploaddeliverytype.js.map +1 -0
  626. package/esm/models/uploadop.d.ts.map +1 -1
  627. package/esm/models/uploadop.js +2 -2
  628. package/esm/models/uploadop.js.map +1 -1
  629. package/esm/models/uploadrequest.d.ts +69 -74
  630. package/esm/models/uploadrequest.d.ts.map +1 -1
  631. package/esm/models/uploadrequest.js +38 -47
  632. package/esm/models/uploadrequest.js.map +1 -1
  633. package/esm/models/uploadresponse.d.ts +11 -1
  634. package/esm/models/uploadresponse.d.ts.map +1 -1
  635. package/esm/models/uploadresponse.js +12 -4
  636. package/esm/models/uploadresponse.js.map +1 -1
  637. package/esm/models/videoview.d.ts +14 -0
  638. package/esm/models/videoview.d.ts.map +1 -0
  639. package/esm/models/videoview.js +17 -0
  640. package/esm/models/videoview.js.map +1 -0
  641. package/esm/models/videoviewsresponse.d.ts +9 -0
  642. package/esm/models/videoviewsresponse.d.ts.map +1 -0
  643. package/esm/models/videoviewsresponse.js +13 -0
  644. package/esm/models/videoviewsresponse.js.map +1 -0
  645. package/esm/tool-names.js +8 -8
  646. package/esm/tool-names.js.map +1 -1
  647. package/package.json +1 -1
  648. package/src/funcs/assetRelationsCreateAssetRelationsByAssetId.ts +9 -7
  649. package/src/funcs/assetRelationsCreateAssetRelationsByPublicId.ts +13 -9
  650. package/src/funcs/assetRelationsDeleteAssetRelationsByAssetId.ts +11 -7
  651. package/src/funcs/assetRelationsDeleteAssetRelationsByPublicId.ts +13 -9
  652. package/src/funcs/assetsDeleteBackupVersions.ts +12 -10
  653. package/src/funcs/assetsDestroyByAssetId.ts +8 -9
  654. package/src/funcs/assetsDownloadAsset.ts +3 -18
  655. package/src/funcs/assetsDownloadBackupAsset.ts +0 -15
  656. package/src/funcs/assetsExplicitAsset.ts +8 -6
  657. package/src/funcs/assetsListImages.ts +10 -10
  658. package/src/funcs/assetsListRawFiles.ts +10 -10
  659. package/src/funcs/assetsListResourcesByAssetFolder.ts +6 -6
  660. package/src/funcs/assetsListResourcesByAssetIDs.ts +3 -3
  661. package/src/funcs/assetsListResourcesByContext.ts +6 -6
  662. package/src/funcs/assetsListResourcesByModerationKindAndStatus.ts +10 -10
  663. package/src/funcs/assetsListVideos.ts +10 -10
  664. package/src/funcs/assetsRestoreResourcesByAssetIDs.ts +6 -6
  665. package/src/funcs/assetsUpdateResourceByAssetId.ts +1 -1
  666. package/src/funcs/backupsDeleteBackupVersions.ts +12 -10
  667. package/src/funcs/foldersSearchFolders.ts +5 -5
  668. package/src/funcs/foldersSearchFoldersPost.ts +6 -6
  669. package/src/funcs/foldersUpdateFolder.ts +8 -6
  670. package/src/funcs/moderationsListResourcesByModerationKindAndStatus.ts +10 -10
  671. package/src/funcs/peopleListPeople.ts +3 -3
  672. package/src/funcs/peopleUpdatePerson.ts +12 -10
  673. package/src/funcs/searchVisualSearchAssets.ts +1 -1
  674. package/src/funcs/uploadDestroyAsset.ts +8 -15
  675. package/src/funcs/uploadText.ts +10 -10
  676. package/src/landing-page.ts +1 -1
  677. package/src/lib/config.ts +4 -4
  678. package/src/lib/encodings.ts +32 -4
  679. package/src/lib/sdks.ts +0 -2
  680. package/src/lib/security.ts +14 -2
  681. package/src/mcp-server/apps/app-shared.ts +2030 -0
  682. package/src/mcp-server/apps/asset-details-app.ts +312 -0
  683. package/src/mcp-server/apps/asset-gallery-app.ts +1090 -0
  684. package/src/mcp-server/apps/asset-upload-app.ts +1114 -0
  685. package/src/mcp-server/apps/cli-flag.ts +14 -0
  686. package/src/mcp-server/apps/config.ts +48 -0
  687. package/src/mcp-server/apps/extensions.ts +102 -0
  688. package/src/mcp-server/apps/tool-hooks.ts +19 -0
  689. package/src/mcp-server/apps/uri.ts +38 -0
  690. package/src/mcp-server/cli/serve/command.ts +3 -1
  691. package/src/mcp-server/cli/serve/impl.ts +2 -0
  692. package/src/mcp-server/cli/start/command.ts +3 -1
  693. package/src/mcp-server/cli/start/impl.ts +3 -0
  694. package/src/mcp-server/flags.ts +2 -0
  695. package/src/mcp-server/mcp-server.ts +1 -1
  696. package/src/mcp-server/server.extensions.ts +8 -1
  697. package/src/mcp-server/server.ts +5 -2
  698. package/src/mcp-server/tools/assetRelationsCreateAssetRelationsByAssetId.ts +5 -4
  699. package/src/mcp-server/tools/assetRelationsDeleteAssetRelationsByAssetId.ts +5 -4
  700. package/src/mcp-server/tools/assetsDerivedDestroy.ts +3 -1
  701. package/src/mcp-server/tools/assetsDestroyByAssetId.ts +6 -5
  702. package/src/mcp-server/tools/assetsDownloadBackupAsset.ts +1 -13
  703. package/src/mcp-server/tools/assetsGenerateArchive.ts +4 -2
  704. package/src/mcp-server/tools/assetsGetResourceByAssetId.ts +4 -0
  705. package/src/mcp-server/tools/assetsListImages.ts +21 -13
  706. package/src/mcp-server/tools/assetsListRawFiles.ts +21 -13
  707. package/src/mcp-server/tools/assetsListResourceTags.ts +4 -2
  708. package/src/mcp-server/tools/assetsListVideos.ts +21 -13
  709. package/src/mcp-server/tools/assetsRenameAsset.ts +6 -2
  710. package/src/mcp-server/tools/assetsUpdateResourceByAssetId.ts +4 -2
  711. package/src/mcp-server/tools/foldersCreateFolder.ts +3 -1
  712. package/src/mcp-server/tools/foldersDestroyFolder.ts +3 -1
  713. package/src/mcp-server/tools/foldersSearchFolders.ts +6 -6
  714. package/src/mcp-server/tools/foldersUpdateFolder.ts +8 -4
  715. package/src/mcp-server/tools/searchSearchAssets.ts +5 -1
  716. package/src/mcp-server/tools/searchVisualSearchAssets.ts +4 -2
  717. package/src/mcp-server/tools/uploadUpload.ts +8 -7
  718. package/src/mcp-server/tools/usageGetUsage.ts +3 -1
  719. package/src/mcp-server/tools.ts +22 -10
  720. package/src/models/accesscontrolitem.ts +36 -6
  721. package/src/models/assetdeliverytype.ts +22 -0
  722. package/src/models/assignfolderrolesop.ts +3 -1
  723. package/src/models/asyncuploadresponse.ts +8 -3
  724. package/src/models/backupversionfailure.ts +21 -0
  725. package/src/models/componentsdestroyrequest.ts +28 -0
  726. package/src/models/componentsdestroyresponse.ts +38 -0
  727. package/src/models/contextfullresponse.ts +42 -0
  728. package/src/models/coordinatesresponse.ts +24 -0
  729. package/src/models/createassetrelationsbyassetidop.ts +7 -14
  730. package/src/models/createassetrelationsbypublicidop.ts +13 -23
  731. package/src/models/createfolderop.ts +14 -26
  732. package/src/models/createfolderresponse.ts +21 -0
  733. package/src/models/deleteassetrelationsbyassetidop.ts +7 -14
  734. package/src/models/deleteassetrelationsbypublicidop.ts +14 -22
  735. package/src/models/deletebackupversionsop.ts +25 -74
  736. package/src/models/deletebackupversionspartialresponse.ts +28 -0
  737. package/src/models/deletebackupversionsrequest.ts +16 -0
  738. package/src/models/deletebackupversionsresponse.ts +20 -0
  739. package/src/models/deletefolderresponse.ts +13 -0
  740. package/src/models/deliverytype.ts +28 -0
  741. package/src/models/deliverytypeall.ts +56 -0
  742. package/src/models/destroyassetop.ts +41 -41
  743. package/src/models/destroybyassetidop.ts +5 -5
  744. package/src/models/destroyfolderop.ts +9 -14
  745. package/src/models/destroyresponse.ts +9 -13
  746. package/src/models/directionenum.ts +24 -0
  747. package/src/models/downloadassetop.ts +10 -17
  748. package/src/models/downloadbackupassetop.ts +4 -91
  749. package/src/models/explicitassetop.ts +10 -208
  750. package/src/models/explicitdeliverytype.ts +39 -0
  751. package/src/models/explicitrequest.ts +383 -0
  752. package/src/models/exploderesourceop.ts +20 -52
  753. package/src/models/exploderesponse.ts +34 -0
  754. package/src/models/fetchdeliverytype.ts +26 -0
  755. package/src/models/fields.ts +17 -0
  756. package/src/models/foldernamepath.ts +13 -0
  757. package/src/models/foldersearchrequest.ts +31 -0
  758. package/src/models/generatearchiveop.ts +67 -118
  759. package/src/models/generatearchiveresponse.ts +100 -0
  760. package/src/models/generateddeliverytype.ts +28 -0
  761. package/src/models/getpersonop.ts +3 -15
  762. package/src/models/getusageop.ts +3 -1
  763. package/src/models/getvideoviewsop.ts +6 -63
  764. package/src/models/info.ts +127 -46
  765. package/src/models/listimagesop.ts +22 -18
  766. package/src/models/listpeopleop.ts +8 -27
  767. package/src/models/listrawfilesop.ts +22 -18
  768. package/src/models/listresourcesbyassetfolderop.ts +11 -7
  769. package/src/models/listresourcesbyassetidsop.ts +6 -4
  770. package/src/models/listresourcesbycontextop.ts +13 -7
  771. package/src/models/listresourcesbymoderationkindandstatusop.ts +25 -53
  772. package/src/models/listresourcetagsop.ts +10 -19
  773. package/src/models/listresourcetypesop.ts +10 -38
  774. package/src/models/listvideosop.ts +22 -18
  775. package/src/models/manageddeliverytype.ts +28 -0
  776. package/src/models/moderationkind.ts +28 -0
  777. package/src/models/moderationstatusparameter.ts +26 -0
  778. package/src/models/movefolderrequest.ts +16 -0
  779. package/src/models/movefolderresponse.ts +15 -0
  780. package/src/models/nonfinalchunkuploadresponse.ts +7 -4
  781. package/src/models/peoplelistresponse.ts +22 -0
  782. package/src/models/personresponse.ts +15 -0
  783. package/src/models/relateassetsbyassetidrequest.ts +19 -0
  784. package/src/models/relateassetsbypublicidrequest.ts +19 -0
  785. package/src/models/renameassetop.ts +30 -32
  786. package/src/models/resourcefieldsenum.ts +72 -0
  787. package/src/models/resourcetypesresponse.ts +32 -0
  788. package/src/models/resourceupdaterequest.ts +25 -16
  789. package/src/models/responsivebreakpoint.ts +37 -0
  790. package/src/models/restorerequest.ts +24 -0
  791. package/src/models/restoreresourcesbyassetidsop.ts +0 -20
  792. package/src/models/searchfoldersop.ts +8 -26
  793. package/src/models/searchfolderspostop.ts +0 -24
  794. package/src/models/searchparameters.ts +13 -13
  795. package/src/models/searchresponse.ts +11 -38
  796. package/src/models/showfolderop.ts +3 -1
  797. package/src/models/socialdeliverytype.ts +44 -0
  798. package/src/models/structuredmetadataparam.ts +28 -0
  799. package/src/models/structuredmetadatavalue.ts +16 -0
  800. package/src/models/tagslistresponse.ts +18 -0
  801. package/src/models/tagsparam.ts +16 -0
  802. package/src/models/textop.ts +17 -251
  803. package/src/models/textrequest.ts +125 -0
  804. package/src/models/textresponse.ts +113 -0
  805. package/src/models/unrelateassetsbyassetidrequest.ts +21 -0
  806. package/src/models/unrelateassetsbypublicidrequest.ts +21 -0
  807. package/src/models/updatefolderop.ts +17 -39
  808. package/src/models/updatepersonop.ts +23 -49
  809. package/src/models/updatepersonrequest.ts +26 -0
  810. package/src/models/updatepersonresponse.ts +24 -0
  811. package/src/models/updateresourcebyassetidop.ts +3 -1
  812. package/src/models/uploadchunkop.ts +4 -2
  813. package/src/models/uploaddeliverytype.ts +25 -0
  814. package/src/models/uploadop.ts +4 -2
  815. package/src/models/uploadrequest.ts +144 -126
  816. package/src/models/uploadresponse.ts +38 -6
  817. package/src/models/videoview.ts +48 -0
  818. package/src/models/videoviewsresponse.ts +22 -0
  819. package/src/tool-names.ts +8 -8
  820. package/esm/funcs/assetsDeleteResourcesByPublicId.d.ts +0 -18
  821. package/esm/funcs/assetsDeleteResourcesByPublicId.d.ts.map +0 -1
  822. package/esm/funcs/assetsDeleteResourcesByPublicId.js +0 -104
  823. package/esm/funcs/assetsDeleteResourcesByPublicId.js.map +0 -1
  824. package/esm/funcs/assetsGetResourceByPublicId.d.ts +0 -17
  825. package/esm/funcs/assetsGetResourceByPublicId.d.ts.map +0 -1
  826. package/esm/funcs/assetsGetResourceByPublicId.js +0 -130
  827. package/esm/funcs/assetsGetResourceByPublicId.js.map +0 -1
  828. package/esm/funcs/assetsUpdateResourceByPublicId.d.ts +0 -18
  829. package/esm/funcs/assetsUpdateResourceByPublicId.d.ts.map +0 -1
  830. package/esm/funcs/assetsUpdateResourceByPublicId.js +0 -109
  831. package/esm/funcs/assetsUpdateResourceByPublicId.js.map +0 -1
  832. package/esm/models/archivestoragetype.d.ts +0 -22
  833. package/esm/models/archivestoragetype.d.ts.map +0 -1
  834. package/esm/models/archivestoragetype.js +0 -21
  835. package/esm/models/archivestoragetype.js.map +0 -1
  836. package/esm/models/deleteresourcebypublicidsrequestunion.d.ts +0 -89
  837. package/esm/models/deleteresourcebypublicidsrequestunion.d.ts.map +0 -1
  838. package/esm/models/deleteresourcebypublicidsrequestunion.js +0 -83
  839. package/esm/models/deleteresourcebypublicidsrequestunion.js.map +0 -1
  840. package/esm/models/deleteresourcesbypublicidop.d.ts +0 -23
  841. package/esm/models/deleteresourcesbypublicidop.d.ts.map +0 -1
  842. package/esm/models/deleteresourcesbypublicidop.js +0 -24
  843. package/esm/models/deleteresourcesbypublicidop.js.map +0 -1
  844. package/esm/models/destroyrequest.d.ts +0 -12
  845. package/esm/models/destroyrequest.d.ts.map +0 -1
  846. package/esm/models/destroyrequest.js +0 -15
  847. package/esm/models/destroyrequest.js.map +0 -1
  848. package/esm/models/direction.d.ts +0 -12
  849. package/esm/models/direction.d.ts.map +0 -1
  850. package/esm/models/direction.js +0 -14
  851. package/esm/models/direction.js.map +0 -1
  852. package/esm/models/extendedstoragetype.d.ts.map +0 -1
  853. package/esm/models/extendedstoragetype.js.map +0 -1
  854. package/esm/models/fieldsspec.d.ts +0 -60
  855. package/esm/models/fieldsspec.d.ts.map +0 -1
  856. package/esm/models/fieldsspec.js +0 -62
  857. package/esm/models/fieldsspec.js.map +0 -1
  858. package/esm/models/getresourcebypublicidop.d.ts +0 -29
  859. package/esm/models/getresourcebypublicidop.d.ts.map +0 -1
  860. package/esm/models/getresourcebypublicidop.js +0 -34
  861. package/esm/models/getresourcebypublicidop.js.map +0 -1
  862. package/esm/models/liststoragetype.d.ts +0 -24
  863. package/esm/models/liststoragetype.d.ts.map +0 -1
  864. package/esm/models/liststoragetype.js +0 -23
  865. package/esm/models/liststoragetype.js.map +0 -1
  866. package/esm/models/parametersdirection.d.ts +0 -18
  867. package/esm/models/parametersdirection.d.ts.map +0 -1
  868. package/esm/models/parametersdirection.js +0 -17
  869. package/esm/models/parametersdirection.js.map +0 -1
  870. package/esm/models/searchsortpair.d.ts +0 -12
  871. package/esm/models/searchsortpair.d.ts.map +0 -1
  872. package/esm/models/searchsortpair.js +0 -14
  873. package/esm/models/searchsortpair.js.map +0 -1
  874. package/esm/models/storagetype.d.ts +0 -20
  875. package/esm/models/storagetype.d.ts.map +0 -1
  876. package/esm/models/storagetype.js +0 -19
  877. package/esm/models/storagetype.js.map +0 -1
  878. package/esm/models/storagetypeparameter.d.ts +0 -20
  879. package/esm/models/storagetypeparameter.d.ts.map +0 -1
  880. package/esm/models/storagetypeparameter.js +0 -19
  881. package/esm/models/storagetypeparameter.js.map +0 -1
  882. package/esm/models/updateresourcebypublicidop.d.ts +0 -20
  883. package/esm/models/updateresourcebypublicidop.d.ts.map +0 -1
  884. package/esm/models/updateresourcebypublicidop.js +0 -25
  885. package/esm/models/updateresourcebypublicidop.js.map +0 -1
  886. package/src/funcs/assetsDeleteResourcesByPublicId.ts +0 -181
  887. package/src/funcs/assetsGetResourceByPublicId.ts +0 -239
  888. package/src/funcs/assetsUpdateResourceByPublicId.ts +0 -189
  889. package/src/models/archivestoragetype.ts +0 -28
  890. package/src/models/deleteresourcebypublicidsrequestunion.ts +0 -212
  891. package/src/models/deleteresourcesbypublicidop.ts +0 -64
  892. package/src/models/destroyrequest.ts +0 -38
  893. package/src/models/direction.ts +0 -18
  894. package/src/models/extendedstoragetype.ts +0 -48
  895. package/src/models/fieldsspec.ts +0 -66
  896. package/src/models/getresourcebypublicidop.ts +0 -91
  897. package/src/models/liststoragetype.ts +0 -30
  898. package/src/models/parametersdirection.ts +0 -24
  899. package/src/models/searchsortpair.ts +0 -18
  900. package/src/models/storagetype.ts +0 -26
  901. package/src/models/storagetypeparameter.ts +0 -26
  902. package/src/models/updateresourcebypublicidop.ts +0 -55
@@ -0,0 +1,1093 @@
1
+ /*
2
+ * MCP App for uploading assets to Cloudinary.
3
+ * Attached to the upload-asset tool.
4
+ *
5
+ * Features:
6
+ * - Schema-driven form: fields are auto-generated from the Zod schema
7
+ * at build time via z.toJSONSchema(), grouped into collapsible sections.
8
+ * - Staged upload: file/URL is staged first with an explicit Upload button.
9
+ * - File prepopulation: display_name, format, resource_type inferred from
10
+ * the staged file metadata.
11
+ * - Folder picker: combobox with search-folders tool for autocomplete.
12
+ *
13
+ * Shares CLDS tokens, MCPApp client, helpers, and detail renderers
14
+ * with the gallery/details apps via app-shared.ts.
15
+ */
16
+ import { toJSONSchema } from "zod";
17
+ import { SHARED_CSS_TOKENS, SHARED_CSS_COMPONENTS, SHARED_JS_MCP_CLIENT, SHARED_JS_HELPERS, SHARED_JS_TOOLTIPS, SHARED_JS_MODAL, SHARED_JS_DETAIL_RENDERERS, SHARED_JS_HOST_CONTEXT, } from "./app-shared.js";
18
+ import { UploadRequest$zodSchema } from "../../models/uploadrequest.js";
19
+ import { UploadResourceType$zodSchema } from "../../models/uploadresourcetype.js";
20
+ import { injectToolName } from "./uri.js";
21
+ export function getAssetUploadHtml(toolName) {
22
+ return injectToolName(ASSET_UPLOAD_HTML, toolName);
23
+ }
24
+ // ── Build-time schema generation ────────────────────────────────────
25
+ const uploadJsonSchema = toJSONSchema(UploadRequest$zodSchema);
26
+ const rtJsonSchema = toJSONSchema(UploadResourceType$zodSchema);
27
+ const allSchemaProperties = {
28
+ ...(uploadJsonSchema.properties || {}),
29
+ };
30
+ const rtCopy = { ...rtJsonSchema };
31
+ delete rtCopy["$schema"];
32
+ allSchemaProperties["resource_type"] = rtCopy;
33
+ const SCHEMA_JSON = JSON.stringify(allSchemaProperties);
34
+ // ── CSS ─────────────────────────────────────────────────────────────
35
+ const UPLOAD_CSS = /* css */ `
36
+ .upload-header {
37
+ display: flex; align-items: center; gap: 10px;
38
+ margin-bottom: var(--cld-sp-md); padding-bottom: var(--cld-sp-sm);
39
+ border-bottom: 1px solid var(--cld-border);
40
+ }
41
+ .upload-header h1 {
42
+ font-size: var(--cld-font-sm); font-weight: 600; color: var(--cld-text);
43
+ }
44
+ .upload-header-icon { font-size: 20px; }
45
+ .upload-header { position: relative; }
46
+ .back-link {
47
+ position: absolute; top: -2px; right: 0;
48
+ background: none; border: none; cursor: pointer;
49
+ color: var(--cld-accent); font-size: var(--cld-font-xs);
50
+ padding: 2px 6px; border-radius: 4px;
51
+ }
52
+ .back-link:hover { text-decoration: underline; background: var(--cld-accent-bg); }
53
+
54
+ .upload-result .detail-section { padding: 14px 16px; }
55
+ .upload-result .detail-section:first-child { padding-top: 0; }
56
+
57
+ .upload-another {
58
+ margin-top: 16px; text-align: center;
59
+ }
60
+ `;
61
+ // ── JS ──────────────────────────────────────────────────────────────
62
+ const UPLOAD_JS = /* js */ `
63
+ var LOG_PREFIX = "[upload]";
64
+ var MIN_HEIGHT = 120;
65
+ var UPLOAD_TOOL_TIMEOUT_MS = 120000;
66
+
67
+ /* ── Schema & config (generated at build time) ── */
68
+ var UPLOAD_SCHEMA = ${SCHEMA_JSON};
69
+
70
+ var FIELD_CONFIG = {
71
+ exclude: ["file", "api_key", "signature", "timestamp", "callback",
72
+ "eval", "on_success"],
73
+ sections: [
74
+ { id: "basic", label: "Basic", open: true,
75
+ fields: ["display_name", "format", "asset_folder", "tags"] },
76
+ { id: "naming", label: "Naming & Behavior",
77
+ fields: ["public_id", "context", "use_filename", "unique_filename",
78
+ "overwrite", "use_filename_as_display_name",
79
+ "unique_display_name", "public_id_prefix",
80
+ "use_asset_folder_as_public_id_prefix",
81
+ "filename_override", "discard_original_filename",
82
+ "backup", "allowed_formats", "invalidate",
83
+ "metadata", "folder"] },
84
+ { id: "delivery", label: "Delivery & Access",
85
+ fields: ["resource_type", "type", "access_mode", "access_control",
86
+ "upload_preset", "headers", "return_delete_token"] },
87
+ { id: "transforms", label: "Transformations",
88
+ fields: ["transformation", "eager", "eager_async",
89
+ "eager_notification_url", "responsive_breakpoints"] },
90
+ { id: "ai", label: "AI & Analysis",
91
+ fields: ["moderation", "detection", "ocr", "auto_tagging",
92
+ "background_removal", "categorization", "raw_convert",
93
+ "auto_transcription", "auto_chaptering",
94
+ "media_metadata", "quality_analysis", "accessibility_analysis",
95
+ "cinemagraph_analysis", "colors", "faces", "phash",
96
+ "visual_search"] }
97
+ ]
98
+ };
99
+
100
+ /* ── State ── */
101
+ var pendingCall = { name: null, args: null };
102
+ var capturedArgs = {};
103
+ var state = "idle";
104
+ var uploadOrigin = "user";
105
+ var pendingLocalFile = null;
106
+ var stagedFile = null;
107
+ var lastResult = null;
108
+ var folderCache = [];
109
+ var folderDebounce = null;
110
+
111
+ var app = new MCPApp({ name: "Cloudinary Upload", version: "1.0.0" });
112
+ setupHostContext(app);
113
+
114
+ /* ── Schema helpers ── */
115
+ function humanize(key) {
116
+ return key.replace(/_/g, " ").replace(/\\b[a-z]/g, function(c) {
117
+ return c.toUpperCase();
118
+ });
119
+ }
120
+
121
+ function getFieldType(prop) {
122
+ if (!prop) return "text";
123
+ if (prop.enum) return "select";
124
+ if (prop.type === "boolean") return "checkbox";
125
+ if (prop.type === "number" || prop.type === "integer") return "number";
126
+ if (prop.type === "string") return "text";
127
+ if (prop.type === "array") return "textarea";
128
+ if (prop.anyOf || prop.oneOf) {
129
+ var subs = prop.anyOf || prop.oneOf;
130
+ for (var i = 0; i < subs.length; i++) {
131
+ if (subs[i].type === "boolean") return "checkbox";
132
+ }
133
+ return "textarea";
134
+ }
135
+ return "text";
136
+ }
137
+
138
+ function shortDesc(desc) {
139
+ if (!desc) return "";
140
+ var first = desc.split("\\n")[0];
141
+ return first.length > 120 ? first.substring(0, 117) + "..." : first;
142
+ }
143
+
144
+ /* ── Field renderers ── */
145
+ function helpIcon(desc) {
146
+ if (!desc) return "";
147
+ return ' <span class="help-toggle" tabindex="0">?<span class="help-bubble">' + esc(shortDesc(desc)) + "</span></span>";
148
+ }
149
+
150
+ function renderField(key, prop) {
151
+ var id = "f-" + key;
152
+ var label = humanize(key);
153
+ var ft = getFieldType(prop);
154
+ var desc = (prop && prop.description) || "";
155
+ var val = capturedArgs[key];
156
+
157
+ var h = "";
158
+
159
+ if (ft === "checkbox") {
160
+ var checked = val != null ? !!val : (prop.default === true);
161
+ h += '<div class="upload-field upload-field-check">';
162
+ h += "<label>";
163
+ h += '<input id="' + id + '" type="checkbox"' + (checked ? " checked" : "") + ">";
164
+ h += "<span>" + esc(label) + "</span>";
165
+ h += "</label>" + helpIcon(desc) + "</div>";
166
+ } else if (ft === "select") {
167
+ h += '<div class="upload-field">';
168
+ h += '<label for="' + id + '">' + esc(label) + helpIcon(desc) + "</label>";
169
+ h += '<select id="' + id + '">';
170
+ h += '<option value="">(default)</option>';
171
+ var opts = prop.enum || [];
172
+ for (var i = 0; i < opts.length; i++) {
173
+ var sel = val === opts[i] ? " selected" : "";
174
+ h += '<option value="' + esc(opts[i]) + '"' + sel + ">" + esc(opts[i]) + "</option>";
175
+ }
176
+ h += "</select></div>";
177
+ } else if (ft === "number") {
178
+ h += '<div class="upload-field">';
179
+ h += '<label for="' + id + '">' + esc(label) + helpIcon(desc) + "</label>";
180
+ h += '<input id="' + id + '" type="number" step="any" value="' + esc(val != null ? String(val) : "") + '">';
181
+ h += "</div>";
182
+ } else if (ft === "textarea") {
183
+ var tv = val != null ? (typeof val === "string" ? val : JSON.stringify(val, null, 2)) : "";
184
+ h += '<div class="upload-field full-width">';
185
+ h += '<label for="' + id + '">' + esc(label) + helpIcon(desc) + "</label>";
186
+ h += '<textarea id="' + id + '" rows="2" placeholder="JSON or text">' + esc(tv) + "</textarea>";
187
+ h += "</div>";
188
+ } else {
189
+ h += '<div class="upload-field">';
190
+ h += '<label for="' + id + '">' + esc(label) + helpIcon(desc) + "</label>";
191
+ h += '<input id="' + id + '" type="text" value="' + esc(val != null ? String(val) : "") + '">';
192
+ h += "</div>";
193
+ }
194
+ return h;
195
+ }
196
+
197
+ function renderFolderField(prop) {
198
+ var id = "f-asset_folder";
199
+ var val = capturedArgs.asset_folder || "";
200
+ var desc = (prop && prop.description) || "";
201
+ var h = '<div class="upload-field" id="folder-field-wrap">';
202
+ h += '<label for="' + id + '">Asset Folder' + helpIcon(desc) + "</label>";
203
+ h += '<div class="combo-wrap">';
204
+ h += '<input id="' + id + '" type="text" value="' + esc(val) + '" autocomplete="off" placeholder="Type to search or create...">';
205
+ h += '<div class="combo-dropdown" id="folder-dropdown"></div>';
206
+ h += "</div></div>";
207
+ return h;
208
+ }
209
+
210
+ function renderFormSections() {
211
+ var h = "";
212
+ var rendered = {};
213
+ var sections = FIELD_CONFIG.sections;
214
+
215
+ for (var s = 0; s < sections.length; s++) {
216
+ var sec = sections[s];
217
+ var fieldsHtml = "";
218
+
219
+ for (var f = 0; f < sec.fields.length; f++) {
220
+ var key = sec.fields[f];
221
+ if (FIELD_CONFIG.exclude.indexOf(key) >= 0) continue;
222
+ var prop = UPLOAD_SCHEMA[key];
223
+ if (!prop) continue;
224
+
225
+ if (key === "asset_folder") {
226
+ fieldsHtml += renderFolderField(prop);
227
+ } else {
228
+ fieldsHtml += renderField(key, prop);
229
+ }
230
+ rendered[key] = true;
231
+ }
232
+ if (!fieldsHtml) continue;
233
+
234
+ if (sec.open) {
235
+ h += '<div class="upload-form">' + fieldsHtml + "</div>";
236
+ } else {
237
+ h += '<details class="upload-section">';
238
+ h += "<summary>" + esc(sec.label) + "</summary>";
239
+ h += '<div class="upload-form">' + fieldsHtml + "</div>";
240
+ h += "</details>";
241
+ }
242
+ }
243
+
244
+ var otherHtml = "";
245
+ var allKeys = Object.keys(UPLOAD_SCHEMA);
246
+ for (var k = 0; k < allKeys.length; k++) {
247
+ var okey = allKeys[k];
248
+ if (rendered[okey] || FIELD_CONFIG.exclude.indexOf(okey) >= 0) continue;
249
+ otherHtml += renderField(okey, UPLOAD_SCHEMA[okey]);
250
+ rendered[okey] = true;
251
+ }
252
+ if (otherHtml) {
253
+ h += '<details class="upload-section">';
254
+ h += "<summary>Other</summary>";
255
+ h += '<div class="upload-form">' + otherHtml + "</div>";
256
+ h += "</details>";
257
+ }
258
+
259
+ return h;
260
+ }
261
+
262
+ /* ── Dynamic form collection ── */
263
+ function collectFormArgs() {
264
+ var allKeys = Object.keys(UPLOAD_SCHEMA);
265
+ for (var i = 0; i < allKeys.length; i++) {
266
+ var key = allKeys[i];
267
+ if (FIELD_CONFIG.exclude.indexOf(key) >= 0) continue;
268
+ var prop = UPLOAD_SCHEMA[key];
269
+ var ft = getFieldType(prop);
270
+ var el = document.getElementById("f-" + key);
271
+ if (!el) continue;
272
+
273
+ if (ft === "checkbox") {
274
+ if (el.checked) capturedArgs[key] = true;
275
+ else delete capturedArgs[key];
276
+ } else if (ft === "number") {
277
+ var n = parseFloat(el.value);
278
+ if (!isNaN(n)) capturedArgs[key] = n;
279
+ else delete capturedArgs[key];
280
+ } else if (ft === "textarea") {
281
+ var tv = el.value.trim();
282
+ if (tv) {
283
+ try { capturedArgs[key] = JSON.parse(tv); }
284
+ catch (e) { capturedArgs[key] = tv; }
285
+ } else { delete capturedArgs[key]; }
286
+ } else {
287
+ var sv = (ft === "select") ? el.value : el.value.trim();
288
+ if (sv) capturedArgs[key] = sv;
289
+ else delete capturedArgs[key];
290
+ }
291
+ }
292
+ }
293
+
294
+ /* ── Extract args from tool input ── */
295
+ function extractUploadArgs(args) {
296
+ if (!args) return {};
297
+ var out = {};
298
+ if (args.resource_type) out.resource_type = args.resource_type;
299
+ var ua = args.upload_request || {};
300
+ var schemaKeys = Object.keys(UPLOAD_SCHEMA);
301
+ for (var i = 0; i < schemaKeys.length; i++) {
302
+ var k = schemaKeys[i];
303
+ if (k === "resource_type") continue;
304
+ if (ua[k] !== undefined && ua[k] !== null && ua[k] !== "") out[k] = ua[k];
305
+ }
306
+ return out;
307
+ }
308
+
309
+ /* ── File prepopulation ── */
310
+ var prevStagedName = "";
311
+
312
+ function prepopulateFromFile(file) {
313
+ var name = file.name || "";
314
+ var dot = name.lastIndexOf(".");
315
+ var base = dot > 0 ? name.substring(0, dot) : name;
316
+ var ext = dot > 0 ? name.substring(dot + 1).toLowerCase() : "";
317
+ var mime = (file.type || "").toLowerCase();
318
+
319
+ var canOverwrite = !capturedArgs.display_name || capturedArgs.display_name === prevStagedName;
320
+ if (base && canOverwrite) capturedArgs.display_name = base;
321
+ capturedArgs.format = ext || undefined;
322
+ if (!ext) delete capturedArgs.format;
323
+ prevStagedName = base;
324
+
325
+ if (mime.startsWith("image/")) capturedArgs.resource_type = "image";
326
+ else if (mime.startsWith("video/") || mime.startsWith("audio/")) capturedArgs.resource_type = "video";
327
+ else if (mime === "application/pdf") capturedArgs.resource_type = "image";
328
+ else capturedArgs.resource_type = "auto";
329
+ }
330
+
331
+ function prepopulateFromUrl(url) {
332
+ var path = url.split("?")[0].split("/").pop() || "";
333
+ var decoded = "";
334
+ try { decoded = decodeURIComponent(path); } catch (e) { decoded = path; }
335
+ var dot = decoded.lastIndexOf(".");
336
+ var base = dot > 0 ? decoded.substring(0, dot) : decoded;
337
+ var ext = dot > 0 ? decoded.substring(dot + 1).toLowerCase() : "";
338
+
339
+ var canOverwrite = !capturedArgs.display_name || capturedArgs.display_name === prevStagedName;
340
+ if (base && canOverwrite) capturedArgs.display_name = base;
341
+ capturedArgs.format = ext || undefined;
342
+ if (!ext) delete capturedArgs.format;
343
+ prevStagedName = base;
344
+ }
345
+
346
+ /* ── Folder picker ── */
347
+ var folderHighlight = -1;
348
+
349
+ function setupFolderPicker() {
350
+ var input = document.getElementById("f-asset_folder");
351
+ if (!input) return;
352
+
353
+ input.addEventListener("focus", function() {
354
+ fetchFolders("");
355
+ });
356
+
357
+ input.addEventListener("input", function() {
358
+ clearTimeout(folderDebounce);
359
+ folderHighlight = -1;
360
+ var q = input.value.trim();
361
+ folderDebounce = setTimeout(function() { fetchFolders(q); }, 300);
362
+ });
363
+
364
+ input.addEventListener("blur", function() {
365
+ setTimeout(hideFolderDropdown, 200);
366
+ });
367
+
368
+ input.addEventListener("keydown", function(e) {
369
+ var dropdown = document.getElementById("folder-dropdown");
370
+ if (!dropdown || dropdown.style.display === "none") return;
371
+ var items = dropdown.querySelectorAll(".combo-item");
372
+ if (!items.length) return;
373
+
374
+ if (e.key === "ArrowDown") {
375
+ e.preventDefault();
376
+ folderHighlight = Math.min(folderHighlight + 1, items.length - 1);
377
+ updateFolderHighlight(items);
378
+ } else if (e.key === "ArrowUp") {
379
+ e.preventDefault();
380
+ folderHighlight = Math.max(folderHighlight - 1, 0);
381
+ updateFolderHighlight(items);
382
+ } else if (e.key === "Enter" && folderHighlight >= 0 && items[folderHighlight]) {
383
+ e.preventDefault();
384
+ input.value = items[folderHighlight].dataset.value || "";
385
+ hideFolderDropdown();
386
+ } else if (e.key === "Escape") {
387
+ hideFolderDropdown();
388
+ }
389
+ });
390
+ }
391
+
392
+ function updateFolderHighlight(items) {
393
+ for (var i = 0; i < items.length; i++) {
394
+ items[i].classList.toggle("combo-item-active", i === folderHighlight);
395
+ }
396
+ if (items[folderHighlight]) {
397
+ items[folderHighlight].scrollIntoView({ block: "nearest" });
398
+ }
399
+ }
400
+
401
+ function fetchFolders(query) {
402
+ var args = { max_results: 50 };
403
+ if (query) args.expression = "name:" + query + "*";
404
+ app.callServerTool({ name: "search-folders", arguments: args })
405
+ .then(function(res) {
406
+ var data = ingestResult(res);
407
+ folderCache = (data && data.folders) || [];
408
+ folderHighlight = -1;
409
+ renderFolderDropdown();
410
+ })
411
+ .catch(function(err) {
412
+ console.warn(LOG_PREFIX, "folder search failed:", err);
413
+ folderCache = [];
414
+ });
415
+ }
416
+
417
+ function renderFolderDropdown() {
418
+ var dropdown = document.getElementById("folder-dropdown");
419
+ var input = document.getElementById("f-asset_folder");
420
+ if (!dropdown || !input) return;
421
+
422
+ var query = input.value.trim().toLowerCase();
423
+ var filtered = folderCache;
424
+ if (query) {
425
+ filtered = folderCache.filter(function(f) {
426
+ return (f.path || f.name || "").toLowerCase().indexOf(query) >= 0;
427
+ });
428
+ }
429
+
430
+ if (filtered.length === 0) {
431
+ dropdown.style.display = "none";
432
+ return;
433
+ }
434
+
435
+ var h = "";
436
+ for (var i = 0; i < Math.min(filtered.length, 30); i++) {
437
+ var fp = filtered[i].path || filtered[i].name || "";
438
+ h += '<div class="combo-item" data-value="' + esc(fp) + '">' + esc(fp) + "</div>";
439
+ }
440
+ dropdown.innerHTML = h;
441
+ dropdown.style.display = "block";
442
+
443
+ dropdown.onclick = function(e) {
444
+ var item = e.target;
445
+ while (item && !item.classList.contains("combo-item")) item = item.parentElement;
446
+ if (item && item.dataset.value != null) {
447
+ input.value = item.dataset.value;
448
+ dropdown.style.display = "none";
449
+ }
450
+ };
451
+ }
452
+
453
+ function hideFolderDropdown() {
454
+ var dd = document.getElementById("folder-dropdown");
455
+ if (dd) dd.style.display = "none";
456
+ }
457
+
458
+ /* ── Staging ── */
459
+ function stageLocalFile(file) {
460
+ collectFormArgs();
461
+ var reader = new FileReader();
462
+ reader.onload = function() {
463
+ stagedFile = { dataUri: reader.result, name: file.name, size: file.size, mime: file.type };
464
+ prepopulateFromFile(file);
465
+ renderPicker();
466
+ };
467
+ reader.onerror = function() {
468
+ showError("Read Error", "Could not read the selected file.");
469
+ };
470
+ reader.readAsDataURL(file);
471
+ }
472
+
473
+ function stageUrl(url) {
474
+ collectFormArgs();
475
+ var parts = url.split("?")[0].split("/");
476
+ var fname = parts[parts.length - 1] || url;
477
+ try { fname = decodeURIComponent(fname); } catch (e) {}
478
+ stagedFile = { url: url, name: fname };
479
+ prepopulateFromUrl(url);
480
+ renderPicker();
481
+ }
482
+
483
+ /* ── Main render: picker ── */
484
+ function renderPicker() {
485
+ state = "idle";
486
+ var root = document.getElementById("app");
487
+ var h = "";
488
+
489
+ h += '<div class="upload-header">';
490
+ if (lastResult) {
491
+ h += '<button class="back-link" id="back-to-result-btn">\\u2190 Back to Result</button>';
492
+ }
493
+ h += '<span class="upload-header-icon">\\u2B06\\uFE0F</span>';
494
+ h += "<h1>Upload to Cloudinary</h1>";
495
+ h += "</div>";
496
+
497
+ if (stagedFile) {
498
+ h += '<div class="upload-staged">';
499
+ h += '<div class="upload-staged-icon">\\u{1F4C4}</div>';
500
+ h += '<div class="upload-staged-info">';
501
+ h += '<div class="upload-staged-name">' + esc(stagedFile.name) + "</div>";
502
+ if (stagedFile.size) {
503
+ h += '<div class="upload-staged-meta">' + fmtBytes(stagedFile.size);
504
+ if (stagedFile.mime) h += " \\u00B7 " + esc(stagedFile.mime);
505
+ h += "</div>";
506
+ } else if (stagedFile.url) {
507
+ h += '<div class="upload-staged-meta">Remote URL</div>';
508
+ }
509
+ h += "</div>";
510
+ h += '<button class="upload-staged-clear" id="clear-staged-btn" title="Remove">\\u2715</button>';
511
+ h += "</div>";
512
+ } else {
513
+ h += '<div class="upload-zone" id="drop-zone">';
514
+ h += '<div class="upload-zone-icon">\\u{1F4C1}</div>';
515
+ h += '<div class="upload-zone-text">Drag & drop a file here</div>';
516
+ h += '<div class="upload-zone-hint">Images, videos, PDFs, and other files up to 60 MB</div>';
517
+ h += '<button class="upload-zone-btn" id="browse-btn">Browse Files</button>';
518
+ h += '<input type="file" id="file-input" style="display:none">';
519
+ h += "</div>";
520
+
521
+ h += '<div class="upload-or">or upload from URL</div>';
522
+
523
+ h += '<div class="upload-url-row">';
524
+ h += '<input class="upload-url-input" id="url-input" type="text" placeholder="https://example.com/image.jpg">';
525
+ h += '<button class="upload-url-btn" id="url-btn">Add URL</button>';
526
+ h += "</div>";
527
+ }
528
+
529
+ h += renderFormSections();
530
+
531
+ if (stagedFile) {
532
+ h += '<div class="upload-submit">';
533
+ h += '<button class="prompt-btn prompt-btn-primary upload-submit-btn" id="upload-btn">Upload to Cloudinary</button>';
534
+ h += "</div>";
535
+ }
536
+
537
+ root.innerHTML = h;
538
+
539
+ var backBtn = document.getElementById("back-to-result-btn");
540
+ if (backBtn && lastResult) {
541
+ backBtn.addEventListener("click", function() { renderResult(lastResult); });
542
+ }
543
+
544
+ if (stagedFile) {
545
+ document.getElementById("clear-staged-btn").addEventListener("click", function() {
546
+ collectFormArgs();
547
+ stagedFile = null;
548
+ if (capturedArgs.display_name === prevStagedName) delete capturedArgs.display_name;
549
+ delete capturedArgs.format;
550
+ delete capturedArgs.resource_type;
551
+ prevStagedName = "";
552
+ renderPicker();
553
+ });
554
+ document.getElementById("upload-btn").addEventListener("click", function() {
555
+ collectFormArgs();
556
+ uploadOrigin = "user";
557
+ var fileData = stagedFile.dataUri || stagedFile.url;
558
+ renderUploading(stagedFile.name, stagedFile.size ? fmtBytes(stagedFile.size) : "Remote URL");
559
+ doUpload(fileData, stagedFile.name);
560
+ });
561
+ } else {
562
+ setupDropZone();
563
+ }
564
+
565
+ setupFolderPicker();
566
+ }
567
+
568
+ /* ── Drop zone events ── */
569
+ function setupDropZone() {
570
+ var zone = document.getElementById("drop-zone");
571
+ var input = document.getElementById("file-input");
572
+ var browseBtn = document.getElementById("browse-btn");
573
+ var urlBtn = document.getElementById("url-btn");
574
+ var urlInput = document.getElementById("url-input");
575
+ if (!zone) return;
576
+
577
+ browseBtn.addEventListener("click", function(e) {
578
+ e.stopPropagation();
579
+ input.click();
580
+ });
581
+ zone.addEventListener("click", function() { input.click(); });
582
+
583
+ input.addEventListener("change", function() {
584
+ if (input.files && input.files.length) stageLocalFile(input.files[0]);
585
+ });
586
+
587
+ zone.addEventListener("dragenter", function(e) { e.preventDefault(); zone.classList.add("dragover"); });
588
+ zone.addEventListener("dragover", function(e) { e.preventDefault(); zone.classList.add("dragover"); });
589
+ zone.addEventListener("dragleave", function(e) { e.preventDefault(); zone.classList.remove("dragover"); });
590
+ zone.addEventListener("drop", function(e) {
591
+ e.preventDefault();
592
+ zone.classList.remove("dragover");
593
+ if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length) {
594
+ stageLocalFile(e.dataTransfer.files[0]);
595
+ }
596
+ });
597
+
598
+ urlBtn.addEventListener("click", function() {
599
+ var url = urlInput.value.trim();
600
+ if (url) stageUrl(url);
601
+ });
602
+ urlInput.addEventListener("keydown", function(e) {
603
+ if (e.key === "Enter") {
604
+ var url = urlInput.value.trim();
605
+ if (url) stageUrl(url);
606
+ }
607
+ });
608
+ }
609
+
610
+ /* ── Uploading state ── */
611
+ function renderUploading(name, meta) {
612
+ state = "uploading";
613
+ var root = document.getElementById("app");
614
+ var h = "";
615
+
616
+ h += '<div class="upload-header">';
617
+ h += '<span class="upload-header-icon">\\u2B06\\uFE0F</span>';
618
+ h += "<h1>Uploading\\u2026</h1>";
619
+ h += "</div>";
620
+
621
+ h += '<div class="upload-preview">';
622
+ h += '<div class="upload-preview-icon">\\u{1F4C4}</div>';
623
+ h += '<div class="upload-preview-info">';
624
+ h += '<div class="upload-preview-name">' + esc(name) + "</div>";
625
+ h += '<div class="upload-preview-meta">' + esc(meta) + "</div>";
626
+ h += "</div></div>";
627
+
628
+ h += '<div class="upload-progress-wrap">';
629
+ h += '<div class="upload-progress-bar"><div class="upload-progress-fill" id="progress-fill"></div></div>';
630
+ h += '<div class="upload-progress-text" id="progress-text">Uploading to Cloudinary\\u2026</div>';
631
+ h += "</div>";
632
+
633
+ root.innerHTML = h;
634
+ animateProgress();
635
+ }
636
+
637
+ var progressInterval = null;
638
+ function animateProgress() {
639
+ clearInterval(progressInterval);
640
+ var fill = document.getElementById("progress-fill");
641
+ if (!fill) return;
642
+ var pct = 0;
643
+ progressInterval = setInterval(function() {
644
+ if (pct < 90) {
645
+ pct += (90 - pct) * 0.08;
646
+ fill.style.width = pct + "%";
647
+ }
648
+ }, 200);
649
+ }
650
+
651
+ function stopProgress(success) {
652
+ clearInterval(progressInterval);
653
+ var fill = document.getElementById("progress-fill");
654
+ var text = document.getElementById("progress-text");
655
+ if (fill) fill.style.width = "100%";
656
+ if (text) text.textContent = success ? "Upload complete" : "Upload failed";
657
+ }
658
+
659
+ function formatErrorMsg(msg) {
660
+ var idx = msg.indexOf("[");
661
+ if (idx !== -1 && msg.indexOf("Invalid arguments") !== -1) {
662
+ try {
663
+ var issues = JSON.parse(msg.substring(idx));
664
+ return issues.map(function(i) {
665
+ var field = (i.path || []).join(".");
666
+ return (field ? field + ": " : "") + (i.message || "invalid");
667
+ }).join("\\n");
668
+ } catch (e) {}
669
+ }
670
+ if (typeof msg === "string" && msg.length > 200) {
671
+ var short = msg.replace(/\\s+/g, " ").substring(0, 200) + "\\u2026";
672
+ return short;
673
+ }
674
+ return msg;
675
+ }
676
+
677
+ function renderUploadError(title, msg) {
678
+ msg = formatErrorMsg(msg);
679
+ state = "error";
680
+ stopProgress(false);
681
+
682
+ var wrap = document.querySelector(".upload-progress-wrap");
683
+ if (wrap) {
684
+ var header = document.querySelector(".upload-header h1");
685
+ if (header) header.textContent = title;
686
+ var icon = document.querySelector(".upload-header-icon");
687
+ if (icon) icon.textContent = "\\u26A0\\uFE0F";
688
+
689
+ var safeMsg = esc(msg).replace(/\\n/g, "<br>");
690
+ var h = '<div class="upload-error-msg">' + safeMsg + "</div>";
691
+ h += '<div class="upload-another" style="margin-top:14px">';
692
+ h += '<button class="prompt-btn prompt-btn-primary" id="retry-upload-btn">Try from App</button>';
693
+ h += "</div>";
694
+ wrap.innerHTML = h;
695
+ } else {
696
+ var root = document.getElementById("app");
697
+ var safeMsg = esc(msg).replace(/\\n/g, "<br>");
698
+ var h = '<div class="upload-header">';
699
+ h += '<span class="upload-header-icon">\\u26A0\\uFE0F</span>';
700
+ h += "<h1>" + esc(title) + "</h1>";
701
+ h += "</div>";
702
+ h += '<div class="upload-error-msg">' + safeMsg + "</div>";
703
+ h += '<div class="upload-another" style="margin-top:14px;text-align:center">';
704
+ h += '<button class="prompt-btn prompt-btn-primary" id="retry-upload-btn">Try from App</button>';
705
+ h += "</div>";
706
+ root.innerHTML = h;
707
+ }
708
+
709
+ var btn = document.getElementById("retry-upload-btn");
710
+ if (btn) btn.addEventListener("click", function() {
711
+ uploadOrigin = "user";
712
+ renderPicker();
713
+ });
714
+ }
715
+
716
+ function extractPathFromError(errMsg) {
717
+ if (!errMsg) return "";
718
+ var m = errMsg.match(/open '([^']+)'/);
719
+ if (m) return m[1];
720
+ m = errMsg.match(/read file: ([^.]+)/);
721
+ if (m) return m[1].trim();
722
+ return "";
723
+ }
724
+
725
+ function classifyFileError(errMsg) {
726
+ var lower = (errMsg || "").toLowerCase();
727
+ if (lower.indexOf("enoent") >= 0 || lower.indexOf("no such file") >= 0) {
728
+ return {
729
+ title: "File Not Found",
730
+ desc: "could not be found at the specified path.",
731
+ hint: "If the server is running remotely, it cannot access files on your device. Drop the file below or click Browse to select it."
732
+ };
733
+ }
734
+ if (lower.indexOf("eacces") >= 0 || lower.indexOf("eperm") >= 0 || lower.indexOf("permission") >= 0) {
735
+ return {
736
+ title: "File Access Denied",
737
+ desc: "could not be read due to insufficient permissions."
738
+ };
739
+ }
740
+ return {
741
+ title: "File Not Accessible",
742
+ desc: "couldn\\u2019t be read from the given path."
743
+ };
744
+ }
745
+
746
+ function renderLocalFileNeeded(expectedName, errMsg) {
747
+ state = "localFileNeeded";
748
+ var classified = classifyFileError(errMsg);
749
+ var root = document.getElementById("app");
750
+ var h = '<div class="upload-header">';
751
+ h += '<span class="upload-header-icon">\\u{1F4C1}</span>';
752
+ h += "<h1>" + esc(classified.title) + "</h1>";
753
+ h += "</div>";
754
+ h += '<div class="prompt" style="margin-bottom:16px">';
755
+ h += '<div class="prompt-desc">The file <strong>' + esc(expectedName)
756
+ + "</strong> " + classified.desc
757
+ + " Please select it from your device.</div>";
758
+ if (classified.hint) {
759
+ h += '<div style="margin-top:8px;font-size:11.5px;color:var(--cld-text3);">' + esc(classified.hint) + "</div>";
760
+ }
761
+ var filePath = extractPathFromError(errMsg);
762
+ if (filePath) {
763
+ h += '<div style="margin-top:6px;font-size:11px;color:var(--cld-text3);word-break:break-all;">Path: ' + esc(filePath) + "</div>";
764
+ }
765
+ h += "</div>";
766
+ h += '<div class="upload-zone" id="drop-zone">';
767
+ h += '<div class="upload-zone-icon">\\u{1F4C1}</div>';
768
+ h += '<div class="upload-zone-text">Drop <strong>' + esc(expectedName) + "</strong> here</div>";
769
+ h += '<div class="upload-zone-hint">Or click to browse your files</div>';
770
+ h += '<button class="upload-zone-btn" id="browse-btn">Browse Files</button>';
771
+ h += '<input type="file" id="file-input" style="display:none">';
772
+ h += "</div>";
773
+ root.innerHTML = h;
774
+
775
+ function onFileSelected(file) {
776
+ var reader = new FileReader();
777
+ reader.onload = function() {
778
+ prepopulateFromFile(file);
779
+ renderUploading(file.name, fmtBytes(file.size));
780
+ doUpload(reader.result, file.name);
781
+ };
782
+ reader.onerror = function() {
783
+ showError("Read Error", "Could not read the selected file.");
784
+ };
785
+ reader.readAsDataURL(file);
786
+ }
787
+
788
+ var zone = document.getElementById("drop-zone");
789
+ var input = document.getElementById("file-input");
790
+ var browseBtn = document.getElementById("browse-btn");
791
+
792
+ browseBtn.addEventListener("click", function(e) { e.stopPropagation(); input.click(); });
793
+ zone.addEventListener("click", function() { input.click(); });
794
+ input.addEventListener("change", function() {
795
+ if (input.files && input.files.length) onFileSelected(input.files[0]);
796
+ });
797
+ zone.addEventListener("dragenter", function(e) { e.preventDefault(); zone.classList.add("dragover"); });
798
+ zone.addEventListener("dragover", function(e) { e.preventDefault(); zone.classList.add("dragover"); });
799
+ zone.addEventListener("dragleave", function(e) { e.preventDefault(); zone.classList.remove("dragover"); });
800
+ zone.addEventListener("drop", function(e) {
801
+ e.preventDefault(); zone.classList.remove("dragover");
802
+ if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length) {
803
+ onFileSelected(e.dataTransfer.files[0]);
804
+ }
805
+ });
806
+ }
807
+
808
+ /* ── Upload logic ── */
809
+ async function doUpload(fileData, displayHint) {
810
+ var uploadRequest = {};
811
+ var resourceType = "auto";
812
+
813
+ var keys = Object.keys(capturedArgs);
814
+ for (var i = 0; i < keys.length; i++) {
815
+ var k = keys[i];
816
+ if (k === "resource_type") {
817
+ resourceType = capturedArgs[k] || "auto";
818
+ } else {
819
+ uploadRequest[k] = capturedArgs[k];
820
+ }
821
+ }
822
+ uploadRequest.file = fileData;
823
+
824
+ if (pendingCall.args && pendingCall.args.resource_type) {
825
+ resourceType = pendingCall.args.resource_type;
826
+ }
827
+
828
+ console.log(LOG_PREFIX, "tools/call -> upload-asset");
829
+ try {
830
+ var res = await app.callServerTool({
831
+ name: "upload-asset",
832
+ arguments: { resource_type: resourceType, upload_request: uploadRequest },
833
+ });
834
+ var data = ingestResult(res);
835
+ console.log(LOG_PREFIX, "upload result:", JSON.stringify(data).substring(0, 300));
836
+ if (data && !data._truncated && !data.error && (data.public_id || data.asset_id || data.status === "pending")) {
837
+ stopProgress(true);
838
+ stagedFile = null;
839
+ if (uploadOrigin === "host") {
840
+ try {
841
+ app._rpc("ui/updateModelContext", {
842
+ content: [{ type: "text", text: "File uploaded successfully via app. public_id: " + data.public_id + ", secure_url: " + (data.secure_url || data.url || "") }]
843
+ });
844
+ } catch (e) { console.warn(LOG_PREFIX, "updateModelContext failed:", e); }
845
+ }
846
+ setTimeout(function() { renderResult(data); }, 300);
847
+ } else if (data && data.error) {
848
+ stopProgress(false);
849
+ var msg = typeof data.error === "object" ? (data.error.message || JSON.stringify(data.error)) : String(data.error);
850
+ if (uploadOrigin === "host") { renderUploadError("Upload Failed", msg); }
851
+ else { showError("Upload Failed", formatErrorMsg(msg)); renderPicker(); }
852
+ } else if (data && data._error) {
853
+ stopProgress(false);
854
+ var srvMsg = data._message || "Server returned an error.";
855
+ if (uploadOrigin === "host") { renderUploadError("Upload Failed", srvMsg); }
856
+ else { showError("Upload Failed", formatErrorMsg(srvMsg)); renderPicker(); }
857
+ } else {
858
+ stopProgress(false);
859
+ var fallbackMsg = "Unexpected response from server.";
860
+ if (data && data._message) fallbackMsg = data._message;
861
+ else if (data && data.message) fallbackMsg = typeof data.message === "string" ? data.message : JSON.stringify(data.message);
862
+ else if (data) try { var snap = JSON.stringify(data).substring(0, 200); if (snap !== "{}") fallbackMsg = snap; } catch(e) {}
863
+ if (uploadOrigin === "host") { renderUploadError("Upload Failed", fallbackMsg); }
864
+ else { showError("Upload Failed", fallbackMsg); renderPicker(); }
865
+ }
866
+ } catch (e) {
867
+ stopProgress(false);
868
+ var errMsg = e && e.message ? e.message : String(e);
869
+ if (uploadOrigin === "host") { renderUploadError("Upload Failed", errMsg); }
870
+ else { showError("Upload Failed", errMsg); renderPicker(); }
871
+ }
872
+ }
873
+
874
+ /* ── Result view ── */
875
+ function renderResult(r) {
876
+ state = "result";
877
+ lastResult = r;
878
+ var root = document.getElementById("app");
879
+ var url = r.secure_url || r.url || "";
880
+ var name = r.display_name || r.public_id || "Asset";
881
+ var isPending = r.status === "pending" && !r.public_id;
882
+
883
+ var h = "";
884
+
885
+ h += '<div class="upload-header">';
886
+ h += '<span class="upload-header-icon">' + (isPending ? "\\u23F3" : "\\u2705") + '</span>';
887
+ h += "<h1>" + (isPending ? "Upload Queued" : "Upload Complete") + "</h1>";
888
+ h += "</div>";
889
+
890
+ h += '<div class="upload-result">';
891
+
892
+ if (isPending) {
893
+ h += '<div class="upload-result-body">';
894
+ h += '<div class="upload-result-title"><span class="success-icon">\\u2713</span> Upload accepted (async)</div>';
895
+ h += '<div class="detail-section"><div class="prompt-desc">The file has been queued for processing. It will be available shortly.</div>';
896
+ if (r.batch_id) h += '<div style="margin-top:8px;font-size:11px;color:var(--cld-text3);">Batch: ' + esc(r.batch_id) + "</div>";
897
+ h += "</div>";
898
+ } else {
899
+ h += '<div class="upload-result-hero">';
900
+ h += renderHeroPreview(r);
901
+ h += "</div>";
902
+
903
+ h += '<div class="upload-result-body">';
904
+ h += '<div class="upload-result-title"><span class="success-icon">\\u2713</span> ' + esc(name) + "</div>";
905
+
906
+ h += sectionStart("asset_info");
907
+ h += '<summary class="detail-section-title">Asset Info</summary>';
908
+ h += renderAssetGrid(r);
909
+ h += "</details>";
910
+
911
+ h += renderAudioInfo(r);
912
+ h += renderVideoInfo(r);
913
+ }
914
+
915
+ if (!isPending) {
916
+ if (r.tags && r.tags.length) {
917
+ h += renderTags(r.tags);
918
+ }
919
+
920
+ h += renderContext(r.context);
921
+ h += renderImageMetadata(r.image_metadata || r.media_metadata);
922
+ h += renderColors(r.colors, r.predominant);
923
+ h += renderModerationSection(r.moderation, r.moderation_kind, r.moderation_status);
924
+ h += renderAccessControl(r.access_control);
925
+ h += renderCoordinates(r.faces, r.coordinates);
926
+ h += renderLastUpdated(r.last_updated);
927
+ h += renderMetadata(r.metadata);
928
+ h += renderInfo(r.info);
929
+ h += renderDerived(r.derived, r.derived_next_cursor, r.asset_id);
930
+ h += renderDerivatives(r.derivatives);
931
+ h += renderRelatedAssets(r.related_assets);
932
+ h += renderVersions(r.versions);
933
+ h += renderEager(r.eager);
934
+ h += renderQualityAnalysis(r.quality_analysis, r.quality_score);
935
+ h += renderAccessibilityAnalysis(r.accessibility_analysis);
936
+ h += renderExtraFields(r);
937
+ h += renderRawResponse(r);
938
+ }
939
+
940
+ h += '<div class="upload-actions">';
941
+ if (url) h += '<button class="prompt-btn prompt-btn-primary" id="open-url-btn">Open in Browser</button>';
942
+ h += '<button class="prompt-btn" id="upload-another-btn">Upload Another</button>';
943
+ h += "</div>";
944
+
945
+ h += "</div></div>";
946
+
947
+ root.innerHTML = h;
948
+
949
+ root.addEventListener("click", function handler(e) {
950
+ var el = e.target;
951
+ while (el && el !== root) {
952
+ if (el.id === "open-url-btn") {
953
+ app._rpc("ui/open-link", { url: url });
954
+ return;
955
+ }
956
+ if (el.id === "upload-another-btn") {
957
+ capturedArgs = {};
958
+ stagedFile = null;
959
+ prevStagedName = "";
960
+ renderPicker();
961
+ return;
962
+ }
963
+ if (el.id === "load-more-derived-btn") {
964
+ loadMoreDerived(el);
965
+ return;
966
+ }
967
+ if (el.classList && el.classList.contains("link-val") && el.dataset.url) {
968
+ app._rpc("ui/open-link", { url: el.dataset.url });
969
+ return;
970
+ }
971
+ el = el.parentElement;
972
+ }
973
+ });
974
+ }
975
+
976
+ /* ── MCP event handlers ── */
977
+ app.ontoolinput = function(params) {
978
+ pendingCall.name = "upload-asset";
979
+ if (params.arguments) {
980
+ pendingCall.args = params.arguments;
981
+ capturedArgs = extractUploadArgs(params.arguments);
982
+
983
+ var req = params.arguments.upload_request || params.arguments || {};
984
+ var file = req.file || "";
985
+ if (file) {
986
+ uploadOrigin = "host";
987
+ var hint = req.display_name || "";
988
+ if (!hint && file.indexOf("://") !== -1) {
989
+ var parts = file.split("?")[0].split("/");
990
+ hint = parts[parts.length - 1] || file;
991
+ try { hint = decodeURIComponent(hint); } catch (e) {}
992
+ }
993
+ if (!hint) hint = "File";
994
+ pendingLocalFile = (file.indexOf("file://") === 0) ? hint : null;
995
+ renderUploading(hint, "Uploading via server\u2026");
996
+ }
997
+ }
998
+ };
999
+
1000
+ app.ontoolcancelled = function(params) {
1001
+ console.log(LOG_PREFIX, "tool cancelled:", params && params.reason);
1002
+ stopProgress(false);
1003
+ pendingLocalFile = null;
1004
+ var root = document.getElementById("app");
1005
+ var h = '<div class="prompt" style="padding:32px 24px">';
1006
+ h += '<div style="font-size:14px;font-weight:600;color:var(--cld-text);margin-bottom:4px">Upload Cancelled</div>';
1007
+ h += renderParamsList(pendingCall.args);
1008
+ h += '<div class="prompt-actions" style="margin-top:14px">';
1009
+ h += '<button class="prompt-btn prompt-btn-primary" id="cancelled-retry-btn">Upload from App</button>';
1010
+ h += '</div>';
1011
+ h += '</div>';
1012
+ root.innerHTML = h;
1013
+ document.getElementById("cancelled-retry-btn").addEventListener("click", function() {
1014
+ stagedFile = null; capturedArgs = {}; prevStagedName = ""; state = "idle";
1015
+ renderPicker();
1016
+ });
1017
+ requestAnimationFrame(function() { app.reportSize(document.documentElement.scrollHeight); });
1018
+ };
1019
+
1020
+ app.ontoolresult = function(result) {
1021
+ stopProgress(false);
1022
+ var data = ingestResult(result);
1023
+
1024
+ if (data && !data._truncated && !data._error && !data._parseError && !data.error && (data.public_id || data.asset_id || data.status === "pending")) {
1025
+ stopProgress(true);
1026
+ pendingLocalFile = null;
1027
+ console.log(LOG_PREFIX, "host upload result:", data.public_id || data.status);
1028
+ renderResult(data);
1029
+ return;
1030
+ }
1031
+
1032
+ var errMsg = "Upload failed";
1033
+ if (data) {
1034
+ if (data.error) {
1035
+ var raw = data.error;
1036
+ if (typeof raw === "object") errMsg = raw.message || raw.error || JSON.stringify(raw);
1037
+ else errMsg = String(raw);
1038
+ } else if (data._message) {
1039
+ errMsg = String(data._message);
1040
+ }
1041
+ console.warn(LOG_PREFIX, "host upload error:", errMsg);
1042
+ } else {
1043
+ console.warn(LOG_PREFIX, "host result unusable, data:", data);
1044
+ }
1045
+
1046
+ if (pendingLocalFile) {
1047
+ var localName = pendingLocalFile;
1048
+ pendingLocalFile = null;
1049
+ console.log(LOG_PREFIX, "file:// upload failed, showing local file picker for:", localName);
1050
+ renderLocalFileNeeded(localName, errMsg);
1051
+ } else if (uploadOrigin === "host") {
1052
+ renderUploadError("Upload Failed", errMsg);
1053
+ } else {
1054
+ renderUploadError("Upload Failed", errMsg);
1055
+ }
1056
+ };
1057
+
1058
+ app.connect().then(function() {
1059
+ console.log(LOG_PREFIX, "ready, state=" + state);
1060
+ setupResize(app, MIN_HEIGHT);
1061
+ if (state === "idle") renderPicker();
1062
+ }).catch(function(err) {
1063
+ showError("Connection Failed", err && err.message ? err.message : String(err));
1064
+ });
1065
+ `;
1066
+ // ── HTML template ───────────────────────────────────────────────────
1067
+ const ASSET_UPLOAD_HTML = /* html */ `<!DOCTYPE html>
1068
+ <html lang="en">
1069
+ <head>
1070
+ <meta charset="UTF-8">
1071
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
1072
+ <title>Cloudinary Upload</title>
1073
+ <style>
1074
+ ${SHARED_CSS_TOKENS}
1075
+ ${SHARED_CSS_COMPONENTS}
1076
+ ${UPLOAD_CSS}
1077
+ </style>
1078
+ </head>
1079
+ <body>
1080
+ <div id="app"><div class="status">Preparing upload&hellip;</div></div>
1081
+
1082
+ <script>
1083
+ ${SHARED_JS_MCP_CLIENT}
1084
+ ${SHARED_JS_HELPERS}
1085
+ ${SHARED_JS_TOOLTIPS}
1086
+ ${SHARED_JS_MODAL}
1087
+ ${SHARED_JS_DETAIL_RENDERERS}
1088
+ ${SHARED_JS_HOST_CONTEXT}
1089
+ ${UPLOAD_JS}
1090
+ </script>
1091
+ </body>
1092
+ </html>`;
1093
+ //# sourceMappingURL=asset-upload-app.js.map