@withpica/mcp-server 2.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 (226) hide show
  1. package/README.md +305 -0
  2. package/dist/config.d.ts +34 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +33 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +34 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/pica-sdk.d.ts +1162 -0
  11. package/dist/pica-sdk.d.ts.map +1 -0
  12. package/dist/pica-sdk.js +1371 -0
  13. package/dist/pica-sdk.js.map +1 -0
  14. package/dist/prompts/index.d.ts +78 -0
  15. package/dist/prompts/index.d.ts.map +1 -0
  16. package/dist/prompts/index.js +513 -0
  17. package/dist/prompts/index.js.map +1 -0
  18. package/dist/resources/index.d.ts +64 -0
  19. package/dist/resources/index.d.ts.map +1 -0
  20. package/dist/resources/index.js +310 -0
  21. package/dist/resources/index.js.map +1 -0
  22. package/dist/resources/llms-primer.d.ts +2 -0
  23. package/dist/resources/llms-primer.d.ts.map +1 -0
  24. package/dist/resources/llms-primer.js +67 -0
  25. package/dist/resources/llms-primer.js.map +1 -0
  26. package/dist/server.d.ts +27 -0
  27. package/dist/server.d.ts.map +1 -0
  28. package/dist/server.js +140 -0
  29. package/dist/server.js.map +1 -0
  30. package/dist/tools/agreement-types.d.ts +37 -0
  31. package/dist/tools/agreement-types.d.ts.map +1 -0
  32. package/dist/tools/agreement-types.js +579 -0
  33. package/dist/tools/agreement-types.js.map +1 -0
  34. package/dist/tools/agreements.d.ts +21 -0
  35. package/dist/tools/agreements.d.ts.map +1 -0
  36. package/dist/tools/agreements.js +328 -0
  37. package/dist/tools/agreements.js.map +1 -0
  38. package/dist/tools/analytics.d.ts +20 -0
  39. package/dist/tools/analytics.d.ts.map +1 -0
  40. package/dist/tools/analytics.js +126 -0
  41. package/dist/tools/analytics.js.map +1 -0
  42. package/dist/tools/assets.d.ts +23 -0
  43. package/dist/tools/assets.d.ts.map +1 -0
  44. package/dist/tools/assets.js +220 -0
  45. package/dist/tools/assets.js.map +1 -0
  46. package/dist/tools/audio-files.d.ts +21 -0
  47. package/dist/tools/audio-files.d.ts.map +1 -0
  48. package/dist/tools/audio-files.js +358 -0
  49. package/dist/tools/audio-files.js.map +1 -0
  50. package/dist/tools/bulk.d.ts +16 -0
  51. package/dist/tools/bulk.d.ts.map +1 -0
  52. package/dist/tools/bulk.js +82 -0
  53. package/dist/tools/bulk.js.map +1 -0
  54. package/dist/tools/calendar.d.ts +15 -0
  55. package/dist/tools/calendar.d.ts.map +1 -0
  56. package/dist/tools/calendar.js +69 -0
  57. package/dist/tools/calendar.js.map +1 -0
  58. package/dist/tools/collaborators.d.ts +17 -0
  59. package/dist/tools/collaborators.d.ts.map +1 -0
  60. package/dist/tools/collaborators.js +133 -0
  61. package/dist/tools/collaborators.js.map +1 -0
  62. package/dist/tools/comparisons.d.ts +22 -0
  63. package/dist/tools/comparisons.d.ts.map +1 -0
  64. package/dist/tools/comparisons.js +86 -0
  65. package/dist/tools/comparisons.js.map +1 -0
  66. package/dist/tools/credits.d.ts +17 -0
  67. package/dist/tools/credits.d.ts.map +1 -0
  68. package/dist/tools/credits.js +136 -0
  69. package/dist/tools/credits.js.map +1 -0
  70. package/dist/tools/dashboard.d.ts +20 -0
  71. package/dist/tools/dashboard.d.ts.map +1 -0
  72. package/dist/tools/dashboard.js +156 -0
  73. package/dist/tools/dashboard.js.map +1 -0
  74. package/dist/tools/directory.d.ts +15 -0
  75. package/dist/tools/directory.d.ts.map +1 -0
  76. package/dist/tools/directory.js +108 -0
  77. package/dist/tools/directory.js.map +1 -0
  78. package/dist/tools/disputes.d.ts +18 -0
  79. package/dist/tools/disputes.d.ts.map +1 -0
  80. package/dist/tools/disputes.js +66 -0
  81. package/dist/tools/disputes.js.map +1 -0
  82. package/dist/tools/documents.d.ts +15 -0
  83. package/dist/tools/documents.d.ts.map +1 -0
  84. package/dist/tools/documents.js +38 -0
  85. package/dist/tools/documents.js.map +1 -0
  86. package/dist/tools/duplicates.d.ts +16 -0
  87. package/dist/tools/duplicates.d.ts.map +1 -0
  88. package/dist/tools/duplicates.js +72 -0
  89. package/dist/tools/duplicates.js.map +1 -0
  90. package/dist/tools/enrichment.d.ts +23 -0
  91. package/dist/tools/enrichment.d.ts.map +1 -0
  92. package/dist/tools/enrichment.js +207 -0
  93. package/dist/tools/enrichment.js.map +1 -0
  94. package/dist/tools/exports.d.ts +19 -0
  95. package/dist/tools/exports.d.ts.map +1 -0
  96. package/dist/tools/exports.js +155 -0
  97. package/dist/tools/exports.js.map +1 -0
  98. package/dist/tools/health.d.ts +17 -0
  99. package/dist/tools/health.d.ts.map +1 -0
  100. package/dist/tools/health.js +69 -0
  101. package/dist/tools/health.js.map +1 -0
  102. package/dist/tools/import-documents.d.ts +21 -0
  103. package/dist/tools/import-documents.d.ts.map +1 -0
  104. package/dist/tools/import-documents.js +191 -0
  105. package/dist/tools/import-documents.js.map +1 -0
  106. package/dist/tools/import.d.ts +29 -0
  107. package/dist/tools/import.d.ts.map +1 -0
  108. package/dist/tools/import.js +404 -0
  109. package/dist/tools/import.js.map +1 -0
  110. package/dist/tools/index.d.ts +48 -0
  111. package/dist/tools/index.d.ts.map +1 -0
  112. package/dist/tools/index.js +394 -0
  113. package/dist/tools/index.js.map +1 -0
  114. package/dist/tools/integrations.d.ts +15 -0
  115. package/dist/tools/integrations.d.ts.map +1 -0
  116. package/dist/tools/integrations.js +102 -0
  117. package/dist/tools/integrations.js.map +1 -0
  118. package/dist/tools/licensing.d.ts +40 -0
  119. package/dist/tools/licensing.d.ts.map +1 -0
  120. package/dist/tools/licensing.js +436 -0
  121. package/dist/tools/licensing.js.map +1 -0
  122. package/dist/tools/memory.d.ts +21 -0
  123. package/dist/tools/memory.d.ts.map +1 -0
  124. package/dist/tools/memory.js +121 -0
  125. package/dist/tools/memory.js.map +1 -0
  126. package/dist/tools/multimedia.d.ts +19 -0
  127. package/dist/tools/multimedia.d.ts.map +1 -0
  128. package/dist/tools/multimedia.js +293 -0
  129. package/dist/tools/multimedia.js.map +1 -0
  130. package/dist/tools/notes.d.ts +21 -0
  131. package/dist/tools/notes.d.ts.map +1 -0
  132. package/dist/tools/notes.js +126 -0
  133. package/dist/tools/notes.js.map +1 -0
  134. package/dist/tools/notifications.d.ts +17 -0
  135. package/dist/tools/notifications.d.ts.map +1 -0
  136. package/dist/tools/notifications.js +117 -0
  137. package/dist/tools/notifications.js.map +1 -0
  138. package/dist/tools/people.d.ts +53 -0
  139. package/dist/tools/people.d.ts.map +1 -0
  140. package/dist/tools/people.js +534 -0
  141. package/dist/tools/people.js.map +1 -0
  142. package/dist/tools/pica-score.d.ts +15 -0
  143. package/dist/tools/pica-score.d.ts.map +1 -0
  144. package/dist/tools/pica-score.js +30 -0
  145. package/dist/tools/pica-score.js.map +1 -0
  146. package/dist/tools/projects.d.ts +19 -0
  147. package/dist/tools/projects.d.ts.map +1 -0
  148. package/dist/tools/projects.js +142 -0
  149. package/dist/tools/projects.js.map +1 -0
  150. package/dist/tools/purchases.d.ts +15 -0
  151. package/dist/tools/purchases.d.ts.map +1 -0
  152. package/dist/tools/purchases.js +65 -0
  153. package/dist/tools/purchases.js.map +1 -0
  154. package/dist/tools/recordings.d.ts +41 -0
  155. package/dist/tools/recordings.d.ts.map +1 -0
  156. package/dist/tools/recordings.js +293 -0
  157. package/dist/tools/recordings.js.map +1 -0
  158. package/dist/tools/registration.d.ts +16 -0
  159. package/dist/tools/registration.d.ts.map +1 -0
  160. package/dist/tools/registration.js +52 -0
  161. package/dist/tools/registration.js.map +1 -0
  162. package/dist/tools/releases.d.ts +18 -0
  163. package/dist/tools/releases.d.ts.map +1 -0
  164. package/dist/tools/releases.js +138 -0
  165. package/dist/tools/releases.js.map +1 -0
  166. package/dist/tools/royalties.d.ts +23 -0
  167. package/dist/tools/royalties.d.ts.map +1 -0
  168. package/dist/tools/royalties.js +263 -0
  169. package/dist/tools/royalties.js.map +1 -0
  170. package/dist/tools/search.d.ts +30 -0
  171. package/dist/tools/search.d.ts.map +1 -0
  172. package/dist/tools/search.js +117 -0
  173. package/dist/tools/search.js.map +1 -0
  174. package/dist/tools/send.d.ts +18 -0
  175. package/dist/tools/send.d.ts.map +1 -0
  176. package/dist/tools/send.js +189 -0
  177. package/dist/tools/send.js.map +1 -0
  178. package/dist/tools/sessions.d.ts +18 -0
  179. package/dist/tools/sessions.d.ts.map +1 -0
  180. package/dist/tools/sessions.js +107 -0
  181. package/dist/tools/sessions.js.map +1 -0
  182. package/dist/tools/settings.d.ts +18 -0
  183. package/dist/tools/settings.d.ts.map +1 -0
  184. package/dist/tools/settings.js +98 -0
  185. package/dist/tools/settings.js.map +1 -0
  186. package/dist/tools/share-links.d.ts +19 -0
  187. package/dist/tools/share-links.d.ts.map +1 -0
  188. package/dist/tools/share-links.js +126 -0
  189. package/dist/tools/share-links.js.map +1 -0
  190. package/dist/tools/split-sheets.d.ts +24 -0
  191. package/dist/tools/split-sheets.d.ts.map +1 -0
  192. package/dist/tools/split-sheets.js +189 -0
  193. package/dist/tools/split-sheets.js.map +1 -0
  194. package/dist/tools/team.d.ts +22 -0
  195. package/dist/tools/team.d.ts.map +1 -0
  196. package/dist/tools/team.js +139 -0
  197. package/dist/tools/team.js.map +1 -0
  198. package/dist/tools/telegram.d.ts +20 -0
  199. package/dist/tools/telegram.d.ts.map +1 -0
  200. package/dist/tools/telegram.js +94 -0
  201. package/dist/tools/telegram.js.map +1 -0
  202. package/dist/tools/uploads.d.ts +17 -0
  203. package/dist/tools/uploads.d.ts.map +1 -0
  204. package/dist/tools/uploads.js +159 -0
  205. package/dist/tools/uploads.js.map +1 -0
  206. package/dist/tools/works.d.ts +53 -0
  207. package/dist/tools/works.d.ts.map +1 -0
  208. package/dist/tools/works.js +517 -0
  209. package/dist/tools/works.js.map +1 -0
  210. package/dist/utils/credit-gate.d.ts +17 -0
  211. package/dist/utils/credit-gate.d.ts.map +1 -0
  212. package/dist/utils/credit-gate.js +111 -0
  213. package/dist/utils/credit-gate.js.map +1 -0
  214. package/dist/utils/errors.d.ts +29 -0
  215. package/dist/utils/errors.d.ts.map +1 -0
  216. package/dist/utils/errors.js +114 -0
  217. package/dist/utils/errors.js.map +1 -0
  218. package/dist/utils/formatting.d.ts +63 -0
  219. package/dist/utils/formatting.d.ts.map +1 -0
  220. package/dist/utils/formatting.js +130 -0
  221. package/dist/utils/formatting.js.map +1 -0
  222. package/dist/utils/mpp.d.ts +78 -0
  223. package/dist/utils/mpp.d.ts.map +1 -0
  224. package/dist/utils/mpp.js +136 -0
  225. package/dist/utils/mpp.js.map +1 -0
  226. package/package.json +44 -0
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Dashboard & Discovery Tools — surface what needs attention, what PICA found, and daily briefings
3
+ */
4
+ import { PicaClient } from "../pica-sdk.js";
5
+ import { ToolDefinition, ToolExecutor } from "./index.js";
6
+ export declare class DashboardTools {
7
+ private pica;
8
+ constructor(pica: PicaClient);
9
+ getTools(): Array<{
10
+ definition: ToolDefinition;
11
+ executor: ToolExecutor;
12
+ }>;
13
+ private listDiscoveries;
14
+ private pendingDiscoveries;
15
+ private reviewDiscovery;
16
+ private attentionItems;
17
+ private briefing;
18
+ private pulse;
19
+ }
20
+ //# sourceMappingURL=dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAOtE,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAsH3D,eAAe;YAiBf,kBAAkB;YAWlB,eAAe;YAaf,cAAc;YAYd,QAAQ;YAMR,KAAK;CAIpB"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Dashboard & Discovery Tools — surface what needs attention, what PICA found, and daily briefings
3
+ */
4
+ import { formatAsText, formatSuccess, formatStructuredList, } from "../utils/formatting.js";
5
+ export class DashboardTools {
6
+ pica;
7
+ constructor(pica) {
8
+ this.pica = pica;
9
+ }
10
+ getTools() {
11
+ return [
12
+ // --- Discoveries ---
13
+ {
14
+ definition: {
15
+ name: "pica_discoveries_list",
16
+ description: "What has PICA discovered? Shows system-computed findings — " +
17
+ "ISRC matches, duplicate detection, enrichment opportunities, " +
18
+ "registration gaps, and other catalog insights.",
19
+ inputSchema: {
20
+ type: "object",
21
+ properties: {
22
+ unread_only: {
23
+ type: "boolean",
24
+ description: "Only show unread discoveries (default: false)",
25
+ },
26
+ limit: {
27
+ type: "number",
28
+ description: "Max results (default 50)",
29
+ },
30
+ },
31
+ },
32
+ },
33
+ executor: this.listDiscoveries.bind(this),
34
+ },
35
+ {
36
+ definition: {
37
+ name: "pica_discoveries_pending",
38
+ description: "Get pending discoveries that need your review — " +
39
+ "accept or reject each one to update your catalog.",
40
+ inputSchema: {
41
+ type: "object",
42
+ properties: {},
43
+ },
44
+ },
45
+ executor: this.pendingDiscoveries.bind(this),
46
+ },
47
+ {
48
+ definition: {
49
+ name: "pica_discoveries_review",
50
+ description: "Accept or reject a pending discovery. " +
51
+ "Accepted discoveries update your catalog automatically.",
52
+ inputSchema: {
53
+ type: "object",
54
+ properties: {
55
+ discovery_id: {
56
+ type: "string",
57
+ description: "The discovery ID to review",
58
+ },
59
+ status: {
60
+ type: "string",
61
+ enum: ["accepted", "rejected"],
62
+ description: "Accept or reject the discovery",
63
+ },
64
+ },
65
+ required: ["discovery_id", "status"],
66
+ },
67
+ },
68
+ executor: this.reviewDiscovery.bind(this),
69
+ },
70
+ // --- Dashboard ---
71
+ {
72
+ definition: {
73
+ name: "pica_dashboard_attention",
74
+ description: "What needs my attention? Shows items requiring action — " +
75
+ "incomplete works, unsigned agreements, overdue tasks, " +
76
+ "pending invites, and quality issues.",
77
+ inputSchema: {
78
+ type: "object",
79
+ properties: {
80
+ door: {
81
+ type: "string",
82
+ enum: ["respond", "catalog"],
83
+ description: "Focus area: 'respond' for urgent items, 'catalog' for data quality",
84
+ },
85
+ limit: {
86
+ type: "number",
87
+ description: "Max items (default 10)",
88
+ },
89
+ },
90
+ },
91
+ },
92
+ executor: this.attentionItems.bind(this),
93
+ },
94
+ {
95
+ definition: {
96
+ name: "pica_dashboard_briefing",
97
+ description: "Get your daily briefing — a summary of catalog health, " +
98
+ "recent activity, upcoming deadlines, and recommended actions.",
99
+ inputSchema: {
100
+ type: "object",
101
+ properties: {},
102
+ },
103
+ },
104
+ executor: this.briefing.bind(this),
105
+ },
106
+ {
107
+ definition: {
108
+ name: "pica_dashboard_pulse",
109
+ description: "Get the pulse of your catalog — works needing attention, " +
110
+ "upcoming deadlines, provenance status, and background task progress.",
111
+ inputSchema: {
112
+ type: "object",
113
+ properties: {},
114
+ },
115
+ },
116
+ executor: this.pulse.bind(this),
117
+ },
118
+ ];
119
+ }
120
+ async listDiscoveries(args) {
121
+ const result = await this.pica.dashboard.discoveries({
122
+ unread: args.unread_only,
123
+ limit: args.limit,
124
+ });
125
+ const items = result?.data || result || [];
126
+ const unreadCount = result?.unreadCount ?? 0;
127
+ return formatStructuredList(Array.isArray(items) ? items : [], "discovery", { unreadCount });
128
+ }
129
+ async pendingDiscoveries(_args) {
130
+ const result = await this.pica.dashboard.pendingDiscoveries();
131
+ const items = result?.data || result || [];
132
+ return formatStructuredList(Array.isArray(items) ? items : [], "pending discovery");
133
+ }
134
+ async reviewDiscovery(args) {
135
+ const result = await this.pica.dashboard.reviewDiscovery(args.discovery_id, args.status);
136
+ return formatSuccess(`Discovery ${args.discovery_id} ${args.status}`, result);
137
+ }
138
+ async attentionItems(args) {
139
+ const result = await this.pica.dashboard.attentionItems({
140
+ door: args.door,
141
+ limit: args.limit,
142
+ });
143
+ const items = result?.data?.items || result?.items || [];
144
+ return formatStructuredList(Array.isArray(items) ? items : [], "attention item");
145
+ }
146
+ async briefing(_args) {
147
+ const result = await this.pica.dashboard.briefing();
148
+ const insights = result?.data?.insights || result?.insights || result;
149
+ return formatSuccess("Daily briefing", insights);
150
+ }
151
+ async pulse(_args) {
152
+ const result = await this.pica.dashboard.pulse();
153
+ return formatAsText(result);
154
+ }
155
+ }
156
+ //# sourceMappingURL=dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Directory Tools — manage directory visibility and settings
3
+ */
4
+ import { PicaClient } from "../pica-sdk.js";
5
+ import { ToolDefinition, ToolExecutor } from "./index.js";
6
+ export declare class DirectoryTools {
7
+ private pica;
8
+ constructor(pica: PicaClient);
9
+ getTools(): Array<{
10
+ definition: ToolDefinition;
11
+ executor: ToolExecutor;
12
+ }>;
13
+ private directorySettings;
14
+ }
15
+ //# sourceMappingURL=directory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/tools/directory.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YA6D3D,iBAAiB;CAkDhC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Directory Tools — manage directory visibility and settings
3
+ */
4
+ import { formatAsText, formatSuccess } from "../utils/formatting.js";
5
+ export class DirectoryTools {
6
+ pica;
7
+ constructor(pica) {
8
+ this.pica = pica;
9
+ }
10
+ getTools() {
11
+ return [
12
+ {
13
+ definition: {
14
+ name: "pica_directory_settings",
15
+ description: "Get or update your organisation's directory visibility settings. " +
16
+ "Controls whether your catalogue appears in the PICA public directory " +
17
+ "and what information is shown (audio previews, splits, publishers, etc.).",
18
+ inputSchema: {
19
+ type: "object",
20
+ properties: {
21
+ action: {
22
+ type: "string",
23
+ enum: ["get", "update"],
24
+ description: "Action to perform. 'get' returns current settings. 'update' changes settings.",
25
+ },
26
+ opted_in: {
27
+ type: "boolean",
28
+ description: "Make catalogue discoverable in the PICA directory. " +
29
+ "When true, sync supervisors and AI agents can find your recordings.",
30
+ },
31
+ show_audio_preview: {
32
+ type: "boolean",
33
+ description: "Allow audio previews in directory listings. " +
34
+ "When true, visitors can listen to your tracks.",
35
+ },
36
+ show_splits: {
37
+ type: "boolean",
38
+ description: "Show credit split percentages in directory.",
39
+ },
40
+ show_publishers: {
41
+ type: "boolean",
42
+ description: "Show publisher information in directory.",
43
+ },
44
+ show_agreements: {
45
+ type: "boolean",
46
+ description: "Show agreement details in directory.",
47
+ },
48
+ show_stems: {
49
+ type: "boolean",
50
+ description: "Show stems/instrumentals in directory.",
51
+ },
52
+ contact_enabled: {
53
+ type: "boolean",
54
+ description: "Allow licensing enquiries from the directory. " +
55
+ "When true, supervisors can send enquiries directly.",
56
+ },
57
+ },
58
+ required: ["action"],
59
+ },
60
+ },
61
+ executor: this.directorySettings.bind(this),
62
+ },
63
+ ];
64
+ }
65
+ async directorySettings(args) {
66
+ if (args.action === "get") {
67
+ const result = await this.pica.directory.getSettings();
68
+ const s = result.settings;
69
+ const status = s.opted_in ? "discoverable" : "private";
70
+ const summary = [
71
+ `Directory status: ${status}`,
72
+ `Eligible works: ${result.eligible_work_count}`,
73
+ s.show_audio_preview ? "Audio preview: on" : "Audio preview: off",
74
+ s.contact_enabled ? "Enquiries: on" : "Enquiries: off",
75
+ s.show_splits ? "Splits: visible" : "Splits: hidden",
76
+ s.show_publishers ? "Publishers: visible" : "Publishers: hidden",
77
+ ].join("\n");
78
+ return {
79
+ content: [{ type: "text", text: summary }],
80
+ structuredContent: result,
81
+ };
82
+ }
83
+ // Update
84
+ const updates = {};
85
+ const boolFields = [
86
+ "opted_in",
87
+ "show_audio_preview",
88
+ "show_splits",
89
+ "show_publishers",
90
+ "show_agreements",
91
+ "show_stems",
92
+ "contact_enabled",
93
+ ];
94
+ for (const field of boolFields) {
95
+ if (args[field] !== undefined)
96
+ updates[field] = Boolean(args[field]);
97
+ }
98
+ if (Object.keys(updates).length === 0) {
99
+ return formatAsText({
100
+ error: "No settings to update. Provide at least one setting field.",
101
+ });
102
+ }
103
+ const result = await this.pica.directory.updateSettings(updates);
104
+ const status = result.opted_in ? "discoverable" : "private";
105
+ return formatSuccess(`Directory settings updated. Your catalogue is now ${status}.`, result);
106
+ }
107
+ }
108
+ //# sourceMappingURL=directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/tools/directory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Disputes MCP Tools — ADR-139 Step 3
3
+ *
4
+ * Cross-org dispute tracking. "Do I have any disputes?"
5
+ * Read-only for now — write operations can be added later.
6
+ */
7
+ import { PicaClient } from "../pica-sdk.js";
8
+ import type { ToolDefinition, ToolExecutor } from "./index.js";
9
+ export declare class DisputesTools {
10
+ private pica;
11
+ constructor(pica: PicaClient);
12
+ getTools(): Array<{
13
+ definition: ToolDefinition;
14
+ executor: ToolExecutor;
15
+ }>;
16
+ private listDisputes;
17
+ }
18
+ //# sourceMappingURL=disputes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disputes.d.ts","sourceRoot":"","sources":["../../src/tools/disputes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAG3E,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YA0B3D,YAAY;CAoC3B"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Disputes MCP Tools — ADR-139 Step 3
3
+ *
4
+ * Cross-org dispute tracking. "Do I have any disputes?"
5
+ * Read-only for now — write operations can be added later.
6
+ */
7
+ import { formatSuccess } from "../utils/formatting.js";
8
+ export class DisputesTools {
9
+ pica;
10
+ constructor(pica) {
11
+ this.pica = pica;
12
+ }
13
+ getTools() {
14
+ return [
15
+ {
16
+ definition: {
17
+ name: "pica_disputes_list",
18
+ description: "List disputes — shows disputes received (filed against your works), " +
19
+ "disputes filed by you, and credits with disputed attestation status. " +
20
+ "Use this for questions like 'do I have any disputes?' or " +
21
+ "'are any of my credits disputed?'.",
22
+ inputSchema: {
23
+ type: "object",
24
+ properties: {
25
+ status: {
26
+ type: "string",
27
+ description: "Filter by status: open, resolved, or all (default: all)",
28
+ },
29
+ },
30
+ },
31
+ },
32
+ executor: this.listDisputes.bind(this),
33
+ },
34
+ ];
35
+ }
36
+ async listDisputes(args) {
37
+ const data = await this.pica.disputes.list({
38
+ status: args.status,
39
+ });
40
+ const received = data?.received || [];
41
+ const filed = data?.filed || [];
42
+ const disputedCredits = data?.disputed_credits || [];
43
+ const totalCount = received.length + filed.length + disputedCredits.length;
44
+ const hints = [];
45
+ if (received.length > 0) {
46
+ hints.push({
47
+ gap: "disputes_received",
48
+ suggestion: `You have ${received.length} dispute(s) filed against your works — review and respond`,
49
+ count: received.length,
50
+ severity: "critical",
51
+ });
52
+ }
53
+ if (disputedCredits.length > 0) {
54
+ hints.push({
55
+ gap: "disputed_credits",
56
+ suggestion: `${disputedCredits.length} credit(s) have disputed attestation — verify splits are correct`,
57
+ count: disputedCredits.length,
58
+ severity: "important",
59
+ });
60
+ }
61
+ return formatSuccess(totalCount > 0
62
+ ? `Found ${totalCount} dispute(s): ${received.length} received, ${filed.length} filed, ${disputedCredits.length} disputed credits`
63
+ : "No disputes found — all clear", data, hints);
64
+ }
65
+ }
66
+ //# sourceMappingURL=disputes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disputes.js","sourceRoot":"","sources":["../../src/tools/disputes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,aAAa,EAAuB,MAAM,wBAAwB,CAAC;AAE5E,MAAM,OAAO,aAAa;IAChB,IAAI,CAAa;IAEzB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EACT,sEAAsE;wBACtE,uEAAuE;wBACvE,2DAA2D;wBAC3D,oCAAoC;oBACtC,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,yDAAyD;6BAC5D;yBACF;qBACF;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;aACvC;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAyB;QAClD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACzC,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAC;QACrD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;QAE3E,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG,EAAE,mBAAmB;gBACxB,UAAU,EAAE,YAAY,QAAQ,CAAC,MAAM,2DAA2D;gBAClG,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,QAAQ,EAAE,UAAU;aACrB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC;gBACT,GAAG,EAAE,kBAAkB;gBACvB,UAAU,EAAE,GAAG,eAAe,CAAC,MAAM,kEAAkE;gBACvG,KAAK,EAAE,eAAe,CAAC,MAAM;gBAC7B,QAAQ,EAAE,WAAW;aACtB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,aAAa,CAClB,UAAU,GAAG,CAAC;YACZ,CAAC,CAAC,SAAS,UAAU,gBAAgB,QAAQ,CAAC,MAAM,cAAc,KAAK,CAAC,MAAM,WAAW,eAAe,CAAC,MAAM,mBAAmB;YAClI,CAAC,CAAC,+BAA+B,EACnC,IAAI,EACJ,KAAK,CACN,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Document Tools - MCP tools for document AI analysis
3
+ */
4
+ import { PicaClient } from "../pica-sdk.js";
5
+ import { ToolDefinition, ToolExecutor } from "./index.js";
6
+ export declare class DocumentTools {
7
+ private pica;
8
+ constructor(pica: PicaClient);
9
+ getTools(): Array<{
10
+ definition: ToolDefinition;
11
+ executor: ToolExecutor;
12
+ }>;
13
+ private analyseDocument;
14
+ }
15
+ //# sourceMappingURL=documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAyB3D,eAAe;CAM9B"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Document Tools - MCP tools for document AI analysis
3
+ */
4
+ import { formatSuccess } from "../utils/formatting.js";
5
+ export class DocumentTools {
6
+ pica;
7
+ constructor(pica) {
8
+ this.pica = pica;
9
+ }
10
+ getTools() {
11
+ return [
12
+ {
13
+ definition: {
14
+ name: "pica_documents_analyse",
15
+ description: "Trigger AI analysis on an uploaded document. Extracts metadata such as document type, " +
16
+ "agreement terms, parties, dates, and key fields. Uses AI when available (credit-gated), " +
17
+ "falls back to rule-based extraction otherwise. Upload documents first with pica_upload_file + pica_upload_complete.",
18
+ inputSchema: {
19
+ type: "object",
20
+ properties: {
21
+ id: {
22
+ type: "string",
23
+ description: "Document ID to analyse",
24
+ },
25
+ },
26
+ required: ["id"],
27
+ },
28
+ },
29
+ executor: this.analyseDocument.bind(this),
30
+ },
31
+ ];
32
+ }
33
+ async analyseDocument(args) {
34
+ const result = await this.pica.documents.analyse(args.id);
35
+ return formatSuccess(`Document ${args.id} analysed successfully.`, result);
36
+ }
37
+ }
38
+ //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,aAAa,EAAgB,MAAM,wBAAwB,CAAC;AAErE,MAAM,OAAO,aAAa;IAChB,IAAI,CAAa;IAEzB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,wBAAwB;oBAC9B,WAAW,EACT,wFAAwF;wBACxF,0FAA0F;wBAC1F,qHAAqH;oBACvH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,wBAAwB;6BACtC;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1C;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,IAAyB;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,aAAa,CAAC,YAAY,IAAI,CAAC,EAAE,yBAAyB,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Duplicate Detection & Merge Tools - MCP tools for finding and merging duplicates
3
+ */
4
+ import { PicaClient } from "../pica-sdk.js";
5
+ import { ToolDefinition, ToolExecutor } from "./index.js";
6
+ export declare class DuplicatesTools {
7
+ private pica;
8
+ constructor(pica: PicaClient);
9
+ getTools(): Array<{
10
+ definition: ToolDefinition;
11
+ executor: ToolExecutor;
12
+ }>;
13
+ private findDuplicates;
14
+ private mergeDuplicates;
15
+ }
16
+ //# sourceMappingURL=duplicates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicates.d.ts","sourceRoot":"","sources":["../../src/tools/duplicates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAOtE,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAuD3D,cAAc;YAKd,eAAe;CAgB9B"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Duplicate Detection & Merge Tools - MCP tools for finding and merging duplicates
3
+ */
4
+ import { formatAsText, formatSuccess, formatValidationError, } from "../utils/formatting.js";
5
+ export class DuplicatesTools {
6
+ pica;
7
+ constructor(pica) {
8
+ this.pica = pica;
9
+ }
10
+ getTools() {
11
+ return [
12
+ {
13
+ definition: {
14
+ name: "pica_find_duplicates",
15
+ description: "Detect duplicate works or people in the catalog by exact title/name match. Returns groups of duplicates with suggested winners. " +
16
+ "→ then: pica_merge_duplicates (merge confirmed duplicates)",
17
+ inputSchema: {
18
+ type: "object",
19
+ properties: {
20
+ entity_type: {
21
+ type: "string",
22
+ enum: ["works", "people"],
23
+ description: "Type of entity to check for duplicates",
24
+ },
25
+ },
26
+ required: ["entity_type"],
27
+ },
28
+ },
29
+ executor: this.findDuplicates.bind(this),
30
+ },
31
+ {
32
+ definition: {
33
+ name: "pica_merge_duplicates",
34
+ description: "Merge duplicate works or people into a single winner. Moves all credits, recordings, agreements, and metadata to the winner. Requires admin scope.",
35
+ inputSchema: {
36
+ type: "object",
37
+ properties: {
38
+ entity_type: {
39
+ type: "string",
40
+ enum: ["work", "person"],
41
+ description: "Type of entity to merge",
42
+ },
43
+ winner_id: {
44
+ type: "string",
45
+ description: "ID of the entity to keep (all data will be merged into this one)",
46
+ },
47
+ loser_ids: {
48
+ type: "array",
49
+ items: { type: "string" },
50
+ description: "IDs of duplicate entities to merge into the winner and then delete",
51
+ },
52
+ },
53
+ required: ["entity_type", "winner_id", "loser_ids"],
54
+ },
55
+ },
56
+ executor: this.mergeDuplicates.bind(this),
57
+ },
58
+ ];
59
+ }
60
+ async findDuplicates(args) {
61
+ const result = await this.pica.duplicates.findDuplicates(args.entity_type);
62
+ return formatAsText(result);
63
+ }
64
+ async mergeDuplicates(args) {
65
+ if (!args.loser_ids?.length) {
66
+ return formatValidationError({ loser_ids: "must be a non-empty array" });
67
+ }
68
+ const result = await this.pica.duplicates.merge(args.entity_type, args.winner_id, args.loser_ids);
69
+ return formatSuccess(`Merged ${args.loser_ids.length} duplicate ${args.entity_type}(s) into ${args.winner_id}`, result);
70
+ }
71
+ }
72
+ //# sourceMappingURL=duplicates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicates.js","sourceRoot":"","sources":["../../src/tools/duplicates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,OAAO,eAAe;IAClB,IAAI,CAAa;IAEzB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EACT,kIAAkI;wBAClI,4DAA4D;oBAC9D,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;gCACzB,WAAW,EAAE,wCAAwC;6BACtD;yBACF;wBACD,QAAQ,EAAE,CAAC,aAAa,CAAC;qBAC1B;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;aACzC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,uBAAuB;oBAC7B,WAAW,EACT,oJAAoJ;oBACtJ,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;gCACxB,WAAW,EAAE,yBAAyB;6BACvC;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,kEAAkE;6BACrE;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EACT,oEAAoE;6BACvE;yBACF;wBACD,QAAQ,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC;qBACpD;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1C;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,IAAyB;QACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3E,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,IAAyB;QAEzB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAC5B,OAAO,qBAAqB,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAC7C,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,CACf,CAAC;QACF,OAAO,aAAa,CAClB,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,cAAc,IAAI,CAAC,WAAW,YAAY,IAAI,CAAC,SAAS,EAAE,EACzF,MAAM,CACP,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Enrichment Tools - MCP tools for triggering and checking enrichment
3
+ */
4
+ import { PicaClient } from "../pica-sdk.js";
5
+ import { ToolDefinition, ToolExecutor } from "./index.js";
6
+ export declare class EnrichmentTools {
7
+ private pica;
8
+ constructor(pica: PicaClient);
9
+ getTools(): Array<{
10
+ definition: ToolDefinition;
11
+ executor: ToolExecutor;
12
+ }>;
13
+ private enrichWork;
14
+ private enrichPerson;
15
+ private enrichmentStatus;
16
+ private enrichmentCandidates;
17
+ private enrichWorkMlc;
18
+ private enrichWorkMusicBrainz;
19
+ private enrichWorkDiscogs;
20
+ private enrichWorkSpotify;
21
+ private enrichWorkYouTube;
22
+ }
23
+ //# sourceMappingURL=enrichment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrichment.d.ts","sourceRoot":"","sources":["../../src/tools/enrichment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAItE,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAwL3D,UAAU;YAQV,YAAY;YAQZ,gBAAgB;YAShB,oBAAoB;YAOpB,aAAa;YAQb,qBAAqB;YASrB,iBAAiB;YAOjB,iBAAiB;YAUjB,iBAAiB;CAShC"}