@withpica/mcp-server 2.96.1 → 2.96.2
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 +51 -0
- package/README.md +4 -4
- 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/creator-question-atlas.d.ts.map +1 -1
- package/dist/prompts/creator-question-atlas.js +11 -0
- package/dist/prompts/creator-question-atlas.js.map +1 -1
- package/dist/tools/assets.d.ts.map +1 -1
- package/dist/tools/assets.js +18 -0
- package/dist/tools/assets.js.map +1 -1
- package/dist/tools/dashboard.d.ts.map +1 -1
- package/dist/tools/dashboard.js +1 -0
- package/dist/tools/dashboard.js.map +1 -1
- package/dist/tools/deprecations.d.ts +14 -7
- package/dist/tools/deprecations.d.ts.map +1 -1
- package/dist/tools/deprecations.js +14 -7
- package/dist/tools/deprecations.js.map +1 -1
- package/dist/tools/discovery.d.ts +5 -0
- package/dist/tools/discovery.d.ts.map +1 -1
- package/dist/tools/discovery.js +121 -13
- package/dist/tools/discovery.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +15 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/metadata.d.ts.map +1 -1
- package/dist/tools/metadata.js +20 -0
- package/dist/tools/metadata.js.map +1 -1
- package/dist/tools/recordings.d.ts +13 -0
- package/dist/tools/recordings.d.ts.map +1 -1
- package/dist/tools/recordings.js +96 -33
- package/dist/tools/recordings.js.map +1 -1
- package/dist/tools/recovery-hints.d.ts.map +1 -1
- package/dist/tools/recovery-hints.js +46 -0
- package/dist/tools/recovery-hints.js.map +1 -1
- package/dist/tools/settings.d.ts.map +1 -1
- package/dist/tools/settings.js +3 -2
- package/dist/tools/settings.js.map +1 -1
- package/dist/tools/subscription.d.ts +99 -13
- package/dist/tools/subscription.d.ts.map +1 -1
- package/dist/tools/subscription.js +403 -8
- package/dist/tools/subscription.js.map +1 -1
- package/package.json +3 -3
- package/server.json +2 -2
- package/.claude/settings.local.json +0 -5
|
@@ -1,4 +1,44 @@
|
|
|
1
1
|
// Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any -- ToolExecutor signature uses Record<string, any> */
|
|
3
|
+
/**
|
|
4
|
+
* Subscription + billing tools — ADR-210 Phase 2, extended by the MPP pay
|
|
5
|
+
* rail (spec 2026-08-24 WS-B).
|
|
6
|
+
*
|
|
7
|
+
* Three MCP tools that surface the explicit billing read + action layer
|
|
8
|
+
* complementing the ambient `_meta.session_state.billing_slice` shipped
|
|
9
|
+
* in Phase 1:
|
|
10
|
+
*
|
|
11
|
+
* - pica_subscription_status (read; readOnlyHint=true)
|
|
12
|
+
* Wraps `GET /api/admin/subscription` and flattens it into the card
|
|
13
|
+
* below (`SubscriptionStatusFlat`), composing a templated `summary`
|
|
14
|
+
* line the agent uses verbatim. It is no longer the 9 fields ADR-210
|
|
15
|
+
* § Phase 2 specified: two trial fields came off on 2026-08-21, and
|
|
16
|
+
* WS-B added `pricing` + `held`, each present only when the route
|
|
17
|
+
* measured it. Read the interface, not a count.
|
|
18
|
+
*
|
|
19
|
+
* - pica_subscription_manage (action; readOnlyHint=false)
|
|
20
|
+
* Single-verb dispatcher over the existing
|
|
21
|
+
* `POST /api/admin/subscription` (subscribe / upgrade) and
|
|
22
|
+
* `POST /api/admin/subscription/portal` (manage / cancel) routes.
|
|
23
|
+
* Returns a `resource_link` content block (universal MCP floor)
|
|
24
|
+
* and uses `elicitation/create url` only when the client
|
|
25
|
+
* advertises `capabilities.elicitation.url` per ADR-200 Phase 1
|
|
26
|
+
* (capability-gated; `feedback_mcp_sdk_capability_gates_elicitation.md`).
|
|
27
|
+
*
|
|
28
|
+
* - pica_billing_pay (read; readOnlyHint=true)
|
|
29
|
+
* Wraps `POST /api/admin/billing/pay-link`. Mints a link for one
|
|
30
|
+
* offer — resident_month / unlock / settle — and never charges: an
|
|
31
|
+
* agent POSTs the link with a Machine Payments credential, or a
|
|
32
|
+
* person opens it and pays by card. The refusals the ROUTE itself
|
|
33
|
+
* composes — billing disabled, nothing held, offer moved — come back
|
|
34
|
+
* as structured results rather than thrown ApiErrors. A 4xx from the
|
|
35
|
+
* auth wrapper in front of it is quoted, never re-interpreted; a 4xx
|
|
36
|
+
* carrying nothing quotable, and everything from 500 up, is re-thrown
|
|
37
|
+
* (`payRefusal` below is the single place that decides which).
|
|
38
|
+
*
|
|
39
|
+
* No new Stripe SDK calls — every route here is reused as-is.
|
|
40
|
+
*/
|
|
41
|
+
import { ApiError, } from "@withpica/mcp-sdk";
|
|
2
42
|
// ADR-205 D7: enterprise is sales-led, not bookable through Checkout.
|
|
3
43
|
// Mirror the route-layer allowlist here for a better tool-side error
|
|
4
44
|
// message before the request leaves the agent.
|
|
@@ -9,6 +49,49 @@ const VALID_PAID_TIERS = [
|
|
|
9
49
|
"established",
|
|
10
50
|
];
|
|
11
51
|
const VALID_ACTIONS = ["subscribe", "upgrade", "manage", "cancel"];
|
|
52
|
+
/**
|
|
53
|
+
* The offers `POST /api/admin/billing/pay-link` accepts. Checked here as well
|
|
54
|
+
* as at the route because an unknown offer is a mistake the agent can fix
|
|
55
|
+
* from the tool's own answer, without spending a round trip on a 400.
|
|
56
|
+
*/
|
|
57
|
+
const VALID_PAY_OFFERS = [
|
|
58
|
+
"resident_month",
|
|
59
|
+
"unlock",
|
|
60
|
+
"settle",
|
|
61
|
+
];
|
|
62
|
+
/**
|
|
63
|
+
* Where a refused mint sends the agent next, by the route's error code.
|
|
64
|
+
* Mirrored in `RECOVERY_HINTS.pica_billing_pay` (recovery-hints.ts), which is
|
|
65
|
+
* what `pica_tool_details` reads; this copy is what the refusal itself
|
|
66
|
+
* carries, so an agent that never opens tool details still gets the pointer.
|
|
67
|
+
*/
|
|
68
|
+
const NEXT_TOOL_FOR_PAY_ERROR = {
|
|
69
|
+
nothing_held_for_entity: "pica_dashboard_briefing",
|
|
70
|
+
offer_no_longer_applies: "pica_subscription_status",
|
|
71
|
+
};
|
|
72
|
+
/**
|
|
73
|
+
* The pay-link route's own flag-off body, verbatim
|
|
74
|
+
* (`app/api/admin/billing/pay-link/route.ts`: `{ error: "billing not enabled" }`).
|
|
75
|
+
*
|
|
76
|
+
* Named rather than inlined because it is the ONE 403 that licenses a
|
|
77
|
+
* statement about money, and a reader needs to be able to grep both ends of
|
|
78
|
+
* that coupling. If the route ever reworded it, this comparison stops
|
|
79
|
+
* matching and every 403 falls through to the access-refusal branch below —
|
|
80
|
+
* which says less, but says nothing false.
|
|
81
|
+
*/
|
|
82
|
+
const BILLING_DISABLED_ERROR = "billing not enabled";
|
|
83
|
+
function isRecord(value) {
|
|
84
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
85
|
+
}
|
|
86
|
+
/** The first candidate that is a non-blank string. */
|
|
87
|
+
function firstString(...candidates) {
|
|
88
|
+
for (const candidate of candidates) {
|
|
89
|
+
if (typeof candidate === "string" && candidate.trim().length > 0) {
|
|
90
|
+
return candidate;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
12
95
|
/** The stored billing state in the vocabulary ADR-276 actually uses. */
|
|
13
96
|
export function planFor(billingState) {
|
|
14
97
|
if (billingState === "active")
|
|
@@ -18,11 +101,23 @@ export function planFor(billingState) {
|
|
|
18
101
|
return "free_runway";
|
|
19
102
|
}
|
|
20
103
|
/**
|
|
21
|
-
* Compose
|
|
22
|
-
*
|
|
23
|
-
* `
|
|
24
|
-
*
|
|
25
|
-
*
|
|
104
|
+
* Compose `SubscriptionStatusFlat` from the GET admin route's shape: eight
|
|
105
|
+
* fields that are always present (`billing_state`, `plan`, `current_tier`,
|
|
106
|
+
* `capacity_used`, `capacity_limit`, `capacity_pct`, `recommended_tier`,
|
|
107
|
+
* `summary`) plus `pricing` and `held`, each emitted ONLY when the route
|
|
108
|
+
* measured it.
|
|
109
|
+
*
|
|
110
|
+
* ⚠️ This opened by quoting a FIELD COUNT until 2026-08-26, and that count had
|
|
111
|
+
* been wrong since 08-21 — `trial_days_remaining` and `trial_ends_at` came off
|
|
112
|
+
* then, and WS-B added the two optional keys. A count is the one thing a
|
|
113
|
+
* docstring cannot keep true across a field change, and it rots silently
|
|
114
|
+
* because nothing compiles against it. Do not reintroduce one: name the fields
|
|
115
|
+
* (above) or point at the interface, which the compiler keeps honest.
|
|
116
|
+
*
|
|
117
|
+
* Mirrors `getOrgBillingSlice`'s "no meaningful cap" rule for `capacity_pct`
|
|
118
|
+
* (0 whenever current_tier is null OR enterprise) and carries through
|
|
119
|
+
* `overflow.recommendedTier` (already `inferTierFromCount`-derived) per
|
|
120
|
+
* Stage 1 Q2.
|
|
26
121
|
*
|
|
27
122
|
* Exported for unit tests.
|
|
28
123
|
*/
|
|
@@ -41,6 +136,11 @@ export function flattenStatus(status) {
|
|
|
41
136
|
const capacityPct = hasMeaningfulCap
|
|
42
137
|
? Math.round((capacityUsed / capacityLimit) * 100)
|
|
43
138
|
: 0;
|
|
139
|
+
// WS-B: both arrive `null` when billing enforcement is off, and are absent
|
|
140
|
+
// entirely against a deployment whose route predates them. Either way there
|
|
141
|
+
// is nothing to say, so neither key is emitted.
|
|
142
|
+
const pricing = status.pricing ?? undefined;
|
|
143
|
+
const held = status.held ?? undefined;
|
|
44
144
|
return {
|
|
45
145
|
billing_state: status.billingState,
|
|
46
146
|
plan: planFor(status.billingState),
|
|
@@ -52,9 +152,46 @@ export function flattenStatus(status) {
|
|
|
52
152
|
summary: composeSummary({
|
|
53
153
|
billing_state: status.billingState,
|
|
54
154
|
capacity_used: capacityUsed,
|
|
155
|
+
pricing,
|
|
156
|
+
held,
|
|
55
157
|
}),
|
|
158
|
+
...(pricing ? { pricing } : {}),
|
|
159
|
+
...(held ? { held } : {}),
|
|
56
160
|
};
|
|
57
161
|
}
|
|
162
|
+
/** `n` with the noun pluralised — "1 song", "7 songs". */
|
|
163
|
+
function plural(n, noun) {
|
|
164
|
+
return `${n} ${noun}${n === 1 ? "" : "s"}`;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The price half of the summary, built ENTIRELY from the figures the route
|
|
168
|
+
* sent. No amount of money appears here on purpose: the money is worded once,
|
|
169
|
+
* by the pay-link route's offer labels (`formatMoney` over the org's own
|
|
170
|
+
* currency, whose minor-unit conventions differ from ICU's for four of the
|
|
171
|
+
* ten supported currencies). A second wording here would be a second home for
|
|
172
|
+
* the price — the defect FIX_LOG 2026-08-20 records as having had ten.
|
|
173
|
+
*
|
|
174
|
+
* Returns `null` when there is nothing measured to say, so the caller appends
|
|
175
|
+
* nothing rather than a sentence about absence.
|
|
176
|
+
*
|
|
177
|
+
* Exported for unit tests.
|
|
178
|
+
*/
|
|
179
|
+
export function composePriceLine(pricing, held) {
|
|
180
|
+
const clauses = [];
|
|
181
|
+
if (pricing) {
|
|
182
|
+
clauses.push(`Deep processing is free for your first ` +
|
|
183
|
+
`${plural(pricing.freeRunwayDeepProcesses, "song")}, and a resident ` +
|
|
184
|
+
`month includes ${plural(pricing.residentIncludedDeepProcesses, "song")}.`);
|
|
185
|
+
}
|
|
186
|
+
// count === 0 is the common case and says nothing worth a sentence; saying
|
|
187
|
+
// "0 findings are held" invites an agent to offer a pay link nobody needs.
|
|
188
|
+
if (held && held.count > 0) {
|
|
189
|
+
clauses.push(`${plural(held.count, "finding")} across ` +
|
|
190
|
+
`${plural(held.entities, "work")} are held until one of the offers ` +
|
|
191
|
+
`is paid — ask for a pay link to see the price and how to pay it.`);
|
|
192
|
+
}
|
|
193
|
+
return clauses.length > 0 ? clauses.join(" ") : null;
|
|
194
|
+
}
|
|
58
195
|
/**
|
|
59
196
|
* The sentence an agent says out loud. Server-side template (Stage 1 Q1 option
|
|
60
197
|
* A) so wording does not vary across connectors.
|
|
@@ -84,18 +221,163 @@ export function flattenStatus(status) {
|
|
|
84
221
|
export function composeSummary(fields) {
|
|
85
222
|
const { billing_state, capacity_used } = fields;
|
|
86
223
|
const works = `${capacity_used} active work${capacity_used === 1 ? "" : "s"}`;
|
|
224
|
+
const priceLine = composePriceLine(fields.pricing, fields.held);
|
|
225
|
+
const withPrice = (base) => priceLine ? `${base} ${priceLine}` : base;
|
|
87
226
|
if (billing_state === "hibernated") {
|
|
88
|
-
return (`Deep-processing is paused on this catalogue because a cycle went unpaid. ` +
|
|
227
|
+
return withPrice(`Deep-processing is paused on this catalogue because a cycle went unpaid. ` +
|
|
89
228
|
`Nothing has been deleted and you can still read and export everything ` +
|
|
90
229
|
`(${works} held). Becoming a resident again switches deep-processing back on.`);
|
|
91
230
|
}
|
|
92
231
|
if (billing_state === "active") {
|
|
93
|
-
return `You're a resident — one flat fee per 30-day cycle, nothing auto-renews. ${works}
|
|
232
|
+
return withPrice(`You're a resident — one flat fee per 30-day cycle, nothing auto-renews. ${works}.`);
|
|
94
233
|
}
|
|
95
234
|
// trial === the free runway. No clock, no card, no countdown.
|
|
96
|
-
return (`You're on the free runway: no card, no countdown, and you are not charged ` +
|
|
235
|
+
return withPrice(`You're on the free runway: no card, no countdown, and you are not charged ` +
|
|
97
236
|
`for holding a catalogue. ${works} so far.`);
|
|
98
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Turn a pay-link 4xx into the structured refusal an agent can act on, or
|
|
240
|
+
* `null` when the caller must keep propagating it — 5xx, timeouts, network
|
|
241
|
+
* failures, and any 403 whose body carries no message worth quoting.
|
|
242
|
+
*
|
|
243
|
+
* The 403 branch is the delicate one: exactly one 403 on this path is about
|
|
244
|
+
* money, and the rest are about access. See its comment.
|
|
245
|
+
*
|
|
246
|
+
* Exported for unit tests.
|
|
247
|
+
*/
|
|
248
|
+
export function payRefusal(err, offer, entityId) {
|
|
249
|
+
if (!(err instanceof ApiError))
|
|
250
|
+
return null;
|
|
251
|
+
if (err.status !== 403 && err.status !== 400 && err.status !== 409) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
const body = parsePayErrorBody(err);
|
|
255
|
+
const code = typeof body.error === "string" ? body.error : undefined;
|
|
256
|
+
if (err.status === 403) {
|
|
257
|
+
// ⚠️ ONLY the route's own flag-off body may license a claim about money.
|
|
258
|
+
//
|
|
259
|
+
// This branch answered every 403 with "nothing is owed", and the route is
|
|
260
|
+
// not the only thing on this path that answers 403. It sits behind
|
|
261
|
+
// `withDualAuth`, whose scope denial is
|
|
262
|
+
// `{ error: { code: "INSUFFICIENT_SCOPE", message, remedy } }` — an
|
|
263
|
+
// OBJECT, so the string `code` above is undefined — and the
|
|
264
|
+
// team-permission guard answers `{ error: "<message>", code: "TEAM_..." }`.
|
|
265
|
+
// Both mean "this connection may not ask", which is not a statement about
|
|
266
|
+
// a bill, and the agent was relaying it as one.
|
|
267
|
+
if (code === BILLING_DISABLED_ERROR) {
|
|
268
|
+
return {
|
|
269
|
+
content: [
|
|
270
|
+
{
|
|
271
|
+
type: "text",
|
|
272
|
+
text: "pica is not charging on this deployment, so there is no pay link " +
|
|
273
|
+
"to mint and nothing is owed. Everything the catalogue does is " +
|
|
274
|
+
"available; no offer applies.",
|
|
275
|
+
},
|
|
276
|
+
],
|
|
277
|
+
structuredContent: {
|
|
278
|
+
kind: "pica.error.billing_not_enabled",
|
|
279
|
+
version: 1,
|
|
280
|
+
data: { offer, reason: BILLING_DISABLED_ERROR },
|
|
281
|
+
},
|
|
282
|
+
isError: true,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
// Any other 403 is an ACCESS refusal. Quote the refuser's own words and
|
|
286
|
+
// make no claim about what is or is not owed — the call never reached the
|
|
287
|
+
// billing engine, so nothing here knows.
|
|
288
|
+
const nested = isRecord(body.error) ? body.error : undefined;
|
|
289
|
+
const message = firstString(nested?.message, code);
|
|
290
|
+
// No quotable message means no honest account of WHY. Returning null hands
|
|
291
|
+
// the error back to the executor to re-throw, exactly as a 500 is handled:
|
|
292
|
+
// an opaque failure is better information than a confident wrong sentence.
|
|
293
|
+
if (!message)
|
|
294
|
+
return null;
|
|
295
|
+
const remedy = firstString(nested?.remedy, body.remedy);
|
|
296
|
+
return {
|
|
297
|
+
content: [
|
|
298
|
+
{
|
|
299
|
+
type: "text",
|
|
300
|
+
text: `pica refused to mint a pay link: ${message}. That is an access ` +
|
|
301
|
+
`refusal and says nothing about what is or is not owed.` +
|
|
302
|
+
(remedy ? ` ${remedy}` : ""),
|
|
303
|
+
},
|
|
304
|
+
],
|
|
305
|
+
structuredContent: {
|
|
306
|
+
kind: "pica.error.forbidden",
|
|
307
|
+
version: 1,
|
|
308
|
+
data: {
|
|
309
|
+
offer,
|
|
310
|
+
...(entityId ? { entity_id: entityId } : {}),
|
|
311
|
+
error: firstString(nested?.code, body.code) ?? "forbidden",
|
|
312
|
+
message,
|
|
313
|
+
...(remedy ? { next_step: remedy } : {}),
|
|
314
|
+
retry_safe: false,
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
isError: true,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
const offers = Array.isArray(body.offers)
|
|
321
|
+
? body.offers
|
|
322
|
+
: undefined;
|
|
323
|
+
let text;
|
|
324
|
+
if (code === "nothing_held_for_entity") {
|
|
325
|
+
text =
|
|
326
|
+
"nothing is held on that work, so there is nothing to unlock. Check " +
|
|
327
|
+
"what is actually waiting across the catalogue before offering to pay.";
|
|
328
|
+
}
|
|
329
|
+
else if (code === "offer_no_longer_applies") {
|
|
330
|
+
const list = offers?.map((o) => o.label).join("; ");
|
|
331
|
+
text = list
|
|
332
|
+
? `that offer no longer applies. What is on the table now: ${list}.`
|
|
333
|
+
: "that offer no longer applies, and no other offer applies either.";
|
|
334
|
+
}
|
|
335
|
+
else {
|
|
336
|
+
text = `that pay link could not be minted: ${code ?? err.message}.`;
|
|
337
|
+
}
|
|
338
|
+
return {
|
|
339
|
+
content: [{ type: "text", text }],
|
|
340
|
+
structuredContent: {
|
|
341
|
+
kind: "pica.error.offer_unavailable",
|
|
342
|
+
version: 1,
|
|
343
|
+
data: {
|
|
344
|
+
offer,
|
|
345
|
+
...(entityId ? { entity_id: entityId } : {}),
|
|
346
|
+
error: code ?? "pay_link_refused",
|
|
347
|
+
...(offers ? { offers } : {}),
|
|
348
|
+
next_tool: (code ? NEXT_TOOL_FOR_PAY_ERROR[code] : undefined) ??
|
|
349
|
+
"pica_subscription_status",
|
|
350
|
+
retry_safe: false,
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
isError: true,
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Pull the route's JSON body back out of an `ApiError`. The SDK folds the
|
|
358
|
+
* response text into the message (`"API request failed: 400 <body>"`, and
|
|
359
|
+
* `"Authentication failed: 403 <body>"` on the auth path) rather than
|
|
360
|
+
* carrying a structured body — the same extraction `duplicates.ts` and
|
|
361
|
+
* `integrity.ts` do. Returns `{}` when the body is absent or not JSON, so
|
|
362
|
+
* every caller reads a `code` of `undefined` rather than throwing twice.
|
|
363
|
+
*
|
|
364
|
+
* Exported for unit tests.
|
|
365
|
+
*/
|
|
366
|
+
export function parsePayErrorBody(err) {
|
|
367
|
+
const match = err.message.match(/^(?:API request failed|Authentication failed):\s*\d{3}\s*([\s\S]*)$/);
|
|
368
|
+
const text = match?.[1]?.trim();
|
|
369
|
+
if (!text)
|
|
370
|
+
return {};
|
|
371
|
+
try {
|
|
372
|
+
const parsed = JSON.parse(text);
|
|
373
|
+
return parsed && typeof parsed === "object"
|
|
374
|
+
? parsed
|
|
375
|
+
: {};
|
|
376
|
+
}
|
|
377
|
+
catch {
|
|
378
|
+
return {};
|
|
379
|
+
}
|
|
380
|
+
}
|
|
99
381
|
export class SubscriptionTools {
|
|
100
382
|
pica;
|
|
101
383
|
constructor(pica) {
|
|
@@ -187,8 +469,121 @@ export class SubscriptionTools {
|
|
|
187
469
|
},
|
|
188
470
|
executor: this.manage.bind(this),
|
|
189
471
|
},
|
|
472
|
+
{
|
|
473
|
+
definition: {
|
|
474
|
+
name: "pica_billing_pay",
|
|
475
|
+
// read:catalog, NOT write:finances — and deliberately so. Minting a
|
|
476
|
+
// link mints a capability, not a charge: nothing is billed until
|
|
477
|
+
// whoever holds the link pays it, so a member fetching a link for
|
|
478
|
+
// the owner to pay is the intended flow. The route gates the same
|
|
479
|
+
// way (app/api/admin/billing/pay-link/route.ts).
|
|
480
|
+
scope: "read:catalog",
|
|
481
|
+
audiences: ["stdio", "http"],
|
|
482
|
+
tier: "read",
|
|
483
|
+
description: "Use when the user asks: 'how do i pay pica?', 'what does pica cost?'. " +
|
|
484
|
+
"Also use when pica is holding findings, or a deep process was " +
|
|
485
|
+
"refused for runway. Mints a pay link for one offer: resident_month " +
|
|
486
|
+
"(one month of residency; shows every held finding within the " +
|
|
487
|
+
"allowance), unlock (one work's held findings, needs entity_id), or " +
|
|
488
|
+
"settle (a resident's tab). Never charges by itself: an agent POSTs " +
|
|
489
|
+
"the link with a Machine Payments credential (Link agent wallet or " +
|
|
490
|
+
"Tempo), or a person opens it in a browser and pays by card. Returns " +
|
|
491
|
+
"the offers with amounts derived from pica's constants and the " +
|
|
492
|
+
"current held count. Refuses when billing enforcement is off.",
|
|
493
|
+
workflows: "infrastructure",
|
|
494
|
+
vernacular_kind: "creator-entry",
|
|
495
|
+
inputSchema: {
|
|
496
|
+
type: "object",
|
|
497
|
+
properties: {
|
|
498
|
+
offer: {
|
|
499
|
+
type: "string",
|
|
500
|
+
enum: [...VALID_PAY_OFFERS],
|
|
501
|
+
description: "resident_month (a 30-day cycle), unlock (one work's held " +
|
|
502
|
+
"findings), or settle (what a resident already owes).",
|
|
503
|
+
},
|
|
504
|
+
entity_id: {
|
|
505
|
+
type: "string",
|
|
506
|
+
description: "The work to unlock (offer = unlock).",
|
|
507
|
+
},
|
|
508
|
+
},
|
|
509
|
+
required: ["offer"],
|
|
510
|
+
additionalProperties: false,
|
|
511
|
+
},
|
|
512
|
+
annotations: {
|
|
513
|
+
// readOnly is honest here: this mints a link and changes nothing
|
|
514
|
+
// an org can see. idempotentHint is false because each mint is a
|
|
515
|
+
// fresh token with a fresh expiry, not the same link returned twice.
|
|
516
|
+
readOnlyHint: true,
|
|
517
|
+
destructiveHint: false,
|
|
518
|
+
idempotentHint: false,
|
|
519
|
+
openWorldHint: false,
|
|
520
|
+
},
|
|
521
|
+
},
|
|
522
|
+
executor: this.pay.bind(this),
|
|
523
|
+
},
|
|
190
524
|
];
|
|
191
525
|
}
|
|
526
|
+
/**
|
|
527
|
+
* `pica_billing_pay` — hand the caller a link, and never a charge.
|
|
528
|
+
*
|
|
529
|
+
* The refusals the ROUTE composes (the flag is off; nothing is held on that
|
|
530
|
+
* work; that offer no longer applies) become structured results rather than
|
|
531
|
+
* thrown ApiErrors — a throw reaches the agent as UNKNOWN_ERROR, which
|
|
532
|
+
* reads as "pica is broken" when the honest answer is "there is nothing to
|
|
533
|
+
* pay for". `payRefusal` decides; everything it declines (5xx, timeouts,
|
|
534
|
+
* network failures, and a 403 with nothing quotable in it) is re-thrown
|
|
535
|
+
* unchanged, because an outage dressed as a tidy refusal is the worse lie.
|
|
536
|
+
*/
|
|
537
|
+
async pay(args) {
|
|
538
|
+
const offer = args.offer;
|
|
539
|
+
if (!offer || !VALID_PAY_OFFERS.includes(offer)) {
|
|
540
|
+
return {
|
|
541
|
+
content: [
|
|
542
|
+
{
|
|
543
|
+
type: "text",
|
|
544
|
+
text: `Error: offer must be one of ${VALID_PAY_OFFERS.join(", ")}.`,
|
|
545
|
+
},
|
|
546
|
+
],
|
|
547
|
+
structuredContent: {
|
|
548
|
+
kind: "pica.error.invalid_argument",
|
|
549
|
+
version: 1,
|
|
550
|
+
data: { argument: "offer", valid: [...VALID_PAY_OFFERS] },
|
|
551
|
+
},
|
|
552
|
+
isError: true,
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
const entityId = typeof args.entity_id === "string" ? args.entity_id : undefined;
|
|
556
|
+
let link;
|
|
557
|
+
try {
|
|
558
|
+
link = await this.pica.billing.mintPayLink({
|
|
559
|
+
offer,
|
|
560
|
+
entity_id: entityId,
|
|
561
|
+
});
|
|
562
|
+
}
|
|
563
|
+
catch (err) {
|
|
564
|
+
const refusal = payRefusal(err, offer, entityId);
|
|
565
|
+
if (refusal)
|
|
566
|
+
return refusal;
|
|
567
|
+
throw err;
|
|
568
|
+
}
|
|
569
|
+
// The label is the ONE place the amount is worded — composed server-side
|
|
570
|
+
// in the org's own currency. Quote it; never re-format `amount_minor`.
|
|
571
|
+
const label = link.offers?.find((o) => o.offer === link.offer)?.label ??
|
|
572
|
+
link.offer;
|
|
573
|
+
return {
|
|
574
|
+
content: [
|
|
575
|
+
{
|
|
576
|
+
type: "text",
|
|
577
|
+
text: `${label}: ${link.pay_url} (expires ${link.expires_at}). ${link.how}`,
|
|
578
|
+
},
|
|
579
|
+
],
|
|
580
|
+
structuredContent: {
|
|
581
|
+
kind: "pica.card.pay_link",
|
|
582
|
+
version: 1,
|
|
583
|
+
data: link,
|
|
584
|
+
},
|
|
585
|
+
};
|
|
586
|
+
}
|
|
192
587
|
async status(_args) {
|
|
193
588
|
const status = await this.pica.subscription.getStatus();
|
|
194
589
|
if (!status) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/tools/subscription.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/tools/subscription.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,0GAA0G;AAE1G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EACL,QAAQ,GAST,MAAM,mBAAmB,CAAC;AAG3B,sEAAsE;AACtE,qEAAqE;AACrE,+CAA+C;AAC/C,MAAM,gBAAgB,GAA2B;IAC/C,MAAM;IACN,OAAO;IACP,KAAK;IACL,aAAa;CACd,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAG5E;;;;GAIG;AACH,MAAM,gBAAgB,GAAwB;IAC5C,gBAAgB;IAChB,QAAQ;IACR,QAAQ;CACT,CAAC;AAEF;;;;;GAKG;AACH,MAAM,uBAAuB,GAA2B;IACtD,uBAAuB,EAAE,yBAAyB;IAClD,uBAAuB,EAAE,0BAA0B;CACpD,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAErD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,sDAAsD;AACtD,SAAS,WAAW,CAAC,GAAG,UAAqB;IAC3C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjE,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AA0CD,wEAAwE;AACxE,MAAM,UAAU,OAAO,CACrB,YAA+C;IAE/C,IAAI,YAAY,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IACjD,IAAI,YAAY,KAAK,YAAY;QAAE,OAAO,QAAQ,CAAC;IACnD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAkC;IAElC,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,CAAC;IACxD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,IAAI,IAAI,CAAC;IACxD,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,EAAE,eAAe,IAAI,IAAI,CAAC;IAEjE,qEAAqE;IACrE,qEAAqE;IACrE,oEAAoE;IACpE,4CAA4C;IAC5C,MAAM,gBAAgB,GACpB,MAAM,CAAC,IAAI,KAAK,IAAI;QACpB,MAAM,CAAC,IAAI,KAAK,YAAY;QAC5B,aAAa,KAAK,IAAI;QACtB,aAAa,GAAG,CAAC,CAAC;IACpB,MAAM,WAAW,GAAG,gBAAgB;QAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,aAAa,CAAC,GAAG,GAAG,CAAC;QAClD,CAAC,CAAC,CAAC,CAAC;IAEN,2EAA2E;IAC3E,4EAA4E;IAC5E,gDAAgD;IAChD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,SAAS,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;IAEtC,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,YAAY;QAClC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;QAClC,YAAY,EAAE,MAAM,CAAC,IAAI;QACzB,aAAa,EAAE,YAAY;QAC3B,cAAc,EAAE,aAAa;QAC7B,YAAY,EAAE,WAAW;QACzB,gBAAgB,EAAE,eAAe;QACjC,OAAO,EAAE,cAAc,CAAC;YACtB,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,aAAa,EAAE,YAAY;YAC3B,OAAO;YACP,IAAI;SACL,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1B,CAAC;AACJ,CAAC;AAED,0DAA0D;AAC1D,SAAS,MAAM,CAAC,CAAS,EAAE,IAAY;IACrC,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAwB,EACxB,IAAkB;IAElB,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CACV,yCAAyC;YACvC,GAAG,MAAM,CAAC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC,mBAAmB;YACrE,kBAAkB,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG,CAC7E,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CACV,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU;YACxC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,oCAAoC;YACpE,kEAAkE,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,cAAc,CAAC,MAM9B;IACC,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;IAChD,MAAM,KAAK,GAAG,GAAG,aAAa,eAAe,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9E,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE,CACzC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5C,IAAI,aAAa,KAAK,YAAY,EAAE,CAAC;QACnC,OAAO,SAAS,CACd,2EAA2E;YACzE,wEAAwE;YACxE,IAAI,KAAK,qEAAqE,CACjF,CAAC;IACJ,CAAC;IAED,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,SAAS,CACd,2EAA2E,KAAK,GAAG,CACpF,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,OAAO,SAAS,CACd,4EAA4E;QAC1E,4BAA4B,KAAK,UAAU,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CACxB,GAAY,EACZ,KAAe,EACf,QAAiB;IAEjB,IAAI,CAAC,CAAC,GAAG,YAAY,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAErE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,yEAAyE;QACzE,EAAE;QACF,0EAA0E;QAC1E,mEAAmE;QACnE,wCAAwC;QACxC,oEAAoE;QACpE,4DAA4D;QAC5D,4EAA4E;QAC5E,0EAA0E;QAC1E,gDAAgD;QAChD,IAAI,IAAI,KAAK,sBAAsB,EAAE,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,mEAAmE;4BACnE,gEAAgE;4BAChE,8BAA8B;qBACjC;iBACF;gBACD,iBAAiB,EAAE;oBACjB,IAAI,EAAE,gCAAgC;oBACtC,OAAO,EAAE,CAAC;oBACV,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE;iBAChD;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,wEAAwE;QACxE,0EAA0E;QAC1E,yCAAyC;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QACnD,2EAA2E;QAC3E,2EAA2E;QAC3E,2EAA2E;QAC3E,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,oCAAoC,OAAO,sBAAsB;wBACjE,wDAAwD;wBACxD,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC/B;aACF;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,sBAAsB;gBAC5B,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE;oBACJ,KAAK;oBACL,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5C,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,WAAW;oBAC1D,OAAO;oBACP,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxC,UAAU,EAAE,KAAK;iBAClB;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACvC,CAAC,CAAE,IAAI,CAAC,MAAyB;QACjC,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,IAAY,CAAC;IACjB,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;QACvC,IAAI;YACF,qEAAqE;gBACrE,uEAAuE,CAAC;IAC5E,CAAC;SAAM,IAAI,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,GAAG,IAAI;YACT,CAAC,CAAC,2DAA2D,IAAI,GAAG;YACpE,CAAC,CAAC,kEAAkE,CAAC;IACzE,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,sCAAsC,IAAI,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC;IACtE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACjC,iBAAiB,EAAE;YACjB,IAAI,EAAE,8BAA8B;YACpC,OAAO,EAAE,CAAC;YACV,IAAI,EAAE;gBACJ,KAAK;gBACL,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5C,KAAK,EAAE,IAAI,IAAI,kBAAkB;gBACjC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,SAAS,EACP,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAClD,0BAA0B;gBAC5B,UAAU,EAAE,KAAK;aAClB;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAa;IAC7C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAC7B,qEAAqE,CACtE,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YACzC,CAAC,CAAE,MAAkC;YACrC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,OAAO,iBAAiB;IACpB,IAAI,CAAa;IAEzB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,0BAA0B;oBAChC,KAAK,EAAE,OAAO;oBACd,SAAS,EAAE,CAAC,OAAO,CAAC;oBACpB,IAAI,EAAE,MAAM;oBACZ,WAAW,EACT,sEAAsE;wBACtE,qEAAqE;wBACrE,qEAAqE;wBACrE,sEAAsE;wBACtE,4DAA4D;wBAC5D,sEAAsE;wBACtE,uEAAuE;wBACvE,sEAAsE;wBACtE,uEAAuE;wBACvE,uEAAuE;wBACvE,4BAA4B;oBAC9B,SAAS,EAAE,gBAAgB;oBAC3B,eAAe,EAAE,eAAe;oBAChC,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,EAAE;wBACd,oBAAoB,EAAE,KAAK;qBAC5B;oBACD,WAAW,EAAE;wBACX,YAAY,EAAE,IAAI;wBAClB,eAAe,EAAE,KAAK;wBACtB,cAAc,EAAE,IAAI;wBACpB,aAAa,EAAE,KAAK;qBACrB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACjC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,0BAA0B;oBAChC,KAAK,EAAE,OAAO;oBACd,SAAS,EAAE,CAAC,OAAO,CAAC;oBACpB,IAAI,EAAE,OAAO;oBACb,WAAW,EACT,sEAAsE;wBACtE,gEAAgE;wBAChE,sEAAsE;wBACtE,kEAAkE;wBAClE,gEAAgE;wBAChE,kEAAkE;wBAClE,gEAAgE;wBAChE,uEAAuE;oBACzE,SAAS,EAAE,gBAAgB;oBAC3B,eAAe,EAAE,YAAY;oBAC7B,iBAAiB,EACf,6IAA6I;oBAC/I,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC;gCACxB,WAAW,EACT,2DAA2D;oCAC3D,uDAAuD;6BAC1D;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,GAAG,gBAAgB,CAAC;gCAC3B,WAAW,EACT,4DAA4D;oCAC5D,uDAAuD;oCACvD,wDAAwD;6BAC3D;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;gCAC3B,WAAW,EACT,kEAAkE;6BACrE;yBACF;wBACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;wBACpB,oBAAoB,EAAE,KAAK;qBAC5B;oBACD,WAAW,EAAE;wBACX,YAAY,EAAE,KAAK;wBACnB,eAAe,EAAE,KAAK;wBACtB,cAAc,EAAE,KAAK;wBACrB,aAAa,EAAE,IAAI;qBACpB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACjC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,kBAAkB;oBACxB,oEAAoE;oBACpE,iEAAiE;oBACjE,kEAAkE;oBAClE,kEAAkE;oBAClE,iDAAiD;oBACjD,KAAK,EAAE,cAAc;oBACrB,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC5B,IAAI,EAAE,MAAM;oBACZ,WAAW,EACT,wEAAwE;wBACxE,gEAAgE;wBAChE,qEAAqE;wBACrE,+DAA+D;wBAC/D,qEAAqE;wBACrE,qEAAqE;wBACrE,oEAAoE;wBACpE,sEAAsE;wBACtE,gEAAgE;wBAChE,8DAA8D;oBAChE,SAAS,EAAE,gBAAgB;oBAC3B,eAAe,EAAE,eAAe;oBAChC,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,GAAG,gBAAgB,CAAC;gCAC3B,WAAW,EACT,2DAA2D;oCAC3D,sDAAsD;6BACzD;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sCAAsC;6BACpD;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;wBACnB,oBAAoB,EAAE,KAAK;qBAC5B;oBACD,WAAW,EAAE;wBACX,iEAAiE;wBACjE,iEAAiE;wBACjE,qEAAqE;wBACrE,YAAY,EAAE,IAAI;wBAClB,eAAe,EAAE,KAAK;wBACtB,cAAc,EAAE,KAAK;wBACrB,aAAa,EAAE,KAAK;qBACrB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;aAC9B;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,GAAG,CAAC,IAAyB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAA6B,CAAC;QAEjD,IAAI,CAAC,KAAK,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,+BAA+B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;qBACpE;iBACF;gBACD,iBAAiB,EAAE;oBACjB,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,CAAC;oBACV,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAAC,EAAE;iBAC1D;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAElE,IAAI,IAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;gBACzC,KAAK;gBACL,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACjD,IAAI,OAAO;gBAAE,OAAO,OAAO,CAAC;YAC5B,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,yEAAyE;QACzE,uEAAuE;QACvE,MAAM,KAAK,GACT,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAe,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK;YACrE,IAAI,CAAC,KAAK,CAAC;QAEb,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,GAAG,KAAK,KAAK,IAAI,CAAC,OAAO,aAAa,IAAI,CAAC,UAAU,MAAM,IAAI,CAAC,GAAG,EAAE;iBAC5E;aACF;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,oBAAoB;gBAC1B,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,IAAI;aACX;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,KAA0B;QAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAExD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,iEAAiE;YACjE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EACF,gDAAgD;4BAChD,qCAAqC;qBACxC;iBACF;gBACD,iBAAiB,EAAE;oBACjB,IAAI,EAAE,+BAA+B;oBACrC,OAAO,EAAE,CAAC;oBACV,IAAI,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE;iBACpC;aACF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAEnC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/C,iBAAiB,EAAE;gBACjB,IAAI,EAAE,+BAA+B;gBACrC,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,IAAI;aACX;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,MAAM,CAAC,IAAyB;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAkC,CAAC;QAEvD,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,gCAAgC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;qBAClE;iBACF;gBACD,iBAAiB,EAAE;oBACjB,IAAI,EAAE,6BAA6B;oBACnC,OAAO,EAAE,CAAC;oBACV,IAAI,EAAE;wBACJ,QAAQ,EAAE,QAAQ;wBAClB,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC;qBAC1B;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,4DAA4D;QAC5D,EAAE;QACF,6EAA6E;QAC7E,sEAAsE;QACtE,6EAA6E;QAC7E,4EAA4E;QAC5E,yDAAyD;QACzD,EAAE;QACF,4EAA4E;QAC5E,4EAA4E;QAC5E,yCAAyC;QACzC,EAAE;QACF,4EAA4E;QAC5E,sEAAsE;QACtE,EAAE;QACF,wEAAwE;QACxE,6EAA6E;QAC7E,6EAA6E;QAC7E,4EAA4E;QAC5E,2CAA2C;QAC3C,MAAM,cAAc,GAClB,0EAA0E;YAC1E,wEAAwE;YACxE,sEAAsE;YACtE,2EAA2E;YAC3E,wEAAwE;YACxE,yEAAyE;YACzE,uEAAuE;YACvE,2DAA2D,CAAC;QAE9D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;YACjD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,2BAA2B;gBACjC,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE;oBACJ,MAAM;oBACN,MAAM,EAAE,iCAAiC;oBACzC,WAAW,EAAE,8BAA8B;oBAC3C,YAAY,EAAE,gDAAgD;iBAC/D;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@withpica/mcp-server",
|
|
3
3
|
"mcpName": "io.github.withpica/pica",
|
|
4
|
-
"version": "2.96.
|
|
4
|
+
"version": "2.96.2",
|
|
5
5
|
"description": "MCP Server for withPICA — enables AI assistants to interact with your withPICA music catalog",
|
|
6
6
|
"homepage": "https://withpica.com/connect",
|
|
7
7
|
"bugs": {
|
|
@@ -42,8 +42,8 @@
|
|
|
42
42
|
"license": "MIT",
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@modelcontextprotocol/sdk": "~1.29.0",
|
|
45
|
-
"@withpica/mcp-sdk": "^3.
|
|
46
|
-
"@withpica/mcp-utils": "^1.
|
|
45
|
+
"@withpica/mcp-sdk": "^3.13.0",
|
|
46
|
+
"@withpica/mcp-utils": "^1.28.0"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@modelcontextprotocol/ext-apps": "^1.5.0",
|
package/server.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"url": "https://github.com/withpica/pica",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "2.96.
|
|
9
|
+
"version": "2.96.2",
|
|
10
10
|
"remotes": [
|
|
11
11
|
{
|
|
12
12
|
"type": "streamable-http",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
{
|
|
18
18
|
"registryType": "npm",
|
|
19
19
|
"identifier": "@withpica/mcp-server",
|
|
20
|
-
"version": "2.96.
|
|
20
|
+
"version": "2.96.2",
|
|
21
21
|
"transport": {
|
|
22
22
|
"type": "stdio"
|
|
23
23
|
}
|