@withpica/mcp-server 2.7.0 → 2.8.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/dist/__mocks__/mppx-mcp-sdk-server.d.ts +6 -0
- package/dist/__mocks__/mppx-mcp-sdk-server.d.ts.map +1 -0
- package/dist/__mocks__/mppx-mcp-sdk-server.js +6 -0
- package/dist/__mocks__/mppx-mcp-sdk-server.js.map +1 -0
- package/dist/__mocks__/mppx-server.d.ts +12 -0
- package/dist/__mocks__/mppx-server.d.ts.map +1 -0
- package/dist/__mocks__/mppx-server.js +12 -0
- package/dist/__mocks__/mppx-server.js.map +1 -0
- package/dist/apps/download.d.ts +2 -0
- package/dist/apps/download.d.ts.map +1 -0
- package/dist/apps/download.js +125 -0
- package/dist/apps/download.js.map +1 -0
- package/dist/apps/generated/shared-bundle.d.ts +5 -0
- package/dist/apps/generated/shared-bundle.d.ts.map +1 -0
- package/dist/apps/generated/shared-bundle.js +7 -0
- package/dist/apps/generated/shared-bundle.js.map +1 -0
- package/dist/apps/shared.d.ts +15 -0
- package/dist/apps/shared.d.ts.map +1 -0
- package/dist/apps/shared.js +480 -0
- package/dist/apps/shared.js.map +1 -0
- package/dist/apps/upload.d.ts +2 -0
- package/dist/apps/upload.d.ts.map +1 -0
- package/dist/apps/upload.js +280 -0
- package/dist/apps/upload.js.map +1 -0
- package/dist/config.d.ts +4 -25
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +36 -12
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts +64 -64
- package/dist/prompts/index.js +24 -24
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/index.d.ts +55 -53
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +133 -54
- package/dist/resources/index.js.map +1 -1
- package/dist/resources/llms-primer.d.ts +2 -0
- package/dist/resources/llms-primer.d.ts.map +1 -0
- package/dist/resources/llms-primer.js +68 -0
- package/dist/resources/llms-primer.js.map +1 -0
- package/dist/server-instructions.d.ts +9 -0
- package/dist/server-instructions.d.ts.map +1 -0
- package/dist/server-instructions.js +34 -0
- package/dist/server-instructions.js.map +1 -0
- package/dist/server.d.ts +49 -32
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +103 -14
- package/dist/server.js.map +1 -1
- package/dist/tools/agreement-types.d.ts +27 -0
- package/dist/tools/agreement-types.d.ts.map +1 -0
- package/dist/tools/agreement-types.js +387 -0
- package/dist/tools/agreement-types.js.map +1 -0
- package/dist/tools/agreements.d.ts +20 -0
- package/dist/tools/agreements.d.ts.map +1 -0
- package/dist/tools/agreements.js +363 -0
- package/dist/tools/agreements.js.map +1 -0
- package/dist/tools/analytics.d.ts +20 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +124 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/app-tools.d.ts +21 -0
- package/dist/tools/app-tools.d.ts.map +1 -0
- package/dist/tools/app-tools.js +248 -0
- package/dist/tools/app-tools.js.map +1 -0
- package/dist/tools/assets.d.ts +25 -0
- package/dist/tools/assets.d.ts.map +1 -0
- package/dist/tools/assets.js +631 -0
- package/dist/tools/assets.js.map +1 -0
- package/dist/tools/audio-files.d.ts +20 -0
- package/dist/tools/audio-files.d.ts.map +1 -0
- package/dist/tools/audio-files.js +384 -0
- package/dist/tools/audio-files.js.map +1 -0
- package/dist/tools/auth.d.ts +22 -0
- package/dist/tools/auth.d.ts.map +1 -0
- package/dist/tools/auth.js +210 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/bulk.d.ts +16 -0
- package/dist/tools/bulk.d.ts.map +1 -0
- package/dist/tools/bulk.js +85 -0
- package/dist/tools/bulk.js.map +1 -0
- package/dist/tools/calendar.d.ts +15 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +67 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/collaborators.d.ts +21 -0
- package/dist/tools/collaborators.d.ts.map +1 -0
- package/dist/tools/collaborators.js +311 -0
- package/dist/tools/collaborators.js.map +1 -0
- package/dist/tools/comparisons.d.ts +22 -0
- package/dist/tools/comparisons.d.ts.map +1 -0
- package/dist/tools/comparisons.js +78 -0
- package/dist/tools/comparisons.js.map +1 -0
- package/dist/tools/credits.d.ts +17 -0
- package/dist/tools/credits.d.ts.map +1 -0
- package/dist/tools/credits.js +312 -0
- package/dist/tools/credits.js.map +1 -0
- package/dist/tools/custody-hints.d.ts +16 -0
- package/dist/tools/custody-hints.d.ts.map +1 -0
- package/dist/tools/custody-hints.js +27 -0
- package/dist/tools/custody-hints.js.map +1 -0
- package/dist/tools/custody.d.ts +38 -0
- package/dist/tools/custody.d.ts.map +1 -0
- package/dist/tools/custody.js +274 -0
- package/dist/tools/custody.js.map +1 -0
- package/dist/tools/dashboard.d.ts +19 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +146 -0
- package/dist/tools/dashboard.js.map +1 -0
- package/dist/tools/directory.d.ts +15 -0
- package/dist/tools/directory.d.ts.map +1 -0
- package/dist/tools/directory.js +106 -0
- package/dist/tools/directory.js.map +1 -0
- package/dist/tools/discovery.d.ts +28 -0
- package/dist/tools/discovery.d.ts.map +1 -0
- package/dist/tools/discovery.js +560 -0
- package/dist/tools/discovery.js.map +1 -0
- package/dist/tools/disputes.d.ts +18 -0
- package/dist/tools/disputes.d.ts.map +1 -0
- package/dist/tools/disputes.js +61 -0
- package/dist/tools/disputes.js.map +1 -0
- package/dist/tools/documents.d.ts +15 -0
- package/dist/tools/documents.d.ts.map +1 -0
- package/dist/tools/documents.js +36 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/duplicates.d.ts +16 -0
- package/dist/tools/duplicates.d.ts.map +1 -0
- package/dist/tools/duplicates.js +87 -0
- package/dist/tools/duplicates.js.map +1 -0
- package/dist/tools/enrichment.d.ts +20 -0
- package/dist/tools/enrichment.d.ts.map +1 -0
- package/dist/tools/enrichment.js +154 -0
- package/dist/tools/enrichment.js.map +1 -0
- package/dist/tools/exports.d.ts +19 -0
- package/dist/tools/exports.d.ts.map +1 -0
- package/dist/tools/exports.js +175 -0
- package/dist/tools/exports.js.map +1 -0
- package/dist/tools/import-documents.d.ts +21 -0
- package/dist/tools/import-documents.d.ts.map +1 -0
- package/dist/tools/import-documents.js +203 -0
- package/dist/tools/import-documents.js.map +1 -0
- package/dist/tools/import.d.ts +30 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +455 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +83 -37
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +448 -84
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/integrations.d.ts +15 -0
- package/dist/tools/integrations.d.ts.map +1 -0
- package/dist/tools/integrations.js +100 -0
- package/dist/tools/integrations.js.map +1 -0
- package/dist/tools/licensing.d.ts +40 -0
- package/dist/tools/licensing.d.ts.map +1 -0
- package/dist/tools/licensing.js +431 -0
- package/dist/tools/licensing.js.map +1 -0
- package/dist/tools/memory.d.ts +21 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +116 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/metadata.d.ts +15 -0
- package/dist/tools/metadata.d.ts.map +1 -0
- package/dist/tools/metadata.js +1106 -0
- package/dist/tools/metadata.js.map +1 -0
- package/dist/tools/multimedia.d.ts +19 -0
- package/dist/tools/multimedia.d.ts.map +1 -0
- package/dist/tools/multimedia.js +291 -0
- package/dist/tools/multimedia.js.map +1 -0
- package/dist/tools/notes.d.ts +21 -0
- package/dist/tools/notes.d.ts.map +1 -0
- package/dist/tools/notes.js +108 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/notifications.d.ts +20 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +266 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/people.d.ts +39 -47
- package/dist/tools/people.d.ts.map +1 -1
- package/dist/tools/people.js +148 -109
- package/dist/tools/people.js.map +1 -1
- package/dist/tools/projects.d.ts +19 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +140 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/publishers.d.ts +16 -0
- package/dist/tools/publishers.d.ts.map +1 -0
- package/dist/tools/publishers.js +69 -0
- package/dist/tools/publishers.js.map +1 -0
- package/dist/tools/purchases.d.ts +15 -0
- package/dist/tools/purchases.d.ts.map +1 -0
- package/dist/tools/purchases.js +63 -0
- package/dist/tools/purchases.js.map +1 -0
- package/dist/tools/recordings.d.ts +9 -9
- package/dist/tools/recordings.d.ts.map +1 -1
- package/dist/tools/recordings.js +136 -48
- package/dist/tools/recordings.js.map +1 -1
- package/dist/tools/recovery-hints.d.ts +14 -0
- package/dist/tools/recovery-hints.d.ts.map +1 -0
- package/dist/tools/recovery-hints.js +277 -0
- package/dist/tools/recovery-hints.js.map +1 -0
- package/dist/tools/releases.d.ts +18 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +128 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/royalties.d.ts +23 -0
- package/dist/tools/royalties.d.ts.map +1 -0
- package/dist/tools/royalties.js +257 -0
- package/dist/tools/royalties.js.map +1 -0
- package/dist/tools/search.d.ts +21 -21
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +3 -3
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/send.d.ts +17 -0
- package/dist/tools/send.d.ts.map +1 -0
- package/dist/tools/send.js +185 -0
- package/dist/tools/send.js.map +1 -0
- package/dist/tools/sessions.d.ts +18 -0
- package/dist/tools/sessions.d.ts.map +1 -0
- package/dist/tools/sessions.js +115 -0
- package/dist/tools/sessions.js.map +1 -0
- package/dist/tools/settings.d.ts +18 -0
- package/dist/tools/settings.d.ts.map +1 -0
- package/dist/tools/settings.js +96 -0
- package/dist/tools/settings.js.map +1 -0
- package/dist/tools/share-links.d.ts +19 -0
- package/dist/tools/share-links.d.ts.map +1 -0
- package/dist/tools/share-links.js +121 -0
- package/dist/tools/share-links.js.map +1 -0
- package/dist/tools/split-sheets.d.ts +25 -0
- package/dist/tools/split-sheets.d.ts.map +1 -0
- package/dist/tools/split-sheets.js +307 -0
- package/dist/tools/split-sheets.js.map +1 -0
- package/dist/tools/team.d.ts +22 -0
- package/dist/tools/team.d.ts.map +1 -0
- package/dist/tools/team.js +134 -0
- package/dist/tools/team.js.map +1 -0
- package/dist/tools/telegram.d.ts +21 -0
- package/dist/tools/telegram.d.ts.map +1 -0
- package/dist/tools/telegram.js +141 -0
- package/dist/tools/telegram.js.map +1 -0
- package/dist/tools/uploads.d.ts +17 -0
- package/dist/tools/uploads.d.ts.map +1 -0
- package/dist/tools/uploads.js +156 -0
- package/dist/tools/uploads.js.map +1 -0
- package/dist/tools/works.d.ts +39 -47
- package/dist/tools/works.d.ts.map +1 -1
- package/dist/tools/works.js +216 -116
- package/dist/tools/works.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
|
+
import { formatAsText, formatSuccess, formatStructuredList, formatValidationError, } from "@withpica/mcp-utils";
|
|
4
|
+
export class NotificationsTools {
|
|
5
|
+
pica;
|
|
6
|
+
constructor(pica) {
|
|
7
|
+
this.pica = pica;
|
|
8
|
+
}
|
|
9
|
+
getTools() {
|
|
10
|
+
return [
|
|
11
|
+
{
|
|
12
|
+
definition: {
|
|
13
|
+
name: "pica_notifications_list",
|
|
14
|
+
description: "Check for notifications from PICA — new collaborator invites, " +
|
|
15
|
+
"enrichment results, verification requests, credit disputes, " +
|
|
16
|
+
"and other flagged items that need attention.",
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: {},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
executor: this.listNotifications.bind(this),
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
definition: {
|
|
26
|
+
name: "pica_notify_person",
|
|
27
|
+
description: "Send a notification to a person in the catalog. If the person has a PICA account, " +
|
|
28
|
+
"they get an in-app notification + Telegram message (if connected). " +
|
|
29
|
+
"If they're not a PICA user yet, returns a hint to use pica_collaborators_invite instead. " +
|
|
30
|
+
"Use for credit verification requests, song updates, or any message to a collaborator.",
|
|
31
|
+
inputSchema: {
|
|
32
|
+
type: "object",
|
|
33
|
+
properties: {
|
|
34
|
+
person_id: {
|
|
35
|
+
type: "string",
|
|
36
|
+
description: "The person's ID in your catalog",
|
|
37
|
+
},
|
|
38
|
+
message: {
|
|
39
|
+
type: "string",
|
|
40
|
+
description: "What to tell them (e.g. 'please verify your writing credit on Midnight Run')",
|
|
41
|
+
},
|
|
42
|
+
work_id: {
|
|
43
|
+
type: "string",
|
|
44
|
+
description: "Optional work ID for context — links the notification to a specific work",
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
required: ["person_id", "message"],
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
executor: this.notifyPerson.bind(this),
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
definition: {
|
|
54
|
+
name: "pica_notifications_mark_read",
|
|
55
|
+
description: "Mark one or more notifications as read.",
|
|
56
|
+
inputSchema: {
|
|
57
|
+
type: "object",
|
|
58
|
+
properties: {
|
|
59
|
+
notification_ids: {
|
|
60
|
+
type: "array",
|
|
61
|
+
items: { type: "string" },
|
|
62
|
+
description: "IDs of notifications to mark as read",
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
required: ["notification_ids"],
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
executor: this.markRead.bind(this),
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
definition: {
|
|
72
|
+
name: "pica_notify_user_at",
|
|
73
|
+
description: "Schedule a one-shot Telegram reminder for the future (ADR-160). The user can ask for reminders in any natural phrasing — 'remind me tomorrow at 9', 'ping me in 2 hours', 'check on this next monday'. Convert their phrasing to an ISO 8601 UTC timestamp before calling. Ask the user for their timezone once if you don't already know it. The message body IS the receipt — make it self-contained so the user reading it cold knows what to do. Delivery goes via Telegram, so pica_telegram_connect must be paired first. Per-user cap: 100 pending reminders.",
|
|
74
|
+
inputSchema: {
|
|
75
|
+
type: "object",
|
|
76
|
+
properties: {
|
|
77
|
+
message: {
|
|
78
|
+
type: "string",
|
|
79
|
+
description: "The reminder body text. Self-contained — include enough context that the user reading it cold knows what to do. 1-4000 characters.",
|
|
80
|
+
},
|
|
81
|
+
deliver_at: {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "ISO 8601 UTC timestamp. Must be in the future and within 1 year. Convert from natural language using the user's timezone — ask first if you don't know it.",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
required: ["message", "deliver_at"],
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
executor: this.notifyUserAt.bind(this),
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
definition: {
|
|
93
|
+
name: "pica_notify_user_list_pending",
|
|
94
|
+
description: "List all pending scheduled Telegram reminders for the current user (ADR-160), ordered by deliver_at ascending. Use to show the user what reminders are queued or to find an id for pica_notify_user_cancel.",
|
|
95
|
+
inputSchema: { type: "object", properties: {} },
|
|
96
|
+
},
|
|
97
|
+
executor: this.listPending.bind(this),
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
definition: {
|
|
101
|
+
name: "pica_notify_user_cancel",
|
|
102
|
+
description: "Cancel a pending scheduled reminder by id (ADR-160). Idempotent — if the reminder was already delivered or already cancelled, this surfaces that state gracefully instead of erroring. Use cancel + pica_notify_user_at together to reschedule a reminder.",
|
|
103
|
+
inputSchema: {
|
|
104
|
+
type: "object",
|
|
105
|
+
properties: {
|
|
106
|
+
id: {
|
|
107
|
+
type: "string",
|
|
108
|
+
description: "The scheduled_notifications row id — get it from pica_notify_user_list_pending or from the response of pica_notify_user_at.",
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
required: ["id"],
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
executor: this.cancelPending.bind(this),
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
}
|
|
118
|
+
async listPending(_args) {
|
|
119
|
+
try {
|
|
120
|
+
const result = await this.pica.notifications.listScheduled();
|
|
121
|
+
const data = result?.data || result || [];
|
|
122
|
+
const items = Array.isArray(data) ? data : [];
|
|
123
|
+
return formatStructuredList(items, "scheduled reminder", {
|
|
124
|
+
count: items.length,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
return formatAsText({
|
|
129
|
+
error: `Failed to list pending reminders: ${err?.message || String(err)}`,
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
async cancelPending(args) {
|
|
134
|
+
if (!args.id || typeof args.id !== "string") {
|
|
135
|
+
return formatValidationError({ id: "id is required" });
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
const result = await this.pica.notifications.cancelScheduled(args.id);
|
|
139
|
+
const data = result?.data || result;
|
|
140
|
+
if (data?.status === "sent") {
|
|
141
|
+
return formatAsText({
|
|
142
|
+
cancelled: false,
|
|
143
|
+
status: "sent",
|
|
144
|
+
message: `Already delivered on ${data.sent_at} — can't cancel.`,
|
|
145
|
+
data,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
if (data?.status === "cancelled" && data?.deliver_at) {
|
|
149
|
+
return formatSuccess(`Cancelled — was scheduled for ${data.deliver_at}.`, { cancelled: true, id: data.id, deliver_at: data.deliver_at });
|
|
150
|
+
}
|
|
151
|
+
if (data?.status === "failed") {
|
|
152
|
+
return formatAsText({
|
|
153
|
+
cancelled: false,
|
|
154
|
+
status: "failed",
|
|
155
|
+
message: `Reminder already marked failed: ${data.error_text || "unknown"}`,
|
|
156
|
+
data,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
return formatSuccess("Cancelled.", { cancelled: true, data });
|
|
160
|
+
}
|
|
161
|
+
catch (err) {
|
|
162
|
+
const message = err?.message || String(err);
|
|
163
|
+
return formatAsText({
|
|
164
|
+
cancelled: false,
|
|
165
|
+
error: `Failed to cancel reminder: ${message}`,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
async notifyUserAt(args) {
|
|
170
|
+
if (!args.message ||
|
|
171
|
+
typeof args.message !== "string" ||
|
|
172
|
+
!args.message.trim()) {
|
|
173
|
+
return formatValidationError({ message: "message is required" });
|
|
174
|
+
}
|
|
175
|
+
if (!args.deliver_at || typeof args.deliver_at !== "string") {
|
|
176
|
+
return formatValidationError({
|
|
177
|
+
deliver_at: "deliver_at is required (ISO 8601 UTC)",
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
try {
|
|
181
|
+
const result = await this.pica.notifications.schedule({
|
|
182
|
+
message: args.message.trim(),
|
|
183
|
+
deliverAt: args.deliver_at,
|
|
184
|
+
source: typeof args.source === "string" ? args.source : undefined,
|
|
185
|
+
});
|
|
186
|
+
const data = result?.data || result;
|
|
187
|
+
return formatSuccess(`Reminder scheduled for ${data.deliver_at}. I'll ping you on Telegram when it fires.`, {
|
|
188
|
+
id: data.id,
|
|
189
|
+
deliver_at: data.deliver_at,
|
|
190
|
+
message: data.message,
|
|
191
|
+
status: data.status,
|
|
192
|
+
completion_hints: {
|
|
193
|
+
list: "pica_notify_user_list_pending",
|
|
194
|
+
cancel: "pica_notify_user_cancel",
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
catch (err) {
|
|
199
|
+
const message = err?.message || String(err);
|
|
200
|
+
return formatAsText({
|
|
201
|
+
scheduled: false,
|
|
202
|
+
error: `Failed to schedule reminder: ${message}`,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async listNotifications(_args) {
|
|
207
|
+
try {
|
|
208
|
+
const result = await this.pica.notifications.list();
|
|
209
|
+
const notifications = result?.notifications || result || [];
|
|
210
|
+
const items = Array.isArray(notifications) ? notifications : [];
|
|
211
|
+
const unread = items.filter((n) => !n.read_at);
|
|
212
|
+
return formatStructuredList(items, "notification", {
|
|
213
|
+
total: items.length,
|
|
214
|
+
unread: unread.length,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
return formatAsText({
|
|
219
|
+
error: `Failed to list notifications: ${err?.message || String(err)}`,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
async notifyPerson(args) {
|
|
224
|
+
if (!args.person_id?.trim()) {
|
|
225
|
+
return formatValidationError({ person_id: "person_id is required" });
|
|
226
|
+
}
|
|
227
|
+
if (!args.message?.trim()) {
|
|
228
|
+
return formatValidationError({ message: "message is required" });
|
|
229
|
+
}
|
|
230
|
+
try {
|
|
231
|
+
const result = await this.pica.notifications.sendToPerson({
|
|
232
|
+
person_id: args.person_id,
|
|
233
|
+
message: args.message,
|
|
234
|
+
work_id: args.work_id,
|
|
235
|
+
});
|
|
236
|
+
const data = result.data || result;
|
|
237
|
+
if (!data.delivered) {
|
|
238
|
+
return formatAsText({
|
|
239
|
+
delivered: false,
|
|
240
|
+
person_name: data.person_name,
|
|
241
|
+
reason: data.reason,
|
|
242
|
+
hint: data.hint,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
const channels = [];
|
|
246
|
+
if (data.channels?.in_app)
|
|
247
|
+
channels.push("in-app");
|
|
248
|
+
if (data.channels?.telegram)
|
|
249
|
+
channels.push("Telegram");
|
|
250
|
+
if (data.channels?.email)
|
|
251
|
+
channels.push("email");
|
|
252
|
+
return formatSuccess(`Notified ${data.person_name} via ${channels.join(" + ")}`, data);
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
return formatAsText({
|
|
256
|
+
error: `Failed to notify person: ${err?.message || String(err)}`,
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
async markRead(args) {
|
|
261
|
+
const ids = args.notification_ids;
|
|
262
|
+
await this.pica.notifications.markRead(ids);
|
|
263
|
+
return formatSuccess(`Marked ${ids.length} notification${ids.length !== 1 ? "s" : ""} as read`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
//# sourceMappingURL=notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../src/tools/notifications.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,uDAAuD;AAQvD,OAAO,EACL,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,OAAO,kBAAkB;IACrB,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,yBAAyB;oBAC/B,WAAW,EACT,gEAAgE;wBAChE,8DAA8D;wBAC9D,8CAA8C;oBAChD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,EAAE;qBACf;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;aAC5C;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EACT,oFAAoF;wBACpF,qEAAqE;wBACrE,2FAA2F;wBAC3F,uFAAuF;oBACzF,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,iCAAiC;6BAC/C;4BACD,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,8EAA8E;6BACjF;4BACD,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,0EAA0E;6BAC7E;yBACF;wBACD,QAAQ,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC;qBACnC;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;aACvC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,8BAA8B;oBACpC,WAAW,EAAE,yCAAyC;oBACtD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,gBAAgB,EAAE;gCAChB,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,sCAAsC;6BACpD;yBACF;wBACD,QAAQ,EAAE,CAAC,kBAAkB,CAAC;qBAC/B;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;aACnC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,qBAAqB;oBAC3B,WAAW,EACT,siBAAsiB;oBACxiB,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,oIAAoI;6BACvI;4BACD,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,4JAA4J;6BAC/J;yBACF;wBACD,QAAQ,EAAE,CAAC,SAAS,EAAE,YAAY,CAAC;qBACpC;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;aACvC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,+BAA+B;oBACrC,WAAW,EACT,6MAA6M;oBAC/M,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;iBAChD;gBACD,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;aACtC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,yBAAyB;oBAC/B,WAAW,EACT,4PAA4P;oBAC9P,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,6HAA6H;6BAChI;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;aACxC;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAA0B;QAClD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,IAAI,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,OAAO,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,EAAE;gBACvD,KAAK,EAAE,KAAK,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,YAAY,CAAC;gBAClB,KAAK,EAAE,qCAAqC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;aAC1E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAyB;QACnD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,qBAAqB,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC;YACpC,IAAI,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5B,OAAO,YAAY,CAAC;oBAClB,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,wBAAwB,IAAI,CAAC,OAAO,kBAAkB;oBAC/D,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;YACD,IAAI,IAAI,EAAE,MAAM,KAAK,WAAW,IAAI,IAAI,EAAE,UAAU,EAAE,CAAC;gBACrD,OAAO,aAAa,CAClB,iCAAiC,IAAI,CAAC,UAAU,GAAG,EACnD,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAC9D,CAAC;YACJ,CAAC;YACD,IAAI,IAAI,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,YAAY,CAAC;oBAClB,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,mCAAmC,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;oBAC1E,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;YACD,OAAO,aAAa,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,OAAO,YAAY,CAAC;gBAClB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,8BAA8B,OAAO,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAyB;QAClD,IACE,CAAC,IAAI,CAAC,OAAO;YACb,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;YAChC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EACpB,CAAC;YACD,OAAO,qBAAqB,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO,qBAAqB,CAAC;gBAC3B,UAAU,EAAE,uCAAuC;aACpD,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBACpD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,MAAM,EAAE,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;aAClE,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC;YAEpC,OAAO,aAAa,CAClB,0BAA0B,IAAI,CAAC,UAAU,4CAA4C,EACrF;gBACE,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,gBAAgB,EAAE;oBAChB,IAAI,EAAE,+BAA+B;oBACrC,MAAM,EAAE,yBAAyB;iBAClC;aACF,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5C,OAAO,YAAY,CAAC;gBAClB,SAAS,EAAE,KAAK;gBAChB,KAAK,EAAE,gCAAgC,OAAO,EAAE;aACjD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAC7B,KAA0B;QAE1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,aAAa,GAAG,MAAM,EAAE,aAAa,IAAI,MAAM,IAAI,EAAE,CAAC;YAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAEpD,OAAO,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE;gBACjD,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,YAAY,CAAC;gBAClB,KAAK,EAAE,iCAAiC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAyB;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,OAAO,qBAAqB,CAAC,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YAC1B,OAAO,qBAAqB,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;gBACxD,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;YAEnC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,OAAO,YAAY,CAAC;oBAClB,SAAS,EAAE,KAAK;oBAChB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM;gBAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAEjD,OAAO,aAAa,CAClB,YAAY,IAAI,CAAC,WAAW,QAAQ,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAC1D,IAAI,CACL,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,YAAY,CAAC;gBAClB,KAAK,EAAE,4BAA4B,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;aACjE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,QAAQ,CAAC,IAAyB;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,gBAA4B,CAAC;QAC9C,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,aAAa,CAClB,UAAU,GAAG,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAC1E,CAAC;IACJ,CAAC;CACF"}
|
package/dist/tools/people.d.ts
CHANGED
|
@@ -1,53 +1,45 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* People Tools - MCP tools for managing people (artists, composers, etc.)
|
|
3
3
|
*/
|
|
4
|
-
import { PicaClient } from "
|
|
4
|
+
import { PicaClient } from "@withpica/mcp-sdk";
|
|
5
5
|
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
6
|
export declare class PeopleTools {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Enrich from MusicBrainz
|
|
46
|
-
*/
|
|
47
|
-
private enrichFromMusicBrainz;
|
|
48
|
-
/**
|
|
49
|
-
* Get full person context bundle
|
|
50
|
-
*/
|
|
51
|
-
private getPersonFull;
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
/**
|
|
10
|
+
* Get all people tools
|
|
11
|
+
*/
|
|
12
|
+
getTools(): Array<{
|
|
13
|
+
definition: ToolDefinition;
|
|
14
|
+
executor: ToolExecutor;
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* Query people — unified list + search
|
|
18
|
+
*/
|
|
19
|
+
private queryPeople;
|
|
20
|
+
/**
|
|
21
|
+
* Inspect person — unified get + get_full with section filtering
|
|
22
|
+
*/
|
|
23
|
+
private inspectPerson;
|
|
24
|
+
/**
|
|
25
|
+
* Create person
|
|
26
|
+
*/
|
|
27
|
+
private createPerson;
|
|
28
|
+
/**
|
|
29
|
+
* Update person
|
|
30
|
+
*/
|
|
31
|
+
private updatePerson;
|
|
32
|
+
/**
|
|
33
|
+
* Delete person
|
|
34
|
+
*/
|
|
35
|
+
private deletePerson;
|
|
36
|
+
/**
|
|
37
|
+
* Enrich from ISNI
|
|
38
|
+
*/
|
|
39
|
+
private enrichFromISNI;
|
|
40
|
+
/**
|
|
41
|
+
* Enrich from MusicBrainz
|
|
42
|
+
*/
|
|
43
|
+
private enrichFromMusicBrainz;
|
|
52
44
|
}
|
|
53
|
-
//# sourceMappingURL=people.d.ts.map
|
|
45
|
+
//# sourceMappingURL=people.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../src/tools/people.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"people.d.ts","sourceRoot":"","sources":["../../src/tools/people.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAStE,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B;;OAEG;IACH,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IAgazE;;OAEG;YACW,WAAW;IAwCzB;;OAEG;YACW,aAAa;IAsE3B;;OAEG;YACW,YAAY;IAkC1B;;OAEG;YACW,YAAY;IAM1B;;OAEG;YACW,YAAY;IAK1B;;OAEG;YACW,cAAc;IAK5B;;OAEG;YACW,qBAAqB;CASpC"}
|