@collage-dam/mcp-server 0.1.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 (306) hide show
  1. package/.env.example +56 -0
  2. package/CHANGELOG.md +90 -0
  3. package/LICENSE +21 -0
  4. package/README.md +512 -0
  5. package/dist/client.d.ts +497 -0
  6. package/dist/client.d.ts.map +1 -0
  7. package/dist/client.js +1162 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/conventions/confirmation.d.ts +89 -0
  10. package/dist/conventions/confirmation.d.ts.map +1 -0
  11. package/dist/conventions/confirmation.js +132 -0
  12. package/dist/conventions/confirmation.js.map +1 -0
  13. package/dist/conventions/dry-run/batch-executor.d.ts +36 -0
  14. package/dist/conventions/dry-run/batch-executor.d.ts.map +1 -0
  15. package/dist/conventions/dry-run/batch-executor.js +89 -0
  16. package/dist/conventions/dry-run/batch-executor.js.map +1 -0
  17. package/dist/conventions/dry-run/diff-renderer.d.ts +34 -0
  18. package/dist/conventions/dry-run/diff-renderer.d.ts.map +1 -0
  19. package/dist/conventions/dry-run/diff-renderer.js +158 -0
  20. package/dist/conventions/dry-run/diff-renderer.js.map +1 -0
  21. package/dist/conventions/dry-run/index.d.ts +13 -0
  22. package/dist/conventions/dry-run/index.d.ts.map +1 -0
  23. package/dist/conventions/dry-run/index.js +10 -0
  24. package/dist/conventions/dry-run/index.js.map +1 -0
  25. package/dist/conventions/dry-run/mutating-tool.d.ts +64 -0
  26. package/dist/conventions/dry-run/mutating-tool.d.ts.map +1 -0
  27. package/dist/conventions/dry-run/mutating-tool.js +88 -0
  28. package/dist/conventions/dry-run/mutating-tool.js.map +1 -0
  29. package/dist/conventions/dry-run/summary.d.ts +66 -0
  30. package/dist/conventions/dry-run/summary.d.ts.map +1 -0
  31. package/dist/conventions/dry-run/summary.js +185 -0
  32. package/dist/conventions/dry-run/summary.js.map +1 -0
  33. package/dist/conventions/dry-run/types.d.ts +597 -0
  34. package/dist/conventions/dry-run/types.d.ts.map +1 -0
  35. package/dist/conventions/dry-run/types.js +108 -0
  36. package/dist/conventions/dry-run/types.js.map +1 -0
  37. package/dist/conventions/dry-run/with-dry-run.d.ts +66 -0
  38. package/dist/conventions/dry-run/with-dry-run.d.ts.map +1 -0
  39. package/dist/conventions/dry-run/with-dry-run.js +219 -0
  40. package/dist/conventions/dry-run/with-dry-run.js.map +1 -0
  41. package/dist/conventions/env.d.ts +49 -0
  42. package/dist/conventions/env.d.ts.map +1 -0
  43. package/dist/conventions/env.js +84 -0
  44. package/dist/conventions/env.js.map +1 -0
  45. package/dist/conventions/errors.d.ts +68 -0
  46. package/dist/conventions/errors.d.ts.map +1 -0
  47. package/dist/conventions/errors.js +81 -0
  48. package/dist/conventions/errors.js.map +1 -0
  49. package/dist/conventions/logger.d.ts +28 -0
  50. package/dist/conventions/logger.d.ts.map +1 -0
  51. package/dist/conventions/logger.js +105 -0
  52. package/dist/conventions/logger.js.map +1 -0
  53. package/dist/conventions/pagination.d.ts +37 -0
  54. package/dist/conventions/pagination.d.ts.map +1 -0
  55. package/dist/conventions/pagination.js +53 -0
  56. package/dist/conventions/pagination.js.map +1 -0
  57. package/dist/conventions/rate-limiter.d.ts +54 -0
  58. package/dist/conventions/rate-limiter.d.ts.map +1 -0
  59. package/dist/conventions/rate-limiter.js +143 -0
  60. package/dist/conventions/rate-limiter.js.map +1 -0
  61. package/dist/conventions/response-budget.d.ts +66 -0
  62. package/dist/conventions/response-budget.d.ts.map +1 -0
  63. package/dist/conventions/response-budget.js +89 -0
  64. package/dist/conventions/response-budget.js.map +1 -0
  65. package/dist/conventions/schema-version.d.ts +27 -0
  66. package/dist/conventions/schema-version.d.ts.map +1 -0
  67. package/dist/conventions/schema-version.js +29 -0
  68. package/dist/conventions/schema-version.js.map +1 -0
  69. package/dist/conventions/state-store-redis.d.ts +32 -0
  70. package/dist/conventions/state-store-redis.d.ts.map +1 -0
  71. package/dist/conventions/state-store-redis.js +77 -0
  72. package/dist/conventions/state-store-redis.js.map +1 -0
  73. package/dist/conventions/state-store.d.ts +46 -0
  74. package/dist/conventions/state-store.d.ts.map +1 -0
  75. package/dist/conventions/state-store.js +105 -0
  76. package/dist/conventions/state-store.js.map +1 -0
  77. package/dist/index.d.ts +5 -0
  78. package/dist/index.d.ts.map +1 -0
  79. package/dist/index.js +421 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/prompts/collection-audit.d.ts +13 -0
  82. package/dist/prompts/collection-audit.d.ts.map +1 -0
  83. package/dist/prompts/collection-audit.js +168 -0
  84. package/dist/prompts/collection-audit.js.map +1 -0
  85. package/dist/prompts/create-distribution.d.ts +15 -0
  86. package/dist/prompts/create-distribution.d.ts.map +1 -0
  87. package/dist/prompts/create-distribution.js +111 -0
  88. package/dist/prompts/create-distribution.js.map +1 -0
  89. package/dist/prompts/helpers.d.ts +20 -0
  90. package/dist/prompts/helpers.d.ts.map +1 -0
  91. package/dist/prompts/helpers.js +53 -0
  92. package/dist/prompts/helpers.js.map +1 -0
  93. package/dist/prompts/library-health-audit.d.ts +13 -0
  94. package/dist/prompts/library-health-audit.d.ts.map +1 -0
  95. package/dist/prompts/library-health-audit.js +131 -0
  96. package/dist/prompts/library-health-audit.js.map +1 -0
  97. package/dist/prompts/usage-insights.d.ts +13 -0
  98. package/dist/prompts/usage-insights.d.ts.map +1 -0
  99. package/dist/prompts/usage-insights.js +98 -0
  100. package/dist/prompts/usage-insights.js.map +1 -0
  101. package/dist/prompts/wrap-prompt-as-tool.d.ts +48 -0
  102. package/dist/prompts/wrap-prompt-as-tool.d.ts.map +1 -0
  103. package/dist/prompts/wrap-prompt-as-tool.js +61 -0
  104. package/dist/prompts/wrap-prompt-as-tool.js.map +1 -0
  105. package/dist/resources/asset-by-id.d.ts +4 -0
  106. package/dist/resources/asset-by-id.d.ts.map +1 -0
  107. package/dist/resources/asset-by-id.js +27 -0
  108. package/dist/resources/asset-by-id.js.map +1 -0
  109. package/dist/resources/collections.d.ts +5 -0
  110. package/dist/resources/collections.d.ts.map +1 -0
  111. package/dist/resources/collections.js +48 -0
  112. package/dist/resources/collections.js.map +1 -0
  113. package/dist/resources/custom-fields.d.ts +4 -0
  114. package/dist/resources/custom-fields.d.ts.map +1 -0
  115. package/dist/resources/custom-fields.js +30 -0
  116. package/dist/resources/custom-fields.js.map +1 -0
  117. package/dist/resources/folders.d.ts +5 -0
  118. package/dist/resources/folders.d.ts.map +1 -0
  119. package/dist/resources/folders.js +73 -0
  120. package/dist/resources/folders.js.map +1 -0
  121. package/dist/resources/helpers.d.ts +17 -0
  122. package/dist/resources/helpers.d.ts.map +1 -0
  123. package/dist/resources/helpers.js +59 -0
  124. package/dist/resources/helpers.js.map +1 -0
  125. package/dist/resources/portals.d.ts +5 -0
  126. package/dist/resources/portals.d.ts.map +1 -0
  127. package/dist/resources/portals.js +81 -0
  128. package/dist/resources/portals.js.map +1 -0
  129. package/dist/resources/recent-and-dashboard.d.ts +5 -0
  130. package/dist/resources/recent-and-dashboard.d.ts.map +1 -0
  131. package/dist/resources/recent-and-dashboard.js +42 -0
  132. package/dist/resources/recent-and-dashboard.js.map +1 -0
  133. package/dist/tools/asset-selection.d.ts +102 -0
  134. package/dist/tools/asset-selection.d.ts.map +1 -0
  135. package/dist/tools/asset-selection.js +133 -0
  136. package/dist/tools/asset-selection.js.map +1 -0
  137. package/dist/tools/audit/audit-folder-structure.d.ts +108 -0
  138. package/dist/tools/audit/audit-folder-structure.d.ts.map +1 -0
  139. package/dist/tools/audit/audit-folder-structure.js +260 -0
  140. package/dist/tools/audit/audit-folder-structure.js.map +1 -0
  141. package/dist/tools/audit/audit-naming-conventions.d.ts +83 -0
  142. package/dist/tools/audit/audit-naming-conventions.d.ts.map +1 -0
  143. package/dist/tools/audit/audit-naming-conventions.js +238 -0
  144. package/dist/tools/audit/audit-naming-conventions.js.map +1 -0
  145. package/dist/tools/audit/audit-tagging-hygiene.d.ts +77 -0
  146. package/dist/tools/audit/audit-tagging-hygiene.d.ts.map +1 -0
  147. package/dist/tools/audit/audit-tagging-hygiene.js +402 -0
  148. package/dist/tools/audit/audit-tagging-hygiene.js.map +1 -0
  149. package/dist/tools/audit/detect-duplicates.d.ts +62 -0
  150. package/dist/tools/audit/detect-duplicates.d.ts.map +1 -0
  151. package/dist/tools/audit/detect-duplicates.js +0 -0
  152. package/dist/tools/audit/detect-duplicates.js.map +1 -0
  153. package/dist/tools/audit/types.d.ts +526 -0
  154. package/dist/tools/audit/types.d.ts.map +1 -0
  155. package/dist/tools/audit/types.js +188 -0
  156. package/dist/tools/audit/types.js.map +1 -0
  157. package/dist/tools/bulk-move-assets.d.ts +78 -0
  158. package/dist/tools/bulk-move-assets.d.ts.map +1 -0
  159. package/dist/tools/bulk-move-assets.js +122 -0
  160. package/dist/tools/bulk-move-assets.js.map +1 -0
  161. package/dist/tools/bulk-normalize-filenames.d.ts +62 -0
  162. package/dist/tools/bulk-normalize-filenames.d.ts.map +1 -0
  163. package/dist/tools/bulk-normalize-filenames.js +237 -0
  164. package/dist/tools/bulk-normalize-filenames.js.map +1 -0
  165. package/dist/tools/bulk-rename-assets.d.ts +79 -0
  166. package/dist/tools/bulk-rename-assets.d.ts.map +1 -0
  167. package/dist/tools/bulk-rename-assets.js +139 -0
  168. package/dist/tools/bulk-rename-assets.js.map +1 -0
  169. package/dist/tools/bulk-tags.d.ts +107 -0
  170. package/dist/tools/bulk-tags.d.ts.map +1 -0
  171. package/dist/tools/bulk-tags.js +220 -0
  172. package/dist/tools/bulk-tags.js.map +1 -0
  173. package/dist/tools/client-adapters.d.ts +76 -0
  174. package/dist/tools/client-adapters.d.ts.map +1 -0
  175. package/dist/tools/client-adapters.js +648 -0
  176. package/dist/tools/client-adapters.js.map +1 -0
  177. package/dist/tools/collection-membership.d.ts +90 -0
  178. package/dist/tools/collection-membership.d.ts.map +1 -0
  179. package/dist/tools/collection-membership.js +195 -0
  180. package/dist/tools/collection-membership.js.map +1 -0
  181. package/dist/tools/create-collection.d.ts +63 -0
  182. package/dist/tools/create-collection.d.ts.map +1 -0
  183. package/dist/tools/create-collection.js +151 -0
  184. package/dist/tools/create-collection.js.map +1 -0
  185. package/dist/tools/create-folder.d.ts +46 -0
  186. package/dist/tools/create-folder.d.ts.map +1 -0
  187. package/dist/tools/create-folder.js +83 -0
  188. package/dist/tools/create-folder.js.map +1 -0
  189. package/dist/tools/create-share-link.d.ts +107 -0
  190. package/dist/tools/create-share-link.d.ts.map +1 -0
  191. package/dist/tools/create-share-link.js +239 -0
  192. package/dist/tools/create-share-link.js.map +1 -0
  193. package/dist/tools/get-asset-details.d.ts +401 -0
  194. package/dist/tools/get-asset-details.d.ts.map +1 -0
  195. package/dist/tools/get-asset-details.js +56 -0
  196. package/dist/tools/get-asset-details.js.map +1 -0
  197. package/dist/tools/get-collection.d.ts +126 -0
  198. package/dist/tools/get-collection.d.ts.map +1 -0
  199. package/dist/tools/get-collection.js +52 -0
  200. package/dist/tools/get-collection.js.map +1 -0
  201. package/dist/tools/get-embed-code.d.ts +195 -0
  202. package/dist/tools/get-embed-code.d.ts.map +1 -0
  203. package/dist/tools/get-embed-code.js +214 -0
  204. package/dist/tools/get-embed-code.js.map +1 -0
  205. package/dist/tools/insights/analyze-share-links.d.ts +159 -0
  206. package/dist/tools/insights/analyze-share-links.d.ts.map +1 -0
  207. package/dist/tools/insights/analyze-share-links.js +314 -0
  208. package/dist/tools/insights/analyze-share-links.js.map +1 -0
  209. package/dist/tools/insights/insight-cache.d.ts +36 -0
  210. package/dist/tools/insights/insight-cache.d.ts.map +1 -0
  211. package/dist/tools/insights/insight-cache.js +98 -0
  212. package/dist/tools/insights/insight-cache.js.map +1 -0
  213. package/dist/tools/insights/report-asset-activation.d.ts +149 -0
  214. package/dist/tools/insights/report-asset-activation.d.ts.map +1 -0
  215. package/dist/tools/insights/report-asset-activation.js +380 -0
  216. package/dist/tools/insights/report-asset-activation.js.map +1 -0
  217. package/dist/tools/insights/report-stale-assets.d.ts +120 -0
  218. package/dist/tools/insights/report-stale-assets.d.ts.map +1 -0
  219. package/dist/tools/insights/report-stale-assets.js +281 -0
  220. package/dist/tools/insights/report-stale-assets.js.map +1 -0
  221. package/dist/tools/insights/report-top-assets.d.ts +139 -0
  222. package/dist/tools/insights/report-top-assets.d.ts.map +1 -0
  223. package/dist/tools/insights/report-top-assets.js +407 -0
  224. package/dist/tools/insights/report-top-assets.js.map +1 -0
  225. package/dist/tools/list-categories.d.ts +127 -0
  226. package/dist/tools/list-categories.d.ts.map +1 -0
  227. package/dist/tools/list-categories.js +68 -0
  228. package/dist/tools/list-categories.js.map +1 -0
  229. package/dist/tools/list-collections.d.ts +127 -0
  230. package/dist/tools/list-collections.d.ts.map +1 -0
  231. package/dist/tools/list-collections.js +53 -0
  232. package/dist/tools/list-collections.js.map +1 -0
  233. package/dist/tools/list-custom-fields.d.ts +125 -0
  234. package/dist/tools/list-custom-fields.d.ts.map +1 -0
  235. package/dist/tools/list-custom-fields.js +51 -0
  236. package/dist/tools/list-custom-fields.js.map +1 -0
  237. package/dist/tools/list-share-links.d.ts +192 -0
  238. package/dist/tools/list-share-links.d.ts.map +1 -0
  239. package/dist/tools/list-share-links.js +92 -0
  240. package/dist/tools/list-share-links.js.map +1 -0
  241. package/dist/tools/list-workspaces.d.ts +88 -0
  242. package/dist/tools/list-workspaces.d.ts.map +1 -0
  243. package/dist/tools/list-workspaces.js +71 -0
  244. package/dist/tools/list-workspaces.js.map +1 -0
  245. package/dist/tools/move-asset.d.ts +48 -0
  246. package/dist/tools/move-asset.d.ts.map +1 -0
  247. package/dist/tools/move-asset.js +85 -0
  248. package/dist/tools/move-asset.js.map +1 -0
  249. package/dist/tools/rename-asset.d.ts +88 -0
  250. package/dist/tools/rename-asset.d.ts.map +1 -0
  251. package/dist/tools/rename-asset.js +100 -0
  252. package/dist/tools/rename-asset.js.map +1 -0
  253. package/dist/tools/rename-folder.d.ts +55 -0
  254. package/dist/tools/rename-folder.d.ts.map +1 -0
  255. package/dist/tools/rename-folder.js +101 -0
  256. package/dist/tools/rename-folder.js.map +1 -0
  257. package/dist/tools/revoke-share-link.d.ts +55 -0
  258. package/dist/tools/revoke-share-link.d.ts.map +1 -0
  259. package/dist/tools/revoke-share-link.js +77 -0
  260. package/dist/tools/revoke-share-link.js.map +1 -0
  261. package/dist/tools/search/facets.d.ts +34 -0
  262. package/dist/tools/search/facets.d.ts.map +1 -0
  263. package/dist/tools/search/facets.js +147 -0
  264. package/dist/tools/search/facets.js.map +1 -0
  265. package/dist/tools/search/filter-builder.d.ts +33 -0
  266. package/dist/tools/search/filter-builder.d.ts.map +1 -0
  267. package/dist/tools/search/filter-builder.js +111 -0
  268. package/dist/tools/search/filter-builder.js.map +1 -0
  269. package/dist/tools/search/search-assets.d.ts +41 -0
  270. package/dist/tools/search/search-assets.d.ts.map +1 -0
  271. package/dist/tools/search/search-assets.js +162 -0
  272. package/dist/tools/search/search-assets.js.map +1 -0
  273. package/dist/tools/search/search-collections.d.ts +35 -0
  274. package/dist/tools/search/search-collections.d.ts.map +1 -0
  275. package/dist/tools/search/search-collections.js +103 -0
  276. package/dist/tools/search/search-collections.js.map +1 -0
  277. package/dist/tools/search/types.d.ts +1047 -0
  278. package/dist/tools/search/types.d.ts.map +1 -0
  279. package/dist/tools/search/types.js +216 -0
  280. package/dist/tools/search/types.js.map +1 -0
  281. package/dist/tools/update-asset-metadata.d.ts +78 -0
  282. package/dist/tools/update-asset-metadata.d.ts.map +1 -0
  283. package/dist/tools/update-asset-metadata.js +203 -0
  284. package/dist/tools/update-asset-metadata.js.map +1 -0
  285. package/dist/tools/update-collection.d.ts +69 -0
  286. package/dist/tools/update-collection.d.ts.map +1 -0
  287. package/dist/tools/update-collection.js +142 -0
  288. package/dist/tools/update-collection.js.map +1 -0
  289. package/dist/tools/view-category-contents.d.ts +231 -0
  290. package/dist/tools/view-category-contents.d.ts.map +1 -0
  291. package/dist/tools/view-category-contents.js +97 -0
  292. package/dist/tools/view-category-contents.js.map +1 -0
  293. package/dist/types.d.ts +1326 -0
  294. package/dist/types.d.ts.map +1 -0
  295. package/dist/types.js +288 -0
  296. package/dist/types.js.map +1 -0
  297. package/dist/typesense.d.ts +84 -0
  298. package/dist/typesense.d.ts.map +1 -0
  299. package/dist/typesense.js +243 -0
  300. package/dist/typesense.js.map +1 -0
  301. package/docs/api-field-verification.md +244 -0
  302. package/docs/deployment-runbook.md +446 -0
  303. package/docs/security-review.md +195 -0
  304. package/docs/typesense-filter-schema.md +262 -0
  305. package/docs/verified-endpoints.md +38 -0
  306. package/package.json +72 -0
