@withpica/mcp-server 2.5.1 → 2.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/assets/fonts/GeistSans-Light.woff2 +0 -0
  2. package/assets/fonts/InstrumentSerif-Italic.woff2 +0 -0
  3. package/assets/fonts/InstrumentSerif-Regular.woff2 +0 -0
  4. package/dist/apps/briefing.d.ts +2 -0
  5. package/dist/apps/briefing.d.ts.map +1 -0
  6. package/dist/apps/briefing.js +308 -0
  7. package/dist/apps/briefing.js.map +1 -0
  8. package/dist/apps/generated/shared-bundle.d.ts +5 -0
  9. package/dist/apps/generated/shared-bundle.d.ts.map +1 -0
  10. package/dist/apps/generated/shared-bundle.js +7 -0
  11. package/dist/apps/generated/shared-bundle.js.map +1 -0
  12. package/dist/apps/shared.d.ts +4 -0
  13. package/dist/apps/shared.d.ts.map +1 -0
  14. package/dist/apps/shared.js +268 -0
  15. package/dist/apps/shared.js.map +1 -0
  16. package/dist/config.d.ts +3 -25
  17. package/dist/config.d.ts.map +1 -1
  18. package/dist/config.js +25 -12
  19. package/dist/config.js.map +1 -1
  20. package/dist/index.js +3 -3
  21. package/dist/index.js.map +1 -1
  22. package/dist/pica-sdk.d.ts +11 -0
  23. package/dist/pica-sdk.d.ts.map +1 -1
  24. package/dist/pica-sdk.js +16 -0
  25. package/dist/pica-sdk.js.map +1 -1
  26. package/dist/prompts/index.js +24 -24
  27. package/dist/prompts/index.js.map +1 -1
  28. package/dist/resources/index.d.ts +3 -1
  29. package/dist/resources/index.d.ts.map +1 -1
  30. package/dist/resources/index.js +101 -53
  31. package/dist/resources/index.js.map +1 -1
  32. package/dist/resources/llms-primer.d.ts +1 -1
  33. package/dist/resources/llms-primer.d.ts.map +1 -1
  34. package/dist/resources/llms-primer.js +4 -4
  35. package/dist/server-instructions.d.ts +9 -0
  36. package/dist/server-instructions.d.ts.map +1 -0
  37. package/dist/server-instructions.js +34 -0
  38. package/dist/server-instructions.js.map +1 -0
  39. package/dist/server.d.ts +4 -0
  40. package/dist/server.d.ts.map +1 -1
  41. package/dist/server.js +30 -8
  42. package/dist/server.js.map +1 -1
  43. package/dist/tools/agreement-types.d.ts +9 -19
  44. package/dist/tools/agreement-types.d.ts.map +1 -1
  45. package/dist/tools/agreement-types.js +201 -417
  46. package/dist/tools/agreement-types.js.map +1 -1
  47. package/dist/tools/agreements.d.ts +2 -3
  48. package/dist/tools/agreements.d.ts.map +1 -1
  49. package/dist/tools/agreements.js +71 -51
  50. package/dist/tools/agreements.js.map +1 -1
  51. package/dist/tools/app-tools.d.ts +18 -0
  52. package/dist/tools/app-tools.d.ts.map +1 -0
  53. package/dist/tools/app-tools.js +87 -0
  54. package/dist/tools/app-tools.js.map +1 -0
  55. package/dist/tools/assets.d.ts +1 -3
  56. package/dist/tools/assets.d.ts.map +1 -1
  57. package/dist/tools/assets.js +63 -45
  58. package/dist/tools/assets.js.map +1 -1
  59. package/dist/tools/audio-files.d.ts +2 -3
  60. package/dist/tools/audio-files.d.ts.map +1 -1
  61. package/dist/tools/audio-files.js +61 -33
  62. package/dist/tools/audio-files.js.map +1 -1
  63. package/dist/tools/auth.d.ts +20 -0
  64. package/dist/tools/auth.d.ts.map +1 -0
  65. package/dist/tools/auth.js +195 -0
  66. package/dist/tools/auth.js.map +1 -0
  67. package/dist/tools/collaborators.js +1 -1
  68. package/dist/tools/collaborators.js.map +1 -1
  69. package/dist/tools/credits.d.ts.map +1 -1
  70. package/dist/tools/credits.js +129 -18
  71. package/dist/tools/credits.js.map +1 -1
  72. package/dist/tools/dashboard.d.ts +1 -2
  73. package/dist/tools/dashboard.d.ts.map +1 -1
  74. package/dist/tools/dashboard.js +19 -27
  75. package/dist/tools/dashboard.js.map +1 -1
  76. package/dist/tools/duplicates.d.ts.map +1 -1
  77. package/dist/tools/duplicates.js +15 -0
  78. package/dist/tools/duplicates.js.map +1 -1
  79. package/dist/tools/enrichment.d.ts +0 -3
  80. package/dist/tools/enrichment.d.ts.map +1 -1
  81. package/dist/tools/enrichment.js +17 -120
  82. package/dist/tools/enrichment.js.map +1 -1
  83. package/dist/tools/import-documents.d.ts +3 -3
  84. package/dist/tools/import-documents.d.ts.map +1 -1
  85. package/dist/tools/import-documents.js +64 -50
  86. package/dist/tools/import-documents.js.map +1 -1
  87. package/dist/tools/import.d.ts +1 -0
  88. package/dist/tools/import.d.ts.map +1 -1
  89. package/dist/tools/import.js +63 -1
  90. package/dist/tools/import.js.map +1 -1
  91. package/dist/tools/index.d.ts +44 -3
  92. package/dist/tools/index.d.ts.map +1 -1
  93. package/dist/tools/index.js +410 -81
  94. package/dist/tools/index.js.map +1 -1
  95. package/dist/tools/metadata.d.ts +15 -0
  96. package/dist/tools/metadata.d.ts.map +1 -0
  97. package/dist/tools/metadata.js +1057 -0
  98. package/dist/tools/metadata.js.map +1 -0
  99. package/dist/tools/people.d.ts +4 -12
  100. package/dist/tools/people.d.ts.map +1 -1
  101. package/dist/tools/people.js +151 -109
  102. package/dist/tools/people.js.map +1 -1
  103. package/dist/tools/publishers.d.ts +16 -0
  104. package/dist/tools/publishers.d.ts.map +1 -0
  105. package/dist/tools/publishers.js +69 -0
  106. package/dist/tools/publishers.js.map +1 -0
  107. package/dist/tools/recordings.d.ts +8 -8
  108. package/dist/tools/recordings.d.ts.map +1 -1
  109. package/dist/tools/recordings.js +123 -48
  110. package/dist/tools/recordings.js.map +1 -1
  111. package/dist/tools/recovery-hints.d.ts +14 -0
  112. package/dist/tools/recovery-hints.d.ts.map +1 -0
  113. package/dist/tools/recovery-hints.js +277 -0
  114. package/dist/tools/recovery-hints.js.map +1 -0
  115. package/dist/tools/royalties.js +1 -1
  116. package/dist/tools/royalties.js.map +1 -1
  117. package/dist/tools/search.js +2 -2
  118. package/dist/tools/search.js.map +1 -1
  119. package/dist/tools/send.d.ts +1 -2
  120. package/dist/tools/send.d.ts.map +1 -1
  121. package/dist/tools/send.js +19 -27
  122. package/dist/tools/send.js.map +1 -1
  123. package/dist/tools/split-sheets.d.ts.map +1 -1
  124. package/dist/tools/split-sheets.js +12 -0
  125. package/dist/tools/split-sheets.js.map +1 -1
  126. package/dist/tools/works.d.ts +4 -12
  127. package/dist/tools/works.d.ts.map +1 -1
  128. package/dist/tools/works.js +203 -116
  129. package/dist/tools/works.js.map +1 -1
  130. package/dist/utils/audit.d.ts +28 -0
  131. package/dist/utils/audit.d.ts.map +1 -0
  132. package/dist/utils/audit.js +28 -0
  133. package/dist/utils/audit.js.map +1 -0
  134. package/dist/utils/confirmation.d.ts +12 -0
  135. package/dist/utils/confirmation.d.ts.map +1 -0
  136. package/dist/utils/confirmation.js +78 -0
  137. package/dist/utils/confirmation.js.map +1 -0
  138. package/dist/utils/credentials.d.ts +11 -0
  139. package/dist/utils/credentials.d.ts.map +1 -0
  140. package/dist/utils/credentials.js +47 -0
  141. package/dist/utils/credentials.js.map +1 -0
  142. package/dist/utils/enrichment-format.d.ts +31 -0
  143. package/dist/utils/enrichment-format.d.ts.map +1 -0
  144. package/dist/utils/enrichment-format.js +69 -0
  145. package/dist/utils/enrichment-format.js.map +1 -0
  146. package/dist/utils/errors.d.ts.map +1 -1
  147. package/dist/utils/errors.js +29 -5
  148. package/dist/utils/errors.js.map +1 -1
  149. package/dist/utils/formatting.d.ts +1 -0
  150. package/dist/utils/formatting.d.ts.map +1 -1
  151. package/dist/utils/formatting.js +30 -2
  152. package/dist/utils/formatting.js.map +1 -1
  153. package/package.json +3 -1
  154. package/scripts/bundle-apps.ts +61 -0
