@unclick/mcp-server 0.2.2 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/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/toilets-tool.js +2 -2
- package/dist/tool-wiring.d.ts +4066 -18
- package/dist/tool-wiring.d.ts.map +1 -1
- package/dist/tool-wiring.js +2601 -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/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/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 +2 -2
- package/server.json +24 -5
- 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 @@
|
|
|
1
|
+
{"version":3,"file":"airtable-tool.d.ts","sourceRoot":"","sources":["../src/airtable-tool.ts"],"names":[],"mappings":"AAwIA,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// ── Airtable REST API tool ─────────────────────────────────────────────────
|
|
2
|
+
// Wraps the Airtable REST API via fetch.
|
|
3
|
+
// Auth: personal access token (PAT) passed as access_token.
|
|
4
|
+
// No external dependencies.
|
|
5
|
+
const AIRTABLE_META_API = "https://api.airtable.com/v0/meta";
|
|
6
|
+
const AIRTABLE_DATA_API = "https://api.airtable.com/v0";
|
|
7
|
+
// ── Fetch helper ───────────────────────────────────────────────────────────────
|
|
8
|
+
async function airtableFetch(token, method, url, body) {
|
|
9
|
+
const headers = {
|
|
10
|
+
Authorization: `Bearer ${token}`,
|
|
11
|
+
"User-Agent": "UnClick-MCP/1.0",
|
|
12
|
+
};
|
|
13
|
+
if (body !== undefined)
|
|
14
|
+
headers["Content-Type"] = "application/json";
|
|
15
|
+
let response;
|
|
16
|
+
try {
|
|
17
|
+
response = await fetch(url, {
|
|
18
|
+
method,
|
|
19
|
+
headers,
|
|
20
|
+
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
return { error: `Network error reaching Airtable API: ${err instanceof Error ? err.message : String(err)}` };
|
|
25
|
+
}
|
|
26
|
+
const text = await response.text();
|
|
27
|
+
let data;
|
|
28
|
+
try {
|
|
29
|
+
data = JSON.parse(text);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
data = { raw: text };
|
|
33
|
+
}
|
|
34
|
+
if (response.status === 401)
|
|
35
|
+
return { error: "Airtable token is invalid or expired. Check your access_token.", status: 401 };
|
|
36
|
+
if (response.status === 403)
|
|
37
|
+
return { error: "Insufficient permissions for this Airtable resource.", status: 403 };
|
|
38
|
+
if (response.status === 404)
|
|
39
|
+
return { error: "Base, table, or record not found.", status: 404 };
|
|
40
|
+
if (response.status === 422)
|
|
41
|
+
return { error: `Airtable validation error: ${data?.error ?? text}`, status: 422 };
|
|
42
|
+
if (response.status === 429)
|
|
43
|
+
return { error: "Airtable rate limit exceeded. Please wait and retry.", status: 429 };
|
|
44
|
+
if (!response.ok) {
|
|
45
|
+
const detail = data?.error ?? text;
|
|
46
|
+
return { error: `Airtable API error ${response.status}: ${detail}`, status: response.status };
|
|
47
|
+
}
|
|
48
|
+
return data;
|
|
49
|
+
}
|
|
50
|
+
// ── Action implementations ─────────────────────────────────────────────────────
|
|
51
|
+
async function listBases(token) {
|
|
52
|
+
return airtableFetch(token, "GET", `${AIRTABLE_META_API}/bases`);
|
|
53
|
+
}
|
|
54
|
+
async function listRecords(token, args) {
|
|
55
|
+
const baseId = String(args.base_id ?? "").trim();
|
|
56
|
+
const tableName = String(args.table_name ?? "").trim();
|
|
57
|
+
if (!baseId)
|
|
58
|
+
return { error: "base_id is required." };
|
|
59
|
+
if (!tableName)
|
|
60
|
+
return { error: "table_name is required." };
|
|
61
|
+
const url = new URL(`${AIRTABLE_DATA_API}/${encodeURIComponent(baseId)}/${encodeURIComponent(tableName)}`);
|
|
62
|
+
if (args.max_records)
|
|
63
|
+
url.searchParams.set("maxRecords", String(args.max_records));
|
|
64
|
+
if (args.page_size)
|
|
65
|
+
url.searchParams.set("pageSize", String(args.page_size));
|
|
66
|
+
if (args.offset)
|
|
67
|
+
url.searchParams.set("offset", String(args.offset));
|
|
68
|
+
if (args.view)
|
|
69
|
+
url.searchParams.set("view", String(args.view));
|
|
70
|
+
if (args.sort)
|
|
71
|
+
url.searchParams.set("sort", JSON.stringify(args.sort));
|
|
72
|
+
if (args.fields)
|
|
73
|
+
url.searchParams.set("fields", JSON.stringify(args.fields));
|
|
74
|
+
return airtableFetch(token, "GET", url.toString());
|
|
75
|
+
}
|
|
76
|
+
async function getRecord(token, args) {
|
|
77
|
+
const baseId = String(args.base_id ?? "").trim();
|
|
78
|
+
const tableName = String(args.table_name ?? "").trim();
|
|
79
|
+
const recordId = String(args.record_id ?? "").trim();
|
|
80
|
+
if (!baseId)
|
|
81
|
+
return { error: "base_id is required." };
|
|
82
|
+
if (!tableName)
|
|
83
|
+
return { error: "table_name is required." };
|
|
84
|
+
if (!recordId)
|
|
85
|
+
return { error: "record_id is required." };
|
|
86
|
+
return airtableFetch(token, "GET", `${AIRTABLE_DATA_API}/${encodeURIComponent(baseId)}/${encodeURIComponent(tableName)}/${encodeURIComponent(recordId)}`);
|
|
87
|
+
}
|
|
88
|
+
async function createRecord(token, args) {
|
|
89
|
+
const baseId = String(args.base_id ?? "").trim();
|
|
90
|
+
const tableName = String(args.table_name ?? "").trim();
|
|
91
|
+
if (!baseId)
|
|
92
|
+
return { error: "base_id is required." };
|
|
93
|
+
if (!tableName)
|
|
94
|
+
return { error: "table_name is required." };
|
|
95
|
+
if (!args.fields || typeof args.fields !== "object")
|
|
96
|
+
return { error: "fields (object) is required." };
|
|
97
|
+
return airtableFetch(token, "POST", `${AIRTABLE_DATA_API}/${encodeURIComponent(baseId)}/${encodeURIComponent(tableName)}`, { records: [{ fields: args.fields }] });
|
|
98
|
+
}
|
|
99
|
+
async function updateRecord(token, args) {
|
|
100
|
+
const baseId = String(args.base_id ?? "").trim();
|
|
101
|
+
const tableName = String(args.table_name ?? "").trim();
|
|
102
|
+
const recordId = String(args.record_id ?? "").trim();
|
|
103
|
+
if (!baseId)
|
|
104
|
+
return { error: "base_id is required." };
|
|
105
|
+
if (!tableName)
|
|
106
|
+
return { error: "table_name is required." };
|
|
107
|
+
if (!recordId)
|
|
108
|
+
return { error: "record_id is required." };
|
|
109
|
+
if (!args.fields || typeof args.fields !== "object")
|
|
110
|
+
return { error: "fields (object) is required." };
|
|
111
|
+
return airtableFetch(token, "PATCH", `${AIRTABLE_DATA_API}/${encodeURIComponent(baseId)}/${encodeURIComponent(tableName)}`, { records: [{ id: recordId, fields: args.fields }] });
|
|
112
|
+
}
|
|
113
|
+
async function searchRecords(token, args) {
|
|
114
|
+
const baseId = String(args.base_id ?? "").trim();
|
|
115
|
+
const tableName = String(args.table_name ?? "").trim();
|
|
116
|
+
const formula = String(args.formula ?? "").trim();
|
|
117
|
+
if (!baseId)
|
|
118
|
+
return { error: "base_id is required." };
|
|
119
|
+
if (!tableName)
|
|
120
|
+
return { error: "table_name is required." };
|
|
121
|
+
if (!formula)
|
|
122
|
+
return { error: "formula is required (Airtable formula filter string)." };
|
|
123
|
+
const url = new URL(`${AIRTABLE_DATA_API}/${encodeURIComponent(baseId)}/${encodeURIComponent(tableName)}`);
|
|
124
|
+
url.searchParams.set("filterByFormula", formula);
|
|
125
|
+
if (args.max_records)
|
|
126
|
+
url.searchParams.set("maxRecords", String(args.max_records));
|
|
127
|
+
if (args.fields)
|
|
128
|
+
url.searchParams.set("fields", JSON.stringify(args.fields));
|
|
129
|
+
return airtableFetch(token, "GET", url.toString());
|
|
130
|
+
}
|
|
131
|
+
// ── Public dispatcher ──────────────────────────────────────────────────────────
|
|
132
|
+
export async function airtableAction(action, args) {
|
|
133
|
+
const token = String(args.access_token ?? "").trim();
|
|
134
|
+
if (!token)
|
|
135
|
+
return { error: "access_token is required." };
|
|
136
|
+
try {
|
|
137
|
+
switch (action) {
|
|
138
|
+
case "list_bases": return listBases(token);
|
|
139
|
+
case "list_records": return listRecords(token, args);
|
|
140
|
+
case "get_record": return getRecord(token, args);
|
|
141
|
+
case "create_record": return createRecord(token, args);
|
|
142
|
+
case "update_record": return updateRecord(token, args);
|
|
143
|
+
case "search_records": return searchRecords(token, args);
|
|
144
|
+
default:
|
|
145
|
+
return {
|
|
146
|
+
error: `Unknown Airtable action: "${action}". Valid actions: list_bases, list_records, get_record, create_record, update_record, search_records.`,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=airtable-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"airtable-tool.js","sourceRoot":"","sources":["../src/airtable-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-tool.d.ts","sourceRoot":"","sources":["../src/anthropic-tool.ts"],"names":[],"mappings":"AA4FA,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmD5F;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAezF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// Anthropic Messages API integration for the UnClick MCP server.
|
|
2
|
+
// Uses the Anthropic REST API via fetch - no external dependencies.
|
|
3
|
+
// Users must supply an API key from console.anthropic.com.
|
|
4
|
+
// This tool is useful for agents that need to call Claude (or other models)
|
|
5
|
+
// programmatically, compare model outputs, or chain model calls.
|
|
6
|
+
const ANTHROPIC_API_BASE = "https://api.anthropic.com/v1";
|
|
7
|
+
const ANTHROPIC_VERSION = "2023-06-01";
|
|
8
|
+
// ─── Auth validation ──────────────────────────────────────────────────────────
|
|
9
|
+
function requireKey(args) {
|
|
10
|
+
const key = String(args.api_key ?? "").trim();
|
|
11
|
+
if (!key)
|
|
12
|
+
throw new Error("api_key is required. Get one at console.anthropic.com/settings/keys.");
|
|
13
|
+
return key;
|
|
14
|
+
}
|
|
15
|
+
// ─── API helpers ──────────────────────────────────────────────────────────────
|
|
16
|
+
async function anthropicPost(apiKey, path, body) {
|
|
17
|
+
const res = await fetch(`${ANTHROPIC_API_BASE}${path}`, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: {
|
|
20
|
+
"x-api-key": apiKey,
|
|
21
|
+
"anthropic-version": ANTHROPIC_VERSION,
|
|
22
|
+
"Content-Type": "application/json",
|
|
23
|
+
},
|
|
24
|
+
body: JSON.stringify(body),
|
|
25
|
+
});
|
|
26
|
+
const data = await res.json();
|
|
27
|
+
if (!res.ok) {
|
|
28
|
+
const err = data.error;
|
|
29
|
+
const msg = err?.message ?? `HTTP ${res.status}`;
|
|
30
|
+
const type = err?.type ? ` [${err.type}]` : "";
|
|
31
|
+
throw new Error(`Anthropic API error${type}: ${msg}`);
|
|
32
|
+
}
|
|
33
|
+
return data;
|
|
34
|
+
}
|
|
35
|
+
async function anthropicGet(apiKey, path) {
|
|
36
|
+
const res = await fetch(`${ANTHROPIC_API_BASE}${path}`, {
|
|
37
|
+
headers: {
|
|
38
|
+
"x-api-key": apiKey,
|
|
39
|
+
"anthropic-version": ANTHROPIC_VERSION,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
const data = await res.json();
|
|
43
|
+
if (!res.ok) {
|
|
44
|
+
const err = data.error;
|
|
45
|
+
const msg = err?.message ?? `HTTP ${res.status}`;
|
|
46
|
+
throw new Error(`Anthropic API error: ${msg}`);
|
|
47
|
+
}
|
|
48
|
+
return data;
|
|
49
|
+
}
|
|
50
|
+
// ─── Operations ───────────────────────────────────────────────────────────────
|
|
51
|
+
export async function anthropicCreateMessage(args) {
|
|
52
|
+
const apiKey = requireKey(args);
|
|
53
|
+
const model = String(args.model ?? "claude-sonnet-4-6");
|
|
54
|
+
const maxTokens = Math.min(8192, Math.max(1, Number(args.max_tokens ?? 1024)));
|
|
55
|
+
// Parse messages
|
|
56
|
+
let messages;
|
|
57
|
+
if (Array.isArray(args.messages)) {
|
|
58
|
+
messages = args.messages;
|
|
59
|
+
}
|
|
60
|
+
else if (typeof args.messages === "string") {
|
|
61
|
+
try {
|
|
62
|
+
messages = JSON.parse(args.messages);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
throw new Error("messages must be a JSON array of {role, content} objects.");
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else if (args.prompt) {
|
|
69
|
+
// Convenience: single user message via 'prompt'
|
|
70
|
+
messages = [{ role: "user", content: String(args.prompt) }];
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw new Error("Either messages (array) or prompt (string) is required.");
|
|
74
|
+
}
|
|
75
|
+
if (messages.length === 0)
|
|
76
|
+
throw new Error("messages array must not be empty.");
|
|
77
|
+
const body = { model, max_tokens: maxTokens, messages };
|
|
78
|
+
if (args.system)
|
|
79
|
+
body.system = String(args.system);
|
|
80
|
+
if (args.temperature !== undefined)
|
|
81
|
+
body.temperature = Number(args.temperature);
|
|
82
|
+
if (args.top_p !== undefined)
|
|
83
|
+
body.top_p = Number(args.top_p);
|
|
84
|
+
if (args.top_k !== undefined)
|
|
85
|
+
body.top_k = Number(args.top_k);
|
|
86
|
+
if (args.stop_sequences)
|
|
87
|
+
body.stop_sequences = args.stop_sequences;
|
|
88
|
+
if (args.metadata)
|
|
89
|
+
body.metadata = args.metadata;
|
|
90
|
+
const result = await anthropicPost(apiKey, "/messages", body);
|
|
91
|
+
// Extract text content blocks
|
|
92
|
+
const textBlocks = result.content
|
|
93
|
+
.filter((b) => b.type === "text")
|
|
94
|
+
.map((b) => b.text ?? "");
|
|
95
|
+
return {
|
|
96
|
+
id: result.id,
|
|
97
|
+
model: result.model,
|
|
98
|
+
role: result.role,
|
|
99
|
+
content: textBlocks.join("\n"),
|
|
100
|
+
content_blocks: result.content.map((b) => ({
|
|
101
|
+
type: b.type,
|
|
102
|
+
text: b.text ?? null,
|
|
103
|
+
tool_name: b.name ?? null,
|
|
104
|
+
tool_input: b.input ?? null,
|
|
105
|
+
})),
|
|
106
|
+
stop_reason: result.stop_reason,
|
|
107
|
+
usage: result.usage,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export async function anthropicListModels(args) {
|
|
111
|
+
const apiKey = requireKey(args);
|
|
112
|
+
const data = await anthropicGet(apiKey, "/models");
|
|
113
|
+
return {
|
|
114
|
+
count: data.data.length,
|
|
115
|
+
has_more: data.has_more,
|
|
116
|
+
models: data.data.map((m) => ({
|
|
117
|
+
id: m.id,
|
|
118
|
+
display_name: m.display_name,
|
|
119
|
+
created_at: m.created_at,
|
|
120
|
+
})),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=anthropic-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic-tool.js","sourceRoot":"","sources":["../src/anthropic-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function listAsanaWorkspaces(args: Record<string, unknown>): Promise<unknown>;
|
|
2
|
+
export declare function listAsanaProjects(args: Record<string, unknown>): Promise<unknown>;
|
|
3
|
+
export declare function listAsanaTasks(args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
export declare function createAsanaTask(args: Record<string, unknown>): Promise<unknown>;
|
|
5
|
+
export declare function updateAsanaTask(args: Record<string, unknown>): Promise<unknown>;
|
|
6
|
+
export declare function getAsanaTask(args: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
export declare function searchAsanaTasks(args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
//# sourceMappingURL=asana-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asana-tool.d.ts","sourceRoot":"","sources":["../src/asana-tool.ts"],"names":[],"mappings":"AAoEA,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYzF;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBvF;AAGD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBpF;AAGD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmBrF;AAGD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBrF;AAGD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAYlF;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBtF"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
// Asana task management API.
|
|
2
|
+
// Docs: https://developers.asana.com/reference/rest-api-reference
|
|
3
|
+
// Auth: ASANA_API_KEY (Personal Access Token, Bearer)
|
|
4
|
+
// Base: https://app.asana.com/api/1.0
|
|
5
|
+
const ASANA_BASE = "https://app.asana.com/api/1.0";
|
|
6
|
+
function getApiKey(args) {
|
|
7
|
+
const key = String(args.api_key ?? process.env.ASANA_API_KEY ?? "").trim();
|
|
8
|
+
if (!key)
|
|
9
|
+
throw new Error("api_key is required (or set ASANA_API_KEY env var).");
|
|
10
|
+
return key;
|
|
11
|
+
}
|
|
12
|
+
async function asanaGet(apiKey, path, params) {
|
|
13
|
+
const url = new URL(`${ASANA_BASE}${path}`);
|
|
14
|
+
if (params) {
|
|
15
|
+
for (const [k, v] of Object.entries(params)) {
|
|
16
|
+
if (v !== undefined && v !== "")
|
|
17
|
+
url.searchParams.set(k, v);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const res = await fetch(url.toString(), {
|
|
21
|
+
headers: {
|
|
22
|
+
Authorization: `Bearer ${apiKey}`,
|
|
23
|
+
Accept: "application/json",
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
if (res.status === 401)
|
|
27
|
+
throw new Error("Invalid Asana API key.");
|
|
28
|
+
if (res.status === 403)
|
|
29
|
+
throw new Error("Asana: access forbidden.");
|
|
30
|
+
if (res.status === 404)
|
|
31
|
+
throw new Error(`Asana: resource not found at ${path}.`);
|
|
32
|
+
if (res.status === 429)
|
|
33
|
+
throw new Error("Asana rate limit exceeded.");
|
|
34
|
+
if (!res.ok) {
|
|
35
|
+
const body = await res.text().catch(() => "");
|
|
36
|
+
throw new Error(`Asana HTTP ${res.status}: ${body || res.statusText}`);
|
|
37
|
+
}
|
|
38
|
+
return res.json();
|
|
39
|
+
}
|
|
40
|
+
async function asanaPost(apiKey, path, body, method = "POST") {
|
|
41
|
+
const res = await fetch(`${ASANA_BASE}${path}`, {
|
|
42
|
+
method,
|
|
43
|
+
headers: {
|
|
44
|
+
Authorization: `Bearer ${apiKey}`,
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
Accept: "application/json",
|
|
47
|
+
},
|
|
48
|
+
body: JSON.stringify({ data: body }),
|
|
49
|
+
});
|
|
50
|
+
if (res.status === 401)
|
|
51
|
+
throw new Error("Invalid Asana API key.");
|
|
52
|
+
if (res.status === 403)
|
|
53
|
+
throw new Error("Asana: access forbidden.");
|
|
54
|
+
if (res.status === 404)
|
|
55
|
+
throw new Error(`Asana: resource not found at ${path}.`);
|
|
56
|
+
if (res.status === 429)
|
|
57
|
+
throw new Error("Asana rate limit exceeded.");
|
|
58
|
+
if (!res.ok) {
|
|
59
|
+
const b = await res.text().catch(() => "");
|
|
60
|
+
throw new Error(`Asana HTTP ${res.status}: ${b || res.statusText}`);
|
|
61
|
+
}
|
|
62
|
+
return res.json();
|
|
63
|
+
}
|
|
64
|
+
// list_asana_workspaces
|
|
65
|
+
export async function listAsanaWorkspaces(args) {
|
|
66
|
+
try {
|
|
67
|
+
const apiKey = getApiKey(args);
|
|
68
|
+
const json = await asanaGet(apiKey, "/workspaces");
|
|
69
|
+
const data = (json.data ?? []);
|
|
70
|
+
return {
|
|
71
|
+
count: data.length,
|
|
72
|
+
workspaces: data.map((w) => ({ gid: w.gid, name: w.name })),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// list_asana_projects
|
|
80
|
+
export async function listAsanaProjects(args) {
|
|
81
|
+
try {
|
|
82
|
+
const apiKey = getApiKey(args);
|
|
83
|
+
const workspaceGid = String(args.workspace_gid ?? "").trim();
|
|
84
|
+
if (!workspaceGid)
|
|
85
|
+
return { error: "workspace_gid is required." };
|
|
86
|
+
const params = {
|
|
87
|
+
workspace: workspaceGid,
|
|
88
|
+
opt_fields: "gid,name,color,archived,notes,created_at,modified_at",
|
|
89
|
+
};
|
|
90
|
+
if (args.archived !== undefined)
|
|
91
|
+
params.archived = String(args.archived);
|
|
92
|
+
if (args.limit)
|
|
93
|
+
params.limit = String(args.limit);
|
|
94
|
+
const json = await asanaGet(apiKey, "/projects", params);
|
|
95
|
+
const data = (json.data ?? []);
|
|
96
|
+
return { count: data.length, projects: data };
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// list_asana_tasks
|
|
103
|
+
export async function listAsanaTasks(args) {
|
|
104
|
+
try {
|
|
105
|
+
const apiKey = getApiKey(args);
|
|
106
|
+
const projectGid = String(args.project_gid ?? "").trim();
|
|
107
|
+
if (!projectGid)
|
|
108
|
+
return { error: "project_gid is required." };
|
|
109
|
+
const params = {
|
|
110
|
+
project: projectGid,
|
|
111
|
+
opt_fields: "gid,name,completed,due_on,notes,assignee.name,created_at,modified_at",
|
|
112
|
+
};
|
|
113
|
+
if (args.completed !== undefined)
|
|
114
|
+
params.completed_since = args.completed ? "now" : "1970-01-01T00:00:00.000Z";
|
|
115
|
+
if (args.limit)
|
|
116
|
+
params.limit = String(args.limit);
|
|
117
|
+
const json = await asanaGet(apiKey, "/tasks", params);
|
|
118
|
+
const data = (json.data ?? []);
|
|
119
|
+
return { count: data.length, tasks: data };
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
// create_asana_task
|
|
126
|
+
export async function createAsanaTask(args) {
|
|
127
|
+
try {
|
|
128
|
+
const apiKey = getApiKey(args);
|
|
129
|
+
const name = String(args.name ?? "").trim();
|
|
130
|
+
if (!name)
|
|
131
|
+
return { error: "name is required." };
|
|
132
|
+
const workspaceGid = String(args.workspace_gid ?? "").trim();
|
|
133
|
+
if (!workspaceGid)
|
|
134
|
+
return { error: "workspace_gid is required." };
|
|
135
|
+
const body = { name, workspace: workspaceGid };
|
|
136
|
+
if (args.notes)
|
|
137
|
+
body.notes = String(args.notes);
|
|
138
|
+
if (args.due_on)
|
|
139
|
+
body.due_on = String(args.due_on);
|
|
140
|
+
if (args.assignee)
|
|
141
|
+
body.assignee = String(args.assignee);
|
|
142
|
+
if (args.projects)
|
|
143
|
+
body.projects = args.projects;
|
|
144
|
+
const json = await asanaPost(apiKey, "/tasks", body);
|
|
145
|
+
return json.data;
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// update_asana_task
|
|
152
|
+
export async function updateAsanaTask(args) {
|
|
153
|
+
try {
|
|
154
|
+
const apiKey = getApiKey(args);
|
|
155
|
+
const taskGid = String(args.task_gid ?? "").trim();
|
|
156
|
+
if (!taskGid)
|
|
157
|
+
return { error: "task_gid is required." };
|
|
158
|
+
const body = {};
|
|
159
|
+
if (args.name)
|
|
160
|
+
body.name = String(args.name);
|
|
161
|
+
if (args.notes !== undefined)
|
|
162
|
+
body.notes = String(args.notes);
|
|
163
|
+
if (args.completed !== undefined)
|
|
164
|
+
body.completed = Boolean(args.completed);
|
|
165
|
+
if (args.due_on !== undefined)
|
|
166
|
+
body.due_on = args.due_on ? String(args.due_on) : null;
|
|
167
|
+
if (args.assignee !== undefined)
|
|
168
|
+
body.assignee = args.assignee ? String(args.assignee) : null;
|
|
169
|
+
const json = await asanaPost(apiKey, `/tasks/${taskGid}`, body, "PUT");
|
|
170
|
+
return json.data;
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// get_asana_task
|
|
177
|
+
export async function getAsanaTask(args) {
|
|
178
|
+
try {
|
|
179
|
+
const apiKey = getApiKey(args);
|
|
180
|
+
const taskGid = String(args.task_gid ?? "").trim();
|
|
181
|
+
if (!taskGid)
|
|
182
|
+
return { error: "task_gid is required." };
|
|
183
|
+
const json = await asanaGet(apiKey, `/tasks/${taskGid}`, {
|
|
184
|
+
opt_fields: "gid,name,completed,due_on,notes,assignee.name,projects.name,workspace.name,created_at,modified_at",
|
|
185
|
+
});
|
|
186
|
+
return json.data;
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// search_asana_tasks
|
|
193
|
+
export async function searchAsanaTasks(args) {
|
|
194
|
+
try {
|
|
195
|
+
const apiKey = getApiKey(args);
|
|
196
|
+
const workspaceGid = String(args.workspace_gid ?? "").trim();
|
|
197
|
+
if (!workspaceGid)
|
|
198
|
+
return { error: "workspace_gid is required." };
|
|
199
|
+
const text = String(args.text ?? "").trim();
|
|
200
|
+
if (!text)
|
|
201
|
+
return { error: "text is required." };
|
|
202
|
+
const params = {
|
|
203
|
+
text,
|
|
204
|
+
opt_fields: "gid,name,completed,due_on,notes,assignee.name",
|
|
205
|
+
};
|
|
206
|
+
if (args.completed !== undefined)
|
|
207
|
+
params.completed = String(args.completed);
|
|
208
|
+
if (args.limit)
|
|
209
|
+
params.limit = String(args.limit);
|
|
210
|
+
const json = await asanaGet(apiKey, `/workspaces/${workspaceGid}/tasks/search`, params);
|
|
211
|
+
const data = (json.data ?? []);
|
|
212
|
+
return { count: data.length, tasks: data };
|
|
213
|
+
}
|
|
214
|
+
catch (err) {
|
|
215
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=asana-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asana-tool.js","sourceRoot":"","sources":["../src/asana-tool.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kEAAkE;AAClE,sDAAsD;AACtD,sCAAsC;AAEtC,MAAM,UAAU,GAAG,+BAA+B,CAAC;AAEnD,SAAS,SAAS,CAAC,IAA6B;IAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3E,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACjF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,QAAQ,CACrB,MAAc,EACd,IAAY,EACZ,MAA+B;IAE/B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,UAAU,GAAG,IAAI,EAAE,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5C,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,UAAU,MAAM,EAAE;YACjC,MAAM,EAAE,kBAAkB;SAC3B;KACF,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,GAAG,CAAC,CAAC;IACjF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAsB,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,IAAY,EACZ,IAA6B,EAC7B,SAAyB,MAAM;IAE/B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,UAAU,GAAG,IAAI,EAAE,EAAE;QAC9C,MAAM;QACN,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,MAAM,EAAE;YACjC,cAAc,EAAE,kBAAkB;YAClC,MAAM,EAAE,kBAAkB;SAC3B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;KACrC,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAClE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,GAAG,CAAC,CAAC;IACjF,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACtE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAsB,CAAC;AACxC,CAAC;AAED,wBAAwB;AACxB,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6B;IACrE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,aAAa,CAA4B,CAAC;QAC9E,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAmC,CAAC;QACjE,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SAC5D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,sBAAsB;AACtB,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAA6B;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;QAClE,MAAM,MAAM,GAA2B;YACrC,SAAS,EAAE,YAAY;YACvB,UAAU,EAAE,sDAAsD;SACnE,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzE,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAA4B,CAAC;QACpF,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAmC,CAAC;QACjE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAA6B;IAChE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;QAC9D,MAAM,MAAM,GAA2B;YACrC,OAAO,EAAE,UAAU;YACnB,UAAU,EAAE,sEAAsE;SACnF,CAAC;QACF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC;QAC/G,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAA4B,CAAC;QACjF,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAmC,CAAC;QACjE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA6B;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;QACjD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;QAElE,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;QACxE,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEjD,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAA4B,CAAC;QAChF,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,oBAAoB;AACpB,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAA6B;IACjE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QAExD,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtF,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE9F,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,UAAU,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAA4B,CAAC;QAClG,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,iBAAiB;AACjB,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAA6B;IAC9D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,UAAU,OAAO,EAAE,EAAE;YACvD,UAAU,EAAE,mGAAmG;SAChH,CAA4B,CAAC;QAC9B,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC;AAED,qBAAqB;AACrB,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAA6B;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,YAAY;YAAE,OAAO,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;QAEjD,MAAM,MAAM,GAA2B;YACrC,IAAI;YACJ,UAAU,EAAE,+CAA+C;SAC5D,CAAC;QACF,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5E,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAElD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,eAAe,YAAY,eAAe,EAAE,MAAM,CAA4B,CAAC;QACnH,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAmC,CAAC;QACjE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function getCalendlyUser(args: Record<string, unknown>): Promise<unknown>;
|
|
2
|
+
export declare function listCalendlyEventTypes(args: Record<string, unknown>): Promise<unknown>;
|
|
3
|
+
export declare function listCalendlyEvents(args: Record<string, unknown>): Promise<unknown>;
|
|
4
|
+
export declare function getCalendlyEvent(args: Record<string, unknown>): Promise<unknown>;
|
|
5
|
+
export declare function listCalendlyInvitees(args: Record<string, unknown>): Promise<unknown>;
|
|
6
|
+
//# sourceMappingURL=calendly-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendly-tool.d.ts","sourceRoot":"","sources":["../src/calendly-tool.ts"],"names":[],"mappings":"AA0CA,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBrF;AAGD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA+B5F;AAGD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAkCxF;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUtF;AAGD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA2B1F"}
|