@withpica/mcp-server 2.5.2 → 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 +128 -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 +148 -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 +121 -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 +201 -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,20 +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. IMPORTANT: Always call pica_works_search first to check for existing works with the same title — duplicate works cause split and registration issues. " +
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. " +
60
88
  "Any field from the Work schema can be passed — " +
61
89
  "the most commonly used fields are listed below, but additional fields " +
62
90
  "are also accepted via additionalProperties. " +
63
- "→ before: pica_works_search (check duplicates) → 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)",
64
92
  inputSchema: {
65
93
  type: "object",
66
94
  properties: {
@@ -71,7 +99,7 @@ export class WorksTools {
71
99
  work_type: {
72
100
  type: "string",
73
101
  description: "Type of work (required)",
74
- enum: ["song", "library", "demo", "sample"],
102
+ enum: ["song", "instrumental", "library", "demo", "sample"],
75
103
  },
76
104
  work_status: {
77
105
  type: "string",
@@ -178,7 +206,7 @@ export class WorksTools {
178
206
  "(e.g. album_name, album_art_url, track_number, upc, notes, published, " +
179
207
  "available_for_licensing, vocal_type, energy, danceability, tempo, key) " +
180
208
  "are also accepted. " +
181
- "→ then: pica_works_get (verify changes persisted)",
209
+ "→ then: pica_works_inspect (verify changes persisted)",
182
210
  inputSchema: {
183
211
  type: "object",
184
212
  properties: {
@@ -220,7 +248,7 @@ export class WorksTools {
220
248
  },
221
249
  work_type: {
222
250
  type: "string",
223
- enum: ["song", "library", "demo", "sample"],
251
+ enum: ["song", "instrumental", "library", "demo", "sample"],
224
252
  description: "Type of work",
225
253
  },
226
254
  genre: {
@@ -281,6 +309,14 @@ export class WorksTools {
281
309
  type: "string",
282
310
  description: "Language of lyrics (ISO 639-1, e.g. 'en')",
283
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
+ },
284
320
  notes: {
285
321
  type: "string",
286
322
  description: "Internal notes",
@@ -326,28 +362,6 @@ export class WorksTools {
326
362
  },
327
363
  executor: this.verifyWork.bind(this),
328
364
  },
329
- {
330
- definition: {
331
- name: "pica_works_search",
332
- description: "Search works by title, ISWC, or other criteria. " +
333
- "→ then: pica_works_get_full (full details), pica_work_completeness (gap check), pica_enrich_work (fill gaps)",
334
- inputSchema: {
335
- type: "object",
336
- properties: {
337
- query: {
338
- type: "string",
339
- description: "Search query",
340
- },
341
- limit: {
342
- type: "number",
343
- description: "Maximum number of results (default: 50)",
344
- },
345
- },
346
- required: ["query"],
347
- },
348
- },
349
- executor: this.searchWorks.bind(this),
350
- },
351
365
  {
352
366
  definition: {
353
367
  name: "pica_works_bulk_delete",
@@ -368,60 +382,166 @@ export class WorksTools {
368
382
  },
369
383
  executor: this.bulkDeleteWorks.bind(this),
370
384
  },
371
- {
372
- definition: {
373
- name: "pica_works_get_full",
374
- description: "Get FULL context for a work in a single call — the work record plus all its " +
375
- "credits, recordings, audio files, agreements, completeness score, and registration " +
376
- "status across PROs. Use this instead of making 6+ separate tool calls when you need " +
377
- "to understand or reason about a work's complete state. " +
378
- "→ then: pica_enrich_work (fill gaps), pica_credits_update (fix credits), pica_export_song_registration (register)",
379
- inputSchema: {
380
- type: "object",
381
- properties: {
382
- id: {
383
- type: "string",
384
- description: "Work ID",
385
- },
386
- },
387
- required: ["id"],
388
- },
389
- },
390
- executor: this.getWorkFull.bind(this),
391
- },
392
385
  ];
393
386
  }
394
387
  /**
395
- * List works (server-side search and pagination)
388
+ * Query works unified search, list, and health filter
396
389
  */
397
- async listWorks(args) {
390
+ async queryWorks(args) {
398
391
  const limit = args.limit || 50;
399
- const result = await this.pica.works.search({
400
- query: args.search,
401
- limit,
402
- });
403
- let items = result.data;
404
- // 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
405
426
  if (args.verified !== undefined) {
406
427
  items = items.filter((work) => work.is_verified === args.verified);
407
428
  }
408
429
  return formatStructuredList(items, "work", {
409
- total: result.total,
430
+ total: result.total || items.length,
410
431
  limit,
411
432
  hasMore: result.hasMore,
412
433
  });
413
434
  }
414
435
  /**
415
- * Get work by ID
436
+ * Inspect work unified detail view with selectable sections
416
437
  */
417
- async getWork(args) {
418
- const work = await this.pica.works.get(args.id);
419
- // Enrich with ISRC prefix intelligence if work has ISRC
420
- let prefix_intel = null;
421
- if (work.isrc) {
422
- 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;
423
452
  }
424
- 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);
425
545
  }
426
546
  /**
427
547
  * Create work
@@ -504,22 +624,6 @@ export class WorksTools {
504
624
  exportReadiness,
505
625
  });
506
626
  }
507
- /**
508
- * Search works (server-side)
509
- */
510
- async searchWorks(args) {
511
- const limit = args.limit || 50;
512
- const result = await this.pica.works.search({
513
- query: args.query,
514
- limit,
515
- });
516
- return formatStructuredList(result.data, "work", {
517
- query: args.query,
518
- total: result.total,
519
- limit,
520
- hasMore: result.hasMore,
521
- });
522
- }
523
627
  /**
524
628
  * Bulk delete works
525
629
  */
@@ -527,24 +631,5 @@ export class WorksTools {
527
631
  await this.pica.works.bulkDelete(args.ids);
528
632
  return formatSuccess(`${args.ids.length} works deleted successfully`);
529
633
  }
530
- /**
531
- * Get full work context bundle
532
- */
533
- async getWorkFull(args) {
534
- const result = await this.pica.entityContext.getWorkFull(args.id);
535
- const data = result;
536
- const creditCount = data.credits?.length || 0;
537
- const recordingCount = data.recordings?.length || 0;
538
- const agreementCount = data.agreements?.length || 0;
539
- const title = data.work?.title || args.id;
540
- const score = data.work?.completeness_score;
541
- const registeredPros = (data.registration || [])
542
- .filter((r) => r.registered === true)
543
- .map((r) => r.pro);
544
- return formatSuccess(`"${title}" — ${creditCount} credits, ${recordingCount} recordings, ` +
545
- `${agreementCount} agreements. ` +
546
- `Completeness: ${score != null ? `${score}/100` : "not scored"}. ` +
547
- `PROs registered: ${registeredPros.length > 0 ? registeredPros.join(", ") : "none"}.`, result);
548
- }
549
634
  }
550
635
  //# sourceMappingURL=works.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"works.js","sourceRoot":"","sources":["../../src/tools/works.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAQ7D,OAAO,EACL,YAAY,EACZ,aAAa,EACb,oBAAoB,EAEpB,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,MAAM,OAAO,UAAU;IACb,IAAI,CAAa;IAEzB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EACT,8DAA8D;wBAC9D,iHAAiH;oBACnH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,mDAAmD;6BACtD;4BACD,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+CAA+C;6BAC7D;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,SAAS;gCACf,WAAW,EACT,+EAA+E;6BAClF;yBACF;qBACF;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;aACpC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EACT,gDAAgD;wBAChD,4HAA4H;oBAC9H,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,SAAS;6BACvB;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;aAClC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EACT,mLAAmL;wBACnL,iDAAiD;wBACjD,wEAAwE;wBACxE,8CAA8C;wBAC9C,oKAAoK;oBACtK,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,uBAAuB;6BACrC;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,yBAAyB;gCACtC,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;6BAC5C;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE;oCACJ,MAAM;oCACN,YAAY;oCACZ,UAAU;oCACV,SAAS;oCACT,QAAQ;oCACR,UAAU;iCACX;gCACD,WAAW,EAAE,mCAAmC;6BACjD;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,0CAA0C;6BACxD;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,uCAAuC;6BACrD;4BACD,gBAAgB,EAAE;gCAChB,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qBAAqB;6BACnC;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,YAAY;6BAC1B;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,WAAW;6BACzB;4BACD,cAAc,EAAE;gCACd,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qBAAqB;6BACnC;4BACD,iBAAiB,EAAE;gCACjB,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,0BAA0B;6BACxC;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,mBAAmB;6BACjC;4BACD,iBAAiB,EAAE;gCACjB,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,mBAAmB;6BACjC;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,aAAa;6BAC3B;4BACD,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,YAAY;6BAC1B;4BACD,kBAAkB,EAAE;gCAClB,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+BAA+B;6BAC7C;4BACD,aAAa,EAAE;gCACb,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sBAAsB;6BACpC;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,uBAAuB;6BACrC;4BACD,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,wBAAwB;6BACtC;4BACD,cAAc,EAAE;gCACd,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,gBAAgB;6BAC9B;4BACD,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,aAAa;6BAC3B;4BACD,eAAe,EAAE;gCACf,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,gCAAgC;6BAC9C;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,gBAAgB;6BAC9B;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC;wBAChC,oBAAoB,EAAE,IAAI;qBAC3B;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACrC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EACT,kFAAkF;wBAClF,wEAAwE;wBACxE,wEAAwE;wBACxE,yEAAyE;wBACzE,qBAAqB;wBACrB,mDAAmD;oBACrD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,oBAAoB;6BAClC;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,YAAY;6BAC1B;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,0CAA0C;6BACxD;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,oFAAoF;6BACvF;4BACD,gBAAgB,EAAE;gCAChB,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qBAAqB;6BACnC;4BACD,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,aAAa;6BAC3B;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE;oCACJ,MAAM;oCACN,YAAY;oCACZ,UAAU;oCACV,SAAS;oCACT,QAAQ;oCACR,UAAU;iCACX;gCACD,WAAW,EACT,mDAAmD;6BACtD;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC;gCAC3C,WAAW,EAAE,cAAc;6BAC5B;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,mCAAmC;6BACjD;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,8CAA8C;6BAC5D;4BACD,cAAc,EAAE;gCACd,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qBAAqB;6BACnC;4BACD,iBAAiB,EAAE;gCACjB,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,0BAA0B;6BACxC;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,mBAAmB;6BACjC;4BACD,iBAAiB,EAAE;gCACjB,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,+DAA+D;6BAClE;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,uDAAuD;6BAC1D;4BACD,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,YAAY;6BAC1B;4BACD,kBAAkB,EAAE;gCAClB,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,gDAAgD;6BAC9D;4BACD,aAAa,EAAE;gCACb,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,4BAA4B;6BAC1C;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,uBAAuB;6BACrC;4BACD,GAAG,EAAE;gCACH,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,8CAA8C;6BAC5D;4BACD,cAAc,EAAE;gCACd,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,gBAAgB;6BAC9B;4BACD,eAAe,EAAE;gCACf,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,2CAA2C;6BACzD;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,gBAAgB;6BAC9B;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;wBAChB,oBAAoB,EAAE,IAAI;qBAC3B;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACrC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,uBAAuB;oBACpC,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,SAAS;6BACvB;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACrC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,yBAAyB;oBACtC,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,SAAS;6BACvB;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACrC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EACT,kDAAkD;wBAClD,8GAA8G;oBAChH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,cAAc;6BAC5B;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,yCAAyC;6BACvD;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;aACtC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,wBAAwB;oBAC9B,WAAW,EAAE,+BAA+B;oBAC5C,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,GAAG,EAAE;gCACH,IAAI,EAAE,OAAO;gCACb,WAAW,EAAE,6BAA6B;gCAC1C,KAAK,EAAE;oCACL,IAAI,EAAE,QAAQ;iCACf;6BACF;yBACF;wBACD,QAAQ,EAAE,CAAC,KAAK,CAAC;qBAClB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1C;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,qBAAqB;oBAC3B,WAAW,EACT,8EAA8E;wBAC9E,qFAAqF;wBACrF,sFAAsF;wBACtF,yDAAyD;wBACzD,mHAAmH;oBACrH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,SAAS;6BACvB;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;aACtC;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CAAC,IAAyB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1C,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,KAAK;SACN,CAAC,CAAC;QAEH,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;QAExB,kEAAkE;QAClE,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE;YACzC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,OAAO,CAAC,IAAyB;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEhD,wDAAwD;QACxD,IAAI,YAAY,GAAmC,IAAI,CAAC;QACxD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,CAAC;QAED,OAAO,YAAY,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,IAAyB;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhD,uDAAuD;QACvD,MAAM,KAAK,GAAqB,EAAE,CAAC;QACnC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAC7D,IAAI,CAAC,EAAE,CACR,CAAC;gBACF,KAAK,CAAC,IAAI,CACR,GAAG,cAAc,CAAC,YAAY,EAAE,IAAI,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE,CAAC,CACrE,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,sCAAsC;YACxC,CAAC;YACD,sCAAsC;YACtC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC;oBACT,GAAG,EAAE,kBAAkB;oBACvB,UAAU,EACR,4IAA4I;oBAC9I,QAAQ,EAAE,WAAW;iBACtB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC,2BAA2B,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,IAAyB;QAChD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACvD,OAAO,aAAa,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,IAAyB;QAChD,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,aAAa,CAAC,QAAQ,IAAI,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU,CAAC,IAAyB;QAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEnD,uCAAuC;QACvC,IAAI,eAAgD,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAW,CAAC;YACrD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAW,CAAC;YACnD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,OAAO,2BAA2B,IAAI,CAAC,EAAE,EAAE,EAC9C;gBACE,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,EAAE;oBACjC,cAAc,EAAE,kBAAkB;iBACnC;aACF,CACF,CAAC;YACF,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmC,CAAC;gBAClE,eAAe,GAAG,IAAI,CAAC,IAAI,IAAK,IAA4B,CAAC;YAC/D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2DAA2D;QAC7D,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,4BAA4B,CAAC,CAAC;QACpD,IAAI,eAAe,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CACf,qBAAqB,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,EACpE,aAAa,eAAe,CAAC,gBAAgB,EAAE,EAC/C,gBAAgB,eAAe,CAAC,mBAAmB,GAAG,CACvD,CAAC;YACF,IACE,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;gBACvC,eAAe,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EACnC,CAAC;gBACD,YAAY,CAAC,IAAI,CAAC,aAAa,eAAe,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;gBACpE,KAAK,MAAM,CAAC,IAAI,eAAe,CAAC,QAG9B,EAAE,CAAC;oBACH,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5C,GAAG,IAAI;YACP,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,IAAyB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK;SACN,CAAC,CAAC;QAEH,OAAO,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;YAC/C,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,IAAyB;QAEzB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3C,OAAO,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,6BAA6B,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,WAAW,CAAC,IAAyB;QACjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAa,CAAC;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;QAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,kBAAkB,CAAC;QAE5C,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;aAC7C,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC;aACzC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE1B,OAAO,aAAa,CAClB,IAAI,KAAK,OAAO,WAAW,aAAa,cAAc,eAAe;YACnE,GAAG,cAAc,eAAe;YAChC,iBAAiB,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI;YAClE,oBAAoB,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,EACvF,MAAM,CACP,CAAC;IACJ,CAAC;CACF"}
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