@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.
- package/CHANGELOG.md +46 -0
- package/README.intro.md +115 -0
- package/README.md +188 -204
- package/dist/lib/changelog.generated.d.ts +2 -2
- package/dist/lib/changelog.generated.d.ts.map +1 -1
- package/dist/lib/changelog.generated.js +2 -2
- package/dist/lib/changelog.generated.js.map +1 -1
- package/dist/prompts/index.js +4 -4
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/agent-guide.d.ts +50 -4
- package/dist/resources/agent-guide.d.ts.map +1 -1
- package/dist/resources/agent-guide.js +109 -18
- package/dist/resources/agent-guide.js.map +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +81 -2
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/llms-primer.d.ts +1 -1
- package/dist/resources/llms-primer.d.ts.map +1 -1
- package/dist/resources/llms-primer.js +1 -1
- package/dist/resources/required-schemas.generated.d.ts +24 -12
- package/dist/resources/required-schemas.generated.d.ts.map +1 -1
- package/dist/resources/required-schemas.generated.js +31 -18
- package/dist/resources/required-schemas.generated.js.map +1 -1
- package/dist/resources/required-schemas.source.d.ts.map +1 -1
- package/dist/resources/required-schemas.source.js +39 -15
- package/dist/resources/required-schemas.source.js.map +1 -1
- package/dist/server-instructions.d.ts +2 -2
- package/dist/server-instructions.d.ts.map +1 -1
- package/dist/server-instructions.js +5 -5
- package/dist/server-instructions.js.map +1 -1
- package/dist/skills/skills.generated.d.ts.map +1 -1
- package/dist/skills/skills.generated.js +23 -14
- package/dist/skills/skills.generated.js.map +1 -1
- package/dist/tools/agent-identity.d.ts.map +1 -1
- package/dist/tools/agent-identity.js +2 -1
- package/dist/tools/agent-identity.js.map +1 -1
- package/dist/tools/agreement-types.d.ts.map +1 -1
- package/dist/tools/agreement-types.js +23 -11
- package/dist/tools/agreement-types.js.map +1 -1
- package/dist/tools/agreements.d.ts.map +1 -1
- package/dist/tools/agreements.js +17 -9
- package/dist/tools/agreements.js.map +1 -1
- package/dist/tools/analytics.d.ts.map +1 -1
- package/dist/tools/analytics.js +6 -3
- package/dist/tools/analytics.js.map +1 -1
- package/dist/tools/assets.d.ts.map +1 -1
- package/dist/tools/assets.js +20 -13
- package/dist/tools/assets.js.map +1 -1
- package/dist/tools/audio-files.d.ts.map +1 -1
- package/dist/tools/audio-files.js +5 -3
- package/dist/tools/audio-files.js.map +1 -1
- package/dist/tools/bulk.d.ts.map +1 -1
- package/dist/tools/bulk.js +15 -9
- package/dist/tools/bulk.js.map +1 -1
- package/dist/tools/collaborators.d.ts.map +1 -1
- package/dist/tools/collaborators.js +41 -16
- package/dist/tools/collaborators.js.map +1 -1
- package/dist/tools/comparisons.d.ts.map +1 -1
- package/dist/tools/comparisons.js +2 -1
- package/dist/tools/comparisons.js.map +1 -1
- package/dist/tools/credits.d.ts +4 -3
- package/dist/tools/credits.d.ts.map +1 -1
- package/dist/tools/credits.js +16 -88
- package/dist/tools/credits.js.map +1 -1
- package/dist/tools/custody.d.ts.map +1 -1
- package/dist/tools/custody.js +43 -10
- package/dist/tools/custody.js.map +1 -1
- package/dist/tools/dashboard.d.ts.map +1 -1
- package/dist/tools/dashboard.js +38 -19
- package/dist/tools/dashboard.js.map +1 -1
- package/dist/tools/deprecations.d.ts +12 -2
- package/dist/tools/deprecations.d.ts.map +1 -1
- package/dist/tools/deprecations.js +22 -12
- package/dist/tools/deprecations.js.map +1 -1
- package/dist/tools/directory.d.ts.map +1 -1
- package/dist/tools/directory.js +7 -4
- package/dist/tools/directory.js.map +1 -1
- package/dist/tools/discovery.d.ts +66 -10
- package/dist/tools/discovery.d.ts.map +1 -1
- package/dist/tools/discovery.js +221 -25
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/disputes.d.ts.map +1 -1
- package/dist/tools/disputes.js +3 -0
- package/dist/tools/disputes.js.map +1 -1
- package/dist/tools/documents.d.ts.map +1 -1
- package/dist/tools/documents.js +9 -6
- package/dist/tools/documents.js.map +1 -1
- package/dist/tools/enrichment.d.ts +14 -0
- package/dist/tools/enrichment.d.ts.map +1 -1
- package/dist/tools/enrichment.js +217 -16
- package/dist/tools/enrichment.js.map +1 -1
- package/dist/tools/error-envelope.d.ts +44 -0
- package/dist/tools/error-envelope.d.ts.map +1 -0
- package/dist/tools/error-envelope.js +17 -0
- package/dist/tools/error-envelope.js.map +1 -0
- package/dist/tools/exports.d.ts +4 -0
- package/dist/tools/exports.d.ts.map +1 -1
- package/dist/tools/exports.js +158 -6
- package/dist/tools/exports.js.map +1 -1
- package/dist/tools/groups.d.ts.map +1 -1
- package/dist/tools/groups.js +1 -0
- package/dist/tools/groups.js.map +1 -1
- package/dist/tools/import-documents.d.ts.map +1 -1
- package/dist/tools/import-documents.js +3 -2
- package/dist/tools/import-documents.js.map +1 -1
- package/dist/tools/import.d.ts.map +1 -1
- package/dist/tools/import.js +71 -38
- package/dist/tools/import.js.map +1 -1
- package/dist/tools/index.d.ts +53 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +166 -38
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/licensing.d.ts.map +1 -1
- package/dist/tools/licensing.js +6 -2
- package/dist/tools/licensing.js.map +1 -1
- package/dist/tools/memory.d.ts.map +1 -1
- package/dist/tools/memory.js +8 -4
- package/dist/tools/memory.js.map +1 -1
- package/dist/tools/metadata.d.ts +7 -1
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +65 -2
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/multimedia.d.ts.map +1 -1
- package/dist/tools/multimedia.js +7 -3
- package/dist/tools/multimedia.js.map +1 -1
- package/dist/tools/notes.d.ts.map +1 -1
- package/dist/tools/notes.js +9 -6
- package/dist/tools/notes.js.map +1 -1
- package/dist/tools/notifications.d.ts.map +1 -1
- package/dist/tools/notifications.js +16 -27
- package/dist/tools/notifications.js.map +1 -1
- package/dist/tools/people.d.ts.map +1 -1
- package/dist/tools/people.js +8 -5
- package/dist/tools/people.js.map +1 -1
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +16 -12
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/recording-custody.d.ts.map +1 -1
- package/dist/tools/recording-custody.js +9 -5
- package/dist/tools/recording-custody.js.map +1 -1
- package/dist/tools/recording-samples.d.ts.map +1 -1
- package/dist/tools/recording-samples.js +25 -6
- package/dist/tools/recording-samples.js.map +1 -1
- package/dist/tools/recordings.d.ts +10 -0
- package/dist/tools/recordings.d.ts.map +1 -1
- package/dist/tools/recordings.js +32 -19
- package/dist/tools/recordings.js.map +1 -1
- package/dist/tools/recovery-hints.d.ts.map +1 -1
- package/dist/tools/recovery-hints.js +58 -17
- package/dist/tools/recovery-hints.js.map +1 -1
- package/dist/tools/release-rich.js +5 -5
- package/dist/tools/release-rich.js.map +1 -1
- package/dist/tools/releases.d.ts.map +1 -1
- package/dist/tools/releases.js +21 -12
- package/dist/tools/releases.js.map +1 -1
- package/dist/tools/royalties.d.ts.map +1 -1
- package/dist/tools/royalties.js +12 -6
- package/dist/tools/royalties.js.map +1 -1
- package/dist/tools/send.d.ts.map +1 -1
- package/dist/tools/send.js +7 -4
- package/dist/tools/send.js.map +1 -1
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +8 -4
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/settings.d.ts.map +1 -1
- package/dist/tools/settings.js +10 -4
- package/dist/tools/settings.js.map +1 -1
- package/dist/tools/share-links.d.ts.map +1 -1
- package/dist/tools/share-links.js +7 -3
- package/dist/tools/share-links.js.map +1 -1
- package/dist/tools/share-send.d.ts.map +1 -1
- package/dist/tools/share-send.js +15 -5
- package/dist/tools/share-send.js.map +1 -1
- package/dist/tools/shows.d.ts +31 -0
- package/dist/tools/shows.d.ts.map +1 -0
- package/dist/tools/shows.js +307 -0
- package/dist/tools/shows.js.map +1 -0
- package/dist/tools/skills.d.ts.map +1 -1
- package/dist/tools/skills.js +7 -0
- package/dist/tools/skills.js.map +1 -1
- package/dist/tools/split-sheets.d.ts.map +1 -1
- package/dist/tools/split-sheets.js +19 -12
- package/dist/tools/split-sheets.js.map +1 -1
- package/dist/tools/statements.js +2 -2
- package/dist/tools/statements.js.map +1 -1
- package/dist/tools/storage-config.d.ts.map +1 -1
- package/dist/tools/storage-config.js +5 -3
- package/dist/tools/storage-config.js.map +1 -1
- package/dist/tools/subscription.d.ts +69 -19
- package/dist/tools/subscription.d.ts.map +1 -1
- package/dist/tools/subscription.js +98 -255
- package/dist/tools/subscription.js.map +1 -1
- package/dist/tools/sync-placements.d.ts.map +1 -1
- package/dist/tools/sync-placements.js +10 -5
- package/dist/tools/sync-placements.js.map +1 -1
- package/dist/tools/telegram.d.ts.map +1 -1
- package/dist/tools/telegram.js +16 -24
- package/dist/tools/telegram.js.map +1 -1
- package/dist/tools/users.d.ts.map +1 -1
- package/dist/tools/users.js +12 -6
- package/dist/tools/users.js.map +1 -1
- package/dist/tools/works.d.ts.map +1 -1
- package/dist/tools/works.js +13 -10
- package/dist/tools/works.js.map +1 -1
- package/package.json +7 -3
- 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
|
|
15
|
-
*
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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":"AAAA,6DAA6D;AAsB7D
|
|
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;
|
|
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"}
|
package/dist/tools/directory.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
|
|
2
|
-
import {
|
|
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
|
-
|
|
104
|
-
|
|
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":"AAAA,6DAA6D;AAQ7D,OAAO,EAAE,
|
|
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
|
|
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
|
|
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
|
|
53
|
-
*
|
|
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):
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
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;
|
|
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"}
|