@withpica/mcp-server 2.95.2 → 2.95.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 (206) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.intro.md +115 -0
  3. package/README.md +188 -204
  4. package/dist/lib/changelog.generated.d.ts +2 -2
  5. package/dist/lib/changelog.generated.d.ts.map +1 -1
  6. package/dist/lib/changelog.generated.js +2 -2
  7. package/dist/lib/changelog.generated.js.map +1 -1
  8. package/dist/prompts/index.js +4 -4
  9. package/dist/prompts/index.js.map +1 -1
  10. package/dist/resources/agent-guide.d.ts +50 -4
  11. package/dist/resources/agent-guide.d.ts.map +1 -1
  12. package/dist/resources/agent-guide.js +109 -18
  13. package/dist/resources/agent-guide.js.map +1 -1
  14. package/dist/resources/index.d.ts.map +1 -1
  15. package/dist/resources/index.js +81 -2
  16. package/dist/resources/index.js.map +1 -1
  17. package/dist/resources/llms-primer.d.ts +1 -1
  18. package/dist/resources/llms-primer.d.ts.map +1 -1
  19. package/dist/resources/llms-primer.js +1 -1
  20. package/dist/resources/required-schemas.generated.d.ts +24 -12
  21. package/dist/resources/required-schemas.generated.d.ts.map +1 -1
  22. package/dist/resources/required-schemas.generated.js +31 -18
  23. package/dist/resources/required-schemas.generated.js.map +1 -1
  24. package/dist/resources/required-schemas.source.d.ts.map +1 -1
  25. package/dist/resources/required-schemas.source.js +39 -15
  26. package/dist/resources/required-schemas.source.js.map +1 -1
  27. package/dist/server-instructions.d.ts +2 -2
  28. package/dist/server-instructions.d.ts.map +1 -1
  29. package/dist/server-instructions.js +5 -5
  30. package/dist/server-instructions.js.map +1 -1
  31. package/dist/skills/skills.generated.d.ts.map +1 -1
  32. package/dist/skills/skills.generated.js +23 -14
  33. package/dist/skills/skills.generated.js.map +1 -1
  34. package/dist/tools/agent-identity.d.ts.map +1 -1
  35. package/dist/tools/agent-identity.js +2 -1
  36. package/dist/tools/agent-identity.js.map +1 -1
  37. package/dist/tools/agreement-types.d.ts.map +1 -1
  38. package/dist/tools/agreement-types.js +23 -11
  39. package/dist/tools/agreement-types.js.map +1 -1
  40. package/dist/tools/agreements.d.ts.map +1 -1
  41. package/dist/tools/agreements.js +17 -9
  42. package/dist/tools/agreements.js.map +1 -1
  43. package/dist/tools/analytics.d.ts.map +1 -1
  44. package/dist/tools/analytics.js +6 -3
  45. package/dist/tools/analytics.js.map +1 -1
  46. package/dist/tools/assets.d.ts.map +1 -1
  47. package/dist/tools/assets.js +20 -13
  48. package/dist/tools/assets.js.map +1 -1
  49. package/dist/tools/audio-files.d.ts.map +1 -1
  50. package/dist/tools/audio-files.js +5 -3
  51. package/dist/tools/audio-files.js.map +1 -1
  52. package/dist/tools/bulk.d.ts.map +1 -1
  53. package/dist/tools/bulk.js +15 -9
  54. package/dist/tools/bulk.js.map +1 -1
  55. package/dist/tools/collaborators.d.ts.map +1 -1
  56. package/dist/tools/collaborators.js +41 -16
  57. package/dist/tools/collaborators.js.map +1 -1
  58. package/dist/tools/comparisons.d.ts.map +1 -1
  59. package/dist/tools/comparisons.js +2 -1
  60. package/dist/tools/comparisons.js.map +1 -1
  61. package/dist/tools/credits.d.ts +4 -3
  62. package/dist/tools/credits.d.ts.map +1 -1
  63. package/dist/tools/credits.js +16 -88
  64. package/dist/tools/credits.js.map +1 -1
  65. package/dist/tools/custody.d.ts.map +1 -1
  66. package/dist/tools/custody.js +43 -10
  67. package/dist/tools/custody.js.map +1 -1
  68. package/dist/tools/dashboard.d.ts.map +1 -1
  69. package/dist/tools/dashboard.js +38 -19
  70. package/dist/tools/dashboard.js.map +1 -1
  71. package/dist/tools/deprecations.d.ts +12 -2
  72. package/dist/tools/deprecations.d.ts.map +1 -1
  73. package/dist/tools/deprecations.js +22 -12
  74. package/dist/tools/deprecations.js.map +1 -1
  75. package/dist/tools/directory.d.ts.map +1 -1
  76. package/dist/tools/directory.js +7 -4
  77. package/dist/tools/directory.js.map +1 -1
  78. package/dist/tools/discovery.d.ts +66 -10
  79. package/dist/tools/discovery.d.ts.map +1 -1
  80. package/dist/tools/discovery.js +221 -25
  81. package/dist/tools/discovery.js.map +1 -1
  82. package/dist/tools/disputes.d.ts.map +1 -1
  83. package/dist/tools/disputes.js +3 -0
  84. package/dist/tools/disputes.js.map +1 -1
  85. package/dist/tools/documents.d.ts.map +1 -1
  86. package/dist/tools/documents.js +9 -6
  87. package/dist/tools/documents.js.map +1 -1
  88. package/dist/tools/enrichment.d.ts +14 -0
  89. package/dist/tools/enrichment.d.ts.map +1 -1
  90. package/dist/tools/enrichment.js +217 -16
  91. package/dist/tools/enrichment.js.map +1 -1
  92. package/dist/tools/error-envelope.d.ts +44 -0
  93. package/dist/tools/error-envelope.d.ts.map +1 -0
  94. package/dist/tools/error-envelope.js +17 -0
  95. package/dist/tools/error-envelope.js.map +1 -0
  96. package/dist/tools/exports.d.ts +4 -0
  97. package/dist/tools/exports.d.ts.map +1 -1
  98. package/dist/tools/exports.js +158 -6
  99. package/dist/tools/exports.js.map +1 -1
  100. package/dist/tools/groups.d.ts.map +1 -1
  101. package/dist/tools/groups.js +1 -0
  102. package/dist/tools/groups.js.map +1 -1
  103. package/dist/tools/import-documents.d.ts.map +1 -1
  104. package/dist/tools/import-documents.js +3 -2
  105. package/dist/tools/import-documents.js.map +1 -1
  106. package/dist/tools/import.d.ts.map +1 -1
  107. package/dist/tools/import.js +71 -38
  108. package/dist/tools/import.js.map +1 -1
  109. package/dist/tools/index.d.ts +53 -4
  110. package/dist/tools/index.d.ts.map +1 -1
  111. package/dist/tools/index.js +166 -38
  112. package/dist/tools/index.js.map +1 -1
  113. package/dist/tools/licensing.d.ts.map +1 -1
  114. package/dist/tools/licensing.js +6 -2
  115. package/dist/tools/licensing.js.map +1 -1
  116. package/dist/tools/memory.d.ts.map +1 -1
  117. package/dist/tools/memory.js +8 -4
  118. package/dist/tools/memory.js.map +1 -1
  119. package/dist/tools/metadata.d.ts +7 -1
  120. package/dist/tools/metadata.d.ts.map +1 -1
  121. package/dist/tools/metadata.js +65 -2
  122. package/dist/tools/metadata.js.map +1 -1
  123. package/dist/tools/multimedia.d.ts.map +1 -1
  124. package/dist/tools/multimedia.js +7 -3
  125. package/dist/tools/multimedia.js.map +1 -1
  126. package/dist/tools/notes.d.ts.map +1 -1
  127. package/dist/tools/notes.js +9 -6
  128. package/dist/tools/notes.js.map +1 -1
  129. package/dist/tools/notifications.d.ts.map +1 -1
  130. package/dist/tools/notifications.js +16 -27
  131. package/dist/tools/notifications.js.map +1 -1
  132. package/dist/tools/people.d.ts.map +1 -1
  133. package/dist/tools/people.js +8 -5
  134. package/dist/tools/people.js.map +1 -1
  135. package/dist/tools/projects.d.ts.map +1 -1
  136. package/dist/tools/projects.js +16 -12
  137. package/dist/tools/projects.js.map +1 -1
  138. package/dist/tools/recording-custody.d.ts.map +1 -1
  139. package/dist/tools/recording-custody.js +9 -5
  140. package/dist/tools/recording-custody.js.map +1 -1
  141. package/dist/tools/recording-samples.d.ts.map +1 -1
  142. package/dist/tools/recording-samples.js +25 -6
  143. package/dist/tools/recording-samples.js.map +1 -1
  144. package/dist/tools/recordings.d.ts +10 -0
  145. package/dist/tools/recordings.d.ts.map +1 -1
  146. package/dist/tools/recordings.js +32 -19
  147. package/dist/tools/recordings.js.map +1 -1
  148. package/dist/tools/recovery-hints.d.ts.map +1 -1
  149. package/dist/tools/recovery-hints.js +58 -17
  150. package/dist/tools/recovery-hints.js.map +1 -1
  151. package/dist/tools/release-rich.js +5 -5
  152. package/dist/tools/release-rich.js.map +1 -1
  153. package/dist/tools/releases.d.ts.map +1 -1
  154. package/dist/tools/releases.js +21 -12
  155. package/dist/tools/releases.js.map +1 -1
  156. package/dist/tools/royalties.d.ts.map +1 -1
  157. package/dist/tools/royalties.js +12 -6
  158. package/dist/tools/royalties.js.map +1 -1
  159. package/dist/tools/send.d.ts.map +1 -1
  160. package/dist/tools/send.js +7 -4
  161. package/dist/tools/send.js.map +1 -1
  162. package/dist/tools/sessions.d.ts.map +1 -1
  163. package/dist/tools/sessions.js +8 -4
  164. package/dist/tools/sessions.js.map +1 -1
  165. package/dist/tools/settings.d.ts.map +1 -1
  166. package/dist/tools/settings.js +10 -4
  167. package/dist/tools/settings.js.map +1 -1
  168. package/dist/tools/share-links.d.ts.map +1 -1
  169. package/dist/tools/share-links.js +7 -3
  170. package/dist/tools/share-links.js.map +1 -1
  171. package/dist/tools/share-send.d.ts.map +1 -1
  172. package/dist/tools/share-send.js +15 -5
  173. package/dist/tools/share-send.js.map +1 -1
  174. package/dist/tools/shows.d.ts +31 -0
  175. package/dist/tools/shows.d.ts.map +1 -0
  176. package/dist/tools/shows.js +307 -0
  177. package/dist/tools/shows.js.map +1 -0
  178. package/dist/tools/skills.d.ts.map +1 -1
  179. package/dist/tools/skills.js +7 -0
  180. package/dist/tools/skills.js.map +1 -1
  181. package/dist/tools/split-sheets.d.ts.map +1 -1
  182. package/dist/tools/split-sheets.js +19 -12
  183. package/dist/tools/split-sheets.js.map +1 -1
  184. package/dist/tools/statements.js +2 -2
  185. package/dist/tools/statements.js.map +1 -1
  186. package/dist/tools/storage-config.d.ts.map +1 -1
  187. package/dist/tools/storage-config.js +5 -3
  188. package/dist/tools/storage-config.js.map +1 -1
  189. package/dist/tools/subscription.d.ts +69 -19
  190. package/dist/tools/subscription.d.ts.map +1 -1
  191. package/dist/tools/subscription.js +98 -255
  192. package/dist/tools/subscription.js.map +1 -1
  193. package/dist/tools/sync-placements.d.ts.map +1 -1
  194. package/dist/tools/sync-placements.js +10 -5
  195. package/dist/tools/sync-placements.js.map +1 -1
  196. package/dist/tools/telegram.d.ts.map +1 -1
  197. package/dist/tools/telegram.js +16 -24
  198. package/dist/tools/telegram.js.map +1 -1
  199. package/dist/tools/users.d.ts.map +1 -1
  200. package/dist/tools/users.js +12 -6
  201. package/dist/tools/users.js.map +1 -1
  202. package/dist/tools/works.d.ts.map +1 -1
  203. package/dist/tools/works.js +13 -10
  204. package/dist/tools/works.js.map +1 -1
  205. package/package.json +7 -3
  206. package/server.json +2 -2
