@withpica/mcp-server 1.3.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/.claude/settings.local.json +5 -0
- package/CHANGELOG.md +1850 -0
- package/README.md +304 -0
- package/assets/fonts/GeistSans-Light.woff2 +0 -0
- package/assets/fonts/InstrumentSerif-Italic.woff2 +0 -0
- package/assets/fonts/InstrumentSerif-Regular.woff2 +0 -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/release.d.ts +2 -0
- package/dist/apps/release.d.ts.map +1 -0
- package/dist/apps/release.js +69 -0
- package/dist/apps/release.js.map +1 -0
- package/dist/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 +14 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +73 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +86 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +645 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/agent-guide.d.ts +15 -0
- package/dist/resources/agent-guide.d.ts.map +1 -0
- package/dist/resources/agent-guide.js +284 -0
- package/dist/resources/agent-guide.js.map +1 -0
- package/dist/resources/index.d.ts +66 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +510 -0
- package/dist/resources/index.js.map +1 -0
- 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/resources/required-schemas.generated.d.ts +455 -0
- package/dist/resources/required-schemas.generated.d.ts.map +1 -0
- package/dist/resources/required-schemas.generated.js +1041 -0
- package/dist/resources/required-schemas.generated.js.map +1 -0
- package/dist/resources/required-schemas.source.d.ts +53 -0
- package/dist/resources/required-schemas.source.d.ts.map +1 -0
- package/dist/resources/required-schemas.source.js +493 -0
- package/dist/resources/required-schemas.source.js.map +1 -0
- package/dist/resources/welcome.d.ts +14 -0
- package/dist/resources/welcome.d.ts.map +1 -0
- package/dist/resources/welcome.js +26 -0
- package/dist/resources/welcome.js.map +1 -0
- package/dist/server-instructions.d.ts +60 -0
- package/dist/server-instructions.d.ts.map +1 -0
- package/dist/server-instructions.js +93 -0
- package/dist/server-instructions.js.map +1 -0
- package/dist/server.d.ts +52 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +334 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/access-simulate.d.ts +23 -0
- package/dist/tools/access-simulate.d.ts.map +1 -0
- package/dist/tools/access-simulate.js +162 -0
- package/dist/tools/access-simulate.js.map +1 -0
- package/dist/tools/agent-identity.d.ts +36 -0
- package/dist/tools/agent-identity.d.ts.map +1 -0
- package/dist/tools/agent-identity.js +274 -0
- package/dist/tools/agent-identity.js.map +1 -0
- 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 +281 -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 +282 -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 +130 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/app-tools.d.ts +15 -0
- package/dist/tools/app-tools.d.ts.map +1 -0
- package/dist/tools/app-tools.js +388 -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 +454 -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 +409 -0
- package/dist/tools/audio-files.js.map +1 -0
- package/dist/tools/audit.d.ts +19 -0
- package/dist/tools/audit.d.ts.map +1 -0
- package/dist/tools/audit.js +58 -0
- package/dist/tools/audit.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 +212 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/bulk.d.ts +22 -0
- package/dist/tools/bulk.d.ts.map +1 -0
- package/dist/tools/bulk.js +164 -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 +68 -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 +381 -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 +80 -0
- package/dist/tools/comparisons.js.map +1 -0
- package/dist/tools/credits.d.ts +39 -0
- package/dist/tools/credits.d.ts.map +1 -0
- package/dist/tools/credits.js +541 -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 +281 -0
- package/dist/tools/custody.js.map +1 -0
- package/dist/tools/dashboard.d.ts +22 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +258 -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 +107 -0
- package/dist/tools/directory.js.map +1 -0
- package/dist/tools/discovery.d.ts +49 -0
- package/dist/tools/discovery.d.ts.map +1 -0
- package/dist/tools/discovery.js +851 -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 +62 -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 +37 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/duplicates.d.ts +25 -0
- package/dist/tools/duplicates.d.ts.map +1 -0
- package/dist/tools/duplicates.js +108 -0
- package/dist/tools/duplicates.js.map +1 -0
- package/dist/tools/enrichment.d.ts +56 -0
- package/dist/tools/enrichment.d.ts.map +1 -0
- package/dist/tools/enrichment.js +616 -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 +184 -0
- package/dist/tools/exports.js.map +1 -0
- package/dist/tools/feedback.d.ts +22 -0
- package/dist/tools/feedback.d.ts.map +1 -0
- package/dist/tools/feedback.js +100 -0
- package/dist/tools/feedback.js.map +1 -0
- package/dist/tools/forbidden-keywords.d.ts +62 -0
- package/dist/tools/forbidden-keywords.d.ts.map +1 -0
- package/dist/tools/forbidden-keywords.js +99 -0
- package/dist/tools/forbidden-keywords.js.map +1 -0
- package/dist/tools/gap-hints.d.ts +53 -0
- package/dist/tools/gap-hints.d.ts.map +1 -0
- package/dist/tools/gap-hints.js +245 -0
- package/dist/tools/gap-hints.js.map +1 -0
- package/dist/tools/groups.d.ts +29 -0
- package/dist/tools/groups.d.ts.map +1 -0
- package/dist/tools/groups.js +186 -0
- package/dist/tools/groups.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 +206 -0
- package/dist/tools/import-documents.js.map +1 -0
- package/dist/tools/import.d.ts +31 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +610 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +293 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1182 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integrations.d.ts +19 -0
- package/dist/tools/integrations.d.ts.map +1 -0
- package/dist/tools/integrations.js +120 -0
- package/dist/tools/integrations.js.map +1 -0
- package/dist/tools/labels.d.ts +20 -0
- package/dist/tools/labels.d.ts.map +1 -0
- package/dist/tools/labels.js +48 -0
- package/dist/tools/labels.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 +436 -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 +120 -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 +1532 -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 +371 -0
- package/dist/tools/multimedia.js.map +1 -0
- package/dist/tools/my-reported-issues.d.ts +32 -0
- package/dist/tools/my-reported-issues.d.ts.map +1 -0
- package/dist/tools/my-reported-issues.js +123 -0
- package/dist/tools/my-reported-issues.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 +115 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/notifications.d.ts +28 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +417 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/onboarding.d.ts +24 -0
- package/dist/tools/onboarding.d.ts.map +1 -0
- package/dist/tools/onboarding.js +81 -0
- package/dist/tools/onboarding.js.map +1 -0
- package/dist/tools/people.d.ts +254 -0
- package/dist/tools/people.d.ts.map +1 -0
- package/dist/tools/people.js +481 -0
- package/dist/tools/people.js.map +1 -0
- package/dist/tools/projects.d.ts +20 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +316 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/public-filter.d.ts +43 -0
- package/dist/tools/public-filter.d.ts.map +1 -0
- package/dist/tools/public-filter.js +356 -0
- package/dist/tools/public-filter.js.map +1 -0
- package/dist/tools/publishers.d.ts +30 -0
- package/dist/tools/publishers.d.ts.map +1 -0
- package/dist/tools/publishers.js +105 -0
- package/dist/tools/publishers.js.map +1 -0
- package/dist/tools/purchases.d.ts +27 -0
- package/dist/tools/purchases.d.ts.map +1 -0
- package/dist/tools/purchases.js +9 -0
- package/dist/tools/purchases.js.map +1 -0
- package/dist/tools/recording-attribution-hints.d.ts +24 -0
- package/dist/tools/recording-attribution-hints.d.ts.map +1 -0
- package/dist/tools/recording-attribution-hints.js +27 -0
- package/dist/tools/recording-attribution-hints.js.map +1 -0
- package/dist/tools/recordings.d.ts +96 -0
- package/dist/tools/recordings.d.ts.map +1 -0
- package/dist/tools/recordings.js +564 -0
- package/dist/tools/recordings.js.map +1 -0
- package/dist/tools/recovery-hints.d.ts +40 -0
- package/dist/tools/recovery-hints.d.ts.map +1 -0
- package/dist/tools/recovery-hints.js +827 -0
- package/dist/tools/recovery-hints.js.map +1 -0
- package/dist/tools/release-rich.d.ts +31 -0
- package/dist/tools/release-rich.d.ts.map +1 -0
- package/dist/tools/release-rich.js +245 -0
- package/dist/tools/release-rich.js.map +1 -0
- package/dist/tools/releases.d.ts +36 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +649 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/report-issue.d.ts +21 -0
- package/dist/tools/report-issue.d.ts.map +1 -0
- package/dist/tools/report-issue.js +101 -0
- package/dist/tools/report-issue.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 +262 -0
- package/dist/tools/royalties.js.map +1 -0
- package/dist/tools/search.d.ts +30 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +115 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/send.d.ts +17 -0
- package/dist/tools/send.d.ts.map +1 -0
- package/dist/tools/send.js +188 -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 +153 -0
- package/dist/tools/sessions.js.map +1 -0
- package/dist/tools/settings.d.ts +23 -0
- package/dist/tools/settings.d.ts.map +1 -0
- package/dist/tools/settings.js +365 -0
- package/dist/tools/settings.js.map +1 -0
- package/dist/tools/share-links.d.ts +22 -0
- package/dist/tools/share-links.d.ts.map +1 -0
- package/dist/tools/share-links.js +188 -0
- package/dist/tools/share-links.js.map +1 -0
- package/dist/tools/signup.d.ts +26 -0
- package/dist/tools/signup.d.ts.map +1 -0
- package/dist/tools/signup.js +266 -0
- package/dist/tools/signup.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 +309 -0
- package/dist/tools/split-sheets.js.map +1 -0
- package/dist/tools/storage-config.d.ts +13 -0
- package/dist/tools/storage-config.d.ts.map +1 -0
- package/dist/tools/storage-config.js +245 -0
- package/dist/tools/storage-config.js.map +1 -0
- package/dist/tools/subscription.d.ts +60 -0
- package/dist/tools/subscription.d.ts.map +1 -0
- package/dist/tools/subscription.js +440 -0
- package/dist/tools/subscription.js.map +1 -0
- package/dist/tools/sync-placements.d.ts +31 -0
- package/dist/tools/sync-placements.d.ts.map +1 -0
- package/dist/tools/sync-placements.js +431 -0
- package/dist/tools/sync-placements.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 +144 -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 +144 -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 +165 -0
- package/dist/tools/uploads.js.map +1 -0
- package/dist/tools/works.d.ts +71 -0
- package/dist/tools/works.d.ts.map +1 -0
- package/dist/tools/works.js +694 -0
- package/dist/tools/works.js.map +1 -0
- package/package.json +54 -0
- package/scripts/build-required-schemas.ts +233 -0
- package/scripts/bundle-apps.ts +61 -0
- package/scripts/refresh-schema-mirror.ts +182 -0
- package/server.json +20 -0
|
@@ -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
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare const VERSION: string;
|
|
2
|
+
export interface ServerConfig {
|
|
3
|
+
picaApiKey: string | null;
|
|
4
|
+
picaApiUrl: string;
|
|
5
|
+
serverName: string;
|
|
6
|
+
version: string;
|
|
7
|
+
debug: boolean;
|
|
8
|
+
lobbyMode: boolean;
|
|
9
|
+
credentialsPath: string;
|
|
10
|
+
discoveryMode: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function loadConfig(): ServerConfig;
|
|
13
|
+
export declare function validateConfig(config: ServerConfig): void;
|
|
14
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAoCA,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC;AAE3C,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,CAwCzC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAWzD"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
/**
|
|
3
|
+
* MCP Server Configuration
|
|
4
|
+
*/
|
|
5
|
+
import { readCredentials, getDefaultCredentialsPath, } from "@withpica/mcp-utils";
|
|
6
|
+
import { createRequire } from "module";
|
|
7
|
+
// Single TS-side source of truth for the customer MCP server version,
|
|
8
|
+
// AUTO-DERIVED from package.json so the two cannot drift. Past drift
|
|
9
|
+
// incidents that motivated this: 2026-04-08 (banner 2.5.0 vs npm 2.6.1),
|
|
10
|
+
// 2026-04-19 ADR-181 Phase 2 (banner 2.6.2 vs npm 2.22.0), 2026-04-24
|
|
11
|
+
// (publish blocked TWICE by stale literal at 2.27.0 → 2.28.0 bumps).
|
|
12
|
+
//
|
|
13
|
+
// Implementation note: uses `createRequire` rather than the import-
|
|
14
|
+
// attribute syntax (`import pkg from "..." with { type: "json" }`)
|
|
15
|
+
// because the package's tsconfig.json sets `module: "Node16"`, which
|
|
16
|
+
// doesn't support import attributes. createRequire works in any
|
|
17
|
+
// module setting and resolves ../package.json relative to the
|
|
18
|
+
// compiled dist/config.js file at runtime — same path semantics, no
|
|
19
|
+
// tsconfig change needed.
|
|
20
|
+
//
|
|
21
|
+
// scripts/lint-mcp-tools.ts version-sync check now accepts both this
|
|
22
|
+
// derived form (preferred) and the legacy literal hardcode (still
|
|
23
|
+
// version-matched against package.json). Surfaces on stdio via the
|
|
24
|
+
// boot banner + MCP `initialize` handshake (loadConfig below) and on
|
|
25
|
+
// HTTP via app/api/mcp/route.ts, which imports this const from
|
|
26
|
+
// mcp-server/dist/config.js. ADR-180 Phase 2 collapsed the
|
|
27
|
+
// duplication; ADR-196 Phase 4b makes it drift-proof.
|
|
28
|
+
const pkg = createRequire(import.meta.url)("../package.json");
|
|
29
|
+
export const VERSION = pkg.version;
|
|
30
|
+
export function loadConfig() {
|
|
31
|
+
const credentialsPath = process.env.PICA_CREDENTIALS_PATH || getDefaultCredentialsPath();
|
|
32
|
+
const debug = process.env.DEBUG === "true" || process.env.DEBUG === "1";
|
|
33
|
+
// Priority 1: env var
|
|
34
|
+
let picaApiKey = process.env.PICA_API_KEY || null;
|
|
35
|
+
// Priority 2: credentials file
|
|
36
|
+
if (!picaApiKey) {
|
|
37
|
+
const creds = readCredentials(credentialsPath);
|
|
38
|
+
if (creds) {
|
|
39
|
+
picaApiKey = creds.api_key;
|
|
40
|
+
if (debug) {
|
|
41
|
+
console.error(`[MCP Server] Loaded credentials for ${creds.email}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const lobbyMode = !picaApiKey;
|
|
46
|
+
const discoveryMode = process.env.MCP_LAYERED_DISCOVERY === "1";
|
|
47
|
+
if (lobbyMode && debug) {
|
|
48
|
+
console.error("[MCP Server] No API key found — starting in lobby mode");
|
|
49
|
+
}
|
|
50
|
+
if (discoveryMode && debug) {
|
|
51
|
+
console.error("[MCP Server] Layered discovery mode enabled");
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
picaApiKey,
|
|
55
|
+
picaApiUrl: process.env.PICA_API_URL || "https://withpica.com/api",
|
|
56
|
+
serverName: "pica-mcp-server",
|
|
57
|
+
version: VERSION,
|
|
58
|
+
debug,
|
|
59
|
+
lobbyMode,
|
|
60
|
+
credentialsPath,
|
|
61
|
+
discoveryMode,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function validateConfig(config) {
|
|
65
|
+
if (!config.lobbyMode &&
|
|
66
|
+
(!config.picaApiKey || config.picaApiKey.trim() === "")) {
|
|
67
|
+
throw new Error("PICA API key cannot be empty when not in lobby mode");
|
|
68
|
+
}
|
|
69
|
+
if (!config.picaApiUrl || !config.picaApiUrl.startsWith("http")) {
|
|
70
|
+
throw new Error("Invalid PICA API URL");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,sEAAsE;AACtE,qEAAqE;AACrE,yEAAyE;AACzE,sEAAsE;AACtE,qEAAqE;AACrE,EAAE;AACF,oEAAoE;AACpE,mEAAmE;AACnE,qEAAqE;AACrE,gEAAgE;AAChE,8DAA8D;AAC9D,oEAAoE;AACpE,0BAA0B;AAC1B,EAAE;AACF,qEAAqE;AACrE,kEAAkE;AAClE,mEAAmE;AACnE,qEAAqE;AACrE,+DAA+D;AAC/D,2DAA2D;AAC3D,sDAAsD;AACtD,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAE3D,CAAC;AACF,MAAM,CAAC,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC;AAa3C,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,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
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
3
|
+
/**
|
|
4
|
+
* PICA MCP Server
|
|
5
|
+
* Entry point for the Model Context Protocol server
|
|
6
|
+
*/
|
|
7
|
+
import { loadConfig, validateConfig } from "./config.js";
|
|
8
|
+
import { PicaMcpServer } from "./server.js";
|
|
9
|
+
async function main() {
|
|
10
|
+
try {
|
|
11
|
+
const config = loadConfig();
|
|
12
|
+
validateConfig(config);
|
|
13
|
+
if (config.lobbyMode) {
|
|
14
|
+
console.error('[MCP Server] Starting in lobby mode — say "sign me in" to connect');
|
|
15
|
+
}
|
|
16
|
+
const server = new PicaMcpServer(config);
|
|
17
|
+
await server.start();
|
|
18
|
+
process.on("SIGINT", async () => {
|
|
19
|
+
console.error("[MCP Server] Shutting down...");
|
|
20
|
+
await server.stop();
|
|
21
|
+
process.exit(0);
|
|
22
|
+
});
|
|
23
|
+
process.on("SIGTERM", async () => {
|
|
24
|
+
console.error("[MCP Server] Shutting down...");
|
|
25
|
+
await server.stop();
|
|
26
|
+
process.exit(0);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error("[MCP Server] Fatal error:", error instanceof Error ? error.message : String(error));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
main();
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Registry for MCP Server
|
|
3
|
+
* Manages pre-configured prompts for common workflows
|
|
4
|
+
*/
|
|
5
|
+
export interface PromptDefinition {
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
arguments?: Array<{
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
required?: boolean;
|
|
12
|
+
}>;
|
|
13
|
+
}
|
|
14
|
+
export interface PromptMessage {
|
|
15
|
+
role: "user" | "assistant";
|
|
16
|
+
content: {
|
|
17
|
+
type: string;
|
|
18
|
+
text: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface PromptResult {
|
|
22
|
+
messages: PromptMessage[];
|
|
23
|
+
}
|
|
24
|
+
export declare class PromptRegistry {
|
|
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
|
+
/**
|
|
78
|
+
* Log a session — guided studio session capture
|
|
79
|
+
*/
|
|
80
|
+
private getLogASessionPrompt;
|
|
81
|
+
/**
|
|
82
|
+
* Set recording splits — guided master ownership split assignment with verify gate
|
|
83
|
+
*/
|
|
84
|
+
private getSetRecordingSplitsPrompt;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,qBAAa,cAAc;IACzB;;OAEG;IACH,WAAW,IAAI,gBAAgB,EAAE;IAuGjC;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IA8CvE;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgC/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA+B/B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqC/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAiCpC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAoC7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyChC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA0C7B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqChC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAiDnC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAuC/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsC5B;;OAEG;IACH,OAAO,CAAC,2BAA2B;CA6CpC"}
|