@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
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
- import { formatAsText, formatSuccess, formatStructuredList, mapGapsToHints, } from "../utils/formatting.js";
2
+ import { formatSuccess, formatStructuredList, mapGapsToHints, } from "../utils/formatting.js";
3
3
  export class WorksTools {
4
4
  pica;
5
5
  constructor(pica) {
@@ -12,34 +12,43 @@ export class WorksTools {
12
12
  return [
13
13
  {
14
14
  definition: {
15
- name: "pica_works_list",
16
- description: "List musical works from PICA catalog with optional filters. " +
17
- "→ then: pica_works_get_full (full details), pica_work_completeness (gap check), pica_credits_list (see credits)",
15
+ name: "pica_works_query",
16
+ description: "Find works by any criteria text search, verified status, or health filter. " +
17
+ "→ then: pica_works_inspect (details for a specific work)",
18
18
  inputSchema: {
19
19
  type: "object",
20
20
  properties: {
21
- limit: {
22
- type: "number",
23
- description: "Maximum number of results to return (default: 50)",
24
- },
25
- search: {
21
+ query: {
26
22
  type: "string",
27
- description: "Search query to filter works by title or ISWC",
23
+ description: "Search by title, ISWC, or artist name",
28
24
  },
29
25
  verified: {
30
26
  type: "boolean",
31
- description: "Filter by verification status (true = verified only, false = unverified only)",
27
+ description: "Filter by verification status",
28
+ },
29
+ health_filter: {
30
+ type: "string",
31
+ enum: ["needs_attention", "low_completeness"],
32
+ description: "Filter by health status — needs_attention (missing credits, no ISWC) or low_completeness",
33
+ },
34
+ limit: {
35
+ type: "number",
36
+ description: "Max results (default: 50)",
37
+ },
38
+ offset: {
39
+ type: "number",
40
+ description: "Pagination offset",
32
41
  },
33
42
  },
34
43
  },
35
44
  },
36
- executor: this.listWorks.bind(this),
45
+ executor: this.queryWorks.bind(this),
37
46
  },
38
47
  {
39
48
  definition: {
40
- name: "pica_works_get",
41
- description: "Get details of a specific musical work by ID. " +
42
- "→ then: pica_works_get_full (all context in one call), pica_credits_list (see credits), pica_work_completeness (gap check)",
49
+ name: "pica_works_inspect",
50
+ description: "Get details and quality data for a specific work. Omit sections for everything. " +
51
+ "→ then: pica_credits_update (fix credits), pica_enrich_work_spotify (add metadata)",
43
52
  inputSchema: {
44
53
  type: "object",
45
54
  properties: {
@@ -47,19 +56,39 @@ export class WorksTools {
47
56
  type: "string",
48
57
  description: "Work ID",
49
58
  },
59
+ sections: {
60
+ type: "array",
61
+ items: {
62
+ type: "string",
63
+ enum: [
64
+ "basic",
65
+ "credits",
66
+ "recordings",
67
+ "agreements",
68
+ "health",
69
+ "completeness",
70
+ "registration",
71
+ "score",
72
+ "provenance",
73
+ "enrichment",
74
+ ],
75
+ },
76
+ description: 'Which data sections to include. Omit for all sections. Use ["basic"] for lightweight lookup.',
77
+ },
50
78
  },
51
79
  required: ["id"],
52
80
  },
53
81
  },
54
- executor: this.getWork.bind(this),
82
+ executor: this.inspectWork.bind(this),
55
83
  },
56
84
  {
57
85
  definition: {
58
86
  name: "pica_works_create",
59
- description: "Create a new musical work. Any field from the Work schema can be passed — " +
87
+ description: "Create a new musical work. IMPORTANT: Always call pica_works_query first to check for existing works with the same title duplicate works cause split and registration issues. " +
88
+ "Any field from the Work schema can be passed — " +
60
89
  "the most commonly used fields are listed below, but additional fields " +
61
90
  "are also accepted via additionalProperties. " +
62
- "→ then: pica_credits_update (add writers), pica_work_completeness (check gaps), pica_enrich_work (fill identifiers)",
91
+ "→ before: pica_works_query (check duplicates) → then: pica_credits_update (add writers), pica_works_inspect (check gaps), pica_enrich_work_spotify (fill identifiers)",
63
92
  inputSchema: {
64
93
  type: "object",
65
94
  properties: {
@@ -70,7 +99,7 @@ export class WorksTools {
70
99
  work_type: {
71
100
  type: "string",
72
101
  description: "Type of work (required)",
73
- enum: ["song", "library", "demo", "sample"],
102
+ enum: ["song", "instrumental", "library", "demo", "sample"],
74
103
  },
75
104
  work_status: {
76
105
  type: "string",
@@ -176,7 +205,8 @@ export class WorksTools {
176
205
  "the most commonly used fields are listed below, but additional fields " +
177
206
  "(e.g. album_name, album_art_url, track_number, upc, notes, published, " +
178
207
  "available_for_licensing, vocal_type, energy, danceability, tempo, key) " +
179
- "are also accepted.",
208
+ "are also accepted. " +
209
+ "→ then: pica_works_inspect (verify changes persisted)",
180
210
  inputSchema: {
181
211
  type: "object",
182
212
  properties: {
@@ -218,7 +248,7 @@ export class WorksTools {
218
248
  },
219
249
  work_type: {
220
250
  type: "string",
221
- enum: ["song", "library", "demo", "sample"],
251
+ enum: ["song", "instrumental", "library", "demo", "sample"],
222
252
  description: "Type of work",
223
253
  },
224
254
  genre: {
@@ -279,6 +309,14 @@ export class WorksTools {
279
309
  type: "string",
280
310
  description: "Language of lyrics (ISO 639-1, e.g. 'en')",
281
311
  },
312
+ tunecode: {
313
+ type: "string",
314
+ description: "PRS tunecode (e.g. 851348GT)",
315
+ },
316
+ prs_work_id: {
317
+ type: "string",
318
+ description: "PRS work ID",
319
+ },
282
320
  notes: {
283
321
  type: "string",
284
322
  description: "Internal notes",
@@ -324,28 +362,6 @@ export class WorksTools {
324
362
  },
325
363
  executor: this.verifyWork.bind(this),
326
364
  },
327
- {
328
- definition: {
329
- name: "pica_works_search",
330
- description: "Search works by title, ISWC, or other criteria. " +
331
- "→ then: pica_works_get_full (full details), pica_work_completeness (gap check), pica_enrich_work (fill gaps)",
332
- inputSchema: {
333
- type: "object",
334
- properties: {
335
- query: {
336
- type: "string",
337
- description: "Search query",
338
- },
339
- limit: {
340
- type: "number",
341
- description: "Maximum number of results (default: 50)",
342
- },
343
- },
344
- required: ["query"],
345
- },
346
- },
347
- executor: this.searchWorks.bind(this),
348
- },
349
365
  {
350
366
  definition: {
351
367
  name: "pica_works_bulk_delete",
@@ -366,60 +382,166 @@ export class WorksTools {
366
382
  },
367
383
  executor: this.bulkDeleteWorks.bind(this),
368
384
  },
369
- {
370
- definition: {
371
- name: "pica_works_get_full",
372
- description: "Get FULL context for a work in a single call — the work record plus all its " +
373
- "credits, recordings, audio files, agreements, completeness score, and registration " +
374
- "status across PROs. Use this instead of making 6+ separate tool calls when you need " +
375
- "to understand or reason about a work's complete state. " +
376
- "→ then: pica_enrich_work (fill gaps), pica_credits_update (fix credits), pica_export_song_registration (register)",
377
- inputSchema: {
378
- type: "object",
379
- properties: {
380
- id: {
381
- type: "string",
382
- description: "Work ID",
383
- },
384
- },
385
- required: ["id"],
386
- },
387
- },
388
- executor: this.getWorkFull.bind(this),
389
- },
390
385
  ];
391
386
  }
392
387
  /**
393
- * List works (server-side search and pagination)
388
+ * Query works unified search, list, and health filter
394
389
  */
395
- async listWorks(args) {
390
+ async queryWorks(args) {
396
391
  const limit = args.limit || 50;
397
- const result = await this.pica.works.search({
398
- query: args.search,
399
- limit,
400
- });
401
- let items = result.data;
402
- // Client-side verified filter (not supported by API query params)
392
+ // Health filter routes to health/completeness APIs
393
+ if (args.health_filter === "needs_attention") {
394
+ const result = await this.pica.health.getWorksHealth();
395
+ const works = result?.works || result || [];
396
+ return formatStructuredList(Array.isArray(works) ? works : [works], "work", {
397
+ filter: "needs_attention",
398
+ total: Array.isArray(works) ? works.length : 1,
399
+ });
400
+ }
401
+ if (args.health_filter === "low_completeness") {
402
+ const result = await this.pica.health.getLowScoreWorks();
403
+ const works = Array.isArray(result) ? result : result?.works || [];
404
+ return formatStructuredList(works, "work", {
405
+ filter: "low_completeness",
406
+ total: works.length,
407
+ });
408
+ }
409
+ // Text search or list
410
+ if (args.query) {
411
+ const result = await this.pica.works.search({ query: args.query, limit });
412
+ let items = result.data || result;
413
+ if (!Array.isArray(items))
414
+ items = [];
415
+ return formatStructuredList(items, "work", {
416
+ query: args.query,
417
+ total: result.total || items.length,
418
+ });
419
+ }
420
+ // Default: list with filters
421
+ const result = await this.pica.works.search({ query: args.search, limit });
422
+ let items = result.data || result;
423
+ if (!Array.isArray(items))
424
+ items = [];
425
+ // Client-side verified filter
403
426
  if (args.verified !== undefined) {
404
427
  items = items.filter((work) => work.is_verified === args.verified);
405
428
  }
406
429
  return formatStructuredList(items, "work", {
407
- total: result.total,
430
+ total: result.total || items.length,
408
431
  limit,
409
432
  hasMore: result.hasMore,
410
433
  });
411
434
  }
412
435
  /**
413
- * Get work by ID
436
+ * Inspect work unified detail view with selectable sections
414
437
  */
415
- async getWork(args) {
416
- const work = await this.pica.works.get(args.id);
417
- // Enrich with ISRC prefix intelligence if work has ISRC
418
- let prefix_intel = null;
419
- if (work.isrc) {
420
- prefix_intel = await this.pica.recordings.prefixLookup(work.isrc);
438
+ async inspectWork(args) {
439
+ const sections = args.sections;
440
+ const allSections = !sections || sections.length === 0;
441
+ const has = (s) => allSections || sections.includes(s);
442
+ const result = {};
443
+ const hints = [];
444
+ // Basic — always fetched (either via entityContext.getWorkFull or works.get)
445
+ if (allSections) {
446
+ const full = await this.pica.entityContext.getWorkFull(args.id);
447
+ const data = full;
448
+ result.work = data?.work || data;
449
+ result.credits = data?.credits;
450
+ result.recordings = data?.recordings;
451
+ result.agreements = data?.agreements;
421
452
  }
422
- return formatAsText({ ...work, prefix_intel });
453
+ else if (has("basic")) {
454
+ const work = await this.pica.works.get(args.id);
455
+ result.work = work;
456
+ // Enrich with ISRC prefix intelligence if work has ISRC
457
+ if (work?.isrc) {
458
+ try {
459
+ result.prefix_intel = await this.pica.recordings.prefixLookup(work.isrc);
460
+ }
461
+ catch {
462
+ /* best-effort */
463
+ }
464
+ }
465
+ }
466
+ // Targeted sections — only fetch what's requested
467
+ if (!allSections) {
468
+ if (has("credits") && !result.credits) {
469
+ try {
470
+ result.credits = await this.pica.credits.listForWork(args.id);
471
+ }
472
+ catch {
473
+ result.credits = [];
474
+ }
475
+ }
476
+ if (has("recordings") && !result.recordings) {
477
+ try {
478
+ result.recordings = await this.pica.recordings.getByWork(args.id);
479
+ }
480
+ catch {
481
+ result.recordings = [];
482
+ }
483
+ }
484
+ if (has("agreements") && !result.agreements) {
485
+ try {
486
+ result.agreements = await this.pica.agreements.list();
487
+ }
488
+ catch {
489
+ result.agreements = [];
490
+ }
491
+ }
492
+ }
493
+ // Quality sections — individual calls
494
+ if (has("health")) {
495
+ try {
496
+ result.health = await this.pica.health.getWorksHealth();
497
+ }
498
+ catch {
499
+ result.health = null;
500
+ }
501
+ }
502
+ if (has("completeness")) {
503
+ try {
504
+ const completeness = await this.pica.health.getWorkCompleteness(args.id);
505
+ result.completeness = completeness;
506
+ hints.push(...mapGapsToHints(completeness?.gaps || completeness?.missing || []));
507
+ }
508
+ catch {
509
+ result.completeness = null;
510
+ }
511
+ }
512
+ if (has("registration")) {
513
+ try {
514
+ result.registration = await this.pica.registration.getWorkCascadeStatus(args.id);
515
+ }
516
+ catch {
517
+ result.registration = null;
518
+ }
519
+ }
520
+ if (has("score")) {
521
+ try {
522
+ result.score = await this.pica.picaScore.get();
523
+ }
524
+ catch {
525
+ result.score = null;
526
+ }
527
+ }
528
+ if (has("provenance")) {
529
+ try {
530
+ result.provenance = await this.pica.analytics.provenanceWork(args.id);
531
+ }
532
+ catch {
533
+ result.provenance = null;
534
+ }
535
+ }
536
+ if (has("enrichment")) {
537
+ try {
538
+ result.enrichment = await this.pica.enrichment.getWorkEnrichmentStatus(args.id);
539
+ }
540
+ catch {
541
+ result.enrichment = null;
542
+ }
543
+ }
544
+ return formatSuccess(`Work details${sections ? ` (sections: ${sections.join(", ")})` : ""}`, result, hints);
423
545
  }
424
546
  /**
425
547
  * Create work
@@ -502,22 +624,6 @@ export class WorksTools {
502
624
  exportReadiness,
503
625
  });
504
626
  }
505
- /**
506
- * Search works (server-side)
507
- */
508
- async searchWorks(args) {
509
- const limit = args.limit || 50;
510
- const result = await this.pica.works.search({
511
- query: args.query,
512
- limit,
513
- });
514
- return formatStructuredList(result.data, "work", {
515
- query: args.query,
516
- total: result.total,
517
- limit,
518
- hasMore: result.hasMore,
519
- });
520
- }
521
627
  /**
522
628
  * Bulk delete works
523
629
  */
@@ -525,24 +631,5 @@ export class WorksTools {
525
631
  await this.pica.works.bulkDelete(args.ids);
526
632
  return formatSuccess(`${args.ids.length} works deleted successfully`);
527
633
  }
528
- /**
529
- * Get full work context bundle
530
- */
531
- async getWorkFull(args) {
532
- const result = await this.pica.entityContext.getWorkFull(args.id);
533
- const data = result;
534
- const creditCount = data.credits?.length || 0;
535
- const recordingCount = data.recordings?.length || 0;
536
- const agreementCount = data.agreements?.length || 0;
537
- const title = data.work?.title || args.id;
538
- const score = data.work?.completeness_score;
539
- const registeredPros = (data.registration || [])
540
- .filter((r) => r.registered === true)
541
- .map((r) => r.pro);
542
- return formatSuccess(`"${title}" — ${creditCount} credits, ${recordingCount} recordings, ` +
543
- `${agreementCount} agreements. ` +
544
- `Completeness: ${score != null ? `${score}/100` : "not scored"}. ` +
545
- `PROs registered: ${registeredPros.length > 0 ? registeredPros.join(", ") : "none"}.`, result);
546
- }
547
634
  }
548
635
  //# sourceMappingURL=works.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"works.js","sourceRoot":"","sources":["../../src/tools/works.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"works.js","sourceRoot":"","sources":["../../src/tools/works.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * MCP Audit Logger — ADR-149 Phase 4
3
+ *
4
+ * Fire-and-forget logging of MCP tool executions.
5
+ * Never blocks tool responses. Never throws on failure.
6
+ */
7
+ import type { ToolCategory } from "../tools/index.js";
8
+ export interface McpAuditEntry {
9
+ tool_name: string;
10
+ tool_category: ToolCategory | string;
11
+ risk_level: "safe" | "mutating" | "destructive";
12
+ parameters: Record<string, unknown>;
13
+ result_status: "success" | "error" | "confirmation_required";
14
+ error_code?: string;
15
+ confirmation_token?: string;
16
+ execution_time_ms: number;
17
+ caller_identity: string;
18
+ transport: "stdio" | "http";
19
+ }
20
+ type AuditLogFn = (entry: McpAuditEntry) => Promise<any>;
21
+ export declare class McpAuditLogger {
22
+ private logFn;
23
+ private logReads;
24
+ constructor(logFn: AuditLogFn, logReads?: boolean);
25
+ logToolExecution(entry: McpAuditEntry): Promise<void>;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/utils/audit.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,YAAY,GAAG,MAAM,CAAC;IACrC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,aAAa,EAAE,SAAS,GAAG,OAAO,GAAG,uBAAuB,CAAC;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;CAC7B;AAED,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEzD,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,QAAQ,CAAU;gBAEd,KAAK,EAAE,UAAU,EAAE,QAAQ,GAAE,OAAe;IAKlD,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAoB5D"}
@@ -0,0 +1,28 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ export class McpAuditLogger {
3
+ logFn;
4
+ logReads;
5
+ constructor(logFn, logReads = false) {
6
+ this.logFn = logFn;
7
+ this.logReads = logReads;
8
+ }
9
+ async logToolExecution(entry) {
10
+ if (entry.risk_level === "safe" && !this.logReads) {
11
+ return;
12
+ }
13
+ try {
14
+ await this.logFn(entry);
15
+ }
16
+ catch (error) {
17
+ console.error(JSON.stringify({
18
+ level: "error",
19
+ context: "McpAuditLogger",
20
+ message: "Failed to log audit entry",
21
+ tool: entry.tool_name,
22
+ error: error instanceof Error ? error.message : String(error),
23
+ timestamp: new Date().toISOString(),
24
+ }));
25
+ }
26
+ }
27
+ }
28
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/utils/audit.ts"],"names":[],"mappings":"AAAA,6DAA6D;AA0B7D,MAAM,OAAO,cAAc;IACjB,KAAK,CAAa;IAClB,QAAQ,CAAU;IAE1B,YAAY,KAAiB,EAAE,WAAoB,KAAK;QACtD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAAoB;QACzC,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,2BAA2B;gBACpC,IAAI,EAAE,KAAK,CAAC,SAAS;gBACrB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACpC,CAAC,CACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ export declare function generateConfirmationToken(toolName: string, params: Record<string, unknown>, ttlMs?: number): string;
2
+ export declare function validateAndConsumeToken(token: string, toolName: string, params: Record<string, unknown>): {
3
+ valid: boolean;
4
+ reason?: string;
5
+ };
6
+ export declare function cleanupExpiredTokens(): number;
7
+ export declare function startCleanupInterval(): void;
8
+ export declare const _testHelpers: {
9
+ clearAll: () => void;
10
+ getTokenCount: () => number;
11
+ };
12
+ //# sourceMappingURL=confirmation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confirmation.d.ts","sourceRoot":"","sources":["../../src/utils/confirmation.ts"],"names":[],"mappings":"AA0BA,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,KAAK,GAAE,MAAuB,GAC7B,MAAM,CAQR;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CA+BrC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAU7C;AAID,wBAAgB,oBAAoB,IAAI,IAAI,CAU3C;AAKD,eAAO,MAAM,YAAY;;;CAGxB,CAAC"}
@@ -0,0 +1,78 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ /**
3
+ * Confirmation Token Manager — ADR-149 Phase 3
4
+ *
5
+ * Generates, validates, and expires single-use confirmation tokens
6
+ * for destructive MCP tool operations.
7
+ */
8
+ import { randomBytes } from "node:crypto";
9
+ const DEFAULT_TTL_MS = 120_000; // 120 seconds — parallel merges need time
10
+ const tokens = new Map();
11
+ function hashParams(params) {
12
+ const { confirmation_token: _ct, ...rest } = params;
13
+ return JSON.stringify(rest, Object.keys(rest).sort());
14
+ }
15
+ export function generateConfirmationToken(toolName, params, ttlMs = DEFAULT_TTL_MS) {
16
+ const token = `ctok_${randomBytes(16).toString("hex")}`;
17
+ tokens.set(token, {
18
+ toolName,
19
+ paramsHash: hashParams(params),
20
+ expiresAt: Date.now() + ttlMs,
21
+ });
22
+ return token;
23
+ }
24
+ export function validateAndConsumeToken(token, toolName, params) {
25
+ const pending = tokens.get(token);
26
+ if (!pending) {
27
+ return { valid: false, reason: "token not found or already used" };
28
+ }
29
+ tokens.delete(token);
30
+ if (Date.now() >= pending.expiresAt) {
31
+ return {
32
+ valid: false,
33
+ reason: "confirmation token expired — start the operation again",
34
+ };
35
+ }
36
+ if (pending.toolName !== toolName) {
37
+ return {
38
+ valid: false,
39
+ reason: "tool mismatch — token was for a different operation",
40
+ };
41
+ }
42
+ if (pending.paramsHash !== hashParams(params)) {
43
+ return {
44
+ valid: false,
45
+ reason: "parameter mismatch — token was for different parameters",
46
+ };
47
+ }
48
+ return { valid: true };
49
+ }
50
+ export function cleanupExpiredTokens() {
51
+ const now = Date.now();
52
+ let removed = 0;
53
+ for (const [token, pending] of tokens.entries()) {
54
+ if (now >= pending.expiresAt) {
55
+ tokens.delete(token);
56
+ removed++;
57
+ }
58
+ }
59
+ return removed;
60
+ }
61
+ let cleanupIntervalId = null;
62
+ export function startCleanupInterval() {
63
+ if (cleanupIntervalId !== null || process.env.NODE_ENV === "test")
64
+ return;
65
+ cleanupIntervalId = setInterval(() => {
66
+ cleanupExpiredTokens();
67
+ }, 60_000); // Every 60 seconds
68
+ if (cleanupIntervalId.unref) {
69
+ cleanupIntervalId.unref();
70
+ }
71
+ }
72
+ // Start cleanup on module load
73
+ startCleanupInterval();
74
+ export const _testHelpers = {
75
+ clearAll: () => tokens.clear(),
76
+ getTokenCount: () => tokens.size,
77
+ };
78
+ //# sourceMappingURL=confirmation.js.map