@unclick/mcp-server 0.2.3 → 0.2.5
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/README.md +139 -153
- package/dist/airtable-tool.d.ts +2 -0
- package/dist/airtable-tool.d.ts.map +1 -0
- package/dist/airtable-tool.js +154 -0
- package/dist/airtable-tool.js.map +1 -0
- package/dist/algolia-tool.d.ts +5 -0
- package/dist/algolia-tool.d.ts.map +1 -0
- package/dist/algolia-tool.js +121 -0
- package/dist/algolia-tool.js.map +1 -0
- package/dist/anthropic-tool.d.ts +3 -0
- package/dist/anthropic-tool.d.ts.map +1 -0
- package/dist/anthropic-tool.js +123 -0
- package/dist/anthropic-tool.js.map +1 -0
- package/dist/asana-tool.d.ts +8 -0
- package/dist/asana-tool.d.ts.map +1 -0
- package/dist/asana-tool.js +218 -0
- package/dist/asana-tool.js.map +1 -0
- package/dist/assemblyai-tool.d.ts +7 -0
- package/dist/assemblyai-tool.d.ts.map +1 -0
- package/dist/assemblyai-tool.js +127 -0
- package/dist/assemblyai-tool.js.map +1 -0
- package/dist/calendly-tool.d.ts +6 -0
- package/dist/calendly-tool.d.ts.map +1 -0
- package/dist/calendly-tool.js +182 -0
- package/dist/calendly-tool.js.map +1 -0
- package/dist/circleci-tool.d.ts +7 -0
- package/dist/circleci-tool.d.ts.map +1 -0
- package/dist/circleci-tool.js +133 -0
- package/dist/circleci-tool.js.map +1 -0
- package/dist/clickup-tool.d.ts +2 -0
- package/dist/clickup-tool.d.ts.map +1 -0
- package/dist/clickup-tool.js +153 -0
- package/dist/clickup-tool.js.map +1 -0
- package/dist/cohere-tool.d.ts +7 -0
- package/dist/cohere-tool.d.ts.map +1 -0
- package/dist/cohere-tool.js +225 -0
- package/dist/cohere-tool.js.map +1 -0
- package/dist/connectors/figma.d.ts +3 -0
- package/dist/connectors/figma.d.ts.map +1 -0
- package/dist/connectors/figma.js +18 -0
- package/dist/connectors/figma.js.map +1 -0
- package/dist/connectors/index.d.ts +3 -1
- package/dist/connectors/index.d.ts.map +1 -1
- package/dist/connectors/index.js +5 -1
- package/dist/connectors/index.js.map +1 -1
- package/dist/connectors/line.d.ts +3 -0
- package/dist/connectors/line.d.ts.map +1 -0
- package/dist/connectors/line.js +18 -0
- package/dist/connectors/line.js.map +1 -0
- package/dist/convertkit-tool.d.ts +7 -0
- package/dist/convertkit-tool.d.ts.map +1 -0
- package/dist/convertkit-tool.js +213 -0
- package/dist/convertkit-tool.js.map +1 -0
- package/dist/datadog-tool.d.ts +7 -0
- package/dist/datadog-tool.d.ts.map +1 -0
- package/dist/datadog-tool.js +121 -0
- package/dist/datadog-tool.js.map +1 -0
- package/dist/deepl-tool.d.ts +5 -0
- package/dist/deepl-tool.d.ts.map +1 -0
- package/dist/deepl-tool.js +137 -0
- package/dist/deepl-tool.js.map +1 -0
- package/dist/ebay-tool.d.ts +5 -0
- package/dist/ebay-tool.d.ts.map +1 -0
- package/dist/ebay-tool.js +179 -0
- package/dist/ebay-tool.js.map +1 -0
- package/dist/elevenlabs-tool.d.ts +6 -0
- package/dist/elevenlabs-tool.d.ts.map +1 -0
- package/dist/elevenlabs-tool.js +166 -0
- package/dist/elevenlabs-tool.js.map +1 -0
- package/dist/etsy-tool.d.ts +6 -0
- package/dist/etsy-tool.d.ts.map +1 -0
- package/dist/etsy-tool.js +125 -0
- package/dist/etsy-tool.js.map +1 -0
- package/dist/exchangerate-tool.d.ts +5 -0
- package/dist/exchangerate-tool.d.ts.map +1 -0
- package/dist/exchangerate-tool.js +139 -0
- package/dist/exchangerate-tool.js.map +1 -0
- package/dist/figma-tool.d.ts +8 -0
- package/dist/figma-tool.d.ts.map +1 -0
- package/dist/figma-tool.js +231 -0
- package/dist/figma-tool.js.map +1 -0
- package/dist/flyio-tool.d.ts +6 -0
- package/dist/flyio-tool.d.ts.map +1 -0
- package/dist/flyio-tool.js +158 -0
- package/dist/flyio-tool.js.map +1 -0
- package/dist/gdelt-tool.d.ts +5 -0
- package/dist/gdelt-tool.d.ts.map +1 -0
- package/dist/gdelt-tool.js +177 -0
- package/dist/gdelt-tool.js.map +1 -0
- package/dist/github-tool.d.ts +2 -0
- package/dist/github-tool.d.ts.map +1 -0
- package/dist/github-tool.js +165 -0
- package/dist/github-tool.js.map +1 -0
- package/dist/gitlab-tool.d.ts +2 -0
- package/dist/gitlab-tool.d.ts.map +1 -0
- package/dist/gitlab-tool.js +127 -0
- package/dist/gitlab-tool.js.map +1 -0
- package/dist/groq-tool.d.ts +3 -0
- package/dist/groq-tool.d.ts.map +1 -0
- package/dist/groq-tool.js +109 -0
- package/dist/groq-tool.js.map +1 -0
- package/dist/gumroad-tool.d.ts +6 -0
- package/dist/gumroad-tool.d.ts.map +1 -0
- package/dist/gumroad-tool.js +90 -0
- package/dist/gumroad-tool.js.map +1 -0
- package/dist/heygen-tool.d.ts +5 -0
- package/dist/heygen-tool.d.ts.map +1 -0
- package/dist/heygen-tool.js +134 -0
- package/dist/heygen-tool.js.map +1 -0
- package/dist/higgsfield-tool.d.ts +5 -0
- package/dist/higgsfield-tool.d.ts.map +1 -0
- package/dist/higgsfield-tool.js +120 -0
- package/dist/higgsfield-tool.js.map +1 -0
- package/dist/igdb-tool.d.ts +6 -0
- package/dist/igdb-tool.d.ts.map +1 -0
- package/dist/igdb-tool.js +140 -0
- package/dist/igdb-tool.js.map +1 -0
- package/dist/keychain-crypto.d.ts +24 -0
- package/dist/keychain-crypto.d.ts.map +1 -0
- package/dist/keychain-crypto.js +60 -0
- package/dist/keychain-crypto.js.map +1 -0
- package/dist/keychain-secure-input.d.ts +17 -0
- package/dist/keychain-secure-input.d.ts.map +1 -0
- package/dist/keychain-secure-input.js +229 -0
- package/dist/keychain-secure-input.js.map +1 -0
- package/dist/keychain-tool.d.ts +3 -0
- package/dist/keychain-tool.d.ts.map +1 -0
- package/dist/keychain-tool.js +516 -0
- package/dist/keychain-tool.js.map +1 -0
- package/dist/kling-tool.d.ts +3 -0
- package/dist/kling-tool.d.ts.map +1 -0
- package/dist/kling-tool.js +102 -0
- package/dist/kling-tool.js.map +1 -0
- package/dist/lemonsqueezy-tool.d.ts +7 -0
- package/dist/lemonsqueezy-tool.d.ts.map +1 -0
- package/dist/lemonsqueezy-tool.js +220 -0
- package/dist/lemonsqueezy-tool.js.map +1 -0
- package/dist/line-tool.d.ts +7 -0
- package/dist/line-tool.d.ts.map +1 -0
- package/dist/line-tool.js +188 -0
- package/dist/line-tool.js.map +1 -0
- package/dist/linear-tool.d.ts +2 -0
- package/dist/linear-tool.d.ts.map +1 -0
- package/dist/linear-tool.js +186 -0
- package/dist/linear-tool.js.map +1 -0
- package/dist/local-catalog-handlers.d.ts +3 -0
- package/dist/local-catalog-handlers.d.ts.map +1 -0
- package/dist/local-catalog-handlers.js +1254 -0
- package/dist/local-catalog-handlers.js.map +1 -0
- package/dist/mailchimp-tool.d.ts +8 -0
- package/dist/mailchimp-tool.d.ts.map +1 -0
- package/dist/mailchimp-tool.js +138 -0
- package/dist/mailchimp-tool.js.map +1 -0
- package/dist/mapbox-tool.d.ts +6 -0
- package/dist/mapbox-tool.d.ts.map +1 -0
- package/dist/mapbox-tool.js +106 -0
- package/dist/mapbox-tool.js.map +1 -0
- package/dist/mistral-tool.d.ts +4 -0
- package/dist/mistral-tool.d.ts.map +1 -0
- package/dist/mistral-tool.js +145 -0
- package/dist/mistral-tool.js.map +1 -0
- package/dist/mixpanel-tool.d.ts +6 -0
- package/dist/mixpanel-tool.d.ts.map +1 -0
- package/dist/mixpanel-tool.js +162 -0
- package/dist/mixpanel-tool.js.map +1 -0
- package/dist/monday-tool.d.ts +7 -0
- package/dist/monday-tool.d.ts.map +1 -0
- package/dist/monday-tool.js +206 -0
- package/dist/monday-tool.js.map +1 -0
- package/dist/neon-tool.d.ts +7 -0
- package/dist/neon-tool.d.ts.map +1 -0
- package/dist/neon-tool.js +156 -0
- package/dist/neon-tool.js.map +1 -0
- package/dist/openai-tool.d.ts +6 -0
- package/dist/openai-tool.d.ts.map +1 -0
- package/dist/openai-tool.js +227 -0
- package/dist/openai-tool.js.map +1 -0
- package/dist/pagerduty-tool.d.ts +8 -0
- package/dist/pagerduty-tool.d.ts.map +1 -0
- package/dist/pagerduty-tool.js +185 -0
- package/dist/pagerduty-tool.js.map +1 -0
- package/dist/paypal-tool.d.ts +3 -0
- package/dist/paypal-tool.d.ts.map +1 -0
- package/dist/paypal-tool.js +157 -0
- package/dist/paypal-tool.js.map +1 -0
- package/dist/perplexity-tool.d.ts +2 -0
- package/dist/perplexity-tool.d.ts.map +1 -0
- package/dist/perplexity-tool.js +93 -0
- package/dist/perplexity-tool.js.map +1 -0
- package/dist/pika-tool.d.ts +4 -0
- package/dist/pika-tool.d.ts.map +1 -0
- package/dist/pika-tool.js +102 -0
- package/dist/pika-tool.js.map +1 -0
- package/dist/pinecone-tool.d.ts +6 -0
- package/dist/pinecone-tool.d.ts.map +1 -0
- package/dist/pinecone-tool.js +148 -0
- package/dist/pinecone-tool.js.map +1 -0
- package/dist/pinterest-tool.d.ts +7 -0
- package/dist/pinterest-tool.d.ts.map +1 -0
- package/dist/pinterest-tool.js +219 -0
- package/dist/pinterest-tool.js.map +1 -0
- package/dist/plaid-tool.d.ts +6 -0
- package/dist/plaid-tool.d.ts.map +1 -0
- package/dist/plaid-tool.js +149 -0
- package/dist/plaid-tool.js.map +1 -0
- package/dist/postman-tool.d.ts +2 -0
- package/dist/postman-tool.d.ts.map +1 -0
- package/dist/postman-tool.js +92 -0
- package/dist/postman-tool.js.map +1 -0
- package/dist/postmark-tool.d.ts +7 -0
- package/dist/postmark-tool.d.ts.map +1 -0
- package/dist/postmark-tool.js +148 -0
- package/dist/postmark-tool.js.map +1 -0
- package/dist/pushover-tool.d.ts +6 -0
- package/dist/pushover-tool.d.ts.map +1 -0
- package/dist/pushover-tool.js +146 -0
- package/dist/pushover-tool.js.map +1 -0
- package/dist/qc-tool.d.ts +4 -0
- package/dist/qc-tool.d.ts.map +1 -0
- package/dist/qc-tool.js +415 -0
- package/dist/qc-tool.js.map +1 -0
- package/dist/quickbooks-tool.d.ts +5 -0
- package/dist/quickbooks-tool.d.ts.map +1 -0
- package/dist/quickbooks-tool.js +160 -0
- package/dist/quickbooks-tool.js.map +1 -0
- package/dist/render-tool.d.ts +7 -0
- package/dist/render-tool.d.ts.map +1 -0
- package/dist/render-tool.js +158 -0
- package/dist/render-tool.js.map +1 -0
- package/dist/replicate-tool.d.ts +7 -0
- package/dist/replicate-tool.d.ts.map +1 -0
- package/dist/replicate-tool.js +172 -0
- package/dist/replicate-tool.js.map +1 -0
- package/dist/runway-tool.d.ts +4 -0
- package/dist/runway-tool.d.ts.map +1 -0
- package/dist/runway-tool.js +110 -0
- package/dist/runway-tool.js.map +1 -0
- package/dist/segment-tool.d.ts +6 -0
- package/dist/segment-tool.d.ts.map +1 -0
- package/dist/segment-tool.js +129 -0
- package/dist/segment-tool.js.map +1 -0
- package/dist/sendgrid-tool.d.ts +7 -0
- package/dist/sendgrid-tool.d.ts.map +1 -0
- package/dist/sendgrid-tool.js +124 -0
- package/dist/sendgrid-tool.js.map +1 -0
- package/dist/sentry-tool.d.ts +2 -0
- package/dist/sentry-tool.d.ts.map +1 -0
- package/dist/sentry-tool.js +123 -0
- package/dist/sentry-tool.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +10 -0
- package/dist/server.js.map +1 -1
- package/dist/speedrun-tool.d.ts +6 -0
- package/dist/speedrun-tool.d.ts.map +1 -0
- package/dist/speedrun-tool.js +192 -0
- package/dist/speedrun-tool.js.map +1 -0
- package/dist/spotify-tool.d.ts +8 -0
- package/dist/spotify-tool.d.ts.map +1 -0
- package/dist/spotify-tool.js +274 -0
- package/dist/spotify-tool.js.map +1 -0
- package/dist/square-tool.d.ts +5 -0
- package/dist/square-tool.d.ts.map +1 -0
- package/dist/square-tool.js +133 -0
- package/dist/square-tool.js.map +1 -0
- package/dist/stability-tool.d.ts +5 -0
- package/dist/stability-tool.d.ts.map +1 -0
- package/dist/stability-tool.js +190 -0
- package/dist/stability-tool.js.map +1 -0
- package/dist/steam-tool.d.ts +6 -0
- package/dist/steam-tool.d.ts.map +1 -0
- package/dist/steam-tool.js +222 -0
- package/dist/steam-tool.js.map +1 -0
- package/dist/stripe-tool.d.ts +7 -0
- package/dist/stripe-tool.d.ts.map +1 -0
- package/dist/stripe-tool.js +181 -0
- package/dist/stripe-tool.js.map +1 -0
- package/dist/tiktok-tool.d.ts +4 -0
- package/dist/tiktok-tool.d.ts.map +1 -0
- package/dist/tiktok-tool.js +129 -0
- package/dist/tiktok-tool.js.map +1 -0
- package/dist/togetherai-tool.d.ts +5 -0
- package/dist/togetherai-tool.d.ts.map +1 -0
- package/dist/togetherai-tool.js +129 -0
- package/dist/togetherai-tool.js.map +1 -0
- package/dist/toilets-tool.js +2 -2
- package/dist/tool-wiring.d.ts +7982 -18
- package/dist/tool-wiring.d.ts.map +1 -1
- package/dist/tool-wiring.js +5084 -18
- package/dist/tool-wiring.js.map +1 -1
- package/dist/trello-tool.d.ts +2 -0
- package/dist/trello-tool.d.ts.map +1 -0
- package/dist/trello-tool.js +166 -0
- package/dist/trello-tool.js.map +1 -0
- package/dist/turso-tool.d.ts +6 -0
- package/dist/turso-tool.d.ts.map +1 -0
- package/dist/turso-tool.js +158 -0
- package/dist/turso-tool.js.map +1 -0
- package/dist/twilio-tool.d.ts +8 -0
- package/dist/twilio-tool.d.ts.map +1 -0
- package/dist/twilio-tool.js +243 -0
- package/dist/twilio-tool.js.map +1 -0
- package/dist/upstash-tool.d.ts +8 -0
- package/dist/upstash-tool.d.ts.map +1 -0
- package/dist/upstash-tool.js +191 -0
- package/dist/upstash-tool.js.map +1 -0
- package/dist/whatsapp-tool.d.ts +6 -0
- package/dist/whatsapp-tool.d.ts.map +1 -0
- package/dist/whatsapp-tool.js +200 -0
- package/dist/whatsapp-tool.js.map +1 -0
- package/dist/woocommerce-tool.d.ts +4 -0
- package/dist/woocommerce-tool.d.ts.map +1 -0
- package/dist/woocommerce-tool.js +140 -0
- package/dist/woocommerce-tool.js.map +1 -0
- package/dist/youtube-tool.d.ts +7 -0
- package/dist/youtube-tool.d.ts.map +1 -0
- package/dist/youtube-tool.js +196 -0
- package/dist/youtube-tool.js.map +1 -0
- package/package.json +1 -1
- package/server.json +37 -37
- package/LICENSE +0 -216
- package/dist/cloudflare-worker.d.ts +0 -12
- package/dist/cloudflare-worker.d.ts.map +0 -1
- package/dist/cloudflare-worker.js +0 -50
- package/dist/cloudflare-worker.js.map +0 -1
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
// OpenAI API integration for the UnClick MCP server.
|
|
2
|
+
// Uses the OpenAI REST API via fetch - no external dependencies.
|
|
3
|
+
// Users must supply an API key from platform.openai.com.
|
|
4
|
+
const OPENAI_API_BASE = "https://api.openai.com/v1";
|
|
5
|
+
// ─── Auth validation ──────────────────────────────────────────────────────────
|
|
6
|
+
function requireKey(args) {
|
|
7
|
+
const key = String(args.api_key ?? "").trim();
|
|
8
|
+
if (!key)
|
|
9
|
+
throw new Error("api_key is required. Get one at platform.openai.com/api-keys.");
|
|
10
|
+
return key;
|
|
11
|
+
}
|
|
12
|
+
// ─── API helpers ──────────────────────────────────────────────────────────────
|
|
13
|
+
async function openaiPost(apiKey, path, body, orgId) {
|
|
14
|
+
const headers = {
|
|
15
|
+
Authorization: `Bearer ${apiKey}`,
|
|
16
|
+
"Content-Type": "application/json",
|
|
17
|
+
};
|
|
18
|
+
if (orgId)
|
|
19
|
+
headers["OpenAI-Organization"] = orgId;
|
|
20
|
+
const res = await fetch(`${OPENAI_API_BASE}${path}`, {
|
|
21
|
+
method: "POST",
|
|
22
|
+
headers,
|
|
23
|
+
body: JSON.stringify(body),
|
|
24
|
+
});
|
|
25
|
+
const data = await res.json();
|
|
26
|
+
if (!res.ok) {
|
|
27
|
+
const err = data.error;
|
|
28
|
+
const msg = err?.message ?? `HTTP ${res.status}`;
|
|
29
|
+
const code = err?.code ? ` (${err.code})` : "";
|
|
30
|
+
const type = err?.type ? ` [${err.type}]` : "";
|
|
31
|
+
throw new Error(`OpenAI error${type}${code}: ${msg}`);
|
|
32
|
+
}
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
async function openaiGet(apiKey, path) {
|
|
36
|
+
const res = await fetch(`${OPENAI_API_BASE}${path}`, {
|
|
37
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
38
|
+
});
|
|
39
|
+
const data = await res.json();
|
|
40
|
+
if (!res.ok) {
|
|
41
|
+
const err = data.error;
|
|
42
|
+
const msg = err?.message ?? `HTTP ${res.status}`;
|
|
43
|
+
throw new Error(`OpenAI error: ${msg}`);
|
|
44
|
+
}
|
|
45
|
+
return data;
|
|
46
|
+
}
|
|
47
|
+
// ─── Operations ───────────────────────────────────────────────────────────────
|
|
48
|
+
export async function openaiChatCompletion(args) {
|
|
49
|
+
const apiKey = requireKey(args);
|
|
50
|
+
const model = String(args.model ?? "gpt-4o-mini");
|
|
51
|
+
const orgId = args.org_id ? String(args.org_id) : undefined;
|
|
52
|
+
// Parse messages
|
|
53
|
+
let messages;
|
|
54
|
+
if (Array.isArray(args.messages)) {
|
|
55
|
+
messages = args.messages;
|
|
56
|
+
}
|
|
57
|
+
else if (typeof args.messages === "string") {
|
|
58
|
+
try {
|
|
59
|
+
messages = JSON.parse(args.messages);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
throw new Error("messages must be a JSON array of {role, content} objects.");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (args.prompt) {
|
|
66
|
+
// Convenience: single user message via 'prompt'
|
|
67
|
+
const systemPrompt = args.system_prompt ? String(args.system_prompt) : undefined;
|
|
68
|
+
messages = [];
|
|
69
|
+
if (systemPrompt)
|
|
70
|
+
messages.push({ role: "system", content: systemPrompt });
|
|
71
|
+
messages.push({ role: "user", content: String(args.prompt) });
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
throw new Error("Either messages (array) or prompt (string) is required.");
|
|
75
|
+
}
|
|
76
|
+
if (messages.length === 0)
|
|
77
|
+
throw new Error("messages array must not be empty.");
|
|
78
|
+
const body = { model, messages };
|
|
79
|
+
if (args.max_tokens)
|
|
80
|
+
body.max_tokens = Number(args.max_tokens);
|
|
81
|
+
if (args.temperature !== undefined)
|
|
82
|
+
body.temperature = Number(args.temperature);
|
|
83
|
+
if (args.top_p !== undefined)
|
|
84
|
+
body.top_p = Number(args.top_p);
|
|
85
|
+
if (args.n !== undefined)
|
|
86
|
+
body.n = Number(args.n);
|
|
87
|
+
if (args.stop)
|
|
88
|
+
body.stop = args.stop;
|
|
89
|
+
if (args.response_format)
|
|
90
|
+
body.response_format = args.response_format;
|
|
91
|
+
if (args.seed !== undefined)
|
|
92
|
+
body.seed = Number(args.seed);
|
|
93
|
+
const result = await openaiPost(apiKey, "/chat/completions", body, orgId);
|
|
94
|
+
return {
|
|
95
|
+
id: result.id,
|
|
96
|
+
model: result.model,
|
|
97
|
+
created: new Date(result.created * 1000).toISOString(),
|
|
98
|
+
message: result.choices[0]?.message.content ?? null,
|
|
99
|
+
finish_reason: result.choices[0]?.finish_reason ?? null,
|
|
100
|
+
choices: result.choices.map((c) => ({
|
|
101
|
+
content: c.message.content,
|
|
102
|
+
finish_reason: c.finish_reason,
|
|
103
|
+
})),
|
|
104
|
+
usage: result.usage,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export async function openaiCreateEmbedding(args) {
|
|
108
|
+
const apiKey = requireKey(args);
|
|
109
|
+
const model = String(args.model ?? "text-embedding-3-small");
|
|
110
|
+
const orgId = args.org_id ? String(args.org_id) : undefined;
|
|
111
|
+
let input;
|
|
112
|
+
if (typeof args.input === "string") {
|
|
113
|
+
input = args.input;
|
|
114
|
+
}
|
|
115
|
+
else if (Array.isArray(args.input)) {
|
|
116
|
+
input = args.input;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw new Error("input is required (a string or array of strings to embed).");
|
|
120
|
+
}
|
|
121
|
+
const body = { model, input };
|
|
122
|
+
if (args.dimensions)
|
|
123
|
+
body.dimensions = Number(args.dimensions);
|
|
124
|
+
const result = await openaiPost(apiKey, "/embeddings", body, orgId);
|
|
125
|
+
return {
|
|
126
|
+
model: result.model,
|
|
127
|
+
embeddings: result.data.map((d) => ({
|
|
128
|
+
index: d.index,
|
|
129
|
+
dimensions: d.embedding.length,
|
|
130
|
+
embedding: d.embedding,
|
|
131
|
+
})),
|
|
132
|
+
usage: result.usage,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
export async function openaiGenerateImage(args) {
|
|
136
|
+
const apiKey = requireKey(args);
|
|
137
|
+
const prompt = String(args.prompt ?? "").trim();
|
|
138
|
+
if (!prompt)
|
|
139
|
+
throw new Error("prompt is required.");
|
|
140
|
+
const model = String(args.model ?? "dall-e-3");
|
|
141
|
+
const n = Math.min(10, Math.max(1, Number(args.n ?? 1)));
|
|
142
|
+
const size = String(args.size ?? "1024x1024");
|
|
143
|
+
const quality = String(args.quality ?? "standard");
|
|
144
|
+
const style = args.style ? String(args.style) : undefined;
|
|
145
|
+
const responseFormat = String(args.response_format ?? "url");
|
|
146
|
+
const body = { model, prompt, n, size, quality, response_format: responseFormat };
|
|
147
|
+
if (style)
|
|
148
|
+
body.style = style;
|
|
149
|
+
const result = await openaiPost(apiKey, "/images/generations", body);
|
|
150
|
+
return {
|
|
151
|
+
count: result.data.length,
|
|
152
|
+
images: result.data.map((img) => ({
|
|
153
|
+
url: img.url ?? null,
|
|
154
|
+
b64_json: img.b64_json ?? null,
|
|
155
|
+
revised_prompt: img.revised_prompt ?? null,
|
|
156
|
+
})),
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
export async function openaiCreateTranscription(args) {
|
|
160
|
+
const apiKey = requireKey(args);
|
|
161
|
+
const audioUrl = String(args.audio_url ?? "").trim();
|
|
162
|
+
if (!audioUrl)
|
|
163
|
+
throw new Error("audio_url is required (URL of the audio file to transcribe).");
|
|
164
|
+
const model = String(args.model ?? "whisper-1");
|
|
165
|
+
const language = args.language ? String(args.language) : undefined;
|
|
166
|
+
const responseFormat = String(args.response_format ?? "json");
|
|
167
|
+
// Fetch the audio file
|
|
168
|
+
const audioRes = await fetch(audioUrl);
|
|
169
|
+
if (!audioRes.ok)
|
|
170
|
+
throw new Error(`Failed to fetch audio_url: HTTP ${audioRes.status}`);
|
|
171
|
+
const audioBlob = await audioRes.blob();
|
|
172
|
+
const filename = args.filename ? String(args.filename) : "audio.mp3";
|
|
173
|
+
const form = new FormData();
|
|
174
|
+
form.append("file", audioBlob, filename);
|
|
175
|
+
form.append("model", model);
|
|
176
|
+
form.append("response_format", responseFormat);
|
|
177
|
+
if (language)
|
|
178
|
+
form.append("language", language);
|
|
179
|
+
if (args.prompt)
|
|
180
|
+
form.append("prompt", String(args.prompt));
|
|
181
|
+
if (args.temperature !== undefined)
|
|
182
|
+
form.append("temperature", String(args.temperature));
|
|
183
|
+
const res = await fetch(`${OPENAI_API_BASE}/audio/transcriptions`, {
|
|
184
|
+
method: "POST",
|
|
185
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
186
|
+
body: form,
|
|
187
|
+
});
|
|
188
|
+
if (!res.ok) {
|
|
189
|
+
let msg = `HTTP ${res.status}`;
|
|
190
|
+
try {
|
|
191
|
+
const data = await res.json();
|
|
192
|
+
const err = data.error;
|
|
193
|
+
msg = err?.message ?? msg;
|
|
194
|
+
}
|
|
195
|
+
catch { /* ignore */ }
|
|
196
|
+
throw new Error(`OpenAI transcription error: ${msg}`);
|
|
197
|
+
}
|
|
198
|
+
if (responseFormat === "json" || responseFormat === "verbose_json") {
|
|
199
|
+
const data = await res.json();
|
|
200
|
+
return {
|
|
201
|
+
text: data.text,
|
|
202
|
+
language: data.language ?? null,
|
|
203
|
+
duration: data.duration ?? null,
|
|
204
|
+
model,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
const text = await res.text();
|
|
209
|
+
return { text, model };
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
export async function openaiListModels(args) {
|
|
213
|
+
const apiKey = requireKey(args);
|
|
214
|
+
const data = await openaiGet(apiKey, "/models");
|
|
215
|
+
const models = data.data ?? [];
|
|
216
|
+
// Sort by creation date descending
|
|
217
|
+
models.sort((a, b) => b.created - a.created);
|
|
218
|
+
return {
|
|
219
|
+
count: models.length,
|
|
220
|
+
models: models.map((m) => ({
|
|
221
|
+
id: m.id,
|
|
222
|
+
created: new Date(m.created * 1000).toISOString(),
|
|
223
|
+
owned_by: m.owned_by,
|
|
224
|
+
})),
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=openai-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-tool.js","sourceRoot":"","sources":["../src/openai-tool.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,iEAAiE;AACjE,yDAAyD;AAEzD,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAoDpD,iFAAiF;AAEjF,SAAS,UAAU,CAAC,IAA6B;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAC3F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,UAAU,CAAI,MAAc,EAAE,IAAY,EAAE,IAAa,EAAE,KAAc;IACtF,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,MAAM,EAAE;QACjC,cAAc,EAAE,kBAAkB;KACnC,CAAC;IACF,IAAI,KAAK;QAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC;IAElD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,eAAe,GAAG,IAAI,EAAE,EAAE;QACnD,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,KAA4C,CAAC;QAC9D,MAAM,GAAG,GAAI,GAAG,EAAE,OAAkB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,SAAS,CAAI,MAAc,EAAE,IAAY;IACtD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,eAAe,GAAG,IAAI,EAAE,EAAE;QACnD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;KAC/C,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,KAA4C,CAAC;QAC9D,MAAM,GAAG,GAAI,GAAG,EAAE,OAAkB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAA6B;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5D,iBAAiB;IACjB,IAAI,QAAyB,CAAC;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,QAAQ,GAAG,IAAI,CAAC,QAA2B,CAAC;IAC9C,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC7C,IAAI,CAAC;YAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QAC7C,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAAC,CAAC;IACzF,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,gDAAgD;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,QAAQ,GAAG,EAAE,CAAC;QACd,IAAI,YAAY;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;QAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAEhF,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC1D,IAAI,IAAI,CAAC,UAAU;QAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS;QAAE,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrC,IAAI,IAAI,CAAC,eAAe;QAAE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;IACtE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAqB,MAAM,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9F,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QACtD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;QACnD,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,aAAa,IAAI,IAAI;QACvD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;YAC1B,aAAa,EAAE,CAAC,CAAC,aAAa;SAC/B,CAAC,CAAC;QACH,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAA6B;IACvE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,wBAAwB,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE5D,IAAI,KAAwB,CAAC;IAC7B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,KAAK,GAAG,IAAI,CAAC,KAAiB,CAAC;IACjC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACvD,IAAI,IAAI,CAAC,UAAU;QAAE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,MAAM,UAAU,CAA0B,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7F,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;YAC9B,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC;QACH,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IACrE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC;IAC/C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1D,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,CAAC;IAE7D,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC;IAC3G,IAAI,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAE9B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAsB,MAAM,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC1F,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;QACzB,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,IAAI;YACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI;YAC9B,cAAc,EAAE,GAAG,CAAC,cAAc,IAAI,IAAI;SAC3C,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAA6B;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,MAAM,CAAC,CAAC;IAE9D,uBAAuB;IACvB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACxF,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACrE,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAC/C,IAAI,QAAQ;QAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAEzF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,eAAe,uBAAuB,EAAE;QACjE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;QAC9C,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,IAAI,GAAG,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,KAA4C,CAAC;YAC9D,GAAG,GAAI,GAAG,EAAE,OAAkB,IAAI,GAAG,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,IAAI,cAAc,KAAK,MAAM,IAAI,cAAc,KAAK,cAAc,EAAE,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAiC,CAAC;QAC7D,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,KAAK;SACN,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAA6B;IAClE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,SAAS,CAA0B,MAAM,EAAE,SAAS,CAAC,CAAC;IAEzE,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC/B,mCAAmC;IACnC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAE7C,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,OAAO,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;YACjD,QAAQ,EAAE,CAAC,CAAC,QAAQ;SACrB,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function pagerduty_list_incidents(args: Record<string, unknown>): Promise<unknown>;
|
|
2
|
+
export declare function pagerduty_get_incident(args: Record<string, unknown>): Promise<unknown>;
|
|
3
|
+
export declare function pagerduty_create_incident(args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
export declare function pagerduty_acknowledge_incident(args: Record<string, unknown>): Promise<unknown>;
|
|
5
|
+
export declare function pagerduty_resolve_incident(args: Record<string, unknown>): Promise<unknown>;
|
|
6
|
+
export declare function pagerduty_list_services(args: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
export declare function pagerduty_list_oncalls(args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
//# sourceMappingURL=pagerduty-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagerduty-tool.d.ts","sourceRoot":"","sources":["../src/pagerduty-tool.ts"],"names":[],"mappings":"AAyEA,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAc9F;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAM5F;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2C/F;AAED,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAQpG;AAED,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAQhG;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAY7F;AAED,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAW5F"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
// PagerDuty Incident Management API.
|
|
2
|
+
// Docs: https://developer.pagerduty.com/api-reference
|
|
3
|
+
// Auth: Token token=API_KEY (Authorization header)
|
|
4
|
+
// Base: https://api.pagerduty.com
|
|
5
|
+
const PD_API_BASE = "https://api.pagerduty.com";
|
|
6
|
+
function requireKey(args) {
|
|
7
|
+
const key = String(args.api_key ?? "").trim();
|
|
8
|
+
if (!key)
|
|
9
|
+
throw new Error("api_key is required. Get one at app.pagerduty.com/api_keys.");
|
|
10
|
+
return key;
|
|
11
|
+
}
|
|
12
|
+
async function pdGet(apiKey, path, query) {
|
|
13
|
+
const url = new URL(`${PD_API_BASE}${path}`);
|
|
14
|
+
if (query) {
|
|
15
|
+
for (const [k, v] of Object.entries(query)) {
|
|
16
|
+
if (v !== undefined && v !== "")
|
|
17
|
+
url.searchParams.set(k, v);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const res = await fetch(url.toString(), {
|
|
21
|
+
headers: {
|
|
22
|
+
Authorization: `Token token=${apiKey}`,
|
|
23
|
+
Accept: "application/vnd.pagerduty+json;version=2",
|
|
24
|
+
"Content-Type": "application/json",
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
const data = await res.json();
|
|
28
|
+
if (!res.ok) {
|
|
29
|
+
const msg = data.error?.message ?? `HTTP ${res.status}`;
|
|
30
|
+
throw new Error(`PagerDuty error (${res.status}): ${msg}`);
|
|
31
|
+
}
|
|
32
|
+
return data;
|
|
33
|
+
}
|
|
34
|
+
async function pdPost(apiKey, path, body) {
|
|
35
|
+
const res = await fetch(`${PD_API_BASE}${path}`, {
|
|
36
|
+
method: "POST",
|
|
37
|
+
headers: {
|
|
38
|
+
Authorization: `Token token=${apiKey}`,
|
|
39
|
+
Accept: "application/vnd.pagerduty+json;version=2",
|
|
40
|
+
"Content-Type": "application/json",
|
|
41
|
+
},
|
|
42
|
+
body: JSON.stringify(body),
|
|
43
|
+
});
|
|
44
|
+
const data = await res.json();
|
|
45
|
+
if (!res.ok) {
|
|
46
|
+
const msg = data.error?.message ?? `HTTP ${res.status}`;
|
|
47
|
+
throw new Error(`PagerDuty error (${res.status}): ${msg}`);
|
|
48
|
+
}
|
|
49
|
+
return data;
|
|
50
|
+
}
|
|
51
|
+
async function pdPut(apiKey, path, body) {
|
|
52
|
+
const res = await fetch(`${PD_API_BASE}${path}`, {
|
|
53
|
+
method: "PUT",
|
|
54
|
+
headers: {
|
|
55
|
+
Authorization: `Token token=${apiKey}`,
|
|
56
|
+
Accept: "application/vnd.pagerduty+json;version=2",
|
|
57
|
+
"Content-Type": "application/json",
|
|
58
|
+
},
|
|
59
|
+
body: JSON.stringify(body),
|
|
60
|
+
});
|
|
61
|
+
const data = await res.json();
|
|
62
|
+
if (!res.ok) {
|
|
63
|
+
const msg = data.error?.message ?? `HTTP ${res.status}`;
|
|
64
|
+
throw new Error(`PagerDuty error (${res.status}): ${msg}`);
|
|
65
|
+
}
|
|
66
|
+
return data;
|
|
67
|
+
}
|
|
68
|
+
// ─── Operations ───────────────────────────────────────────────────────────────
|
|
69
|
+
export async function pagerduty_list_incidents(args) {
|
|
70
|
+
const apiKey = requireKey(args);
|
|
71
|
+
const query = {};
|
|
72
|
+
if (args.status)
|
|
73
|
+
query["statuses[]"] = String(args.status);
|
|
74
|
+
if (args.limit)
|
|
75
|
+
query.limit = String(args.limit);
|
|
76
|
+
if (args.offset)
|
|
77
|
+
query.offset = String(args.offset);
|
|
78
|
+
if (args.service_ids)
|
|
79
|
+
query["service_ids[]"] = String(args.service_ids);
|
|
80
|
+
const data = await pdGet(apiKey, "/incidents", query);
|
|
81
|
+
return {
|
|
82
|
+
total: data.total,
|
|
83
|
+
count: data.incidents.length,
|
|
84
|
+
incidents: data.incidents,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
export async function pagerduty_get_incident(args) {
|
|
88
|
+
const apiKey = requireKey(args);
|
|
89
|
+
const id = String(args.incident_id ?? "").trim();
|
|
90
|
+
if (!id)
|
|
91
|
+
throw new Error("incident_id is required.");
|
|
92
|
+
const data = await pdGet(apiKey, `/incidents/${id}`);
|
|
93
|
+
return data.incident;
|
|
94
|
+
}
|
|
95
|
+
export async function pagerduty_create_incident(args) {
|
|
96
|
+
const apiKey = requireKey(args);
|
|
97
|
+
const title = String(args.title ?? "").trim();
|
|
98
|
+
const serviceId = String(args.service_id ?? "").trim();
|
|
99
|
+
if (!title)
|
|
100
|
+
throw new Error("title is required.");
|
|
101
|
+
if (!serviceId)
|
|
102
|
+
throw new Error("service_id is required.");
|
|
103
|
+
const body = {
|
|
104
|
+
incident: {
|
|
105
|
+
type: "incident",
|
|
106
|
+
title,
|
|
107
|
+
service: { id: serviceId, type: "service_reference" },
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
if (args.urgency)
|
|
111
|
+
body.incident.urgency = String(args.urgency);
|
|
112
|
+
if (args.body_details) {
|
|
113
|
+
body.incident.body = {
|
|
114
|
+
type: "incident_body",
|
|
115
|
+
details: String(args.body_details),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
if (args.from) {
|
|
119
|
+
// PagerDuty requires From header for incident creation
|
|
120
|
+
const res = await fetch(`${PD_API_BASE}/incidents`, {
|
|
121
|
+
method: "POST",
|
|
122
|
+
headers: {
|
|
123
|
+
Authorization: `Token token=${apiKey}`,
|
|
124
|
+
Accept: "application/vnd.pagerduty+json;version=2",
|
|
125
|
+
"Content-Type": "application/json",
|
|
126
|
+
From: String(args.from),
|
|
127
|
+
},
|
|
128
|
+
body: JSON.stringify(body),
|
|
129
|
+
});
|
|
130
|
+
const data = await res.json();
|
|
131
|
+
if (!res.ok) {
|
|
132
|
+
const msg = data.error?.message ?? `HTTP ${res.status}`;
|
|
133
|
+
throw new Error(`PagerDuty error (${res.status}): ${msg}`);
|
|
134
|
+
}
|
|
135
|
+
return data.incident;
|
|
136
|
+
}
|
|
137
|
+
const data = await pdPost(apiKey, "/incidents", body);
|
|
138
|
+
return data.incident;
|
|
139
|
+
}
|
|
140
|
+
export async function pagerduty_acknowledge_incident(args) {
|
|
141
|
+
const apiKey = requireKey(args);
|
|
142
|
+
const id = String(args.incident_id ?? "").trim();
|
|
143
|
+
if (!id)
|
|
144
|
+
throw new Error("incident_id is required.");
|
|
145
|
+
const body = { incident: { type: "incident", status: "acknowledged" } };
|
|
146
|
+
const data = await pdPut(apiKey, `/incidents/${id}`, body);
|
|
147
|
+
return { incident_id: id, status: "acknowledged", raw: data.incident };
|
|
148
|
+
}
|
|
149
|
+
export async function pagerduty_resolve_incident(args) {
|
|
150
|
+
const apiKey = requireKey(args);
|
|
151
|
+
const id = String(args.incident_id ?? "").trim();
|
|
152
|
+
if (!id)
|
|
153
|
+
throw new Error("incident_id is required.");
|
|
154
|
+
const body = { incident: { type: "incident", status: "resolved" } };
|
|
155
|
+
const data = await pdPut(apiKey, `/incidents/${id}`, body);
|
|
156
|
+
return { incident_id: id, status: "resolved", raw: data.incident };
|
|
157
|
+
}
|
|
158
|
+
export async function pagerduty_list_services(args) {
|
|
159
|
+
const apiKey = requireKey(args);
|
|
160
|
+
const query = {};
|
|
161
|
+
if (args.query)
|
|
162
|
+
query.query = String(args.query);
|
|
163
|
+
if (args.limit)
|
|
164
|
+
query.limit = String(args.limit);
|
|
165
|
+
const data = await pdGet(apiKey, "/services", query);
|
|
166
|
+
return {
|
|
167
|
+
total: data.total,
|
|
168
|
+
count: data.services.length,
|
|
169
|
+
services: data.services,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
export async function pagerduty_list_oncalls(args) {
|
|
173
|
+
const apiKey = requireKey(args);
|
|
174
|
+
const query = {};
|
|
175
|
+
if (args.schedule_ids)
|
|
176
|
+
query["schedule_ids[]"] = String(args.schedule_ids);
|
|
177
|
+
if (args.user_ids)
|
|
178
|
+
query["user_ids[]"] = String(args.user_ids);
|
|
179
|
+
const data = await pdGet(apiKey, "/oncalls", query);
|
|
180
|
+
return {
|
|
181
|
+
count: data.oncalls.length,
|
|
182
|
+
oncalls: data.oncalls,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=pagerduty-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagerduty-tool.js","sourceRoot":"","sources":["../src/pagerduty-tool.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,sDAAsD;AACtD,mDAAmD;AACnD,kCAAkC;AAElC,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAEhD,SAAS,UAAU,CAAC,IAA6B;IAC/C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACzF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,KAAK,CAAI,MAAc,EAAE,IAAY,EAAE,KAA8B;IAClF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7C,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;gBAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;QACtC,OAAO,EAAE;YACP,aAAa,EAAE,eAAe,MAAM,EAAE;YACtC,MAAM,EAAE,0CAA0C;YAClD,cAAc,EAAE,kBAAkB;SACnC;KACF,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAI,IAAI,CAAC,KAAiC,EAAE,OAAiB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/F,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,MAAM,CAAI,MAAc,EAAE,IAAY,EAAE,IAAa;IAClE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,eAAe,MAAM,EAAE;YACtC,MAAM,EAAE,0CAA0C;YAClD,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAI,IAAI,CAAC,KAAiC,EAAE,OAAiB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/F,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,KAAK,CAAI,MAAc,EAAE,IAAY,EAAE,IAAa;IACjE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,GAAG,IAAI,EAAE,EAAE;QAC/C,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,aAAa,EAAE,eAAe,MAAM,EAAE;YACtC,MAAM,EAAE,0CAA0C;YAClD,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;IACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAI,IAAI,CAAC,KAAiC,EAAE,OAAiB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;QAC/F,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,IAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAA6B;IAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,MAAM;QAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,IAAI,CAAC,WAAW;QAAE,KAAK,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAExE,MAAM,IAAI,GAAG,MAAM,KAAK,CAA0C,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAC/F,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;QAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAA6B;IACxE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACrD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAwB,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;IAC5E,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAA6B;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAClD,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAE3D,MAAM,IAAI,GAA4B;QACpC,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU;YAChB,KAAK;YACL,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,mBAAmB,EAAE;SACtD;KACF,CAAC;IACF,IAAI,IAAI,CAAC,OAAO;QAAG,IAAI,CAAC,QAAoC,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5F,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACrB,IAAI,CAAC,QAAoC,CAAC,IAAI,GAAG;YAChD,IAAI,EAAE,eAAe;YACrB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;SACnC,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,uDAAuD;QACvD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,YAAY,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,eAAe,MAAM,EAAE;gBACtC,MAAM,EAAE,0CAA0C;gBAClD,cAAc,EAAE,kBAAkB;gBAClC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAI,IAAI,CAAC,KAAiC,EAAE,OAAiB,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YAC/F,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAQ,IAA8B,CAAC,QAAQ,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,MAAM,CAAwB,MAAM,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,QAAQ,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,IAA6B;IAChF,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;IACxE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAwB,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAClF,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAA6B;IAC5E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;IACpE,MAAM,IAAI,GAAG,MAAM,KAAK,CAAwB,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAClF,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACrE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,IAA6B;IACzE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEjD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAyC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7F,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAA6B;IACxE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAA2B,EAAE,CAAC;IACzC,IAAI,IAAI,CAAC,YAAY;QAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,QAAQ;QAAE,KAAK,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE/D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAyB,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5E,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;QAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paypal-tool.d.ts","sourceRoot":"","sources":["../src/paypal-tool.ts"],"names":[],"mappings":"AAoHA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBlF;AAID,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BpF"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// ─── PayPal REST API Tool ────────────────────────────────────────────────────
|
|
2
|
+
// Covers orders, payments, and invoices.
|
|
3
|
+
// Auth: OAuth 2.0 client credentials (client_id + client_secret).
|
|
4
|
+
// Access token is fetched automatically per request.
|
|
5
|
+
// Base URLs:
|
|
6
|
+
// Live: https://api-m.paypal.com
|
|
7
|
+
// Sandbox: https://api-m.sandbox.paypal.com
|
|
8
|
+
// No external dependencies - native fetch only.
|
|
9
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
10
|
+
function requireConfig(args) {
|
|
11
|
+
const client_id = String(args.client_id ?? "").trim();
|
|
12
|
+
const client_secret = String(args.client_secret ?? "").trim();
|
|
13
|
+
if (!client_id)
|
|
14
|
+
return { error: "client_id is required (PayPal application Client ID)." };
|
|
15
|
+
if (!client_secret)
|
|
16
|
+
return { error: "client_secret is required (PayPal application Client Secret)." };
|
|
17
|
+
return {
|
|
18
|
+
client_id,
|
|
19
|
+
client_secret,
|
|
20
|
+
sandbox: args.sandbox === true || String(args.sandbox) === "true",
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function baseUrl(cfg) {
|
|
24
|
+
return cfg.sandbox ? "https://api-m.sandbox.paypal.com" : "https://api-m.paypal.com";
|
|
25
|
+
}
|
|
26
|
+
async function getPayPalToken(cfg) {
|
|
27
|
+
const credentials = Buffer.from(`${cfg.client_id}:${cfg.client_secret}`).toString("base64");
|
|
28
|
+
let response;
|
|
29
|
+
try {
|
|
30
|
+
response = await fetch(`${baseUrl(cfg)}/v1/oauth2/token`, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `Basic ${credentials}`,
|
|
34
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
35
|
+
"Accept": "application/json",
|
|
36
|
+
},
|
|
37
|
+
body: "grant_type=client_credentials",
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
return { error: `Network error fetching PayPal token: ${err instanceof Error ? err.message : String(err)}` };
|
|
42
|
+
}
|
|
43
|
+
let data;
|
|
44
|
+
try {
|
|
45
|
+
data = await response.json();
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return { error: "Non-JSON response from PayPal token endpoint." };
|
|
49
|
+
}
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
const d = data;
|
|
52
|
+
return { error: `PayPal auth failed (${response.status}): ${d["error_description"] ?? d["message"] ?? "unknown"}` };
|
|
53
|
+
}
|
|
54
|
+
return String(data["access_token"] ?? "");
|
|
55
|
+
}
|
|
56
|
+
async function paypalFetch(cfg, method, path, body, query) {
|
|
57
|
+
const tokenResult = await getPayPalToken(cfg);
|
|
58
|
+
if (typeof tokenResult === "object" && "error" in tokenResult)
|
|
59
|
+
return tokenResult;
|
|
60
|
+
const url = new URL(`${baseUrl(cfg)}${path}`);
|
|
61
|
+
if (query) {
|
|
62
|
+
for (const [k, v] of Object.entries(query)) {
|
|
63
|
+
if (v !== undefined)
|
|
64
|
+
url.searchParams.set(k, String(v));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
let response;
|
|
68
|
+
try {
|
|
69
|
+
response = await fetch(url.toString(), {
|
|
70
|
+
method,
|
|
71
|
+
headers: {
|
|
72
|
+
Authorization: `Bearer ${tokenResult}`,
|
|
73
|
+
"Content-Type": "application/json",
|
|
74
|
+
"Accept": "application/json",
|
|
75
|
+
},
|
|
76
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
return { error: `Network error: ${err instanceof Error ? err.message : String(err)}` };
|
|
81
|
+
}
|
|
82
|
+
if (response.status === 429) {
|
|
83
|
+
return { error: "PayPal rate limit reached. Wait before retrying.", status: 429 };
|
|
84
|
+
}
|
|
85
|
+
if (response.status === 204) {
|
|
86
|
+
return { success: true };
|
|
87
|
+
}
|
|
88
|
+
let data;
|
|
89
|
+
try {
|
|
90
|
+
data = await response.json();
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return { error: `Non-JSON response (HTTP ${response.status})`, status: response.status };
|
|
94
|
+
}
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
const d = data;
|
|
97
|
+
return { error: d["message"] ?? d["error_description"] ?? "PayPal API error", status: response.status, detail: d };
|
|
98
|
+
}
|
|
99
|
+
return data;
|
|
100
|
+
}
|
|
101
|
+
// ─── paypal_orders ────────────────────────────────────────────────────────────
|
|
102
|
+
export async function paypalOrders(args) {
|
|
103
|
+
const cfg = requireConfig(args);
|
|
104
|
+
if ("error" in cfg)
|
|
105
|
+
return cfg;
|
|
106
|
+
const action = String(args.action ?? "get");
|
|
107
|
+
switch (action) {
|
|
108
|
+
case "create": {
|
|
109
|
+
const intent = String(args.intent ?? "CAPTURE");
|
|
110
|
+
const purchase_units = args.purchase_units;
|
|
111
|
+
if (!purchase_units || !Array.isArray(purchase_units)) {
|
|
112
|
+
return { error: "purchase_units (array) is required for action='create'." };
|
|
113
|
+
}
|
|
114
|
+
return paypalFetch(cfg, "POST", "/v2/checkout/orders", { intent, purchase_units });
|
|
115
|
+
}
|
|
116
|
+
case "get": {
|
|
117
|
+
const order_id = String(args.order_id ?? "").trim();
|
|
118
|
+
if (!order_id)
|
|
119
|
+
return { error: "order_id is required for action='get'." };
|
|
120
|
+
return paypalFetch(cfg, "GET", `/v2/checkout/orders/${encodeURIComponent(order_id)}`);
|
|
121
|
+
}
|
|
122
|
+
default:
|
|
123
|
+
return { error: `Unknown action "${action}". Valid: create, get.` };
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// ─── paypal_invoices ──────────────────────────────────────────────────────────
|
|
127
|
+
export async function paypalInvoices(args) {
|
|
128
|
+
const cfg = requireConfig(args);
|
|
129
|
+
if ("error" in cfg)
|
|
130
|
+
return cfg;
|
|
131
|
+
const action = String(args.action ?? "list");
|
|
132
|
+
switch (action) {
|
|
133
|
+
case "list": {
|
|
134
|
+
return paypalFetch(cfg, "GET", "/v2/invoicing/invoices", undefined, {
|
|
135
|
+
page: args.page ? Number(args.page) : 1,
|
|
136
|
+
page_size: args.page_size ? Number(args.page_size) : 20,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
case "create": {
|
|
140
|
+
if (!args.invoice || typeof args.invoice !== "object") {
|
|
141
|
+
return { error: "invoice object is required for action='create'." };
|
|
142
|
+
}
|
|
143
|
+
return paypalFetch(cfg, "POST", "/v2/invoicing/invoices", args.invoice);
|
|
144
|
+
}
|
|
145
|
+
case "send": {
|
|
146
|
+
const invoice_id = String(args.invoice_id ?? "").trim();
|
|
147
|
+
if (!invoice_id)
|
|
148
|
+
return { error: "invoice_id is required for action='send'." };
|
|
149
|
+
return paypalFetch(cfg, "POST", `/v2/invoicing/invoices/${encodeURIComponent(invoice_id)}/send`, {
|
|
150
|
+
send_to_invoicer: args.send_to_invoicer !== false,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
default:
|
|
154
|
+
return { error: `Unknown action "${action}". Valid: list, create, send.` };
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=paypal-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paypal-tool.js","sourceRoot":"","sources":["../src/paypal-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perplexity-tool.d.ts","sourceRoot":"","sources":["../src/perplexity-tool.ts"],"names":[],"mappings":"AAiEA,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmD9F"}
|