@withpica/mcp-server 2.33.0 → 2.39.0
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 +261 -0
- package/dist/apps/release.d.ts +2 -0
- package/dist/apps/release.d.ts.map +1 -0
- package/dist/apps/release.js +69 -0
- package/dist/apps/release.js.map +1 -0
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +16 -0
- package/dist/resources/index.js.map +1 -1
- package/dist/server-instructions.d.ts +28 -0
- package/dist/server-instructions.d.ts.map +1 -1
- package/dist/server-instructions.js +34 -0
- package/dist/server-instructions.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +11 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/app-tools.d.ts.map +1 -1
- package/dist/tools/app-tools.js +39 -18
- package/dist/tools/app-tools.js.map +1 -1
- package/dist/tools/credits.d.ts +23 -0
- package/dist/tools/credits.d.ts.map +1 -1
- package/dist/tools/credits.js +199 -0
- package/dist/tools/credits.js.map +1 -1
- package/dist/tools/discovery.d.ts.map +1 -1
- package/dist/tools/discovery.js +24 -2
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/index.d.ts +15 -6
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +64 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +39 -0
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/public-filter.d.ts.map +1 -1
- package/dist/tools/public-filter.js +2 -0
- package/dist/tools/public-filter.js.map +1 -1
- package/dist/tools/recording-attribution-hints.d.ts +24 -0
- package/dist/tools/recording-attribution-hints.d.ts.map +1 -0
- package/dist/tools/recording-attribution-hints.js +27 -0
- package/dist/tools/recording-attribution-hints.js.map +1 -0
- package/dist/tools/recordings.d.ts.map +1 -1
- package/dist/tools/recordings.js +30 -3
- package/dist/tools/recordings.js.map +1 -1
- package/dist/tools/release-rich.d.ts +31 -0
- package/dist/tools/release-rich.d.ts.map +1 -0
- package/dist/tools/release-rich.js +240 -0
- package/dist/tools/release-rich.js.map +1 -0
- package/dist/tools/signup.d.ts +26 -0
- package/dist/tools/signup.d.ts.map +1 -0
- package/dist/tools/signup.js +265 -0
- package/dist/tools/signup.js.map +1 -0
- package/dist/tools/subscription.d.ts +60 -0
- package/dist/tools/subscription.d.ts.map +1 -0
- package/dist/tools/subscription.js +440 -0
- package/dist/tools/subscription.js.map +1 -0
- package/package.json +3 -3
- package/server.json +2 -2
- package/dist/__mocks__/mppx-mcp-sdk-server.d.ts +0 -6
- package/dist/__mocks__/mppx-mcp-sdk-server.d.ts.map +0 -1
- package/dist/__mocks__/mppx-mcp-sdk-server.js +0 -6
- package/dist/__mocks__/mppx-mcp-sdk-server.js.map +0 -1
- package/dist/__mocks__/mppx-server.d.ts +0 -12
- package/dist/__mocks__/mppx-server.d.ts.map +0 -1
- package/dist/__mocks__/mppx-server.js +0 -12
- package/dist/__mocks__/mppx-server.js.map +0 -1
package/dist/tools/recordings.js
CHANGED
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
*/
|
|
42
42
|
import { EntityNotFoundError } from "@withpica/mcp-sdk";
|
|
43
43
|
import { formatSuccess, formatStructuredList, withBillingGate, } from "@withpica/mcp-utils";
|
|
44
|
+
import { buildRecordingAttributionHints } from "./recording-attribution-hints.js";
|
|
44
45
|
/**
|
|
45
46
|
* Canonical write-schema for `recordings`. Every property must
|
|
46
47
|
* correspond to a real column on `public.recordings` (or be the
|
|
@@ -222,7 +223,9 @@ export class RecordingsTools {
|
|
|
222
223
|
definition: {
|
|
223
224
|
name: "pica_recordings_inspect",
|
|
224
225
|
description: "Get details for a specific recording. Omit sections for everything. " +
|
|
225
|
-
"
|
|
226
|
+
"Sections: basic (recording row + ISRC prefix intel), credits (work-side credits via parent work), recording_credits (ADR-213 — first-party operator-authored production credits on this recording), audio (audio files via parent work), production_assets, releases. " +
|
|
227
|
+
"Round-trip a pica_recording_credits_update write via sections:['recording_credits']. " +
|
|
228
|
+
"→ then: pica_audio_query (audio files), pica_credits_update (fix work-side credits), pica_recording_credits_update (add a recording-side credit)",
|
|
226
229
|
inputSchema: {
|
|
227
230
|
type: "object",
|
|
228
231
|
properties: {
|
|
@@ -237,12 +240,13 @@ export class RecordingsTools {
|
|
|
237
240
|
enum: [
|
|
238
241
|
"basic",
|
|
239
242
|
"credits",
|
|
243
|
+
"recording_credits",
|
|
240
244
|
"audio",
|
|
241
245
|
"production_assets",
|
|
242
246
|
"releases",
|
|
243
247
|
],
|
|
244
248
|
},
|
|
245
|
-
description: 'Which data sections to include. Omit for all sections. Use ["basic"] for lightweight lookup.',
|
|
249
|
+
description: 'Which data sections to include. Omit for all sections. Use ["basic"] for lightweight lookup. Use ["recording_credits"] to round-trip a pica_recording_credits_update write.',
|
|
246
250
|
},
|
|
247
251
|
},
|
|
248
252
|
required: ["id"],
|
|
@@ -394,6 +398,25 @@ export class RecordingsTools {
|
|
|
394
398
|
error instanceof Error ? error.message : "Failed to fetch credits";
|
|
395
399
|
}
|
|
396
400
|
}
|
|
401
|
+
// ADR-213 Primitive A.1 — additive recording_credits section.
|
|
402
|
+
// Distinct from the `credits` section above (which reads work-side
|
|
403
|
+
// credits via the parent work). This reads first-party operator-
|
|
404
|
+
// authored production credits directly from the recording_credits
|
|
405
|
+
// table. Closes the round-trip path for pica_recording_credits_update
|
|
406
|
+
// per ADR-198. Trade-secret separation: this never touches the
|
|
407
|
+
// enrichment-cascade-fed `credits` table (per ip-protection.md).
|
|
408
|
+
if (allSections || sections?.includes("recording_credits")) {
|
|
409
|
+
try {
|
|
410
|
+
result.recording_credits = await this.pica.recordingCredits.list(id);
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
result.recording_credits = [];
|
|
414
|
+
result.recording_credits_error =
|
|
415
|
+
error instanceof Error
|
|
416
|
+
? error.message
|
|
417
|
+
: "Failed to fetch recording_credits";
|
|
418
|
+
}
|
|
419
|
+
}
|
|
397
420
|
// Audio section: audio files linked to the parent work
|
|
398
421
|
if (allSections || sections?.includes("audio")) {
|
|
399
422
|
try {
|
|
@@ -462,7 +485,11 @@ export class RecordingsTools {
|
|
|
462
485
|
if (!args.version_type)
|
|
463
486
|
args.version_type = "master";
|
|
464
487
|
const recording = await this.pica.recordings.create(args);
|
|
465
|
-
|
|
488
|
+
// ADR-213 Primitive A — append attribution hints so every new recording
|
|
489
|
+
// prompts the ownership / credits / master-claim conversation by default.
|
|
490
|
+
// Mirror of buildCustodyHints (works.ts:723) for the recordings side.
|
|
491
|
+
const hints = buildRecordingAttributionHints(recording);
|
|
492
|
+
return formatSuccess("Recording created successfully", recording, hints);
|
|
466
493
|
}
|
|
467
494
|
/**
|
|
468
495
|
* Update recording
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordings.js","sourceRoot":"","sources":["../../src/tools/recordings.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAc,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAEpE,OAAO,EAEL,aAAa,EACb,oBAAoB,EACpB,eAAe,
|
|
1
|
+
{"version":3,"file":"recordings.js","sourceRoot":"","sources":["../../src/tools/recordings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Release Rich Render — ADR-208 Phase 3 Primitive D.
|
|
3
|
+
*
|
|
4
|
+
* `pica_release_show` is the catalog's first MCP tool that returns
|
|
5
|
+
* `image` + `text` content blocks in a single agent turn. Universal floor
|
|
6
|
+
* is image + text only — `resource_link` is deferred to Phase 3.5 because
|
|
7
|
+
* no release detail page exists in the codebase yet (see
|
|
8
|
+
* docs/follow-ups/2026-04-30-adr208-phase3-5-release-detail-page.md).
|
|
9
|
+
*
|
|
10
|
+
* Cover-art bytes come from a new Next.js endpoint
|
|
11
|
+
* (`/api/admin/releases/[id]/cover-art-thumbnail`) that does the sharp
|
|
12
|
+
* resize + cache server-side, so this tool stays free of native deps and
|
|
13
|
+
* keeps the customer-distributed stdio binary small.
|
|
14
|
+
*
|
|
15
|
+
* `_meta.ui.resourceUri` points at `ui://pica/release` for MCP Apps
|
|
16
|
+
* clients; the resource handler ships a stub HTML in Phase 3 (full
|
|
17
|
+
* interactive iframe is queued under the ADR-200 Phase 1.x backlog).
|
|
18
|
+
*/
|
|
19
|
+
import { PicaClient } from "@withpica/mcp-sdk";
|
|
20
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
21
|
+
export declare class ReleaseRichTools {
|
|
22
|
+
private pica;
|
|
23
|
+
constructor(pica: PicaClient);
|
|
24
|
+
getTools(): Array<{
|
|
25
|
+
definition: ToolDefinition;
|
|
26
|
+
executor: ToolExecutor;
|
|
27
|
+
}>;
|
|
28
|
+
private show;
|
|
29
|
+
private resolveLabelName;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=release-rich.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-rich.d.ts","sourceRoot":"","sources":["../../src/tools/release-rich.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,UAAU,EAAqB,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AA+CtE,qBAAa,gBAAgB;IAC3B,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;YAqC3D,IAAI;YAqFJ,gBAAgB;CAY/B"}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
const TOOL_NAME = "pica_release_show";
|
|
3
|
+
const RESOURCE_URI = "ui://pica/release";
|
|
4
|
+
export class ReleaseRichTools {
|
|
5
|
+
pica;
|
|
6
|
+
constructor(pica) {
|
|
7
|
+
this.pica = pica;
|
|
8
|
+
}
|
|
9
|
+
getTools() {
|
|
10
|
+
return [
|
|
11
|
+
{
|
|
12
|
+
definition: {
|
|
13
|
+
name: TOOL_NAME,
|
|
14
|
+
description: "Render a release as a rich card — cover art image + markdown summary " +
|
|
15
|
+
"(title, year, primary artists, label, tracklist with ISRCs and durations). " +
|
|
16
|
+
"Use when the user asks 'show me [release]' or 'what's on [release]?'. " +
|
|
17
|
+
"For pure data-shape reasoning use pica_releases_get instead — this tool is " +
|
|
18
|
+
"shaped for user display, not agent computation. " +
|
|
19
|
+
"ADR-208 Phase 3: first MCP tool returning an image content block alongside " +
|
|
20
|
+
"text. MCP Apps clients (Claude Desktop, Cursor) get the iframe via " +
|
|
21
|
+
"_meta.ui.resourceUri; every other client renders the universal floor (image + " +
|
|
22
|
+
"text) per the 2025-11-25 image primitive.",
|
|
23
|
+
inputSchema: {
|
|
24
|
+
type: "object",
|
|
25
|
+
properties: {
|
|
26
|
+
release_id: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "UUID of the release to render.",
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
required: ["release_id"],
|
|
32
|
+
},
|
|
33
|
+
annotations: {
|
|
34
|
+
readOnlyHint: true,
|
|
35
|
+
},
|
|
36
|
+
_meta: {
|
|
37
|
+
ui: { resourceUri: RESOURCE_URI },
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
executor: this.show.bind(this),
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
async show(args) {
|
|
45
|
+
const releaseId = args?.release_id;
|
|
46
|
+
if (typeof releaseId !== "string" || releaseId.length === 0) {
|
|
47
|
+
return errorResult("release_id is required. Pass the UUID of the release to render. " +
|
|
48
|
+
"Try pica_releases_list to find the id you want.");
|
|
49
|
+
}
|
|
50
|
+
let release;
|
|
51
|
+
try {
|
|
52
|
+
release = (await this.pica.releases.get(releaseId));
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
return errorResult(`couldn't load release ${releaseId}: ${errorMessage(error)}. ` +
|
|
56
|
+
"Try pica_releases_list to confirm the id, or pica_search_all to find it by title.");
|
|
57
|
+
}
|
|
58
|
+
if (!release || !release.id) {
|
|
59
|
+
return errorResult(`release ${releaseId} not found in this catalog. ` +
|
|
60
|
+
"Try pica_releases_list to see what exists.");
|
|
61
|
+
}
|
|
62
|
+
let tracks = [];
|
|
63
|
+
try {
|
|
64
|
+
const trackResult = (await this.pica.releases.listTracks(releaseId));
|
|
65
|
+
if (Array.isArray(trackResult)) {
|
|
66
|
+
tracks = trackResult;
|
|
67
|
+
}
|
|
68
|
+
else if (trackResult &&
|
|
69
|
+
Array.isArray(trackResult.data)) {
|
|
70
|
+
tracks = trackResult.data;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Track fetch is non-fatal — render the card without a tracklist
|
|
75
|
+
// rather than failing the whole tool.
|
|
76
|
+
tracks = [];
|
|
77
|
+
}
|
|
78
|
+
let cover = { has_artwork: false };
|
|
79
|
+
try {
|
|
80
|
+
cover = (await this.pica.releases.getCoverArtThumbnail(releaseId));
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
cover = { has_artwork: false };
|
|
84
|
+
}
|
|
85
|
+
let labelName = null;
|
|
86
|
+
if (release.label_organization_id) {
|
|
87
|
+
labelName = await this.resolveLabelName(release.label_organization_id);
|
|
88
|
+
}
|
|
89
|
+
const markdown = buildMarkdown({ release, tracks, labelName });
|
|
90
|
+
const content = [];
|
|
91
|
+
if (cover.has_artwork) {
|
|
92
|
+
content.push({
|
|
93
|
+
type: "image",
|
|
94
|
+
data: cover.base64,
|
|
95
|
+
mimeType: cover.mime_type,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
content.push({ type: "text", text: markdown });
|
|
99
|
+
return {
|
|
100
|
+
content,
|
|
101
|
+
structuredContent: {
|
|
102
|
+
title: release.title,
|
|
103
|
+
markdown,
|
|
104
|
+
cover_base64: cover.has_artwork ? cover.base64 : null,
|
|
105
|
+
cover_mime_type: cover.has_artwork ? cover.mime_type : null,
|
|
106
|
+
// resource_link_uri is null in Phase 3; reserved for Phase 3.5
|
|
107
|
+
// when a release detail page exists.
|
|
108
|
+
resource_link_uri: null,
|
|
109
|
+
},
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async resolveLabelName(orgId) {
|
|
113
|
+
try {
|
|
114
|
+
const labels = (await this.pica.labels.list({
|
|
115
|
+
limit: 200,
|
|
116
|
+
}));
|
|
117
|
+
if (!Array.isArray(labels))
|
|
118
|
+
return null;
|
|
119
|
+
const match = labels.find((l) => l.id === orgId);
|
|
120
|
+
return match?.display_name ?? match?.name ?? null;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function buildMarkdown(input) {
|
|
128
|
+
const { release, tracks, labelName } = input;
|
|
129
|
+
const headerLines = [];
|
|
130
|
+
headerLines.push(`# ${release.title}`);
|
|
131
|
+
const subtitleParts = [];
|
|
132
|
+
if (release.release_type)
|
|
133
|
+
subtitleParts.push(release.release_type);
|
|
134
|
+
const year = extractYear(release.release_date);
|
|
135
|
+
if (year)
|
|
136
|
+
subtitleParts.push(year);
|
|
137
|
+
if (subtitleParts.length > 0) {
|
|
138
|
+
headerLines.push(`*${subtitleParts.join(" · ")}*`);
|
|
139
|
+
}
|
|
140
|
+
const metaLines = [];
|
|
141
|
+
const primaryArtists = collectPrimaryArtists(tracks);
|
|
142
|
+
if (primaryArtists.length > 0) {
|
|
143
|
+
metaLines.push(`**artists**: ${primaryArtists.join(", ")}`);
|
|
144
|
+
}
|
|
145
|
+
if (labelName) {
|
|
146
|
+
metaLines.push(`**label**: ${labelName}`);
|
|
147
|
+
}
|
|
148
|
+
if (release.upc) {
|
|
149
|
+
metaLines.push(`**upc**: ${release.upc}`);
|
|
150
|
+
}
|
|
151
|
+
if (release.catalog_number) {
|
|
152
|
+
metaLines.push(`**catalog #**: ${release.catalog_number}`);
|
|
153
|
+
}
|
|
154
|
+
const tracklistLines = [];
|
|
155
|
+
if (tracks.length > 0) {
|
|
156
|
+
tracklistLines.push("");
|
|
157
|
+
tracklistLines.push("## tracks");
|
|
158
|
+
for (const track of tracks) {
|
|
159
|
+
tracklistLines.push(formatTrackLine(track));
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
tracklistLines.push("");
|
|
164
|
+
tracklistLines.push("*no tracks attached yet — use pica_releases_attach_track or pica_releases_create_with_tracks to add them.*");
|
|
165
|
+
}
|
|
166
|
+
const sections = [
|
|
167
|
+
headerLines.join("\n"),
|
|
168
|
+
metaLines.length > 0 ? metaLines.join("\n") : null,
|
|
169
|
+
tracklistLines.join("\n"),
|
|
170
|
+
].filter((s) => s !== null);
|
|
171
|
+
return sections.join("\n\n");
|
|
172
|
+
}
|
|
173
|
+
function formatTrackLine(track) {
|
|
174
|
+
const num = track.track_number;
|
|
175
|
+
const title = track.recording?.title ?? track.work?.title ?? "(untitled track)";
|
|
176
|
+
const artist = track.recording?.artist_name ?? track.work?.primary_artist ?? null;
|
|
177
|
+
const isrc = track.recording?.isrc ?? track.work?.isrc ?? null;
|
|
178
|
+
const duration = formatDuration(track.recording?.duration_ms);
|
|
179
|
+
const trailingMeta = [];
|
|
180
|
+
if (artist)
|
|
181
|
+
trailingMeta.push(artist);
|
|
182
|
+
if (isrc)
|
|
183
|
+
trailingMeta.push(isrc);
|
|
184
|
+
if (duration)
|
|
185
|
+
trailingMeta.push(duration);
|
|
186
|
+
if (trailingMeta.length === 0)
|
|
187
|
+
return `${num}. ${title}`;
|
|
188
|
+
return `${num}. ${title} — ${trailingMeta.join(" · ")}`;
|
|
189
|
+
}
|
|
190
|
+
function collectPrimaryArtists(tracks) {
|
|
191
|
+
const seen = new Set();
|
|
192
|
+
const out = [];
|
|
193
|
+
for (const track of tracks) {
|
|
194
|
+
const artist = track.recording?.artist_name ?? track.work?.primary_artist ?? null;
|
|
195
|
+
if (!artist)
|
|
196
|
+
continue;
|
|
197
|
+
const key = artist.trim().toLowerCase();
|
|
198
|
+
if (key.length === 0 || seen.has(key))
|
|
199
|
+
continue;
|
|
200
|
+
seen.add(key);
|
|
201
|
+
out.push(artist.trim());
|
|
202
|
+
if (out.length >= 6)
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
return out;
|
|
206
|
+
}
|
|
207
|
+
function extractYear(releaseDate) {
|
|
208
|
+
if (!releaseDate)
|
|
209
|
+
return null;
|
|
210
|
+
const match = /^(\d{4})/.exec(releaseDate);
|
|
211
|
+
return match ? match[1] : null;
|
|
212
|
+
}
|
|
213
|
+
function formatDuration(durationMs) {
|
|
214
|
+
if (durationMs == null || !Number.isFinite(durationMs) || durationMs <= 0) {
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
const totalSeconds = Math.round(durationMs / 1000);
|
|
218
|
+
const minutes = Math.floor(totalSeconds / 60);
|
|
219
|
+
const seconds = totalSeconds % 60;
|
|
220
|
+
return `${minutes}:${seconds.toString().padStart(2, "0")}`;
|
|
221
|
+
}
|
|
222
|
+
function errorResult(text) {
|
|
223
|
+
return {
|
|
224
|
+
content: [{ type: "text", text }],
|
|
225
|
+
isError: true,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
function errorMessage(error) {
|
|
229
|
+
if (error instanceof Error)
|
|
230
|
+
return error.message;
|
|
231
|
+
if (typeof error === "string")
|
|
232
|
+
return error;
|
|
233
|
+
try {
|
|
234
|
+
return JSON.stringify(error);
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
return String(error);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=release-rich.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-rich.js","sourceRoot":"","sources":["../../src/tools/release-rich.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
2
|
+
export type SignupTransport = "stdio" | "http";
|
|
3
|
+
export interface SignupToolsConfig {
|
|
4
|
+
/** Base PICA API URL (e.g. `https://withpica.com/api`). Trailing slash tolerated. */
|
|
5
|
+
apiUrl: string;
|
|
6
|
+
/** Stamped into the JWT body so the page knows which credential issuance branch to take. */
|
|
7
|
+
transport: SignupTransport;
|
|
8
|
+
/**
|
|
9
|
+
* HTTP only — DCR client identifier from the OAuth discovery context
|
|
10
|
+
* so the connector flow can be resumed after onboarding completes.
|
|
11
|
+
* MUST be null for stdio (the route enforces this server-side too).
|
|
12
|
+
*/
|
|
13
|
+
clientId?: string | null;
|
|
14
|
+
}
|
|
15
|
+
export declare class SignupTools {
|
|
16
|
+
private readonly apiUrl;
|
|
17
|
+
private readonly transport;
|
|
18
|
+
private readonly clientId;
|
|
19
|
+
constructor(config: SignupToolsConfig);
|
|
20
|
+
getTools(): Array<{
|
|
21
|
+
definition: ToolDefinition;
|
|
22
|
+
executor: ToolExecutor;
|
|
23
|
+
}>;
|
|
24
|
+
private signupStart;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=signup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../src/tools/signup.ts"],"names":[],"mappings":"AA+BA,OAAO,EACL,cAAc,EACd,YAAY,EAGb,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,CAAC;AAE/C,MAAM,WAAW,iBAAiB;IAChC,qFAAqF;IACrF,MAAM,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,SAAS,EAAE,eAAe,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAWD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;gBAE7B,MAAM,EAAE,iBAAiB;IAoBrC,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAkD3D,WAAW;CAuL1B"}
|