@@ -11,8 +11,18 @@
11
11
  * `pica_sessions_list`, `pica_sessions_get`, `pica_statements_get`,
12
12
  * `pica_share_links_list`. The ten aliases below still carry real live
13
13
  * traffic, so they STAY callable — their `removal_target` is consciously
14
- * extended to 2.95.0 (the "expire loudly" lint would otherwise block this
15
- * publish at 2.93.0). Re-run the traffic gate before that release.
14
+ * extended (the "expire loudly" lint would otherwise block this publish at
15
+ * 2.93.0). Re-run the traffic gate before that release.
16
+ *
17
+ * ⚠️ `removal_target` HERE IS DOCUMENTATION, NOT THE GATE (noted 2026-08-13).
18
+ * `checkDeprecationExpiry` in `scripts/lint-mcp-tools.ts` reads the value from
19
+ * TOOL_METADATA in `metadata.ts`, never this file. The mirror check next to it
20
+ * asserts only that a mirrored entry EXISTS — it does not compare the two
21
+ * values, so they can drift silently and the enforced one always wins. They had
22
+ * drifted: this file said 2.95.0 while metadata said 2.96.0, and the package
23
+ * shipped 2.95.2 without the lint firing. Realigned to 2.96.0. If you change a
24
+ * target, change BOTH — or the comment stops describing the deadline the build
25
+ * actually enforces.
16
26
  */
