@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,280 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
/**
|
|
3
|
+
* pica_upload MCP App card — generic drop zone.
|
|
4
|
+
*
|
|
5
|
+
* Renders a drop zone + file input, instantiates createUploadManager() from
|
|
6
|
+
* shared.ts, and reports uploaded file metadata back to the agent via
|
|
7
|
+
* app.updateModelContext() once all files have settled.
|
|
8
|
+
*
|
|
9
|
+
* DOM API only — never innerHTML.
|
|
10
|
+
*/
|
|
11
|
+
import { buildAppHtml } from "./shared.js";
|
|
12
|
+
const UPLOAD_BODY = `
|
|
13
|
+
<div class="stack gap-6">
|
|
14
|
+
<header>
|
|
15
|
+
<h1 class="heading heading-lg" id="up-title">upload files</h1>
|
|
16
|
+
<p class="text-secondary" id="up-subtitle">drop files here or click to browse</p>
|
|
17
|
+
</header>
|
|
18
|
+
|
|
19
|
+
<section>
|
|
20
|
+
<div id="up-dropzone" class="up-dropzone">
|
|
21
|
+
<p class="text-secondary" id="up-dropzone-label">drop files here or click to browse</p>
|
|
22
|
+
<input type="file" id="up-input" multiple style="display: none;" />
|
|
23
|
+
</div>
|
|
24
|
+
<div id="up-thumbnails" class="up-thumbnails"></div>
|
|
25
|
+
<p class="text-tertiary" id="up-max-msg" style="margin-top: 8px; display: none;"></p>
|
|
26
|
+
<p class="text-tertiary" id="up-status" style="margin-top: 12px; display: none;"></p>
|
|
27
|
+
</section>
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<style>
|
|
31
|
+
.up-dropzone {
|
|
32
|
+
background: rgba(255,255,255,0.03);
|
|
33
|
+
border: 1px dashed rgba(255,255,255,0.15);
|
|
34
|
+
border-radius: 12px;
|
|
35
|
+
padding: 64px 24px;
|
|
36
|
+
text-align: center;
|
|
37
|
+
cursor: pointer;
|
|
38
|
+
transition: background 0.15s, border-color 0.15s;
|
|
39
|
+
}
|
|
40
|
+
.up-dropzone.dragover {
|
|
41
|
+
background: rgba(184,115,51,0.05);
|
|
42
|
+
border-color: var(--accent);
|
|
43
|
+
}
|
|
44
|
+
.up-thumbnails {
|
|
45
|
+
display: flex;
|
|
46
|
+
gap: 12px;
|
|
47
|
+
flex-wrap: wrap;
|
|
48
|
+
margin-top: 16px;
|
|
49
|
+
}
|
|
50
|
+
.up-thumb {
|
|
51
|
+
position: relative;
|
|
52
|
+
min-width: 120px;
|
|
53
|
+
max-width: 180px;
|
|
54
|
+
padding: 12px;
|
|
55
|
+
border-radius: 8px;
|
|
56
|
+
border: 1px solid var(--card-border);
|
|
57
|
+
background: rgba(255,255,255,0.03);
|
|
58
|
+
font-size: 12px;
|
|
59
|
+
}
|
|
60
|
+
.up-thumb-filename {
|
|
61
|
+
color: var(--text-primary);
|
|
62
|
+
word-break: break-all;
|
|
63
|
+
margin-bottom: 4px;
|
|
64
|
+
}
|
|
65
|
+
.up-thumb-state {
|
|
66
|
+
color: var(--text-tertiary);
|
|
67
|
+
font-size: 11px;
|
|
68
|
+
}
|
|
69
|
+
.up-thumb-state-failed { border-color: rgba(255,80,80,0.5); }
|
|
70
|
+
.up-thumb-state-network_error { border-color: rgba(255,165,0,0.4); }
|
|
71
|
+
.up-thumb-state-uploaded { border-color: rgba(135,169,107,0.5); }
|
|
72
|
+
.up-thumb-remove {
|
|
73
|
+
position: absolute; top: 4px; right: 4px;
|
|
74
|
+
width: 18px; height: 18px; border-radius: 50%;
|
|
75
|
+
background: rgba(0,0,0,0.6);
|
|
76
|
+
color: white; font-size: 11px; border: none; cursor: pointer;
|
|
77
|
+
display: flex; align-items: center; justify-content: center;
|
|
78
|
+
}
|
|
79
|
+
@media (max-width: 600px) {
|
|
80
|
+
.up-dropzone { padding: 40px 16px; }
|
|
81
|
+
}
|
|
82
|
+
</style>
|
|
83
|
+
`;
|
|
84
|
+
const UPLOAD_JS = `
|
|
85
|
+
var upState = {
|
|
86
|
+
config: { accept: "any", purpose: null, max_files: null },
|
|
87
|
+
manager: null,
|
|
88
|
+
reported: false,
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
function upAcceptToAttr(accept) {
|
|
92
|
+
switch (accept) {
|
|
93
|
+
case "image": return "image/*";
|
|
94
|
+
case "audio": return "audio/*";
|
|
95
|
+
case "video": return "video/*";
|
|
96
|
+
case "document": return ".pdf,.doc,.docx,.txt,.csv,.xls,.xlsx,.rtf,.md";
|
|
97
|
+
default: return "";
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function upRender(files) {
|
|
102
|
+
var container = document.getElementById("up-thumbnails");
|
|
103
|
+
if (!container) return;
|
|
104
|
+
container.textContent = "";
|
|
105
|
+
|
|
106
|
+
files.forEach(function (f) {
|
|
107
|
+
var thumb = document.createElement("div");
|
|
108
|
+
thumb.className = "up-thumb up-thumb-state-" + f.state;
|
|
109
|
+
|
|
110
|
+
var name = document.createElement("div");
|
|
111
|
+
name.className = "up-thumb-filename";
|
|
112
|
+
name.textContent = f.filename;
|
|
113
|
+
thumb.appendChild(name);
|
|
114
|
+
|
|
115
|
+
var stateEl = document.createElement("div");
|
|
116
|
+
stateEl.className = "up-thumb-state";
|
|
117
|
+
if (f.state === "uploading") stateEl.textContent = "uploading...";
|
|
118
|
+
else if (f.state === "uploaded") stateEl.textContent = "uploaded";
|
|
119
|
+
else if (f.state === "failed") stateEl.textContent = "failed — click to retry";
|
|
120
|
+
else if (f.state === "network_error") stateEl.textContent = "network error — check connection or use web dashboard";
|
|
121
|
+
else stateEl.textContent = f.state;
|
|
122
|
+
thumb.appendChild(stateEl);
|
|
123
|
+
|
|
124
|
+
if (f.state === "failed") {
|
|
125
|
+
thumb.style.cursor = "pointer";
|
|
126
|
+
thumb.onclick = function () { upState.manager.retryFile(f.id); };
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
var removeBtn = document.createElement("button");
|
|
130
|
+
removeBtn.className = "up-thumb-remove";
|
|
131
|
+
removeBtn.textContent = "\\u00D7";
|
|
132
|
+
removeBtn.onclick = function (e) {
|
|
133
|
+
e.stopPropagation();
|
|
134
|
+
upState.manager.removeFile(f.id);
|
|
135
|
+
};
|
|
136
|
+
thumb.appendChild(removeBtn);
|
|
137
|
+
|
|
138
|
+
container.appendChild(thumb);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
upMaybeReport(files);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function upMaybeReport(files) {
|
|
145
|
+
if (upState.reported) return;
|
|
146
|
+
if (files.length === 0) return;
|
|
147
|
+
var settled = files.every(function (f) {
|
|
148
|
+
return f.state === "uploaded" || f.state === "failed" || f.state === "network_error";
|
|
149
|
+
});
|
|
150
|
+
if (!settled) return;
|
|
151
|
+
|
|
152
|
+
var uploaded = files
|
|
153
|
+
.filter(function (f) { return f.state === "uploaded"; })
|
|
154
|
+
.map(function (f) {
|
|
155
|
+
return {
|
|
156
|
+
id: f.upload_id || null,
|
|
157
|
+
url: f.url,
|
|
158
|
+
mime_type: f.mime_type,
|
|
159
|
+
size: f.size,
|
|
160
|
+
filename: f.filename,
|
|
161
|
+
uploaded_at: f.uploaded_at,
|
|
162
|
+
};
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
upState.reported = true;
|
|
166
|
+
|
|
167
|
+
var status = document.getElementById("up-status");
|
|
168
|
+
if (status) {
|
|
169
|
+
status.style.display = "block";
|
|
170
|
+
status.textContent = uploaded.length + " file(s) uploaded — returning to agent";
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
if (app && typeof app.updateModelContext === "function") {
|
|
174
|
+
try {
|
|
175
|
+
app.updateModelContext({
|
|
176
|
+
context: [{
|
|
177
|
+
type: "text",
|
|
178
|
+
text: JSON.stringify({ uploaded: uploaded }),
|
|
179
|
+
}],
|
|
180
|
+
});
|
|
181
|
+
} catch (err) {
|
|
182
|
+
console.warn("[pica_upload] updateModelContext failed:", err);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
function upEnforceMaxFiles(incoming) {
|
|
188
|
+
var maxMsgEl = document.getElementById("up-max-msg");
|
|
189
|
+
if (maxMsgEl) {
|
|
190
|
+
maxMsgEl.style.display = "none";
|
|
191
|
+
maxMsgEl.textContent = "";
|
|
192
|
+
}
|
|
193
|
+
var max = upState.config.max_files;
|
|
194
|
+
if (!max || !upState.manager) return incoming;
|
|
195
|
+
var currentCount = upState.manager.getFiles().length;
|
|
196
|
+
var remaining = max - currentCount;
|
|
197
|
+
if (remaining <= 0) {
|
|
198
|
+
if (maxMsgEl) {
|
|
199
|
+
maxMsgEl.textContent = "max " + max + " files — extras ignored";
|
|
200
|
+
maxMsgEl.style.display = "block";
|
|
201
|
+
}
|
|
202
|
+
return [];
|
|
203
|
+
}
|
|
204
|
+
if (incoming.length > remaining) {
|
|
205
|
+
if (maxMsgEl) {
|
|
206
|
+
maxMsgEl.textContent = "max " + max + " files — extras ignored";
|
|
207
|
+
maxMsgEl.style.display = "block";
|
|
208
|
+
}
|
|
209
|
+
return Array.prototype.slice.call(incoming, 0, remaining);
|
|
210
|
+
}
|
|
211
|
+
return incoming;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
function upSetup() {
|
|
215
|
+
var dz = document.getElementById("up-dropzone");
|
|
216
|
+
var input = document.getElementById("up-input");
|
|
217
|
+
var title = document.getElementById("up-title");
|
|
218
|
+
var subtitle = document.getElementById("up-subtitle");
|
|
219
|
+
var dzLabel = document.getElementById("up-dropzone-label");
|
|
220
|
+
|
|
221
|
+
if (upState.config.purpose && title) {
|
|
222
|
+
title.textContent = "upload: " + upState.config.purpose;
|
|
223
|
+
}
|
|
224
|
+
if (upState.config.accept && upState.config.accept !== "any" && subtitle) {
|
|
225
|
+
subtitle.textContent = "drop " + upState.config.accept + " files here or click to browse";
|
|
226
|
+
if (dzLabel) dzLabel.textContent = "drop " + upState.config.accept + " files here";
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
if (input) {
|
|
230
|
+
input.accept = upAcceptToAttr(upState.config.accept);
|
|
231
|
+
}
|
|
232
|
+
if (!dz || !input) return;
|
|
233
|
+
|
|
234
|
+
dz.addEventListener("click", function () { input.click(); });
|
|
235
|
+
input.addEventListener("change", function (e) {
|
|
236
|
+
if (e.target.files && e.target.files.length) {
|
|
237
|
+
var allowed = upEnforceMaxFiles(e.target.files);
|
|
238
|
+
if (allowed.length) {
|
|
239
|
+
upState.reported = false;
|
|
240
|
+
upState.manager.addFiles(allowed);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
input.value = "";
|
|
244
|
+
});
|
|
245
|
+
dz.addEventListener("dragover", function (e) {
|
|
246
|
+
e.preventDefault();
|
|
247
|
+
dz.classList.add("dragover");
|
|
248
|
+
});
|
|
249
|
+
dz.addEventListener("dragleave", function () { dz.classList.remove("dragover"); });
|
|
250
|
+
dz.addEventListener("drop", function (e) {
|
|
251
|
+
e.preventDefault();
|
|
252
|
+
dz.classList.remove("dragover");
|
|
253
|
+
if (e.dataTransfer && e.dataTransfer.files && e.dataTransfer.files.length) {
|
|
254
|
+
var allowed = upEnforceMaxFiles(e.dataTransfer.files);
|
|
255
|
+
if (allowed.length) {
|
|
256
|
+
upState.reported = false;
|
|
257
|
+
upState.manager.addFiles(allowed);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
window.onPicaToolResult = function (data) {
|
|
264
|
+
if (data && data.config) {
|
|
265
|
+
upState.config = {
|
|
266
|
+
accept: data.config.accept || "any",
|
|
267
|
+
purpose: data.config.purpose || null,
|
|
268
|
+
max_files: data.config.max_files || null,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
upState.manager = createUploadManager({
|
|
272
|
+
accept: upState.config.accept,
|
|
273
|
+
onStateChange: upRender,
|
|
274
|
+
app: app,
|
|
275
|
+
});
|
|
276
|
+
upSetup();
|
|
277
|
+
};
|
|
278
|
+
`;
|
|
279
|
+
export const UPLOAD_HTML = buildAppHtml("pica \u2014 upload", UPLOAD_BODY, UPLOAD_JS);
|
|
280
|
+
//# sourceMappingURL=upload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/apps/upload.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEnB,CAAC;AAEF,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkMjB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CACrC,oBAAoB,EACpB,WAAW,EACX,SAAS,CACV,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,34 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Configuration
|
|
3
|
-
*/
|
|
4
1
|
export interface ServerConfig {
|
|
5
|
-
|
|
6
|
-
* PICA API key for authentication
|
|
7
|
-
*/
|
|
8
|
-
picaApiKey: string;
|
|
9
|
-
/**
|
|
10
|
-
* PICA API base URL
|
|
11
|
-
*/
|
|
2
|
+
picaApiKey: string | null;
|
|
12
3
|
picaApiUrl: string;
|
|
13
|
-
/**
|
|
14
|
-
* Server name shown to AI assistants
|
|
15
|
-
*/
|
|
16
4
|
serverName: string;
|
|
17
|
-
/**
|
|
18
|
-
* Server version
|
|
19
|
-
*/
|
|
20
5
|
version: string;
|
|
21
|
-
/**
|
|
22
|
-
* Enable debug logging
|
|
23
|
-
*/
|
|
24
6
|
debug: boolean;
|
|
7
|
+
lobbyMode: boolean;
|
|
8
|
+
credentialsPath: string;
|
|
9
|
+
discoveryMode: boolean;
|
|
25
10
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Load configuration from environment variables
|
|
28
|
-
*/
|
|
29
11
|
export declare function loadConfig(): ServerConfig;
|
|
30
|
-
/**
|
|
31
|
-
* Validate configuration
|
|
32
|
-
*/
|
|
33
12
|
export declare function validateConfig(config: ServerConfig): void;
|
|
34
13
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,UAAU,IAAI,YAAY,CA8CzC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAWzD"}
|
package/dist/config.js
CHANGED
|
@@ -1,28 +1,52 @@
|
|
|
1
1
|
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* MCP Server Configuration
|
|
4
4
|
*/
|
|
5
|
+
import { readCredentials, getDefaultCredentialsPath, } from "@withpica/mcp-utils";
|
|
5
6
|
export function loadConfig() {
|
|
6
|
-
const
|
|
7
|
+
const credentialsPath = process.env.PICA_CREDENTIALS_PATH || getDefaultCredentialsPath();
|
|
8
|
+
const debug = process.env.DEBUG === "true" || process.env.DEBUG === "1";
|
|
9
|
+
// Priority 1: env var
|
|
10
|
+
let picaApiKey = process.env.PICA_API_KEY || null;
|
|
11
|
+
// Priority 2: credentials file
|
|
7
12
|
if (!picaApiKey) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
13
|
+
const creds = readCredentials(credentialsPath);
|
|
14
|
+
if (creds) {
|
|
15
|
+
picaApiKey = creds.api_key;
|
|
16
|
+
if (debug) {
|
|
17
|
+
console.error(`[MCP Server] Loaded credentials for ${creds.email}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const lobbyMode = !picaApiKey;
|
|
22
|
+
const discoveryMode = process.env.MCP_LAYERED_DISCOVERY === "1";
|
|
23
|
+
if (lobbyMode && debug) {
|
|
24
|
+
console.error("[MCP Server] No API key found — starting in lobby mode");
|
|
25
|
+
}
|
|
26
|
+
if (discoveryMode && debug) {
|
|
27
|
+
console.error("[MCP Server] Layered discovery mode enabled");
|
|
11
28
|
}
|
|
12
29
|
return {
|
|
13
30
|
picaApiKey,
|
|
14
31
|
picaApiUrl: process.env.PICA_API_URL || "https://withpica.com/api",
|
|
15
32
|
serverName: "pica-mcp-server",
|
|
16
|
-
version
|
|
17
|
-
|
|
33
|
+
// KEEP IN SYNC with mcp-server/package.json `version` field. This
|
|
34
|
+
// string surfaces in the boot banner ([MCP Server] Version: ...) and
|
|
35
|
+
// in the MCP `initialize` handshake response under `serverInfo.version`,
|
|
36
|
+
// which is what clients display in their connector UIs. Drift from
|
|
37
|
+
// package.json was caught 2026-04-08 — banner read 2.5.0 long after
|
|
38
|
+
// npm was on 2.6.1.
|
|
39
|
+
version: "2.6.2",
|
|
40
|
+
debug,
|
|
41
|
+
lobbyMode,
|
|
42
|
+
credentialsPath,
|
|
43
|
+
discoveryMode,
|
|
18
44
|
};
|
|
19
45
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Validate configuration
|
|
22
|
-
*/
|
|
23
46
|
export function validateConfig(config) {
|
|
24
|
-
if (!config.
|
|
25
|
-
|
|
47
|
+
if (!config.lobbyMode &&
|
|
48
|
+
(!config.picaApiKey || config.picaApiKey.trim() === "")) {
|
|
49
|
+
throw new Error("PICA API key cannot be empty when not in lobby mode");
|
|
26
50
|
}
|
|
27
51
|
if (!config.picaApiUrl || !config.picaApiUrl.startsWith("http")) {
|
|
28
52
|
throw new Error("Invalid PICA API URL");
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,6DAA6D;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAa7B,MAAM,UAAU,UAAU;IACxB,MAAM,eAAe,GACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,yBAAyB,EAAE,CAAC;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC;IAExE,sBAAsB;IACtB,IAAI,UAAU,GAAkB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC;IAEjE,+BAA+B;IAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,KAAK,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;YAC3B,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,uCAAuC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,UAAU,CAAC;IAC9B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,GAAG,CAAC;IAEhE,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,aAAa,IAAI,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,UAAU;QACV,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,0BAA0B;QAClE,UAAU,EAAE,iBAAiB;QAC7B,kEAAkE;QAClE,qEAAqE;QACrE,yEAAyE;QACzE,mEAAmE;QACnE,oEAAoE;QACpE,oBAAoB;QACpB,OAAO,EAAE,OAAO;QAChB,KAAK;QACL,SAAS;QACT,eAAe;QACf,aAAa;KACd,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,IACE,CAAC,MAAM,CAAC,SAAS;QACjB,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EACvD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -8,13 +8,13 @@ import { loadConfig, validateConfig } from "./config.js";
|
|
|
8
8
|
import { PicaMcpServer } from "./server.js";
|
|
9
9
|
async function main() {
|
|
10
10
|
try {
|
|
11
|
-
// Load and validate configuration
|
|
12
11
|
const config = loadConfig();
|
|
13
12
|
validateConfig(config);
|
|
14
|
-
|
|
13
|
+
if (config.lobbyMode) {
|
|
14
|
+
console.error('[MCP Server] Starting in lobby mode — say "sign me in" to connect');
|
|
15
|
+
}
|
|
15
16
|
const server = new PicaMcpServer(config);
|
|
16
17
|
await server.start();
|
|
17
|
-
// Handle graceful shutdown
|
|
18
18
|
process.on("SIGINT", async () => {
|
|
19
19
|
console.error("[MCP Server] Shutting down...");
|
|
20
20
|
await server.stop();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,6DAA6D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,6DAA6D;AAE7D;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,cAAc,CAAC,MAAM,CAAC,CAAC;QAEvB,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CACX,mEAAmE,CACpE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QAErB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;YAC/C,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACX,2BAA2B,EAC3B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/prompts/index.d.ts
CHANGED
|
@@ -3,76 +3,76 @@
|
|
|
3
3
|
* Manages pre-configured prompts for common workflows
|
|
4
4
|
*/
|
|
5
5
|
export interface PromptDefinition {
|
|
6
|
-
name: string;
|
|
7
|
-
description: string;
|
|
8
|
-
arguments?: Array<{
|
|
9
6
|
name: string;
|
|
10
7
|
description: string;
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
arguments?: Array<{
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
required?: boolean;
|
|
12
|
+
}>;
|
|
13
13
|
}
|
|
14
14
|
export interface PromptMessage {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
role: "user" | "assistant";
|
|
16
|
+
content: {
|
|
17
|
+
type: string;
|
|
18
|
+
text: string;
|
|
19
|
+
};
|
|
20
20
|
}
|
|
21
21
|
export interface PromptResult {
|
|
22
|
-
|
|
22
|
+
messages: PromptMessage[];
|
|
23
23
|
}
|
|
24
24
|
export declare class PromptRegistry {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
25
|
+
/**
|
|
26
|
+
* List all available prompts
|
|
27
|
+
*/
|
|
28
|
+
listPrompts(): PromptDefinition[];
|
|
29
|
+
/**
|
|
30
|
+
* Get a prompt by name
|
|
31
|
+
*/
|
|
32
|
+
getPrompt(name: string, args?: Record<string, any>): Promise<any>;
|
|
33
|
+
/**
|
|
34
|
+
* Analyze catalog prompt
|
|
35
|
+
*/
|
|
36
|
+
private getAnalyzeCatalogPrompt;
|
|
37
|
+
/**
|
|
38
|
+
* Find duplicates prompt
|
|
39
|
+
*/
|
|
40
|
+
private getFindDuplicatesPrompt;
|
|
41
|
+
/**
|
|
42
|
+
* Enrich metadata prompt
|
|
43
|
+
*/
|
|
44
|
+
private getEnrichMetadataPrompt;
|
|
45
|
+
/**
|
|
46
|
+
* Verify works prompt
|
|
47
|
+
*/
|
|
48
|
+
private getVerifyWorksPrompt;
|
|
49
|
+
/**
|
|
50
|
+
* Assess catalog health prompt
|
|
51
|
+
*/
|
|
52
|
+
private getAssessCatalogHealthPrompt;
|
|
53
|
+
/**
|
|
54
|
+
* Audit credits prompt
|
|
55
|
+
*/
|
|
56
|
+
private getAuditCreditsPrompt;
|
|
57
|
+
/**
|
|
58
|
+
* New catalog setup prompt — first-time onboarding
|
|
59
|
+
*/
|
|
60
|
+
private getNewCatalogSetupPrompt;
|
|
61
|
+
/**
|
|
62
|
+
* Close the loop — check a specific work's gaps and offer to fix each one
|
|
63
|
+
*/
|
|
64
|
+
private getCloseTheLoopPrompt;
|
|
65
|
+
/**
|
|
66
|
+
* Register my works — check registration status and prepare for PRO submission
|
|
67
|
+
*/
|
|
68
|
+
private getRegisterMyWorksPrompt;
|
|
69
|
+
/**
|
|
70
|
+
* Workspace autopilot — assess state and route to the right workflow
|
|
71
|
+
*/
|
|
72
|
+
private getWorkspaceAutopilotPrompt;
|
|
73
|
+
/**
|
|
74
|
+
* Prepare for sync — get catalog sync-ready
|
|
75
|
+
*/
|
|
76
|
+
private getPrepareForSyncPrompt;
|
|
77
77
|
}
|
|
78
|
-
//# sourceMappingURL=index.d.ts.map
|
|
78
|
+
//# sourceMappingURL=index.d.ts.map
|