@@ -0,0 +1,220 @@
1
+ // ── bulk_set_tags / bulk_add_tags / bulk_remove_tags ─────────────────
2
+ // Three separate `MutatingTool` subclasses sharing a common selection
3
+ // resolver, planning skeleton, and per-item executor. Each tool computes
4
+ // the eventual tag set per asset deterministically in `plan()` so the
5
+ // preview shows exactly what will land.
6
+ //
7
+ // set — replaces the current tag set with `tags`
8
+ // add — union(current, tags)
9
+ // remove — current \ tags
10
+ //
11
+ // All three default to a chunk size of 50 and surface aggregate
12
+ // overwrite-risk flags via `summary.ts` (extended in T4).
13
+ import { z } from 'zod';
14
+ import { MutatingTool, } from '../conventions/dry-run/index.js';
15
+ import { createToolError } from '../conventions/errors.js';
16
+ import { AssetSelectionSchema, resolveAssetSelection, } from './asset-selection.js';
17
+ // ── Shared Input ─────────────────────────────────────────────────────
18
+ const TagSchema = z.string().min(1).max(255);
19
+ export const BulkTagsInputSchema = z.object({
20
+ selection: AssetSelectionSchema,
21
+ tags: z.array(TagSchema).min(1).max(500),
22
+ });
23
+ export const BULK_SET_TAGS_DESCRIPTION = 'Replace the tag set on every asset matched by `selection` with the ' +
24
+ 'provided `tags`. Two-step: first call returns a preview plus a ' +
25
+ 'confirmation_token; second call (with the token) executes the change in ' +
26
+ 'batches of 50 and returns a per-item ledger. Selection accepts query, ' +
27
+ 'ids, or collection_id (exactly one).';
28
+ export const BULK_ADD_TAGS_DESCRIPTION = 'Add `tags` to the tag set on every asset matched by `selection` (union, ' +
29
+ 'duplicates ignored). Two-step preview/confirm flow.';
30
+ export const BULK_REMOVE_TAGS_DESCRIPTION = 'Remove `tags` from the tag set on every asset matched by `selection`. ' +
31
+ 'Tags not present on an asset are ignored. Two-step preview/confirm flow.';
32
+ function applyOp(current, inputTags, op) {
33
+ if (op === 'set') {
34
+ return dedupePreserveOrder(inputTags);
35
+ }
36
+ if (op === 'add') {
37
+ return dedupePreserveOrder([...current, ...inputTags]);
38
+ }
39
+ // remove
40
+ const drop = new Set(inputTags);
41
+ return current.filter((t) => !drop.has(t));
42
+ }
43
+ function dedupePreserveOrder(tags) {
44
+ const seen = new Set();
45
+ const out = [];
46
+ for (const tag of tags) {
47
+ if (!seen.has(tag)) {
48
+ seen.add(tag);
49
+ out.push(tag);
50
+ }
51
+ }
52
+ return out;
53
+ }
54
+ class BulkTagsTool extends MutatingTool {
55
+ chunkSize = 50;
56
+ client;
57
+ search;
58
+ collections;
59
+ constructor(deps) {
60
+ super(deps);
61
+ this.client = deps.client;
62
+ this.search = deps.search;
63
+ this.collections = deps.collections;
64
+ }
65
+ async plan(input) {
66
+ const resolved = await resolveAssetSelection(input.selection, {
67
+ search: this.search,
68
+ collections: this.collections,
69
+ });
70
+ if (!resolved.ok) {
71
+ throw new Error(`selection failed: ${resolved.error.code} — ${resolved.error.message}`);
72
+ }
73
+ const changes = [];
74
+ let overwriteCount = 0;
75
+ let noopCount = 0;
76
+ let nonExistentRemovals = 0;
77
+ let dataLossOnSet = 0;
78
+ for (const id of resolved.asset_ids) {
79
+ const snapshot = pickSnapshot(resolved.snapshots.get(id));
80
+ let currentTags;
81
+ if (snapshot !== null) {
82
+ currentTags = snapshot;
83
+ }
84
+ else {
85
+ const fetched = await this.client.getCurrentTags(id);
86
+ if (!fetched.ok) {
87
+ throw new Error(`failed to read current tags for asset ${id}: ${fetched.error.code} — ${fetched.error.message}`);
88
+ }
89
+ currentTags = fetched.tags;
90
+ }
91
+ const nextTags = applyOp(currentTags, input.tags, this.op);
92
+ const isNoop = sameTagSet(currentTags, nextTags);
93
+ if (isNoop)
94
+ noopCount++;
95
+ // Overwrite/data-loss bookkeeping per operation.
96
+ if (this.op === 'set') {
97
+ // Anything in current that won't survive in next == overwrite.
98
+ const next = new Set(nextTags);
99
+ const lost = currentTags.filter((t) => !next.has(t)).length;
100
+ if (lost > 0) {
101
+ overwriteCount++;
102
+ dataLossOnSet += lost;
103
+ }
104
+ }
105
+ else if (this.op === 'add') {
106
+ // No data loss on add. Track partial-overlap as informational.
107
+ }
108
+ else if (this.op === 'remove') {
109
+ const cur = new Set(currentTags);
110
+ const present = input.tags.filter((t) => cur.has(t)).length;
111
+ if (present === 0)
112
+ nonExistentRemovals++;
113
+ }
114
+ changes.push({
115
+ id,
116
+ operation: 'update',
117
+ before: { tags: currentTags },
118
+ after: { tags: nextTags },
119
+ metadata: { next_tags: nextTags },
120
+ });
121
+ }
122
+ const riskFlags = [];
123
+ if (resolved.asset_ids.length === 0) {
124
+ riskFlags.push({
125
+ code: 'empty_selection',
126
+ severity: 'warning',
127
+ message: 'selection matched zero assets',
128
+ count: 0,
129
+ });
130
+ }
131
+ if (noopCount > 0) {
132
+ riskFlags.push({
133
+ code: 'noop_tag_change',
134
+ severity: 'info',
135
+ message: 'tag operation is a no-op (no change)',
136
+ count: noopCount,
137
+ });
138
+ }
139
+ if (overwriteCount > 0) {
140
+ riskFlags.push({
141
+ code: 'tag_overwrite',
142
+ severity: 'critical',
143
+ message: `set will overwrite existing tags on ${overwriteCount} asset${overwriteCount === 1 ? '' : 's'}`,
144
+ count: overwriteCount,
145
+ });
146
+ }
147
+ if (nonExistentRemovals > 0) {
148
+ riskFlags.push({
149
+ code: 'remove_missing_tag',
150
+ severity: 'info',
151
+ message: 'no requested tag was present on the asset',
152
+ count: nonExistentRemovals,
153
+ });
154
+ }
155
+ return {
156
+ changes,
157
+ riskFlags,
158
+ extraAggregates: {
159
+ selected: resolved.asset_ids.length,
160
+ noops: noopCount,
161
+ overwrites: overwriteCount,
162
+ tags_lost: dataLossOnSet,
163
+ },
164
+ };
165
+ }
166
+ apply = async (change) => {
167
+ const before = change.before?.['tags'] ?? [];
168
+ const after = change.after?.['tags'] ?? [];
169
+ const result = await this.client.setTags(change.id, after);
170
+ if (!result.ok) {
171
+ return { ok: false, error: result.error };
172
+ }
173
+ return {
174
+ ok: true,
175
+ result: { asset_id: change.id, before_tags: before, after_tags: after },
176
+ };
177
+ };
178
+ }
179
+ // ── Concrete Subclasses ──────────────────────────────────────────────
180
+ export class BulkSetTagsTool extends BulkTagsTool {
181
+ name = 'bulk_set_tags';
182
+ op = 'set';
183
+ }
184
+ export class BulkAddTagsTool extends BulkTagsTool {
185
+ name = 'bulk_add_tags';
186
+ op = 'add';
187
+ }
188
+ export class BulkRemoveTagsTool extends BulkTagsTool {
189
+ name = 'bulk_remove_tags';
190
+ op = 'remove';
191
+ }
192
+ export function buildBulkSetTagsTool(deps) {
193
+ return new BulkSetTagsTool(deps);
194
+ }
195
+ export function buildBulkAddTagsTool(deps) {
196
+ return new BulkAddTagsTool(deps);
197
+ }
198
+ export function buildBulkRemoveTagsTool(deps) {
199
+ return new BulkRemoveTagsTool(deps);
200
+ }
201
+ export { createToolError };
202
+ // ── Helpers ──────────────────────────────────────────────────────────
203
+ function pickSnapshot(asset) {
204
+ if (asset === undefined)
205
+ return null;
206
+ if (asset.tags === undefined)
207
+ return null;
208
+ return [...asset.tags];
209
+ }
210
+ function sameTagSet(a, b) {
211
+ if (a.length !== b.length)
212
+ return false;
213
+ const sa = new Set(a);
214
+ for (const tag of b) {
215
+ if (!sa.has(tag))
216
+ return false;
217
+ }
218
+ return true;
219
+ }
220
+ //# sourceMappingURL=bulk-tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-tags.js","sourceRoot":"","sources":["../../src/tools/bulk-tags.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import type { CollageClient } from '../client.js';
2
+ import type { AssetEnumerator, AuditAsset } from './audit/audit-tagging-hygiene.js';
3
+ import type { RenameAssetClient } from './rename-asset.js';
4
+ import type { UpdateAssetMetadataClient } from './update-asset-metadata.js';
5
+ import type { BulkTagsClient } from './bulk-tags.js';
6
+ import type { CreateCollectionClient } from './create-collection.js';
7
+ import type { UpdateCollectionClient } from './update-collection.js';
8
+ import type { CollectionMembershipClient } from './collection-membership.js';
9
+ import type { CreateFolderClient } from './create-folder.js';
10
+ import type { RenameFolderClient } from './rename-folder.js';
11
+ import type { MoveAssetClient } from './move-asset.js';
12
+ import type { AssetSearchAdapter } from './asset-selection.js';
13
+ import type { CollageSearchClient } from '../typesense.js';
14
+ import { type ShareLinkEnumerator } from './insights/analyze-share-links.js';
15
+ /**
16
+ * Backed by `CollageClient.enumerateAssets()` which iterates folders via
17
+ * `view-files-with-category`. Workspace-wide flat enumeration is otherwise
18
+ * Typesense-only.
19
+ *
20
+ * Returns a typed `UPSTREAM` error if folder listing 402s (current
21
+ * BREZ-workspace state) — the audit tool surfaces that to the caller as
22
+ * a structured failure instead of an empty result.
23
+ */
24
+ export declare function buildAssetEnumerator(client: CollageClient): AssetEnumerator;
25
+ /** Helper for tests / future swap-in: enumerator backed by an in-memory list. */
26
+ export declare function fixedAssetEnumerator(assets: ReadonlyArray<AuditAsset>): AssetEnumerator;
27
+ /**
28
+ * Default unavailable adapter — kept for tests and for the
29
+ * pre-Typesense-provisioned mode.
30
+ */
31
+ export declare function buildSearchAdapter(_client: CollageClient): AssetSearchAdapter;
32
+ /**
33
+ * Search adapter backed by the Collage Nuxt search proxy. Bridges the
34
+ * bulk-tag tools' `AssetSearchAdapter` interface to the workspace-scoped
35
+ * `search_assets` runner. Returns up to the first page (per_page=250) of
36
+ * hits, projected down to the `ResolvedAsset` shape expected by the
37
+ * resolver. The `tags` array is only present when the index actually
38
+ * has tags indexed for the row — empty when the indexer has not yet
39
+ * caught up.
40
+ */
41
+ export declare function buildTypesenseSearchAdapter(searchClient: CollageSearchClient, workspaceId: string): AssetSearchAdapter;
42
+ export declare function buildRenameAssetClient(client: CollageClient): RenameAssetClient;
43
+ /**
44
+ * `view-detail` carries `display_file_name` and `description` directly. We
45
+ * map `display_file_name` onto the tool's `title` slot (the
46
+ * Admin-Frontend rename UI does the same — there is no separate "title"
47
+ * column in `digital_assets`).
48
+ *
49
+ * Custom fields come from a separate `get-custom-fields` call, projected
50
+ * by `name` (with `field_name` as fallback) into `Record<string, CustomFieldValue>`.
51
+ * Update side: we re-fetch the same projection, overwrite each `value` for
52
+ * the requested keys, and POST the full array back via `update-custom-fields`.
53
+ */
54
+ export declare function buildUpdateAssetMetadataClient(client: CollageClient): UpdateAssetMetadataClient;
55
+ /**
56
+ * Tag read uses `view-detail.tags` (array of `{id, tag_name}`). Write side:
57
+ * `setTags` is a full-replace — diff against current, add new via
58
+ * `add-tags-to-multiple-file`, remove others via
59
+ * `delete-tag-from-multiple-file` (called once per removed tag because the
60
+ * upstream takes a single `tag_name` per request).
61
+ */
62
+ export declare function buildBulkTagsClient(client: CollageClient): BulkTagsClient;
63
+ export declare function buildCreateCollectionClient(client: CollageClient): CreateCollectionClient;
64
+ export declare function buildUpdateCollectionClient(client: CollageClient): UpdateCollectionClient;
65
+ export declare function buildCollectionMembershipClient(client: CollageClient): CollectionMembershipClient;
66
+ import type { CreateShareLinkClient } from './create-share-link.js';
67
+ import type { RevokeShareLinkClient } from './revoke-share-link.js';
68
+ export declare function buildCreateShareLinkClient(client: CollageClient): CreateShareLinkClient;
69
+ export declare function buildRevokeShareLinkClient(client: CollageClient): RevokeShareLinkClient;
70
+ export declare function buildCreateFolderClient(client: CollageClient): CreateFolderClient;
71
+ export declare function buildRenameFolderClient(client: CollageClient): RenameFolderClient;
72
+ export declare function buildMoveAssetClient(client: CollageClient): MoveAssetClient;
73
+ export declare function buildShareLinkAnalyticsEnumerator(client: Pick<CollageClient, 'listShareLinks'>): ShareLinkEnumerator;
74
+ import type { DashboardCommonDataReader } from './insights/report-asset-activation.js';
75
+ export declare function buildDashboardCommonDataReader(client: Pick<CollageClient, 'getDashboardCommonData'>): DashboardCommonDataReader;
76
+ //# sourceMappingURL=client-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-adapters.d.ts","sourceRoot":"","sources":["../../src/tools/client-adapters.ts"],"names":[],"mappings":"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"}