17
27
  export const TOOL_ALIASES = [
18
28
  // Tier 1 (MCP tool-surface consolidation): pica_releases_attach_track is
@@ -22,12 +32,12 @@ export const TOOL_ALIASES = [
22
32
  {
23
33
  deprecated: "pica_releases_attach_track_by_identifier",
24
34
  canonical: "pica_releases_attach_track",
25
- removal_target: "2.95.0",
35
+ removal_target: "2.96.0",
26
36
  },
27
37
  {
28
38
  deprecated: "pica_releases_bulk_attach_tracks",
29
39
  canonical: "pica_releases_attach_track",
30
- removal_target: "2.95.0",
40
+ removal_target: "2.96.0",
31
41
  adaptArgs: (a) => ({
32
42
  release_id: a.release_id,
33
43
  items: a.tracks,
@@ -40,12 +50,12 @@ export const TOOL_ALIASES = [
40
50
  {
41
51
  deprecated: "pica_releases_list",
42
52
  canonical: "pica_releases_query",
43
- removal_target: "2.95.0",
53
+ removal_target: "2.96.0",
44
54
  },
45
55
  {
46
56
  deprecated: "pica_releases_get",
47
57
  canonical: "pica_releases_inspect",
48
- removal_target: "2.95.0",
58
+ removal_target: "2.96.0",
49
59
  },
50
60
  // Tier 2 (MCP tool-surface consolidation): projects aligned to the
51
61
  // ADR-149 query/inspect pattern. Identity — args map 1:1. pica_projects_get
@@ -53,7 +63,7 @@ export const TOOL_ALIASES = [
53
63
  {
54
64
  deprecated: "pica_projects_list",
55
65
  canonical: "pica_projects_query",
56
- removal_target: "2.95.0",
66
+ removal_target: "2.96.0",
57
67
  },
58
68
  // Tier 2 (MCP tool-surface consolidation): notes aligned to the
59
69
  // ADR-149 query/inspect pattern. Identity — args map 1:1. pica_notes_get
@@ -61,7 +71,7 @@ export const TOOL_ALIASES = [
61
71
  {
62
72
  deprecated: "pica_notes_list",
63
73
  canonical: "pica_notes_query",
64
- removal_target: "2.95.0",
74
+ removal_target: "2.96.0",
65
75
  },
66
76
  // Tier 2 (MCP tool-surface consolidation): documents aligned to the
67
77
  // ADR-149 query/inspect pattern. Both identity — args map 1:1.
@@ -69,12 +79,12 @@ export const TOOL_ALIASES = [
69
79
  {
70
80
  deprecated: "pica_documents_list",
71
81
  canonical: "pica_documents_query",
72
- removal_target: "2.95.0",
82
+ removal_target: "2.96.0",
73
83
  },
74
84
  {
75
85
  deprecated: "pica_documents_read",
76
86
  canonical: "pica_documents_inspect",
77
- removal_target: "2.95.0",
87
+ removal_target: "2.96.0",
78
88
  },
79
89
  // Tier 2 (MCP tool-surface consolidation): statements aligned to the
80
90
  // ADR-149 query/inspect pattern. Identity — args map 1:1 (the canonical
@@ -83,7 +93,7 @@ export const TOOL_ALIASES = [
83
93
  {
84
94
  deprecated: "pica_statements_list",
85
95
  canonical: "pica_statements_query",
86
- removal_target: "2.95.0",
96
+ removal_target: "2.96.0",
87
97
  },
88
98
  // Task A1 (MCP tool-surface consolidation): pica_recording_credits_update
89
99
  // is now a superset — dispatches to the bulk path when args.credits is an
@@ -98,7 +108,7 @@ export const TOOL_ALIASES = [
98
108
  {
99
109
  deprecated: "pica_recording_credits_bulk_update",
100
110
  canonical: "pica_recording_credits_update",
101
- removal_target: "2.95.0",
111
+ removal_target: "2.96.0",
102
112
  },
103
113
  ];
104
114
  /** True when a tool's metadata marks it deprecated (aliased). Pure. */
@@ -1 +1 @@
1
- {"version":3,"file":"deprecations.js","sourceRoot":"","sources":["../../src/tools/deprecations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deprecations.js","sourceRoot":"","sources":["../../src/tools/deprecations.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/tools/directory.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAoE3D,iBAAiB;CAkDhC"}
1
+ {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/tools/directory.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI1D,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;YAoE3D,iBAAiB;CAuDhC"}
@@ -1,5 +1,6 @@
1
1
  // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
- import { formatAsText, formatSuccess } from "@withpica/mcp-utils";
2
+ import { formatSuccess } from "@withpica/mcp-utils";
3
+ import { typedError } from "./error-envelope.js";
3
4
  export class DirectoryTools {
4
5
  pica;
5
6
  constructor(pica) {
@@ -100,9 +101,11 @@ export class DirectoryTools {
100
101
  updates[field] = Boolean(args[field]);
101
102
  }
102
103
  if (Object.keys(updates).length === 0) {
103
- return formatAsText({
104
- error: "No settings to update. Provide at least one setting field.",
105
- });
104
+ // typedError, not formatAsText({error}): the latter has no `isError`, so
105
+ // the dispatcher and the client read a refusal as a SUCCESS whose payload
106
+ // happens to contain the word "error", and mcp_audit_log.error_code is
107
+ // NULL. See ./error-envelope.ts.
108
+ return typedError("VALIDATION_ERROR", "No settings to update. Provide at least one setting field.");
106
109
  }
107
110
  const result = await this.pica.directory.updateSettings(updates);
108
111
  const status = result.opted_in ? "discoverable" : "private";
@@ -1 +1 @@
1
- {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/tools/directory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/tools/directory.ts"],"names":[],"mappings":"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"}
@@ -28,11 +28,39 @@ interface CategoryDefinition {
28
28
  * are grandfathered in `scripts/mcp-tool-lint-baseline.json` for retrofit.
29
29
  */
30
30
  export declare const CATEGORIES: Record<string, CategoryDefinition>;
31
+ /**
32
+ * Naive English singular of a search token.
33
+ *
34
+ * A wrong stem is NOT free. An `-es` strip turns `notes` into `not` — and
35
+ * `pica_notes_*` are in CATEGORIES with `notes` as their domain segment, so
36
+ * every query containing the ordinary English word "not" ("works not
37
+ * registered") scored a +6 domain hit on the notes family. The same rule
38
+ * stems `releases`→`releas`, which the query word `release` can never match,
39
+ * defeating the feature in the other direction. Both shipped on 2026-08-24
40
+ * and are pinned by the singularise unit tests.
41
+ *
42
+ * The rules, in order:
43
+ * - `ies` → `y` (categories → category)
44
+ * - `s` → "" unless the token ends `ss`/`us`/`is`, none of which is an
45
+ * English plural (address, status, analysis stay put)
46
+ *
47
+ * There is deliberately NO `-es` rule. Every domain segment in CATEGORIES is a
48
+ * plain `-s` plural (works, notes, releases, documents, statements, credits,
49
+ * shows…), so `-es` would only ever misfire: it cannot tell `releas+es` from
50
+ * `release+s`, and the wrong branch (`releas`) is one a query word can never
51
+ * reach. `boxes` therefore stems to `boxe` rather than `box` — harmless,
52
+ * because both sides of every comparison run through this same function.
53
+ *
54
+ * Exported for direct unit assertion in
55
+ * `src/__tests__/tools/discovery-ranking.test.ts` — the stem is load-bearing
56
+ * enough that it needs testing without a whole registry behind it.
57
+ */
58
+ export declare function singularise(token: string): string;
31
59
  export declare class DiscoveryTools {
32
60
  private executeToolFn;
33
61
  private getToolDef;
34
62
  /**
35
- * Registered tool names, for UNKNOWN_TOOL near-match suggestions.
63
+ * Registered tool names, for TOOL_NOT_FOUND near-match suggestions.
36
64
  * Optional so existing constructions keep compiling; without it the
37
65
  * unknown-tool envelope simply carries no suggestions.
38
66
  */
@@ -43,18 +71,33 @@ export declare class DiscoveryTools {
43
71
  metadata?: ToolMetadata;
44
72
  } | undefined,
45
73
  /**
46
- * Registered tool names, for UNKNOWN_TOOL near-match suggestions.
74
+ * Registered tool names, for TOOL_NOT_FOUND near-match suggestions.
47
75
  * Optional so existing constructions keep compiling; without it the
48
76
  * unknown-tool envelope simply carries no suggestions.
49
77
  */
50
78
  listToolNames?: (() => string[]) | undefined);
51
79
  /**
52
- * Rank registered tool names by shared `_`-token overlap with a
53
- * hallucinated name. ChatGPT callers routinely invent tool names
80
+ * Rank registered tool names against a hallucinated or mistyped one.
81
+ *
82
+ * ChatGPT callers routinely invent tool names
54
83
  * (`pica_releases_attach_track_by_identifier`, `pica_credit_add`, …) and
55
84
  * retry variations instead of consulting pica_tool_details — 26 opaque
56
85
  * dispatcher errors in 14 days. Naming the closest real tools breaks that
57
86
  * guess-loop.
87
+ *
88
+ * Token overlap alone was not enough: `pica_works_inspekt` overlaps every
89
+ * `pica_works_*` tool on exactly one token, so the top-3 slice fell back to
90
+ * registration order and could drop the obvious answer. Edit distance
91
+ * breaks that tie — pinned by "ranks the nearest EDIT-distance name first"
92
+ * in `src/__tests__/tools/discovery.test.ts`.
93
+ *
94
+ * Deprecated aliases are excluded. The candidate pool is
95
+ * `[...this.tools.keys()]` (index.ts, where DiscoveryTools is constructed),
96
+ * which includes the hidden alias clones `expandAliases` registers — so a
97
+ * typo one letter off an alias (`pica_releases_lists`) was answered with the
98
+ * alias (`pica_releases_list`, removal_target 2.96.0) ranked above its own
99
+ * canonical. Steering a confused caller onto a name we are trying to retire
100
+ * is the opposite of what this envelope is for.
58
101
  */
59
102
  private suggestToolNames;
60
103
  getTools(): Array<{
@@ -64,12 +107,25 @@ export declare class DiscoveryTools {
64
107
  private buildDiscoverTool;
65
108
  /**
66
109
  * Rank tools against a plain-language job description. Case-insensitive
67
- * token scoring (no external deps): each query token scores +3 when it
68
- * exactly matches an underscore-separated token of the tool name and +1
69
- * when it appears anywhere in the tool's searchable text (name +
70
- * description/triggers + its category name + category description). Tools
71
- * are deduped across cross-listed categories (keeping the highest-scoring
72
- * category), sorted by score then name, and capped.
110
+ * token scoring (no external deps):
111
+ *
112
+ * +6 the token matches the tool's DOMAIN segment (the `_`-separated
113
+ * segment after `pica_` `recordings` in `pica_recordings_delete`)
114
+ * +3 the token matches any other `_`-separated segment of the name
115
+ * +1 the token appears anywhere in the searchable text (name +
116
+ * description/triggers + category name + category description)
117
+ *
118
+ * Both sides are compared through {@link singularise}, so "recording" and
119
+ * "recordings" are one term. Tools are deduped across cross-listed
120
+ * categories (keeping the highest-scoring category), sorted by score then
121
+ * name, and capped.
122
+ *
123
+ * The domain weight exists because the VERB is shared by dozens of tools
124
+ * and the ENTITY is what the user actually named: before it, "delete a
125
+ * recording" led with `pica_agreement_types_delete` and "read a document"
126
+ * put `pica_notifications_mark_read` above every documents tool. Both are
127
+ * pinned in `src/__tests__/tools/discovery-ranking.test.ts`, alongside the
128
+ * flagship isrc-from-spotify pin the weighting must not disturb.
73
129
  */
74
130
  private matchDiscovery;
75
131
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACX,MAAM,YAAY,CAAC;AA+BpB,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AASD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAixBzD,CAAC;AAoBF,qBAAa,cAAc;IAEvB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAC;gBAjBd,aAAa,EAAE,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,CAAC,EAAE,mBAAmB,KACtB,OAAO,CAAC,UAAU,CAAC,EAChB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAC7B;QACE,UAAU,EAAE,cAAc,CAAC;QAC3B,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;KACzB,GACD,SAAS;IACb;;;;OAIG;IACK,aAAa,CAAC,GAAE,MAAM,MAAM,EAAE,aAAA;IAGxC;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAuBxB,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IAQzE,OAAO,CAAC,iBAAiB;IAwHzB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAiDtB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;IA8H5B,OAAO,CAAC,eAAe;IAkEvB,OAAO,CAAC,gBAAgB;CAyUzB"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACX,MAAM,YAAY,CAAC;AAsCpB,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AASD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAgyBzD,CAAC;AAoBF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAsCD,qBAAa,cAAc;IAEvB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,UAAU;IAOlB;;;;OAIG;IACH,OAAO,CAAC,aAAa,CAAC;gBAjBd,aAAa,EAAE,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,CAAC,EAAE,mBAAmB,KACtB,OAAO,CAAC,UAAU,CAAC,EAChB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAC7B;QACE,UAAU,EAAE,cAAc,CAAC;QAC3B,QAAQ,EAAE,YAAY,CAAC;QACvB,QAAQ,CAAC,EAAE,YAAY,CAAC;KACzB,GACD,SAAS;IACb;;;;OAIG;IACK,aAAa,CAAC,GAAE,MAAM,MAAM,EAAE,aAAA;IAGxC;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,gBAAgB;IAqCxB,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IAQzE,OAAO,CAAC,iBAAiB;IAwHzB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,cAAc;IAuDtB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,oBAAoB;IA8H5B,OAAO,CAAC,eAAe;IA8FvB,OAAO,CAAC,gBAAgB;CA4WzB"}