@@ -24,7 +24,7 @@ export class CreditsTools {
24
24
  definition: {
25
25
  name: "pica_credits_list",
26
26
  description: "Get all credits (collaborators, roles, and splits) for a specific work. Returns who wrote, composed, arranged, or produced the work and their percentage splits. " +
27
- "→ then: pica_credits_update (fix credits), pica_people_get_full (inspect a credited person)",
27
+ "→ then: pica_credits_update (fix credits), pica_people_inspect (inspect a credited person)",
28
28
  inputSchema: {
29
29
  type: "object",
30
30
  properties: {
@@ -41,8 +41,11 @@ export class CreditsTools {
41
41
  {
42
42
  definition: {
43
43
  name: "pica_credits_update",
44
- description: "Set credits on a work. Replaces all existing credits. Splits must total 100%. Roles: writer, composer, arranger, lyricist, producer, performer. " +
45
- " then: pica_work_completeness (check progress), pica_registration_coverage (check if now registrable)",
44
+ description: "Set credits on a work. Replaces all existing credits. Splits must total 100%. " +
45
+ "15 roles: writer, composer, arranger, lyricist, producer, performer, engineer, mixer, mastering, owner, vocalist, instrumentalist, conductor, programmer, remixer. " +
46
+ "Supports publisher fields (publisher_name, publisher_ipi, publisher_split_percentage) and territory/rights metadata. " +
47
+ "IMPORTANT: After updating, call pica_credits_list to verify the credits actually persisted — silent failures are possible if roles are invalid. " +
48
+ "→ then: pica_credits_list (verify saved), pica_works_inspect (check progress)",
46
49
  inputSchema: {
47
50
  type: "object",
48
51
  properties: {
@@ -62,7 +65,7 @@ export class CreditsTools {
62
65
  },
63
66
  role: {
64
67
  type: "string",
65
- description: "Comma-separated roles: writer, composer, arranger, lyricist, producer, performer",
68
+ description: "Role: writer, composer, arranger, lyricist, producer, performer, engineer, mixer, mastering, owner, vocalist, instrumentalist, conductor, programmer, remixer",
66
69
  enum: [
67
70
  "writer",
68
71
  "composer",
@@ -70,12 +73,56 @@ export class CreditsTools {
70
73
  "lyricist",
71
74
  "producer",
72
75
  "performer",
76
+ "engineer",
77
+ "mixer",
78
+ "mastering",
79
+ "owner",
80
+ "vocalist",
81
+ "instrumentalist",
82
+ "conductor",
83
+ "programmer",
84
+ "remixer",
73
85
  ],
74
86
  },
75
87
  splits: {
76
88
  type: "number",
77
89
  description: "Percentage split (0-100). All splits must total 100%.",
78
90
  },
91
+ publisher_name: {
92
+ type: "string",
93
+ description: "Publisher name for this credit (optional — for publishing credits)",
94
+ },
95
+ publisher_ipi: {
96
+ type: "string",
97
+ description: "Publisher's IPI number (9-11 digits)",
98
+ },
99
+ publisher_split_percentage: {
100
+ type: "number",
101
+ description: "Publisher's share percentage (0-100). Separate from writer split.",
102
+ },
103
+ territory: {
104
+ type: "array",
105
+ items: { type: "string" },
106
+ description: 'Territories where this credit applies (e.g., ["worldwide"], ["UK", "US"]). Default: ["worldwide"].',
107
+ },
108
+ rights_type: {
109
+ type: "string",
110
+ enum: [
111
+ "all",
112
+ "performing",
113
+ "mechanical",
114
+ "synchronization",
115
+ ],
116
+ description: "Type of rights covered. Default: all.",
117
+ },
118
+ start_date: {
119
+ type: "string",
120
+ description: "When rights start (ISO date). Null = from inception.",
121
+ },
122
+ end_date: {
123
+ type: "string",
124
+ description: "When rights end (ISO date). Null = perpetual.",
125
+ },
79
126
  },
80
127
  required: ["person_id", "role", "splits"],
81
128
  },
@@ -99,12 +146,14 @@ export class CreditsTools {
99
146
  }
100
147
  async listCredits(args) {
101
148
  // Fetch both publishing collaborators and recording credits
102
- const [collaborators, recordingCredits] = await Promise.all([
103
- this.pica.credits
104
- .listCollaborators(args.work_id)
105
- .catch(() => ({ collaborators: [], count: 0 })),
149
+ const [collabSettled, creditsSettled] = await Promise.allSettled([
150
+ this.pica.credits.listCollaborators(args.work_id),
106
151
  this.pica.credits.listForWork(args.work_id),
107
152
  ]);
153
+ const collaborators = collabSettled.status === "fulfilled"
154
+ ? collabSettled.value
155
+ : { collaborators: [], count: 0 };
156
+ const recordingCredits = creditsSettled.status === "fulfilled" ? creditsSettled.value : [];
108
157
  // Merge both into a single list
109
158
  const collabArray = Array.isArray(collaborators)
110
159
  ? collaborators
@@ -138,18 +187,39 @@ export class CreditsTools {
138
187
  "lyricist",
139
188
  "arranger",
140
189
  ]);
141
- const allCredits = args.credits.map((c) => ({
142
- person_id: c.person_id,
143
- role: c.role,
144
- splits: c.splits || 0,
145
- }));
146
- const publishingCredits = allCredits.filter((c) => PUBLISHING_ROLES.has((c.role || "writer").split(", ")[0].trim()));
147
- const recordingCredits = allCredits.filter((c) => !PUBLISHING_ROLES.has((c.role || "writer").split(", ")[0].trim()));
190
+ const allCredits = args.credits.map((c) => {
191
+ const credit = {
192
+ person_id: c.person_id,
193
+ role: c.role,
194
+ splits: c.splits || 0,
195
+ };
196
+ if (c.publisher_name)
197
+ credit.publisher_name = c.publisher_name;
198
+ if (c.publisher_ipi)
199
+ credit.publisher_ipi = c.publisher_ipi;
200
+ if (c.publisher_split_percentage !== undefined)
201
+ credit.publisher_split_percentage = c.publisher_split_percentage;
202
+ if (c.territory)
203
+ credit.territory = c.territory;
204
+ if (c.rights_type)
205
+ credit.rights_type = c.rights_type;
206
+ if (c.start_date)
207
+ credit.start_date = c.start_date;
208
+ if (c.end_date)
209
+ credit.end_date = c.end_date;
210
+ return credit;
211
+ });
212
+ const publishingCredits = allCredits.filter((c) => PUBLISHING_ROLES.has(String(c.role || "writer")
213
+ .split(", ")[0]
214
+ .trim()));
215
+ const recordingCredits = allCredits.filter((c) => !PUBLISHING_ROLES.has(String(c.role || "writer")
216
+ .split(", ")[0]
217
+ .trim()));
148
218
  let credits;
149
219
  // Route to correct endpoint(s)
150
220
  if (publishingCredits.length > 0 && recordingCredits.length > 0) {
151
- // Mixed — call both endpoints
152
- const [collabResult, creditResult] = await Promise.all([
221
+ // Mixed — call both endpoints, use allSettled so a partial failure is reported not silently swallowed
222
+ const [pubSettled, recSettled] = await Promise.allSettled([
153
223
  this.pica.credits.updateCollaborators(args.work_id, {
154
224
  credits: publishingCredits,
155
225
  }),
@@ -157,7 +227,48 @@ export class CreditsTools {
157
227
  credits: recordingCredits,
158
228
  }),
159
229
  ]);
160
- credits = { collaborators: collabResult, credits: creditResult };
230
+ const pubResult = pubSettled.status === "fulfilled" ? pubSettled.value : null;
231
+ const recResult = recSettled.status === "fulfilled" ? recSettled.value : null;
232
+ const pubError = pubSettled.status === "rejected"
233
+ ? pubSettled.reason
234
+ : null;
235
+ const recError = recSettled.status === "rejected"
236
+ ? recSettled.reason
237
+ : null;
238
+ if (pubError && recError) {
239
+ return {
240
+ content: [
241
+ {
242
+ type: "text",
243
+ text: `both publishing and recording credits failed to save — publishing error: ${pubError?.message ?? pubError}, recording error: ${recError?.message ?? recError}`,
244
+ },
245
+ ],
246
+ isError: true,
247
+ };
248
+ }
249
+ if (pubError) {
250
+ return {
251
+ content: [
252
+ {
253
+ type: "text",
254
+ text: `recording credits updated, but publishing credits failed — ${pubError?.message ?? pubError}. retry the publishing portion.`,
255
+ },
256
+ ],
257
+ isError: true,
258
+ };
259
+ }
260
+ if (recError) {
261
+ return {
262
+ content: [
263
+ {
264
+ type: "text",
265
+ text: `publishing credits updated, but recording credits failed — ${recError?.message ?? recError}. retry the recording portion.`,
266
+ },
267
+ ],
268
+ isError: true,
269
+ };
270
+ }
271
+ credits = { collaborators: pubResult, credits: recResult };
161
272
  }
162
273
  else if (publishingCredits.length > 0) {
163
274
  credits = await this.pica.credits.updateCollaborators(args.work_id, {
@@ -1 +1 @@
1
- {"version":3,"file":"credits.js","sourceRoot":"","sources":["../../src/tools/credits.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credits.js","sourceRoot":"","sources":["../../src/tools/credits.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,7 @@ export declare class DashboardTools {
10
10
  definition: ToolDefinition;
11
11
  executor: ToolExecutor;
12
12
  }>;
13
- private listDiscoveries;
14
- private pendingDiscoveries;
13
+ private queryDiscoveries;
15
14
  private reviewDiscovery;
16
15
  private attentionItems;
17
16
  private briefing;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"AAEA;;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"}
1
+ {"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"AAEA;;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;YA2G3D,gBAAgB;YA8BhB,eAAe;YAaf,cAAc;YAYd,QAAQ;YAMR,KAAK;CAIpB"}
@@ -10,16 +10,17 @@ export class DashboardTools {
10
10
  // --- Discoveries ---
11
11
  {
12
12
  definition: {
13
- name: "pica_discoveries_list",
14
- description: "What has PICA discovered? Shows system-computed findings " +
15
- "ISRC matches, duplicate detection, enrichment opportunities, " +
16
- "registration gaps, and other catalog insights.",
13
+ name: "pica_discoveries_query",
14
+ description: "Query discoveries system-computed findings like ISRC matches, " +
15
+ "duplicate detection, enrichment opportunities, and registration gaps. " +
16
+ "Filter by status to see all, pending (needing review), or reviewed items.",
17
17
  inputSchema: {
18
18
  type: "object",
19
19
  properties: {
20
- unread_only: {
21
- type: "boolean",
22
- description: "Only show unread discoveries (default: false)",
20
+ status: {
21
+ type: "string",
22
+ enum: ["all", "pending", "reviewed"],
23
+ description: "Filter by status: 'all' for everything, 'pending' for items needing review, 'reviewed' for already-handled (default: all)",
23
24
  },
24
25
  limit: {
25
26
  type: "number",
@@ -28,19 +29,7 @@ export class DashboardTools {
28
29
  },
29
30
  },
30
31
  },
31
- executor: this.listDiscoveries.bind(this),
32
- },
33
- {
34
- definition: {
35
- name: "pica_discoveries_pending",
36
- description: "Get pending discoveries that need your review — " +
37
- "accept or reject each one to update your catalog.",
38
- inputSchema: {
39
- type: "object",
40
- properties: {},
41
- },
42
- },
43
- executor: this.pendingDiscoveries.bind(this),
32
+ executor: this.queryDiscoveries.bind(this),
44
33
  },
45
34
  {
46
35
  definition: {
@@ -115,20 +104,23 @@ export class DashboardTools {
115
104
  },
116
105
  ];
117
106
  }
118
- async listDiscoveries(args) {
107
+ async queryDiscoveries(args) {
108
+ const status = args.status || "all";
109
+ // "pending" delegates to the dedicated pending endpoint
110
+ if (status === "pending") {
111
+ const result = await this.pica.dashboard.pendingDiscoveries();
112
+ const items = result?.data || result || [];
113
+ return formatStructuredList(Array.isArray(items) ? items : [], "pending discovery");
114
+ }
115
+ // "all" or "reviewed" use the general discoveries endpoint
119
116
  const result = await this.pica.dashboard.discoveries({
120
- unread: args.unread_only,
117
+ unread: status === "all" ? undefined : false,
121
118
  limit: args.limit,
122
119
  });
123
120
  const items = result?.data || result || [];
124
121
  const unreadCount = result?.unreadCount ?? 0;
125
122
  return formatStructuredList(Array.isArray(items) ? items : [], "discovery", { unreadCount });
126
123
  }
127
- async pendingDiscoveries(_args) {
128
- const result = await this.pica.dashboard.pendingDiscoveries();
129
- const items = result?.data || result || [];
130
- return formatStructuredList(Array.isArray(items) ? items : [], "pending discovery");
131
- }
132
124
  async reviewDiscovery(args) {
133
125
  const result = await this.pica.dashboard.reviewDiscovery(args.discovery_id, args.status);
134
126
  return formatSuccess(`Discovery ${args.discovery_id} ${args.status}`, result);
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"duplicates.d.ts","sourceRoot":"","sources":["../../src/tools/duplicates.ts"],"names":[],"mappings":"AAEA;;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"}
1
+ {"version":3,"file":"duplicates.d.ts","sourceRoot":"","sources":["../../src/tools/duplicates.ts"],"names":[],"mappings":"AAEA;;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;CA+B9B"}
@@ -63,6 +63,21 @@ export class DuplicatesTools {
63
63
  if (!args.loser_ids?.length) {
64
64
  return formatValidationError({ loser_ids: "must be a non-empty array" });
65
65
  }
66
+ const loserIds = args.loser_ids;
67
+ if (loserIds && loserIds.length > 25) {
68
+ return {
69
+ content: [{
70
+ type: "text",
71
+ text: JSON.stringify({
72
+ error: "VALIDATION_ERROR",
73
+ message: `maximum 25 loser IDs per merge — received ${loserIds.length}`,
74
+ retry_safe: false,
75
+ suggestion: "split into multiple merge operations with 25 or fewer IDs each",
76
+ }, null, 2),
77
+ }],
78
+ isError: true,
79
+ };
80
+ }
66
81
  const result = await this.pica.duplicates.merge(args.entity_type, args.winner_id, args.loser_ids);
67
82
  return formatSuccess(`Merged ${args.loser_ids.length} duplicate ${args.entity_type}(s) into ${args.winner_id}`, result);
68
83
  }
@@ -1 +1 @@
1
- {"version":3,"file":"duplicates.js","sourceRoot":"","sources":["../../src/tools/duplicates.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAQ7D,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"}
1
+ {"version":3,"file":"duplicates.js","sourceRoot":"","sources":["../../src/tools/duplicates.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,6 @@ export declare class EnrichmentTools {
10
10
  definition: ToolDefinition;
11
11
  executor: ToolExecutor;
12
12
  }>;
13
- private enrichWork;
14
- private enrichPerson;
15
- private enrichmentStatus;
16
13
  private enrichmentCandidates;
17
14
  private enrichWorkMlc;
18
15
  private enrichWorkMusicBrainz;
@@ -1 +1 @@
1
- {"version":3,"file":"enrichment.d.ts","sourceRoot":"","sources":["../../src/tools/enrichment.ts"],"names":[],"mappings":"AAEA;;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;YAwM3D,UAAU;YAQV,YAAY;YAQZ,gBAAgB;YAShB,oBAAoB;YAOpB,aAAa;YAQb,qBAAqB;YASrB,iBAAiB;YAOjB,iBAAiB;YAgEjB,iBAAiB;CAShC"}
1
+ {"version":3,"file":"enrichment.d.ts","sourceRoot":"","sources":["../../src/tools/enrichment.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAKtE,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;YA4H3D,oBAAoB;YAOpB,aAAa;YAKb,qBAAqB;YASrB,iBAAiB;YAOjB,iBAAiB;YAuBjB,iBAAiB;CAMhC"}
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
2
  import { formatAsText, formatSuccess } from "../utils/formatting.js";
3
3
  import { withCreditGate } from "../utils/credit-gate.js";
4
+ import { formatEnrichmentResult } from "../utils/enrichment-format.js";
4
5
  export class EnrichmentTools {
5
6
  pica;
6
7
  constructor(pica) {
@@ -8,64 +9,11 @@ export class EnrichmentTools {
8
9
  }
9
10
  getTools() {
10
11
  return [
11
- {
12
- definition: {
13
- name: "pica_enrich_work",
14
- description: "Trigger enrichment for a work (fetches data from MLC, MusicBrainz, etc.). " +
15
- "→ then: pica_enrichment_status (check results), pica_work_completeness (verify improvement) Costs 1 pica credit (MLC lookup).",
16
- inputSchema: {
17
- type: "object",
18
- properties: {
19
- work_id: {
20
- type: "string",
21
- description: "The work ID to enrich",
22
- },
23
- },
24
- required: ["work_id"],
25
- },
26
- },
27
- executor: withCreditGate(this.pica, "external_mlc_lookup", "work enrichment (MLC)", this.enrichWork.bind(this)),
28
- },
29
- {
30
- definition: {
31
- name: "pica_enrich_person",
32
- description: "Trigger enrichment for a person (fetches data from ISNI, MusicBrainz, etc.). " +
33
- "→ then: pica_people_get_full (verify results) Costs 1 pica credit (MLC lookup). ISNI and MusicBrainz are free.",
34
- inputSchema: {
35
- type: "object",
36
- properties: {
37
- person_id: {
38
- type: "string",
39
- description: "The person ID to enrich",
40
- },
41
- },
42
- required: ["person_id"],
43
- },
44
- },
45
- executor: withCreditGate(this.pica, "external_mlc_lookup", "person enrichment", this.enrichPerson.bind(this)),
46
- },
47
- {
48
- definition: {
49
- name: "pica_enrichment_status",
50
- description: "Check the enrichment status for a specific work (what sources have been checked, what data was found)",
51
- inputSchema: {
52
- type: "object",
53
- properties: {
54
- work_id: {
55
- type: "string",
56
- description: "The work ID to check",
57
- },
58
- },
59
- required: ["work_id"],
60
- },
61
- },
62
- executor: this.enrichmentStatus.bind(this),
63
- },
64
12
  {
65
13
  definition: {
66
14
  name: "pica_enrichment_candidates",
67
15
  description: "Find works and people that are candidates for enrichment (missing external identifiers or metadata). " +
68
- "→ then: pica_enrich_work (enrich a work), pica_enrich_person (enrich a person)",
16
+ "→ then: pica_enrich_work_spotify (enrich from Spotify), pica_enrich_work_mlc (enrich from MLC)",
69
17
  inputSchema: {
70
18
  type: "object",
71
19
  properties: {},
@@ -95,7 +43,7 @@ export class EnrichmentTools {
95
43
  definition: {
96
44
  name: "pica_enrich_work_musicbrainz",
97
45
  description: "Look up MusicBrainz for release data, artist info, and cross-references for a work. " +
98
- "Returns a preview of what MusicBrainz knows — use pica_enrich_work to apply changes.",
46
+ "Returns release data, artist info, and cross-references.",
99
47
  inputSchema: {
100
48
  type: "object",
101
49
  properties: {
@@ -113,7 +61,7 @@ export class EnrichmentTools {
113
61
  definition: {
114
62
  name: "pica_enrich_work_discogs",
115
63
  description: "Search Discogs for release data, label, format, and catalogue numbers for a work. " +
116
- "Returns a preview of matches — use pica_enrich_work to apply changes.",
64
+ "Returns a preview of matches.",
117
65
  inputSchema: {
118
66
  type: "object",
119
67
  properties: {
@@ -130,13 +78,9 @@ export class EnrichmentTools {
130
78
  {
131
79
  definition: {
132
80
  name: "pica_enrich_work_spotify",
133
- description: "Enrich works from Spotify. Accepts a work ID, a Spotify URL, or both.\n\n" +
134
- " work_id only enriches that work (must have spotify_track_uri linked already)\n" +
135
- " spotify_url only accepts any Spotify URL (track, album, or playlist). " +
136
- "Matches tracks against existing catalog works, enriches matches, creates new works for unmatched tracks. " +
137
- "Two-step: omit confirm to preview, set confirm: true to execute.\n" +
138
- "• work_id + spotify_url — links the track URI to the work, then enriches it (no pre-link needed)\n\n" +
139
- "→ then: pica_work_completeness (check gaps), pica_credits_update (add songwriting credits)",
81
+ description: "Enrich a work from Spotify pulls track metadata, popularity, and streaming data. " +
82
+ "Optionally pass spotify_url to link the track URI before enriching. " +
83
+ " then: pica_works_inspect (check what changed), pica_credits_update (add credits)",
140
84
  inputSchema: {
141
85
  type: "object",
142
86
  properties: {
@@ -146,15 +90,10 @@ export class EnrichmentTools {
146
90
  },
147
91
  spotify_url: {
148
92
  type: "string",
149
- description: "Any Spotify URL or URI track, album, or playlist. " +
150
- "Examples: https://open.spotify.com/album/4aawyAB9vmqN3uQ7FjRGTy, " +
151
- "spotify:track:6rqhFgbbKwnb9MLmUQDhG6",
152
- },
153
- confirm: {
154
- type: "boolean",
155
- description: "For URL mode: set true to execute import/enrich. Omit or false to preview first.",
93
+ description: "Optional Spotify URL or URI to link before enriching",
156
94
  },
157
95
  },
96
+ required: ["work_id"],
158
97
  },
159
98
  },
160
99
  executor: this.enrichWorkSpotify.bind(this),
@@ -179,79 +118,37 @@ export class EnrichmentTools {
179
118
  },
180
119
  ];
181
120
  }
182
- async enrichWork(args) {
183
- const result = await this.pica.enrichment.enrichWork(args.work_id);
184
- return formatSuccess(`Enrichment triggered for work ${args.work_id}`, result);
185
- }
186
- async enrichPerson(args) {
187
- const result = await this.pica.enrichment.enrichPerson(args.person_id);
188
- return formatSuccess(`Enrichment triggered for person ${args.person_id}`, result);
189
- }
190
- async enrichmentStatus(args) {
191
- const result = await this.pica.enrichment.getWorkEnrichmentStatus(args.work_id);
192
- return formatAsText(result);
193
- }
194
121
  async enrichmentCandidates(_args) {
195
122
  const result = await this.pica.enrichment.getCandidates();
196
123
  return formatAsText(result);
197
124
  }
198
125
  async enrichWorkMlc(args) {
199
126
  const result = await this.pica.enrichment.enrichWorkMlc(args.work_id);
200
- return formatSuccess(`MLC lookup complete for work ${args.work_id}`, result);
127
+ return formatEnrichmentResult("work", args.work_id, "MLC", result);
201
128
  }
202
129
  async enrichWorkMusicBrainz(args) {
203
130
  const result = await this.pica.enrichment.enrichWorkMusicBrainz(args.work_id);
204
- return formatAsText(result);
131
+ return formatEnrichmentResult("work", args.work_id, "MusicBrainz", result);
205
132
  }
206
133
  async enrichWorkDiscogs(args) {
207
134
  const result = await this.pica.enrichment.enrichWorkDiscogs(args.work_id);
208
- return formatAsText(result);
135
+ return formatEnrichmentResult("work", args.work_id, "Discogs", result);
209
136
  }
210
137
  async enrichWorkSpotify(args) {
211
138
  const workId = args.work_id;
212
139
  const spotifyUrl = args.spotify_url;
213
- const confirm = args.confirm;
214
- if (!workId && !spotifyUrl) {
215
- return {
216
- content: [
217
- {
218
- type: "text",
219
- text: "Either work_id or spotify_url is required.",
220
- },
221
- ],
222
- isError: true,
223
- };
224
- }
225
- // Mode 1: work_id + spotify_url — link the track URI then enrich
226
- if (workId && spotifyUrl) {
140
+ // If spotify_url provided, link it to the work first, then enrich
141
+ if (spotifyUrl) {
227
142
  const result = await this.pica.enrichment.linkAndEnrichSpotify(workId, spotifyUrl);
228
143
  return formatSuccess(`Linked Spotify track and enriched work ${workId}`, result);
229
144
  }
230
- // Mode 2: spotify_url only — delegate to streaming-link (preview/execute)
231
- if (spotifyUrl) {
232
- if (confirm) {
233
- const result = await this.pica.enrichment.spotifyUrlExecute(spotifyUrl);
234
- const data = result.data ?? result;
235
- return formatSuccess(`Spotify import complete: ${data.worksCreated ?? 0} works created, ` +
236
- `${data.worksEnriched ?? data.enrichResults?.length ?? 0} works enriched, ` +
237
- `${data.duplicatesSkipped ?? 0} duplicates skipped`, data);
238
- }
239
- const result = await this.pica.enrichment.spotifyUrlPreview(spotifyUrl);
240
- const data = result.data ?? result;
241
- const trackCount = data.tracks?.length ?? 0;
242
- const newCount = data.newTracks?.length ?? 0;
243
- const dupCount = data.duplicates?.length ?? 0;
244
- return formatSuccess(`Spotify preview: ${trackCount} tracks found. ` +
245
- `${newCount} new (will be created), ${dupCount} already in catalog (will be enriched). ` +
246
- `Call again with confirm: true to execute.`, data);
247
- }
248
- // Mode 3: work_id only — existing single-work enrichment
145
+ // work_id only — enrich from already-linked Spotify data
249
146
  const result = await this.pica.enrichment.enrichWorkSpotify(workId);
250
- return formatSuccess(`Spotify enrichment complete for work ${workId}`, result);
147
+ return formatEnrichmentResult("work", workId, "Spotify", result);
251
148
  }
252
149
  async enrichWorkYouTube(args) {
253
150
  const result = await this.pica.enrichment.enrichWorkYouTube(args.work_id);
254
- return formatSuccess(`YouTube enrichment complete for work ${args.work_id}`, result);
151
+ return formatEnrichmentResult("work", args.work_id, "YouTube", result);
255
152
  }
256
153
  }
257
154
  //# sourceMappingURL=enrichment.js.map